Index: src/wp-admin/css/common.css
===================================================================
--- src/wp-admin/css/common.css	(revision 41035)
+++ src/wp-admin/css/common.css	(working copy)
@@ -3553,6 +3553,11 @@
 	text-decoration: none;
 }
 
+#templateselector {
+	margin-bottom: 20px;
+	margin-top: 20px;
+}
+
 /* =Media Queries
 -------------------------------------------------------------- */
 
@@ -3593,6 +3598,25 @@
 	width: device-width;
 }
 
+@media screen and ( min-width: 782px ) {
+	#templateselector {
+		display: none;
+	}
+}
+
+@media screen and ( max-width: 520px) {
+	#templateselector,
+	.fileedit-sub {
+		text-align: right;
+	}
+
+	#templateselector select,
+	.fileedit-sub select#theme {
+		display:block;
+		clear:left;
+	}
+}
+
 @media screen and ( max-width: 782px ) {
 	html.wp-toolbar {
 		padding-top: 46px;
@@ -3724,6 +3748,7 @@
 	#templateside {
 		float: none;
 		width: auto;
+		display: none;
 	}
 
 	#templateside li {
Index: src/wp-admin/theme-editor.php
===================================================================
--- src/wp-admin/theme-editor.php	(revision 41035)
+++ src/wp-admin/theme-editor.php	(working copy)
@@ -191,6 +191,46 @@
 if ( $theme->errors() )
 	echo '<div class="error"><p><strong>' . __( 'This theme is broken.' ) . '</strong> ' . $theme->errors()->get_error_message() . '</p></div>';
 ?>
+    <!-- custom Template selection div -->
+    <div id="templateselector" class="templateselector alignright">
+            <strong><label for="templateselect"><?php _e('Select template or style to edit:'); ?> </label></strong>
+            <select name="templateselect" id="templateselect">
+            <?php
+                if ( $allowed_files ) :
+                    $previous_file_type = '';
+
+                foreach ( $allowed_files as $filename => $absolute_filename ) :
+                    $file_type = substr( $filename, strrpos( $filename, '.' ) );
+
+                    if ( $file_type !== $previous_file_type ) {
+
+                        switch ( $file_type ) {
+
+                            case '.php':
+                                if ( $has_templates || $theme->parent() ) :
+                                    echo "\t<optgroup label=\"" . __( 'Templates' ) . "\">";
+                                endif;
+                                break;
+
+                            case '.css':
+                                echo "\t<optgroup label=\"" . __( 'Styles' ) . "\">";
+                                break;
+                        }
+                    }
+
+                    $file_description = get_file_description( $filename );
+                    $previous_file_type = $file_type;
+                ?>
+                <option value="<?php echo urlencode( $filename ) ?>&amp;theme=<?php echo urlencode( $stylesheet ) ?>"><?php echo $file_description; ?></option>
+            <?php
+                endforeach;
+            ?>
+                </optgroup>
+            <?php endif; ?>
+            </select>
+            <?php submit_button( __( 'Select' ), 'submit', 'selectmytemplate', false ); ?>
+    </div>
+    <!-- end of custom Template selection div -->
 	<div id="templateside">
 <?php
 if ( $allowed_files ) :
@@ -289,6 +329,34 @@
 jQuery(document).ready(function($){
 	$('#template').submit(function(){ $('#scrollto').val( $('#newcontent').scrollTop() ); });
 	$('#newcontent').scrollTop( $('#scrollto').val() );
+
+	// Redirect to selected template page
+	$('#selectmytemplate').on('click', function() {
+	    var url = $('#templateselect').val(); // get the selected value
+        if (url) { // require a URL
+            window.location = '?file=' + url; // redirect
+        }
+        return false;
+    });
+
+	// Mark the current file as selected
+    var getUrlParameter = function getUrlParameter(sParam) {
+        var sPageURL = decodeURIComponent(window.location.search.substring(1)),
+            sURLVariables = sPageURL.split('&'),
+            sParameterName,
+            i;
+
+        for (i = 0; i < sURLVariables.length; i++) {
+            sParameterName = sURLVariables[i].split('=');
+
+            if (sParameterName[0] === sParam) {
+                return sParameterName[1] === undefined ? true : sParameterName[1];
+            }
+        }
+    };
+    var currentFile = getUrlParameter('file');
+    $('#templateselect option[value*="'+currentFile+'"]').prop('selected', true);
+
 });
 </script>
 <?php
