/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor.handlers; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.gef.palette.ConnectionCreationToolEntry; import org.eclipse.gef.palette.PaletteGroup; import org.eclipse.gef.ui.palette.PaletteViewer; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import de.rcenvironment.core.gui.workflow.editor.WorkflowEditor; /** * Handler to to select "connectionTool" and focus worklfowEditor. * * @author Jascha Riedel */ public class SelectConnectionToolHandler extends AbstractHandler { private WorkflowEditor editor; private PaletteViewer paletteViewer; @Override public Object execute(ExecutionEvent arg0) throws ExecutionException { final IWorkbenchPart activePart = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (activePart instanceof WorkflowEditor) { editor = (WorkflowEditor) activePart; this.paletteViewer = editor.getPaletteViewer(); editor.setFocus(); switchToConnectionTool(); } return null; } private void switchToConnectionTool() { if (paletteViewer != null && !isConnectionToolSelected()) { for (Object paletteGroupObject : paletteViewer.getPaletteRoot().getChildren()) { if (paletteGroupObject instanceof PaletteGroup) { PaletteGroup paletteGroup = (PaletteGroup) paletteGroupObject; for (Object paletteEntryObject : paletteGroup.getChildren()) { if (paletteEntryObject instanceof ConnectionCreationToolEntry){ paletteViewer.setActiveTool((ConnectionCreationToolEntry) paletteEntryObject); } } } } } } private boolean isConnectionToolSelected(){ return (paletteViewer.getActiveTool() instanceof ConnectionCreationToolEntry); } }