Benutzer:Strittm/RefactoringHiwi/ToolbarButtonzuGraphitiEditor

Aus SDQ-Wiki

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>