![]() |
In the Editors lecture you learned how to create a new editor in order to extend the capabilities of Eclipse. The solution presents a simple but functionally complete editor, a "mini-spreadsheet". It demonstrates how you can implement an editor that supports basic functionality, contributes actions, and allows others to extend its capabilities.
Note: The Editors topic relies on your understanding of the basic structure and capabilities of Views. Similarly, this editor solution relies on your understanding the Views solution found in the projectcom.ibm.lab.soln.views
.
This allows the user to create the resource that the mini-spreadsheet editor will display and modify.
Notice that the editor has added some new toolbar buttons (left, center, right alignment
and clear all ()), pulldown menu choices, and a pop-up menu for selected rows. These choices
are the "base choices" supplied by the editor. Other plug-ins may extend these, as shown
in the next step.
The menu choices shown with an asterisk (*) were contributed by another plug-in, defined
in the project com.ibm.soln.editor.extras
,
as well as a toolbar button contribution ().
To run the example, launch the run-time instance of Eclipse (Run > Run As > Run-time Workbench). Create a new mini-spreadsheet from File > New > Other > Mini-spreadsheet. The editor will be opened automatically.
As described above, this solution is partitioned into two projects. The first,
com.ibm.lab.soln.editor
, defines the base functionality. The second,
com.ibm.lab.soln.editor.extras
, contributes actions to the
editor's pulldown menu, toolbar, and pop-up menu. Since there are a fair amount of classes involved,
they are arranged in different packages to make it clearer what roles the classes fulfill.
Note:This plug-in should have been separated into two plug-ins; one for the
user interface, another for the model classes in the com.ibm.lab.soln.editor.core
package.
For simplicity's sake, the model and UI are in the same plug-in.
Located in the com.ibm.lab.soln.editor.core
package, these represent the
model (non-UI) classes.
Class (All) | Description |
MiniSpreadsheet |
Model of a spreadsheet, containing 0...n rows. |
IMiniSpreadsheetRow |
Model of a spreadsheet row. It is convenient to have a separate model for the rows,
since JFace viewers, such as TableViewer , are row-oriented. |
IMiniSpreadsheetListener |
Change notification interface. |
Located in the com.ibm.lab.soln.editor.ui
package, these represent the
base user interface classes expected by JFace.
Class (All) | Description |
MiniSpreadsheetContentProvider |
Mediator between the model, MiniSpreadsheet , and structured
content viewers like TableViewer . |
MiniSpreadsheetEditor |
The spreadsheet editor which provides a simple interface to modifying spreadsheet files (*.mss). |
MiniSpreadsheetImages |
Convenience class defining all the image descriptors that the editor user interface requires. |
MiniSpreadsheetLabelProvider |
Mediator between the spreadsheet's underlying
elements, instances of MiniSpreadsheetRow , and the viewer. |
MiniSpreadsheetUIPlugin |
Singleton representing the plug-in itself. |
Located in the com.ibm.lab.soln.editor.ui.actions
package, these represent the
base user interface actions, that is, those actions that are defined by the editor itself, not
contributed.
Class (All) | Description |
AppendRowAction |
Action to add a row to the end of the spreadsheet. |
ChangeAlignmentAction |
Action that changes the alignment of the table columns. For this implementation, the column alignment isn't saved. In a more complete implementation, this would be saved as spreadsheet metadata. |
ClearAllAction |
Action to set all cells to an empty string. |
MiniSpreadsheetEditorAction |
Superclass to all the editor actions. |
MiniSpreadsheetEditorActionBarContributor |
Responsible for adding the editor's menu choices and toolbar buttons. This class is a singleton, i.e., it is shared by all active instances of this editor. |
MiniSpreadsheetRowActionFilter |
Defines an example action filter, used to query state information from MiniSpreadsheetRow
instances using <objectState> tags. See the
com.ibm.lab.soln.editor.extras
project for an example of its use. |
MiniSpreadsheetRowActionFilterFactory |
Manages the creation of instance of MiniSpreadsheetRowActionFilter . |
RemoveRowAction |
Action to remove the selected rows. |
ShowTotalAction |
Action to display the total of all selected integer rows. |
Located in the com.ibm.lab.soln.editor.ui.wizards
package, defines the
wizard necessary to create a new mini-spreadsheet.
Class (All) | Description |
MiniSpreadsheetWizardNewFileCreationPage |
An extension of the standard file creation wizard, it adds fields for the spreadsheet dimensions. Note that in this implementation, the user can add and delete rows, but cannot change the number of columns after the spreadsheet is created. |
NewMiniSpreadsheetWizard |
Wizard to drive the spreadsheet file creation (*.mss). |
These classes are defined in a new plug-in, contained in the project
com.ibm.lab.soln.editor.extras
. The steps for contributing actions
is different than the steps that an editor follows to define its own actions. The
purpose of this plug-in is to clearly demonstrate this difference.
Class | Description |
IncrementRowValuesObjectActionDelegate |
Action to increment the integer values in the selected row(s). It performs an operation similar to those in the base context menu actions, but this action is contributed. |
ShowMaxEditorActionDelegate |
Action to show the maximum of the integers in the table. It performs an operation similar to those in the base window pulldown menu actions, but this action is contributed. |
DoubleActionDelegate |
Action to double integer values in the selected row(s). It performs an operation similar to those in the base toolbar button actions, but this action is contributed. |
Notice that all the actions are subtypes of IActionDelegate
. This extra
level of indirection between an action contribution and the action itself allows the
Workbench to defer loading the plug-in that is contributing the actions.
© Copyright International Business Machines Corporation, 2003.
All rights reserved.