Benutzer:Strittm/RefactoringHiwi/ToolbarButtonzuGraphitiEditor
Graphiti Editor einen Toolbar Button hinzufügen
Dieser Artikel beschreibt das Hinzufügen eines Toolbar Buttons innerhalb des Graphiti Editors.
Überschreiben des allgemeinen DiagramEditors
- damit eine spezifische DiagramBehavior implementiert werden kann muss zunächst der DiagramEditor überschrieben werden. Darin wird die eigene spezifische DiagramBehavior initialisiert.
public class CustomDiagramEditor extends DiagramEditor {
...
@Override
protected DiagramBehavior createDiagramBehavior() {
return new CustomDiagramBehavior(this);
}
...
}
Definieren der eigenen DiagramBehavior
- erben von DiagramBehavior und initActionRegistry überschreiben
public class CustomDiagramBehavior extends DiagramBehavior {
public CustomDiagramBehavior() {
super(diagramContainer);
}
@Override
protected void initActionRegistry(ZoomManager zoomManager) {
...
}
}
- in initActionRegistry zunächst die super-Methode aufrufen und eigene Actions (z.B. HideAction) definieren
@Override
protected void initActionRegistry(ZoomManager zoomManager) {
super.initActionRegistry(zoomManager);
final ActionRegistry actionRegistry = diagramContainer.getActionRegistry();
@SuppressWarnings("unchecked")
final List<String> selectionActions = diagramContainer.getSelectionActions();
IAction action = new HideAction(this);
actionRegistry.registerAction(action);
selectionActions.add(action.getId());
}
Definieren eigener Actions
- hierfür muss von der JFace Action abgeleitet werden sowie die run()-Methode und der Konstruktor angepasst werden.
public class HideAction extends Action {
public static final String TOOL_TIP = "Hide unsupported elements";
public static final String TEXT = "Hide";
public static final String ACTION_ID = "hide.action.jface";
public HideAction(DiagramBehavior diagramBehavior) {
super();
setText(TEXT);
setToolTipText(TOOL_TIP);
setId(ACTION_ID);
}
@Override
public void run() {
System.out.println("Beispiel");
}
}
Hinzufügen der Action zur Graphiti Toolbar
- definieren eines eigenen ActionBarContributors
- in der buildActions()-Methode eigene Actions hinzufügen
- in der contributeToToolbar()-Methode kann die Toolsbar noch verändert werden
public class CoreActionBarContributor extends DiagramEditorActionBarContributor {
@Override
protected void buildActions() {
super.buildActions();
RetargetAction hideAction = new RetargetAction(HideAction.ACTION_ID, HideAction.TEXT);
addRetargetAction(hideAction);
}
@Override
public void contributeToToolBar(IToolBarManager tbm) {
super.contributeToToolBar(tbm);
tbm.add(getAction(HideAction.ACTION_ID));
tbm.remove(GEFActionConstants.ALIGN_LEFT);
}
}
Registrieren der neuen Komponenten in der plugin.xml
- Hinzufügen der neu erstellten Editor-Klasse
- Hinzufügen des neuen CustomActionBarContributor
<extension point="org.eclipse.ui.editors">
<editor
class="editor.CustomDiagramEditor"
contributorClass="editor.actionbar.CustomActionBarContributor"
...
</editor>
...
</extension>