Implement Split File Editor Functionality for the Eclipse IDE
Instructions: Click on the link to download the JAR file and place it in the dropins directory of Eclipse
Requirements: Eclipse 3.4 RC4 or later
- 2007-07-14. Working universal split editor prototype (MultiEditor-based). Ctrl-6 to split any editor.
- 2008-06-30. Split editor with basic functionality (undo/redo, cut/copy/paste, cursor line highlight, action contributions to menu/toolbar/statusbar) working correctly.
- 2008-06-23. 1st release of multi editor and split editor implementations. Instructions: Download the plugin jar and place in the dropins directory (compatible with Eclipse 3.4 RC4 or later).
Project Completion Plan
|M1||July 21, 2008||
MultiEditor backwards compatibility
|M2||July 28, 2008||
AbstractMultiEditor API for dynamic addition/removal of InnerEditors
|RC1||August 4, 2008||
Look into participation in the SoC Simultaneous Release
|RC2||August 11, 2008|
|Final||August 18, 2008|
Usage: Open a file in Eclipse, then select Window -> New Split Editor from the main menu to open a split editor of the file.
This implementation is based on Paul Webster's patch, which uses the existing multi-editor architecture in Eclipse.
- does not require custom work for different editor types (java/xml/etc)
- works automatically with new custom editor types
- Split editor opens in a new tab as opposed to appearing within the existing tab
- Activating with the mouse requires going to the main menu (Window->New Split Editor). There is also a keyboard shortcut - Ctrl+6.
- Bound by the limitations of the multi-editor infrastructure
Custom Split Editor Implementation
Usage: Right-click on a file, select Open with -> Other... and select \[Split Text Editor\] from the list of editors.
This implementation is based on a custom editor implementation that dynamically creates a new StyledText control when a sash is dragged within the editor to split it.
- fully replaces existing editors and allows splitting the active editor in-place (as opposed to opening a split editor in a new tab)
- easier activation via the mouse because there is no need to go to the window main menu or editor tab context menu.
- requires customization of every editor class that wants to support split editing (java/xml... etc)
|Feature||Importance||Test Case||Multi Editor||Split Editor||New Editor Tab|
|Delete open file||critical||Delete file from the package explorer while the file is open in a split editor|| fixed
does not work - memory leak keeps nonexistent resource in package explorer
|Java Breadcrumb click||critical||Click on the leaf element of the java breadcrumb in one editor then the other and go back and forth several times.||does not work - SWT exception is thrown. seems to be related to general problem with multieditor activation||not tested||works|
|Save||critical||Select File-> Save from the main menu|| fixed
works but invokes Save command twice
|Save as||critical||Select File-> Save As from the main menu|| fixed
works but the other nested editor is not switched to the new resource
|Mark dirty editor's tab (star (*) next to file name)||critical||Make a change in the editor|| fixed
does not mark editor tab as dirty with a * (star)
|Mark occurrences (java)||nice-to-have||enable mark occurrences and click over a java element (method/field/class name etc)||works but marks occurrences in both editors||not applicable (java editor not available)||works but marks occurrences in both editors|
|Mark occurrences of different elements (java)||nice-to-have||enable mark occurrences and click over different java elements in both editors||works but both elements are highlighted in both editors||not applicable (java editor not available)||works but both elements are highlighted in both editors (see bug 64911)|
|Current line highlight within active focused editor||critical||switch the focus (by mouse-clicking) between the two editors||works|| fixed
does not appear in top editor and cursor is no longer visible in bottom editor after split
|Back/Forward Navigation (Navigate->Back/Forward from menu or Alt-Left/Right Arrow keys)||nice-to-have||click within the one of the two editors; make a change; switch to another editor; use Go Back command (Alt-LeftArrow) to go back||does not always go back to the editor where the change was made||does not always go back to the editor where the change was made||does not always go back to the editor where the change was made|
|Moving around text using Ctrl-? key commands||critical||Use Ctrl+Home/End to move to the beginning/end of the editor; Ctrl+Left/Right to move left/right a word at a time; Ctrl+Shift+Left/Right to move and left/right a word at a time and expand the selection||works|| fixed
always acts on top editor in split mode, regardless of which editor (top or bottom) the cursor is in
|Undo/Redo from menu||critical||open a split editor or multiple editor tabs, type some text in one of the editors and select Edit->Undo from the menu||works||works||works|
|Undo/Redo using keyboard||critical||open a split editor or multiple editor tabs, type some text in one of the editors and type Ctrl-Z to undo then Ctrl-Y to redo||works||works||works|
|Cut/Copy/Paste from menu||critical||open a split editor or multiple editor tabs, select some text in one of the editors and select Edit->Cut from the menu, then Edit->Paste||works||works||works|
|Cut/Copy/Paste using keyboard||critical||open a split editor or multiple editor tabs, select some text in one of the editors and type Ctrl-X to cut, then Ctrl-V to paste||works||works||works|
|Quick-fix shortcut||critical||press Ctrl-1 where a quick-fix is available (misspelled word for example); check at different locations in both editors||works||works||works|
|Incremental find||critical||press Ctrl-J then type some text to look for||works||works||works|
|Find Next/Previous shortcuts||critical||press Ctrl-K; Ctrl-Shift-K to find the next/previous occurrence of the selected text||works||works||works|
|Find Next/Previous from menu||critical||use Edit->Find Next/Previous from menu||works||works||works|
|Go to line action||critical||Select Navigate-> Go to line... from the menu; type a line that would require the active editor to be scrolled to bring into view||works||works||works|
|Overview Ruler context menu||critical||right click on the overview ruler (to the right of vertical scrollbar)||works||works||works|
|Vertical Ruler context menu||critical||right click on the vertical ruler (to the left of editor) after splitting in either editor||works||does not work after splitting several times - the context menu stops showing on right-click||works|
|Show whitespace characters toggle||critical||customize perspective and make sure the Editor Presentations command group is checked under the Commands tab. Open Split editor and press the toggle white-space toolbar button||works||only updates the active editor||works|
|Default (non-accessible) caret||important||Uncheck the "use custom caret" option from the Accessibility preference panel||works||the caret no longer shows in the slave editor||works|
|Text editor font change||important||Change the Text Font from the Colors and Fonts preference panel||works||the font of the active editor only is updated||works|
When preferences that are related to editor appearance or behavior are updated, a split editor needs to propagate the changes to both of its internal editors. Here is a comprehensive list of text editor preferences and the corresponding split editor behavior on preference change.