Jump to: navigation, search

Difference between revisions of "Implement Split File Editor Functionality for the Eclipse IDE"

(Releases)
(Project Completion Plan)
Line 9: Line 9:
  
 
== Project Completion Plan ==
 
== Project Completion Plan ==
 +
 +
'''Legend'''
 +
 +
[[Image:Glass.gif]] Pending item/not started<br>
 +
[[Image:Progress.gif]] Work in progress<br>
 +
[[Image:Ok_green.gif]] Bug fixed / Feature added
 +
  
 
{| {{table}}
 
{| {{table}}
Line 19: Line 26:
 
| July 21, 2008
 
| July 21, 2008
 
|  
 
|  
* MultiEditor backwards compatibility
+
[[Image:Ok_green.gif]] MultiEditor backwards compatibility
* Fix activation warnings and Java breadcrumb clicking problem
+
[[Image:Ok_green.gif]] Fix activation warnings and Java breadcrumb clicking problem
* AbstractMultiEditor patch for bug [https://bugs.eclipse.org/240651 240651]
+
[[Image:Ok_green.gif]] AbstractMultiEditor patch for bug [https://bugs.eclipse.org/240651 240651]
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
 
! M2
 
! M2
 
| July 28, 2008
 
| July 28, 2008
 
|  
 
|  
* AbstractMultiEditor API for dynamic addition/removal of InnerEditors
+
[[Image:Progress.gif]] AbstractMultiEditor API for dynamic addition/removal of InnerEditors
* Design and implement a procedure for enabling split editing support in existing and new editors  
+
[[Image:Progress.gif]] Design and implement a procedure for enabling split editing support in existing and new editors  
* SplitMultiEditor persistence between sessions
+
[[Image:Progress.gif]] SplitMultiEditor persistence between sessions
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
 
! RC1
 
! RC1
 
| August 4, 2008
 
| August 4, 2008
 
|  
 
|  
* Look into participation in the [http://wiki.eclipse.org/SoC_Update_Site SoC Simultaneous Release]
+
[[Image:Glass.gif]] Look into participation in the [http://wiki.eclipse.org/SoC_Update_Site SoC Simultaneous Release]
* Comprehensive testing and fixing of new issues
+
[[Image:Glass.gif]] Comprehensive testing and fixing of new issues
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
 
! RC2
 
! RC2
 
| August 11, 2008
 
| August 11, 2008
 
|  
 
|  
* Go over [https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=MultiEditor&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0 Daniel's List of MultiEditor-related bugs] and fix or comment where appropriate.
+
[[Image:Glass.gif]] Go over [https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=MultiEditor&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0 Daniel's List of MultiEditor-related bugs] and fix or comment where appropriate.
* Fix other related bugs such as [http://bugs.eclipse.org/64911 64911] if time permits
+
[[Image:Glass.gif]] Fix other related bugs such as [http://bugs.eclipse.org/64911 64911] if time permits
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
 
! Final
 
! Final
 
| August 18, 2008
 
| August 18, 2008
 
|
 
|
* Fix any critical coding issues only
+
[[Image:Glass.gif]] Fix any critical coding issues only
* Documentation and final integration work
+
[[Image:Glass.gif]] Documentation and final integration work
 
|}
 
|}
  

Revision as of 04:54, 22 July 2008

Releases

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

Legend

Glass.gif Pending item/not started
Progress.gif Work in progress
Ok green.gif Bug fixed / Feature added


Milestone Deadline Tasks
M1 July 21, 2008

Ok green.gif MultiEditor backwards compatibility Ok green.gif Fix activation warnings and Java breadcrumb clicking problem Ok green.gif AbstractMultiEditor patch for bug 240651

M2 July 28, 2008

Progress.gif AbstractMultiEditor API for dynamic addition/removal of InnerEditors Progress.gif Design and implement a procedure for enabling split editing support in existing and new editors Progress.gif SplitMultiEditor persistence between sessions

RC1 August 4, 2008

Glass.gif Look into participation in the SoC Simultaneous Release Glass.gif Comprehensive testing and fixing of new issues

RC2 August 11, 2008

Glass.gif Go over Daniel's List of MultiEditor-related bugs and fix or comment where appropriate. Glass.gif Fix other related bugs such as 64911 if time permits

Final August 18, 2008

Glass.gif Fix any critical coding issues only Glass.gif Documentation and final integration work

Implementations

Multi Editor-based

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.

  • Advantages
    • does not require custom work for different editor types (java/xml/etc)
    • works automatically with new custom editor types
  • Disadvantages
    • 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.

  • Advantages
    • 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.
  • Disadvantages
    • requires customization of every editor class that wants to support split editing (java/xml... etc)

Issue Tracker

Legend

Glass.gif Needs some investigation/research
Progress.gif Work in progress
Ok green.gif Bug fixed / Feature added

Uncategorized

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 Ok green.gif fixed
does not work - memory leak keeps nonexistent resource in package explorer
not tested works
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. Glass.gif 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 Ok green.gif fixed
works but invokes Save command twice
Ok green.gif works works
Save as critical Select File-> Save As from the main menu Ok green.gif fixed
works but the other nested editor is not switched to the new resource
Ok green.gif works works
Mark dirty editor's tab (star (*) next to file name) critical Make a change in the editor Ok green.gif fixed
does not mark editor tab as dirty with a * (star)
Ok green.gif works works
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 Glass.gif 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 Glass.gif 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 Ok green.gif works Ok green.gif fixed
does not appear in top editor and cursor is no longer visible in bottom editor after split
works
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 Ok green.gif works Ok green.gif fixed
always acts on top editor in split mode, regardless of which editor (top or bottom) the cursor is in
works
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 Ok green.gif works Ok green.gif 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 Ok green.gif works Ok green.gif 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 Ok green.gif works Ok green.gif 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 Ok green.gif works Ok green.gif 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 Ok green.gif works Ok green.gif works works
Incremental find critical press Ctrl-J then type some text to look for Ok green.gif works Ok green.gif works works
Find Next/Previous shortcuts critical press Ctrl-K; Ctrl-Shift-K to find the next/previous occurrence of the selected text Ok green.gif works Ok green.gif works works
Find Next/Previous from menu critical use Edit->Find Next/Previous from menu Ok green.gif works Ok green.gif 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 Ok green.gif works Ok green.gif works works
Overview Ruler context menu critical right click on the overview ruler (to the right of vertical scrollbar) Ok green.gif works Ok green.gif works works
Vertical Ruler context menu critical right click on the vertical ruler (to the left of editor) after splitting in either editor Ok green.gif works Glass.gif 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 Ok green.gif works Glass.gif only updates the active editor works
Default (non-accessible) caret important Uncheck the "use custom caret" option from the Accessibility preference panel Ok green.gif works Glass.gif 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 Ok green.gif works Glass.gif the font of the active editor only is updated works

Preferences

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.

Preference Page Preference Key Editor Class Are both editors updated?
Appearance color options General->Editors->Text Editors PREFERENCE_COLOR_* AbstractTextEditor Progress.gif no
Use custom caret General->Editors->Text Editors->Accessibility PREFERENCE_USE_CUSTOM_CARETS AbstractTextEditor Progress.gif no
Enable thick caret General->Editors->Text Editors->Accessibility PREFERENCE_WIDE_CARET AbstractTextEditor Ok green.gif yes
Enable on demand hyperlink… General->Editors->Text Editors->Hyperlinking PREFERENCE_HYPERLINKS_ENABLED AbstractTextEditor Glass.gif not testable on plain text editor
Default modifier key General->Editors->Text Editors->Hyperlinking PREFERENCE_HYPERLINK_KEY_MODIFIER AbstractTextEditor Glass.gif not testable on plain text editor
Glass.gif Glass.gif PREFERENCE_RULER_CONTRIBUTIONS AbstractTextEditor Glass.gif pref page not found
Show whitespace characters General->Editors->Text Editors PREFERENCE_SHOW_WHITESPACE_CHARACTERS AbstractTextEditor Progress.gif no
Enable drag and drop of text General->Editors->Text Editors PREFERENCE_TEXT_DRAG_AND_DROP_ENABLED AbstractTextEditor Progress.gif no
When mouse moved into hover… General->Editors->Text Editors PREFERENCE_HOVER_ENRICH_MODE AbstractTextEditor Progress.gif no
Glass.gif Glass.gif OVERVIEW_RULER AbstractDecoratedTextEditor Glass.gif pref page not found
Glass.gif Glass.gif DISABLE_OVERWRITE_MODE AbstractDecoratedTextEditor Glass.gif pref page not found
Show line numbers General->Editors->Text Editors LINE_NUMBER_RULER AbstractDecoratedTextEditor Ok green.gif yes
Enable quick diff General->Editors->Text Editors->Quick Diff QUICK_DIFF_ALWAYS_ON AbstractDecoratedTextEditor Ok green.gif yes
Show differences in overview ruler General->Editors->Text Editors->Quick Diff Glass.gif Glass.gif Ok green.gif yes
Colors General->Editors->Text Editors->Quick Diff Glass.gif Glass.gif Progress.gif EXCEPTION, but works
Displayed tab width General->Editors->Text Editors EDITOR_TAB_WIDTH AbstractDecoratedTextEditor no
Insert spaces for tabs General->Editors->Text Editors EDITOR_SPACES_FOR_TABS AbstractDecoratedTextEditor no
Undo history size General->Editors->Text Editors EDITOR_UNDO_HISTORY_SIZE AbstractDecoratedTextEditor Glass.gif not tested
Show range indicator General->Editors->Text Editors SHOW_RANGE_INDICATOR AbstractDecoratedTextEditor Glass.gif what is range indication
Enable spell checking General->Editors->Text Editors->Spelling PREFERENCE_SPELLING_ENABLED TextEditor Ok green.gif yes
Highlight current line General->Editors->Text Editors Glass.gif Glass.gif Progress.gif EXCEPTION when turning on, but works
Show print margin General->Editors->Text Editors Glass.gif Glass.gif Progress.gif EXCEPTION
Smart caret positioning at line start and end General->Editors->Text Editors Glass.gif Glass.gif Progress.gif no
(all) General->Editors->Text Editors->Linked Mode Glass.gif Glass.gif Glass.gif not tested
Vertical ruler General->Editors->Text Editors->Annotations Glass.gif Glass.gif Ok green.gif yes
Overview ruler General->Editors->Text Editors->Annotations Glass.gif Glass.gif Ok green.gif yes
Text as General->Editors->Text Editors->Annotations Glass.gif Glass.gif Progress.gif EXCEPTION, but works
Color General->Editors->Text Editors->Annotations Glass.gif Glass.gif Progress.gif EXCEPTION, but works

Editor Actions

TODO