1 package org.simantics.district.route.ui.handlers;
3 import javax.inject.Named;
5 import org.eclipse.e4.core.di.annotations.CanExecute;
6 import org.eclipse.e4.core.di.annotations.Execute;
7 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
8 import org.eclipse.e4.ui.services.IServiceConstants;
9 import org.eclipse.jface.viewers.ISelection;
10 import org.eclipse.swt.widgets.Shell;
11 import org.eclipse.ui.IEditorPart;
12 import org.simantics.district.network.ui.DistrictDiagramEditor;
13 import org.simantics.district.network.ui.participants.RoutingMode;
14 import org.simantics.g2d.canvas.ICanvasContext;
15 import org.simantics.modeling.ui.diagramEditor.DiagramViewer;
16 import org.simantics.utils.ui.workbench.WorkbenchUtils;
19 * @author Jani Simomaa
21 public class ActivateCreateRoute {
24 public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) ISelection selection) {
25 IEditorPart activeEditor = WorkbenchUtils.getActiveEditor();
26 if (activeEditor != null && activeEditor instanceof DistrictDiagramEditor) {
27 DistrictDiagramEditor editor = (DistrictDiagramEditor) activeEditor;
28 DiagramViewer viewer = editor.getAdapter(DiagramViewer.class);
29 ICanvasContext context = viewer.getAdapter(ICanvasContext.class);
30 RoutingMode routingMode = context.getAtMostOneItemOfClass(RoutingMode.class);
31 return routingMode == null;
37 public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell activeShell,
38 @Named(IServiceConstants.ACTIVE_PART) MPart part,
39 @Named(IServiceConstants.ACTIVE_SELECTION) ISelection selection) {
41 IEditorPart activeEditor = WorkbenchUtils.getActiveEditor();
42 if (activeEditor != null && activeEditor instanceof DistrictDiagramEditor) {
43 DistrictDiagramEditor editor = (DistrictDiagramEditor) activeEditor;
44 DiagramViewer viewer = editor.getAdapter(DiagramViewer.class);
45 ICanvasContext context = viewer.getAdapter(ICanvasContext.class);
46 RoutingMode routingMode = context.getAtMostOneItemOfClass(RoutingMode.class);
47 if (routingMode == null || routingMode.isRemoved()) {
48 routingMode = new RoutingMode(0);
49 context.add(routingMode);