1
2
3
4
5
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
27
28
29
30 public class ResetThicknessAction extends WorkbenchPartAction implements PropertyChangeListener {
31
32 public static final String ID = "resetThicknessAction";
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 }