View Javadoc

1   /*
2    * This file is a part of CAST project.
3    * (c) Copyright 2007, AGH University of Science & Technology
4    * All rights reserved. Check the documentation for licensing terms.
5    * https://caribou.iisg.agh.edu.pl/trac/cast
6    */
7   package pl.edu.agh.cast.schema.action;
8   
9   import java.beans.PropertyChangeEvent;
10  import java.beans.PropertyChangeListener;
11  
12  import org.eclipse.gef.ui.actions.WorkbenchPartAction;
13  import org.eclipse.swt.widgets.Event;
14  import org.eclipse.ui.IWorkbenchPart;
15  
16  import pl.edu.agh.cast.backward.resources.DiagramEditorInput;
17  import pl.edu.agh.cast.model.visual.backward.IDiagram;
18  import pl.edu.agh.cast.schema.command.ResetThicknessCommand;
19  import pl.edu.agh.cast.schema.editor.SchemaEditor;
20  import pl.edu.agh.cast.schema.figure.ConnectionType;
21  import pl.edu.agh.cast.schema.model.SchemaDiagram;
22  import pl.edu.agh.cast.schema.model.visual.SchemaDiagramSettings;
23  import pl.edu.agh.cast.schema.util.Messages;
24  
25  /**
26   * Action to reset connections thickness.
27   *
28   * @author AGH CAST Team
29   */
30  public class ResetThicknessAction extends WorkbenchPartAction implements PropertyChangeListener {
31  
32      public static final String ID = "resetThicknessAction"; //$NON-NLS-1$
33  
34      public static final String MENU_TEXT = Messages.ResetThicknessAction_1;
35  
36      public ResetThicknessAction(IWorkbenchPart part) {
37          super(part);
38          if (null != getCommandStack() && part instanceof SchemaEditor) {
39              SchemaEditor schemaEditor = (SchemaEditor)part;
40              SchemaDiagram model = (SchemaDiagram)((DiagramEditorInput)schemaEditor.getEditorInput()).getDiagram();
41              model.getSettings().addPropertyChangeListener(this);
42              setEnabled(ConnectionType.VARIABLE_THICKNESS_CONNECTION.equals(((SchemaDiagramSettings)model.getSettings())
43                      .getConnectionType()));
44          }
45  
46      }
47  
48      @Override
49      public void dispose() {
50          IWorkbenchPart part = getWorkbenchPart().getSite().getPart();
51          if (null != getCommandStack() && part instanceof SchemaEditor) {
52              SchemaEditor schemaEditor = (SchemaEditor)part;
53              SchemaDiagram model = (SchemaDiagram)((DiagramEditorInput)schemaEditor.getEditorInput()).getDiagram();
54              model.getSettings().removePropertyChangeListener(this);
55          }
56  
57          super.dispose();
58      }
59  
60      @Override
61      public String getId() {
62          return ID;
63      }
64  
65      @Override
66      public String getText() {
67          return MENU_TEXT;
68      }
69  
70      @Override
71      public void runWithEvent(Event event) {
72  
73          IWorkbenchPart part = getWorkbenchPart().getSite().getPart();
74          if (null != getCommandStack() && part instanceof SchemaEditor) {
75              SchemaEditor schemaEditor = (SchemaEditor)part;
76              IDiagram model = ((DiagramEditorInput)schemaEditor.getEditorInput()).getDiagram();
77  
78              getCommandStack().execute(new ResetThicknessCommand(model));
79          }
80      }
81  
82      public void propertyChange(PropertyChangeEvent evt) {
83          if (SchemaDiagramSettings.CONNECTION_TYPE.equals(evt.getPropertyName())) {
84              setEnabled(ConnectionType.VARIABLE_THICKNESS_CONNECTION.equals(evt.getNewValue()));
85          }
86      }
87  
88      @Override
89      protected boolean calculateEnabled() {
90          IWorkbenchPart part = getWorkbenchPart().getSite().getPart();
91          if (null != getCommandStack() && part instanceof SchemaEditor) {
92              SchemaEditor schemaEditor = (SchemaEditor)part;
93              IDiagram model = ((DiagramEditorInput)schemaEditor.getEditorInput()).getDiagram();
94              return ConnectionType.VARIABLE_THICKNESS_CONNECTION.equals(((SchemaDiagramSettings)model.getSettings())
95                      .getConnectionType());
96          } else {
97              return false;
98          }
99      }
100 }