diff --git a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF index 2e134bbdbfe2e45a678bf7fea3516bb1104d9a0f..b9f7194b6c271a84dc5615ce6df02a6a88eef5f8 100644 --- a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF +++ b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF @@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)", org.eclipse.core.databinding.beans;bundle-version="[1.1.1,2.0.0)", org.eclipse.gef;bundle-version="[3.7.0,4.0.0)";visibility:=reexport, de.prob.core;bundle-version="[9.3.0,9.4.0)";visibility:=reexport, - org.eventb.core;bundle-version="[2.1.0,2.6.0)" + org.eventb.core;bundle-version="[2.1.0,2.6.0)", + org.eclipse.help;bundle-version="3.5.100" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Eclipse-RegisterBuddy: de.prob.core diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif new file mode 100644 index 0000000000000000000000000000000000000000..86550fe9f4505c88287a70add9bb89bd24d0e8b2 Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif differ diff --git a/de.bmotionstudio.gef.editor/icons/icon_add.gif b/de.bmotionstudio.gef.editor/icons/icon_add.gif deleted file mode 100644 index 1b0630841412d754fd6546e33923ad1ac08a2a9b..0000000000000000000000000000000000000000 Binary files a/de.bmotionstudio.gef.editor/icons/icon_add.gif and /dev/null differ diff --git a/de.bmotionstudio.gef.editor/icons/icon_ascript.png b/de.bmotionstudio.gef.editor/icons/icon_ascript.png deleted file mode 100644 index 4cd71dba209ec693a58b14e7351873b374080988..0000000000000000000000000000000000000000 Binary files a/de.bmotionstudio.gef.editor/icons/icon_ascript.png and /dev/null differ diff --git a/de.bmotionstudio.gef.editor/icons/icon_motion.gif b/de.bmotionstudio.gef.editor/icons/icon_motion.gif deleted file mode 100644 index 173d240af99eff66594bbefb1d12d16da8d8b548..0000000000000000000000000000000000000000 Binary files a/de.bmotionstudio.gef.editor/icons/icon_motion.gif and /dev/null differ diff --git a/de.bmotionstudio.gef.editor/icons/icon_motion_wiz.gif b/de.bmotionstudio.gef.editor/icons/icon_motion_wiz.gif deleted file mode 100644 index 1e9bf55a7b95055a4cc8bc7646266c58fb28e45f..0000000000000000000000000000000000000000 Binary files a/de.bmotionstudio.gef.editor/icons/icon_motion_wiz.gif and /dev/null differ diff --git a/de.bmotionstudio.gef.editor/icons/icon_screenshot.gif b/de.bmotionstudio.gef.editor/icons/icon_screenshot.gif deleted file mode 100644 index 176830af2dc8be87218c4dd944ba7dc6ffb79756..0000000000000000000000000000000000000000 Binary files a/de.bmotionstudio.gef.editor/icons/icon_screenshot.gif and /dev/null differ diff --git a/de.bmotionstudio.gef.editor/plugin.xml b/de.bmotionstudio.gef.editor/plugin.xml index f1d465afcd7efc7c5ebae8ca9f8eeb8541137848..3a5e5027a79b707f8aef77b52a444de76b203556 100644 --- a/de.bmotionstudio.gef.editor/plugin.xml +++ b/de.bmotionstudio.gef.editor/plugin.xml @@ -49,7 +49,17 @@ class="de.bmotionstudio.gef.editor.library.LibraryView" icon="icons/icon_library.gif" id="de.bmotionstudio.gef.editor.LibraryView" - name="BMS Library"> + name="Library" + restorable="true"> + </view> + <view + allowMultiple="false" + category="de.bmotionstudio.views" + class="de.bmotionstudio.gef.editor.observer.view.ObserverView" + icon="icons/icon_observer.gif" + id="de.bmotionstudio.gef.editor.ObserverView" + name="Observer" + restorable="true"> </view> </extension> <extension @@ -336,10 +346,6 @@ description="Observer for switching the coordinates of the control" name="Switch Coordinates"> </observer> - <observer - class="de.bmotionstudio.gef.editor.observer.ExternalObserverScript" - name="External Observer Script"> - </observer> <observer class="de.bmotionstudio.gef.editor.observer.TableObserver" name="Table Observer"> @@ -399,270 +405,255 @@ point="de.bmotionstudio.gef.editor.includeObserver"> <include language="EventB"> - <observer - id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> - <control - id="de.bmotionstudio.gef.editor.image"> - </control> - <control - id="de.bmotionstudio.gef.editor.button"> - </control> - <control - id="de.bmotionstudio.gef.editor.composite"> - </control> - <control - id="de.bmotionstudio.gef.editor.text"> - </control> - <control - id="de.bmotionstudio.gef.editor.ellipse"> - </control> - <control - id="de.bmotionstudio.gef.editor.rectangle"> - </control> - <control - id="de.bmotionstudio.gef.editor.radiobutton"> - </control> - <control - id="de.bmotionstudio.gef.editor.checkbox"> - </control> - <control - id="de.bmotionstudio.gef.editor.connection"> - </control> - <control - id="de.bmotionstudio.gef.editor.tablecell"> - </control> - <control - id="de.bmotionstudio.gef.editor.table"> - </control> - <control - id="de.bmotionstudio.gef.editor.tablecolumn"> - </control> - <control - id="de.bmotionstudio.gef.editor.signal"> - </control> - <control - id="de.bmotionstudio.gef.editor.tank"> - </control> - <control - id="de.bmotionstudio.gef.editor.switch"> - </control> - <control - id="de.bmotionstudio.gef.editor.track"> - </control> - <control - id="de.bmotionstudio.gef.editor.light"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> - <control - id="de.bmotionstudio.gef.editor.image"> - </control> - <control - id="de.bmotionstudio.gef.editor.button"> - </control> - <control - id="de.bmotionstudio.gef.editor.composite"> - </control> - <control - id="de.bmotionstudio.gef.editor.text"> - </control> - <control - id="de.bmotionstudio.gef.editor.rectangle"> - </control> - <control - id="de.bmotionstudio.gef.editor.radiobutton"> - </control> - <control - id="de.bmotionstudio.gef.editor.textfield"> - </control> - <control - id="de.bmotionstudio.gef.editor.checkbox"> - </control> - <control - id="de.bmotionstudio.gef.editor.ellipse"> - </control> - <control - id="de.bmotionstudio.gef.editor.table"> - </control> - <control - id="de.bmotionstudio.gef.editor.signal"> - </control> - <control - id="de.bmotionstudio.gef.editor.tank"> - </control> - <control - id="de.bmotionstudio.gef.editor.switch"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay"> - <control - id="de.bmotionstudio.gef.editor.text"> - </control> - <control - id="de.bmotionstudio.gef.editor.radiobutton"> - </control> - <control - id="de.bmotionstudio.gef.editor.textfield"> - </control> - <control - id="de.bmotionstudio.gef.editor.button"> - </control> - <control - id="de.bmotionstudio.gef.editor.tablecell"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.SetAttribute"> - <control - id="de.bmotionstudio.gef.editor.image"> - </control> - <control - id="de.bmotionstudio.gef.editor.button"> - </control> - <control - id="de.bmotionstudio.gef.editor.composite"> - </control> - <control - id="de.bmotionstudio.gef.editor.text"> - </control> - <control - id="de.bmotionstudio.gef.editor.rectangle"> - </control> - <control - id="de.bmotionstudio.gef.editor.radiobutton"> - </control> - <control - id="de.bmotionstudio.gef.editor.checkbox"> - </control> - <control - id="de.bmotionstudio.gef.editor.connection"> - </control> - <control - id="de.bmotionstudio.gef.editor.ellipse"> - </control> - <control - id="de.bmotionstudio.gef.editor.textfield"> - </control> - <control - id="de.bmotionstudio.gef.editor.tablecell"> - </control> - <control - id="de.bmotionstudio.gef.editor.table"> - </control> - <control - id="de.bmotionstudio.gef.editor.tablecolumn"> - </control> - <control - id="de.bmotionstudio.gef.editor.signal"> - </control> - <control - id="de.bmotionstudio.gef.editor.tank"> - </control> - <control - id="de.bmotionstudio.gef.editor.switch"> - </control> - <control - id="de.bmotionstudio.gef.editor.track"> - </control> - <control - id="de.bmotionstudio.gef.editor.light"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates"> - <control - id="de.bmotionstudio.gef.editor.composite"> - </control> - <control - id="de.bmotionstudio.gef.editor.visualization"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.ExternalObserverScript"> - <control - id="de.bmotionstudio.gef.editor.image"> - </control> - <control - id="de.bmotionstudio.gef.editor.button"> - </control> - <control - id="de.bmotionstudio.gef.editor.composite"> - </control> - <control - id="de.bmotionstudio.gef.editor.text"> - </control> - <control - id="de.bmotionstudio.gef.editor.rectangle"> - </control> - <control - id="de.bmotionstudio.gef.editor.radiobutton"> - </control> - <control - id="de.bmotionstudio.gef.editor.checkbox"> - </control> - <control - id="de.bmotionstudio.gef.editor.connection"> - </control> - <control - id="de.bmotionstudio.gef.editor.ellipse"> - </control> - <control - id="de.bmotionstudio.gef.editor.textfield"> - </control> - <control - id="de.bmotionstudio.gef.editor.tablecell"> - </control> - <control - id="de.bmotionstudio.gef.editor.table"> - </control> - <control - id="de.bmotionstudio.gef.editor.tablecolumn"> - </control> - <control - id="de.bmotionstudio.gef.editor.light"> - </control> - <control - id="de.bmotionstudio.gef.editor.signal"> - </control> - <control - id="de.bmotionstudio.gef.editor.switch"> - </control> - <control - id="de.bmotionstudio.gef.editor.track"> - </control> - <control - id="de.bmotionstudio.gef.editor.tracknode"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.SwitchImage"> - <control - id="de.bmotionstudio.gef.editor.image"> - </control> - <control - id="de.bmotionstudio.gef.editor.composite"> - </control> - <control - id="de.bmotionstudio.gef.editor.rectangle"> - </control> - <control - id="de.bmotionstudio.gef.editor.ellipse"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.ColumnObserver"> - <control - id="de.bmotionstudio.gef.editor.tablecolumn"> - </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.TableObserver"> - <control - id="de.bmotionstudio.gef.editor.table"> - </control> - </observer> + <control + id="de.bmotionstudio.gef.editor.image"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchImage"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.button"> + <observer + id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.checkbox"> + <observer + id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.radiobutton"> + <observer + id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.textfield"> + <observer + id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.composite"> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchImage"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.text"> + <observer + id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.rectangle"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchImage"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.connection"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.ellipse"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchImage"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.table"> + <observer + id="de.bmotionstudio.gef.editor.observer.TableObserver"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.tablecolumn"> + <observer + id="de.bmotionstudio.gef.editor.observer.ColumnObserver"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.tablecell"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.signal"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.light"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.tank"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.tracknode"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.track"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + </control> + <control + id="de.bmotionstudio.gef.editor.switch"> + <observer + id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates"> + </observer> + </control> </include> </extension> </plugin> diff --git a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd index 42a20dc11a1b04d951c27b1e7aff883084d90fa0..9a9fd6bff375350ae30cbaff7e8a92f020265733 100644 --- a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd +++ b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd @@ -54,6 +54,9 @@ </appInfo> </annotation> <complexType> + <sequence minOccurs="1" maxOccurs="unbounded"> + <element ref="observer"/> + </sequence> <attribute name="id" type="string" use="required"> <annotation> <documentation> @@ -71,9 +74,6 @@ </appInfo> </annotation> <complexType> - <sequence minOccurs="1" maxOccurs="unbounded"> - <element ref="control"/> - </sequence> <attribute name="id" type="string" use="required"> <annotation> <documentation> @@ -87,7 +87,7 @@ <element name="include"> <complexType> <sequence minOccurs="1" maxOccurs="unbounded"> - <element ref="observer"/> + <element ref="control"/> </sequence> <attribute name="language" type="string" use="required"> <annotation> diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java index 9822355aa3049caf66bd4c8c764786da49fd4053..58faadced59bf14c5fed56a3bbbaf24c71af7097 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java @@ -25,7 +25,6 @@ import org.eclipse.ui.actions.ActionFactory; import de.bmotionstudio.gef.editor.action.OpenSchedulerEventAction; import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode; import de.bmotionstudio.gef.editor.model.Visualization; import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; @@ -120,8 +119,6 @@ public class BMSContextMenuProvider extends ContextMenuProvider { if (model instanceof BControl) bcontrol = (BControl) model; - else if (model instanceof ObserverRootVirtualTreeNode) - bcontrol = ((ObserverRootVirtualTreeNode) model).getControl(); else return; @@ -131,51 +128,9 @@ public class BMSContextMenuProvider extends ContextMenuProvider { "icons/icon_observer.gif"), "observerMenu"); menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleObserverMenu); - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.observer"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("observer".equals(configurationElement.getName())) { - - final String observerClassName = configurationElement - .getAttribute("class"); - final String observerName = configurationElement - .getAttribute("name"); - - if (checkIncludeObserver(observerClassName, bcontrol)) { - - IAction action = getActionRegistry().getAction( - "de.bmotionstudio.gef.editor.observerAction." - + observerClassName); - action.setText(observerName); - action.setToolTipText(observerName); - - if (bcontrol.hasObserver(observerClassName)) { - action.setImageDescriptor(BMotionStudioImage - .getImageDescriptor( - BMotionEditorPlugin.PLUGIN_ID, - "icons/icon_chop.gif")); - } else { - action.setImageDescriptor(null); - } - handleObserverMenu.add(action); - - } - - } - - } - - } - - } - - private boolean checkIncludeObserver(String observerID, BControl control) { - - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.includeObserver"); + IExtensionPoint extensionPoint = Platform.getExtensionRegistry() + .getExtensionPoint( + "de.bmotionstudio.gef.editor.includeObserver"); for (IExtension extension : extensionPoint.getExtensions()) { for (IConfigurationElement configurationElement : extension @@ -187,25 +142,35 @@ public class BMSContextMenuProvider extends ContextMenuProvider { .getAttribute("language"); if (langID != null - && langID.equals(control.getVisualization() - .getLanguage())) { + && langID.equals(bcontrol.getVisualization().getLanguage())) { + + for (IConfigurationElement configC : configurationElement + .getChildren("control")) { + + String cID = configC.getAttribute("id"); - for (IConfigurationElement cObserver : configurationElement - .getChildren("observer")) { + if (bcontrol.getType().equals(cID)) { - String oID = cObserver.getAttribute("id"); + for (IConfigurationElement configO : configC + .getChildren("observer")) { - if (observerID.equals(oID)) { + String oID = configO.getAttribute("id"); + IAction action = getActionRegistry() + .getAction( + "de.bmotionstudio.gef.editor.observerAction." + + oID); - for (IConfigurationElement configBControl : cObserver - .getChildren("control")) { + String name = oID; - String bID = configBControl - .getAttribute("id"); + IConfigurationElement observerExtension = BMotionEditorPlugin + .getObserverExtension(oID); + if (observerExtension != null) + name = observerExtension + .getAttribute("name"); - if (control.getType().equals(bID)) { - return true; - } + action.setText(name); + + handleObserverMenu.add(action); } @@ -220,8 +185,6 @@ public class BMSContextMenuProvider extends ContextMenuProvider { } } - return false; - } private void buildEventMenu(IMenuManager menu, AbstractEditPart editPart) { @@ -282,14 +245,6 @@ public class BMSContextMenuProvider extends ContextMenuProvider { action.setText(configSchedulerElement .getAttribute("name")); - // if (bcontrol.hasEvent(eventIDs[0])) { - // action - // .setImageDescriptor(BMotionStudioImage - // .getImageDescriptor( - // BMotionEditorPlugin.PLUGIN_ID, - // "icons/icon_chop.gif")); - // } else { - action.setImageDescriptor(null); // } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java index b4524f4a38388e7cd806f2b95971b189fe425b33..fa865249822953de0bf204e13b52f9a04c4bbad4 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java @@ -6,29 +6,79 @@ package de.bmotionstudio.gef.editor; -import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.TrayDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; import de.bmotionstudio.gef.editor.model.BControl; -public abstract class BMotionAbstractWizard extends Wizard { +public abstract class BMotionAbstractWizard extends TrayDialog { private BControl control; - public BMotionAbstractWizard(BControl control) { + public static final int CLOSE = 2; + + public BMotionAbstractWizard(Shell shell, BControl control) { + super(shell); this.control = control; } - @Override - public boolean performFinish() { - return prepareToFinish(); - } - public BControl getBControl() { return this.control; } - public abstract String getName(); + @Override + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + } - protected abstract Boolean prepareToFinish(); + public abstract String getName(); + @Override + protected int getShellStyle() { + return SWT.SHELL_TRIM; + } + + @Override + protected Control createDialogArea(Composite parent) { + + GridLayout layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + layout.verticalSpacing = 0; + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(layout); + container.setLayoutData(new GridData(GridData.FILL_BOTH)); + + createWizardContent(container); + + return container; + + } + + @Override + protected void createButtonsForButtonBar(Composite parent) { + createButton(parent, IDialogConstants.CLOSE_ID, + IDialogConstants.CLOSE_LABEL, true); + } + + @Override + protected void buttonPressed(int buttonId) { + if (IDialogConstants.CLOSE_ID == buttonId) + closePressed(); + } + + protected void closePressed() { + setReturnCode(CLOSE); + close(); + } + + public abstract Control createWizardContent(Composite parent); + } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java index 56b16757ec2c66df568c7fcd22408130837cacc3..72511e5fce357a1fe710fcdf24d90952337f87ce 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java @@ -8,7 +8,7 @@ package de.bmotionstudio.gef.editor; public class EditorImageRegistry implements IBMotionStudioImageRegistry { - public static final String IMG_ICON_ADD = "icon_add"; + // public static final String IMG_ICON_ADD = "icon_add"; public static final String IMG_ICON_CHOP = "icon_chop"; public static final String IMG_ICON_DELETE = "icon_delete"; public static final String IMG_ICON_DELETE21 = "icon_delete21"; @@ -18,7 +18,6 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry { public static final String IMG_ICON_OBSERVER = "icon_observer"; public static final String IMG_ICON_LOADING = "icon_loading"; public static final String IMG_ICON_LIBRARY = "icon_library"; - public static final String IMG_ICON_ASCRIPT = "icon_ascript"; public static final String IMG_ICON_UP = "icon_up"; public static final String IMG_ICON_DOWN = "icon_down"; public static final String IMG_ICON_CONNECTION16 = "icon_connection16"; @@ -28,6 +27,7 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry { public static final String IMG_ICON_TR_UP = "icon_tr_up"; public static final String IMG_ICON_TR_LEFT = "icon_tr_left"; public static final String IMG_ICON_CONTROL_HIDDEN = "icon_control_hidden"; + public static final String IMG_ICON_HELP = "icon_help"; public static final String IMG_ICON_JPG = "icon_jpg"; public static final String IMG_ICON_GIF = "icon_gif"; @@ -36,8 +36,8 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry { public void registerImages() { - BMotionStudioImage.registerImage(IMG_ICON_ADD, - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_add.gif"); + // BMotionStudioImage.registerImage(IMG_ICON_ADD, + // BMotionEditorPlugin.PLUGIN_ID, "icons/icon_add.gif"); BMotionStudioImage.registerImage(IMG_ICON_CHOP, BMotionEditorPlugin.PLUGIN_ID, "icons/icon_chop.gif"); BMotionStudioImage.registerImage(IMG_ICON_DELETE, @@ -54,8 +54,6 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry { BMotionEditorPlugin.PLUGIN_ID, "icons/icon_loading.gif"); BMotionStudioImage.registerImage(IMG_ICON_LIBRARY, BMotionEditorPlugin.PLUGIN_ID, "icons/icon_library.gif"); - BMotionStudioImage.registerImage(IMG_ICON_ASCRIPT, - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_ascript.png"); BMotionStudioImage.registerImage(IMG_ICON_UP, BMotionEditorPlugin.PLUGIN_ID, "icons/icon_up.gif"); BMotionStudioImage.registerImage(IMG_ICON_DOWN, @@ -72,6 +70,9 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry { "org.eclipse.ui", "$nl$/icons/full/etool16/delete_edit.gif"); BMotionStudioImage.registerImage(IMG_ICON_DELETE_EDIT, "org.eclipse.ui", "$nl$/icons/full/etool16/delete_edit.gif"); + BMotionStudioImage.registerImage(IMG_ICON_HELP, + BMotionEditorPlugin.PLUGIN_ID, + "icons/eclipse16/linkto_help.gif"); BMotionStudioImage .registerImage(IMG_ICON_TR_UP, BMotionEditorPlugin.PLUGIN_ID, "icons/eclipse16/updated_co.gif"); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java deleted file mode 100644 index d9a3d5c380584994b742f7faf36ad8d7b89d886a..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java +++ /dev/null @@ -1,107 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Cursor; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; -import org.eclipse.ui.IWorkbenchPart; - -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; - -public abstract class BMotionAbstractWizardDialog extends WizardDialog { - - public static final int DELETE = 3; - - private IWorkbenchPart workbenchPart; - - private String deleteToolTip; - - public BMotionAbstractWizardDialog(IWorkbenchPart workbenchPart, IWizard newWizard) { - super(workbenchPart.getSite().getShell(), newWizard); - this.workbenchPart = workbenchPart; - } - - @Override - protected Control createButtonBar(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.marginWidth = 0; - layout.marginHeight = 0; - layout.horizontalSpacing = 0; - composite.setLayout(layout); - composite - .setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); - composite.setFont(parent.getFont()); - - // create help control if needed - if (isHelpAvailable()) { - Control helpControl = createHelpControl(composite); - ((GridData) helpControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); - } - - Control deleteControl = createDeleteControl(composite); - ((GridData) deleteControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); - setHelpAvailable(false); - Control buttonSection = super.createButtonBar(composite); - ((GridData) buttonSection.getLayoutData()).grabExcessHorizontalSpace = true; - return composite; - } - - private Control createDeleteControl(Composite parent) { - return createDeleteImageButton(parent, - BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE21)); - } - - private ToolBar createDeleteImageButton(Composite parent, Image image) { - ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.NO_FOCUS); - ((GridLayout) parent.getLayout()).numColumns++; - toolBar.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER)); - final Cursor cursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND); - toolBar.setCursor(cursor); - toolBar.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - cursor.dispose(); - } - }); - ToolItem deleteToolItem = new ToolItem(toolBar, SWT.NONE); - deleteToolItem.setImage(image); - deleteToolItem.setToolTipText(deleteToolTip); - deleteToolItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - deletePressed(); - } - }); - return toolBar; - } - - protected abstract void deletePressed(); - - public IWorkbenchPart getWorkbenchPart() { - return workbenchPart; - } - - protected void setDeleteToolTip(String msg) { - this.deleteToolTip = msg; - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java deleted file mode 100644 index b5ccee629af599d22f068f274a63be7b2e341788..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbenchPart; - -public class BMotionObserverWizardDialog extends BMotionAbstractWizardDialog { - - public BMotionObserverWizardDialog(IWorkbenchPart workbenchPart, IWizard newWizard) { - super(workbenchPart, newWizard); - setShellStyle(SWT.CLOSE | SWT.RESIZE); - setDeleteToolTip("Delete Observer"); - } - - @Override - protected void deletePressed() { - - if (MessageDialog.openConfirm(Display.getDefault().getActiveShell(), - "Do you really want to delete this Observer?", - "Do you really want to delete this Observer?")) { - setReturnCode(DELETE); - close(); - } - - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java deleted file mode 100644 index f14aa16a5b28e12a8e7b0601ef55e65850ec328c..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbenchPart; - -import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; - -public class BMotionSchedulerEventWizardDialog extends BMotionAbstractWizardDialog { - - public BMotionSchedulerEventWizardDialog(IWorkbenchPart workbenchPart, - IWizard newWizard) { - super(workbenchPart, newWizard); - setShellStyle(SWT.CLOSE); - setDeleteToolTip("Delete Event"); - } - - @Override - protected void deletePressed() { - - if (MessageDialog.openConfirm(Display.getDefault().getActiveShell(), - "Do you really want to delete this Event?", - "Do you really want to delete this Event?")) { - RemoveSchedulerEventAction action = new RemoveSchedulerEventAction( - getWorkbenchPart()); - action.setControl(((SchedulerWizard) getWizard()).getBControl()); - action.setSchedulerEvent(((SchedulerWizard) getWizard()) - .getScheduler()); - action.run(); - setReturnCode(DELETE); - close(); - } - - } -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java index 4ed52392ac795a04f75fad7fcda720ef926d3210..d8ff6ba358c8f89b59514e70d5e93e27fae75933 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java @@ -8,18 +8,12 @@ package de.bmotionstudio.gef.editor.action; import java.util.List; -import org.eclipse.core.runtime.CoreException; import org.eclipse.gef.EditPart; import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPart; -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.command.RemoveObserverCommand; -import de.bmotionstudio.gef.editor.command.SetObserverCommand; import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode; import de.bmotionstudio.gef.editor.observer.Observer; import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.prob.logging.Logger; @@ -50,79 +44,23 @@ public class OpenObserverAction extends SelectionAction { if (actionControl != null) { - Observer oldObserver = null; Observer observer = getControl().getObserver(getClassName()); - // If an observer does not exist, add one - if (observer == null) { - - try { - observer = (Observer) BMotionEditorPlugin - .getObserverExtension(getClassName()) - .createExecutableExtension("class"); - } catch (CoreException e) { - } - - } else { // else edit the current observer - - // therefore, clone the current observer, if the user aborts - // editing the current observer - try { - oldObserver = observer.clone(); - } catch (CloneNotSupportedException e) { - } - - } - - ObserverWizard wizard = observer.getWizard(actionControl); + ObserverWizard wizard = observer.getWizard(Display.getDefault() + .getActiveShell(), actionControl); if (wizard != null) { - - BMotionObserverWizardDialog dialog = new BMotionObserverWizardDialog( - getWorkbenchPart(), wizard); - dialog.create(); - dialog.getShell().setSize(wizard.getSize()); - String title = "Observer: " + observer.getName() - + " Control: " + getControl().getID(); - wizard.setWindowTitle("BMotion Studio Observer Wizard"); - dialog.setTitle(title); - dialog.setMessage(observer.getDescription()); - dialog.setTitleImage(BMotionStudioImage - .getImage(BMotionStudioImage.IMG_LOGO_BMOTION64)); - int status = dialog.open(); - - // The user clicked on the "OK" button in order to confirm his - // changes on the observer - if (status == WizardDialog.OK) { - - // If the observer delete flag is set to true, delete the - // observer anyway - if (wizard.isObserverDelete()) { - RemoveObserverCommand cmd = createRemoveObserverCommand( - observer, actionControl); - execute(cmd); - } else { - SetObserverCommand cmd = createObserverSetCommand( - actionControl, observer, oldObserver); - execute(cmd); - } - - // else the user canceled his changes on the observer - } else if (status == WizardDialog.CANCEL) { - - // Reset observer without using a command! - if (oldObserver != null) - actionControl.getObservers().put(oldObserver.getID(), - oldObserver); - - // else the user clicked on the delete button in order to - // delete the observer - } else if (status == BMotionObserverWizardDialog.DELETE) { - RemoveObserverCommand cmd = createRemoveObserverCommand( - observer, actionControl); - execute(cmd); - } - + wizard.create(); + wizard.getShell().setSize(wizard.getSize()); + String title = "Observer: " + observer.getName() + " Control: " + + getControl().getID(); + wizard.getShell().setText(title); + // wizard.setWindowTitle("BMotion Studio Observer Wizard"); + // wizard.setTitle(title); + // wizard.setMessage(observer.getDescription()); + // wizard.setTitleImage(BMotionStudioImage + // .getImage(BMotionStudioImage.IMG_LOGO_BMOTION64)); + wizard.open(); } else { Logger.notifyUserWithoutBugreport("The Observer \"" + observer.getName() @@ -132,28 +70,6 @@ public class OpenObserverAction extends SelectionAction { } - private RemoveObserverCommand createRemoveObserverCommand( - Observer observer, BControl control) { - RemoveObserverCommand cmd = new RemoveObserverCommand(); - cmd.setControl(control); - cmd.setObserver(observer); - return cmd; - } - - public SetObserverCommand createObserverSetCommand(BControl control, - Observer newObserver, Observer oldObserver) { - SetObserverCommand cmd = new SetObserverCommand(); - cmd.setNewObserver(newObserver); - cmd.setOldObserver(oldObserver); - cmd.setControl(control); - return cmd; - } - - public SetObserverCommand createObserverSetCommand(BControl control, - Observer newObserver) { - return createObserverSetCommand(control, newObserver, null); - } - public void setClassName(String className) { this.className = className; } @@ -172,10 +88,7 @@ public class OpenObserverAction extends SelectionAction { if ((objects.get(0) instanceof EditPart)) { EditPart part = (EditPart) objects.get(0); BControl control = null; - if (part.getModel() instanceof ObserverRootVirtualTreeNode) - control = ((ObserverRootVirtualTreeNode) part.getModel()) - .getControl(); - else if (part.getModel() instanceof BControl) + if (part.getModel() instanceof BControl) control = (BControl) part.getModel(); return control; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java index dff15928f5b8e190611a5eaba4c8f43eff2ef959..f35094ca1f7a9d2b1905b3a01114f4c1b7e44e12 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java @@ -8,16 +8,12 @@ package de.bmotionstudio.gef.editor.action; import java.util.List; -import org.eclipse.core.runtime.CoreException; import org.eclipse.gef.EditPart; import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPart; import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.command.SchedulerEventCommand; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; @@ -27,7 +23,6 @@ public class OpenSchedulerEventAction extends SelectionAction { private String className; private String eventID; - private SchedulerEvent clonedSchedulerEvent; public OpenSchedulerEventAction(IWorkbenchPart part) { super(part); @@ -46,82 +41,33 @@ public class OpenSchedulerEventAction extends SelectionAction { public void run() { BControl bcontrol = getControl(); - clonedSchedulerEvent = null; if (bcontrol != null) { SchedulerEvent newSchedulerEvent = bcontrol.getEvent(getEventID()); - // Add Scheduler Event - if (newSchedulerEvent == null) { - - try { - newSchedulerEvent = (SchedulerEvent) BMotionEditorPlugin - .getSchedulerExtension(getClassName()) - .createExecutableExtension("class"); - } catch (CoreException e) { - } - - } else { // Edit Scheduler Event - - // Clone Scheduler Event - try { - clonedSchedulerEvent = newSchedulerEvent.clone(); - } catch (CloneNotSupportedException e) { - } - - } - if (newSchedulerEvent != null) { newSchedulerEvent.setEventID(getEventID()); - SchedulerWizard wizard = newSchedulerEvent.getWizard(bcontrol); + SchedulerWizard wizard = newSchedulerEvent.getWizard(Display + .getDefault().getActiveShell(), bcontrol); if (wizard != null) { - BMotionSchedulerEventWizardDialog dialog = new BMotionSchedulerEventWizardDialog( - getWorkbenchPart(), wizard); - dialog.create(); - dialog.getShell().setSize(wizard.getSize()); + wizard.create(); + wizard.getShell().setSize(wizard.getSize()); String title = "Scheduler Event: " + newSchedulerEvent.getName() + " Control: " + bcontrol .getAttributeValue(AttributeConstants.ATTRIBUTE_ID); - wizard.setWindowTitle("BMotion Studio Scheduler Event Wizard"); - dialog.setTitle(title); - dialog.setMessage(newSchedulerEvent.getDescription()); - dialog.setTitleImage(BMotionStudioImage - .getImage(BMotionStudioImage.IMG_LOGO_BMOTION64)); - int status = dialog.open(); - - if (status == WizardDialog.OK) { - - SchedulerEventCommand schedulerEventCommand = createSchedulerEventCommand(); - schedulerEventCommand - .setNewSchedulerEvent(newSchedulerEvent); - - if (wizard.isEventDelete()) { - - RemoveSchedulerEventAction action = new RemoveSchedulerEventAction( - getWorkbenchPart()); - action.setControl(getControl()); - action.setSchedulerEvent(clonedSchedulerEvent); - action.run(); - - } else { - if (clonedSchedulerEvent != null) { - schedulerEventCommand - .setClonedSchedulerEvent(clonedSchedulerEvent); - } - execute(schedulerEventCommand); - } - - } else if (status == WizardDialog.CANCEL) { - if (clonedSchedulerEvent != null) - bcontrol.addEvent(getEventID(), - clonedSchedulerEvent); - } + wizard.getShell().setText(title); + // wizard.setWindowTitle("BMotion Studio Scheduler Event Wizard"); + // wizard.setTitle(title); + // wizard.setMessage(newSchedulerEvent.getDescription()); + // wizard.setTitleImage(BMotionStudioImage + // .getImage(BMotionStudioImage.IMG_LOGO_BMOTION64)); + wizard.open(); } else { Logger.notifyUserWithoutBugreport("The Scheduler Event \"" @@ -137,14 +83,6 @@ public class OpenSchedulerEventAction extends SelectionAction { } - public SchedulerEventCommand createSchedulerEventCommand() { - SchedulerEventCommand command = new SchedulerEventCommand(); - command.setClassName(getClassName()); - command.setEventID(getEventID()); - command.setControl(getControl()); - return command; - } - public void setClassName(String className) { this.className = className; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java index 601e6bb35cf0c5c8e4a043a8544c2552dc27509b..16a668b4a38479700afe1151baac872be8af1c56 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java @@ -7,6 +7,7 @@ package de.bmotionstudio.gef.editor.command; import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BControlPropertyConstants; public class BringToBottomCommand extends AbstractBringToCommand { @@ -17,8 +18,8 @@ public class BringToBottomCommand extends AbstractBringToCommand { getOldIndexMap().put(control, oldIndex); parent.getChildrenArray().remove(control); parent.getChildrenArray().add(0, control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null); } } @@ -28,8 +29,8 @@ public class BringToBottomCommand extends AbstractBringToCommand { parent.getChildrenArray().remove(control); parent.getChildrenArray().add(getOldIndexMap().get(control), control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java index 7e5dff77861ab06ba45e5d306d4155c6bd0b54cf..f5bbb964961743c6278780f6722418212334f86d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java @@ -7,6 +7,7 @@ package de.bmotionstudio.gef.editor.command; import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BControlPropertyConstants; public class BringToBottomStepCommand extends AbstractBringToCommand { @@ -18,8 +19,9 @@ public class BringToBottomStepCommand extends AbstractBringToCommand { if (oldIndex > 0) { parent.getChildrenArray().remove(control); parent.getChildrenArray().add(oldIndex - 1, control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, + null); } } } @@ -30,8 +32,8 @@ public class BringToBottomStepCommand extends AbstractBringToCommand { parent.getChildrenArray().remove(control); parent.getChildrenArray().add(getOldIndexMap().get(control), control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java index 716c1454a766ebf1e24f7d4ede5fa3dd79acccd9..c290043b3e2eb8df9d0c9354948cdc8681250e52 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java @@ -7,6 +7,7 @@ package de.bmotionstudio.gef.editor.command; import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BControlPropertyConstants; public class BringToTopCommand extends AbstractBringToCommand { @@ -18,8 +19,8 @@ public class BringToTopCommand extends AbstractBringToCommand { parent.getChildrenArray().remove(control); parent.getChildrenArray().add(parent.getChildrenArray().size(), control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null); } } @@ -29,8 +30,8 @@ public class BringToTopCommand extends AbstractBringToCommand { parent.getChildrenArray().remove(control); parent.getChildrenArray().add(getOldIndexMap().get(control), control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java index 3560448e1c245684e4a599ef4f14f421f55a8069..805599aaac6c0ee0ac237a4e713e6ea191114729 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java @@ -7,6 +7,7 @@ package de.bmotionstudio.gef.editor.command; import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BControlPropertyConstants; public class BringToTopStepCommand extends AbstractBringToCommand { @@ -18,8 +19,9 @@ public class BringToTopStepCommand extends AbstractBringToCommand { if (oldIndex < parent.getChildrenArray().size() - 1) { parent.getChildrenArray().remove(control); parent.getChildrenArray().add(oldIndex + 1, control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, + null); } } } @@ -30,8 +32,8 @@ public class BringToTopStepCommand extends AbstractBringToCommand { parent.getChildrenArray().remove(control); parent.getChildrenArray().add(getOldIndexMap().get(control), control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); + parent.getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java index 4054bf990409224fb3e80c7652aaf57ec4abbeb5..70ee9ce5129299210a7d579009c6f02ab2dba118 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java @@ -113,9 +113,6 @@ public class VisualizationProgressBar extends ProgressBarDialog { openErrorDialog(e.getMessage()); setClose(true); } - return "Starting Operation Scheduler"; - case 6: - startOperationScheduler(); return "Starting Visualization"; } @@ -123,9 +120,9 @@ public class VisualizationProgressBar extends ProgressBarDialog { } - private void startOperationScheduler() { - visualization.startOperationScheduler(); - } + // private void startOperationScheduler() { + // visualization.startOperationScheduler(); + // } private void createVisualizationRoot() throws CoreException, IOException, ParserConfigurationException, SAXException { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java index 30078bbe6752be062971f171cfbbf64b1af54e56..8d153efff02722e88a8414eb283afa1ca8f4abd6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java @@ -16,8 +16,12 @@ import java.util.Map; import java.util.Map.Entry; import java.util.UUID; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.Platform; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; @@ -42,7 +46,6 @@ import de.bmotionstudio.gef.editor.attribute.BAttributeX; import de.bmotionstudio.gef.editor.attribute.BAttributeY; import de.bmotionstudio.gef.editor.command.CopyPasteHelper; import de.bmotionstudio.gef.editor.internal.BControlPropertySource; -import de.bmotionstudio.gef.editor.observer.IObserverListener; import de.bmotionstudio.gef.editor.observer.Observer; import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; @@ -61,13 +64,8 @@ import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; */ public abstract class BControl implements IAdaptable, Cloneable { - /** The type of the control (e.g. label, button ...) */ protected String type; - private transient Rectangle layout = null; - - private transient Point location = null; - private BControlList children; private Map<String, Observer> observers; @@ -76,45 +74,25 @@ public abstract class BControl implements IAdaptable, Cloneable { private Map<String, AbstractAttribute> attributes; - /** - * Since the parent is set via the method readResolve(), we mark the - * variable as transient - */ + private BMotionGuide verticalGuide, horizontalGuide; + + // List of outgoing Connections + private List<BConnection> sourceConnections; + // List of incoming Connections + private List<BConnection> targetConnections; + + private transient Rectangle layout = null; + + private transient Point location = null; + private transient BControl parent; private transient Visualization visualization; private transient PropertyChangeSupport listeners; - - private transient ArrayList<IObserverListener> observerListener; private transient boolean newControl; - private BMotionGuide verticalGuide, horizontalGuide; - - /** List of outgoing Connections. */ - private List<BConnection> sourceConnections; - /** List of incoming Connections. */ - private List<BConnection> targetConnections; - - public static final transient String PROPERTY_LAYOUT = "NodeLayout"; - public static final transient String PROPERTY_LOCATION = "NodeLocation"; - public static final transient String PROPERTY_ADD = "NodeAddChild"; - public static final transient String PROPERTY_REMOVE = "NodeRemoveChild"; - public static final transient String PROPERTY_RENAME = "NodeRename"; - /** Property ID to use when the list of outgoing connections is modified. */ - public static final String SOURCE_CONNECTIONS_PROP = "BMS.SourceConn"; - /** Property ID to use when the list of incoming connections is modified. */ - public static final String TARGET_CONNECTIONS_PROP = "BMS.TargetConn"; - - public static final String[] standardAttributes = { - AttributeConstants.ATTRIBUTE_X, - AttributeConstants.ATTRIBUTE_Y, AttributeConstants.ATTRIBUTE_WIDTH, - AttributeConstants.ATTRIBUTE_HEIGHT, - AttributeConstants.ATTRIBUTE_ID, - AttributeConstants.ATTRIBUTE_CUSTOM, - AttributeConstants.ATTRIBUTE_VISIBLE }; - public BControl(Visualization visualization) { this.visualization = visualization; this.children = new BControlList(); @@ -122,7 +100,6 @@ public abstract class BControl implements IAdaptable, Cloneable { this.events = new HashMap<String, SchedulerEvent>(); this.attributes = new HashMap<String, AbstractAttribute>(); this.listeners = new PropertyChangeSupport(this); - this.observerListener = new ArrayList<IObserverListener>(); this.sourceConnections = new ArrayList<BConnection>(); this.targetConnections = new ArrayList<BConnection>(); this.newControl = true; @@ -134,7 +111,6 @@ public abstract class BControl implements IAdaptable, Cloneable { for (BControl child : getChildrenArray()) child.setParent(this); this.newControl = false; - init(); return this; } @@ -152,12 +128,12 @@ public abstract class BControl implements IAdaptable, Cloneable { } if (conn.getSource() == this) { getSourceConnections().remove(conn); - getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null, - conn); + getListeners().firePropertyChange( + BControlPropertyConstants.SOURCE_CONNECTIONS, null, conn); } else if (conn.getTarget() == this) { getTargetConnections().remove(conn); - getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null, - conn); + getListeners().firePropertyChange( + BControlPropertyConstants.TARGET_CONNECTIONS, null, conn); } } @@ -173,25 +149,105 @@ public abstract class BControl implements IAdaptable, Cloneable { if (conn == null || conn.getSource() == conn.getTarget()) { throw new IllegalArgumentException(); } - conn.setVisualization(getVisualization()); if (conn.getSource() == this) { getSourceConnections().add(conn); - getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null, - conn); + getListeners().firePropertyChange( + BControlPropertyConstants.SOURCE_CONNECTIONS, null, conn); } else if (conn.getTarget() == this) { getTargetConnections().add(conn); - getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null, - conn); + getListeners().firePropertyChange( + BControlPropertyConstants.TARGET_CONNECTIONS, null, conn); } } - private void init() { - + protected void init() { // Init standard control attributes initStandardAttributes(); - // Init custom control attributes initAttributes(); + // Init observer + initObserver(); + } + + private List<String> getSupportedObserverList() { + + List<String> supportedObserver = new ArrayList<String>(); + + IExtensionPoint extensionPoint = Platform.getExtensionRegistry() + .getExtensionPoint( + "de.bmotionstudio.gef.editor.includeObserver"); + + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("include".equals(configurationElement.getName())) { + + String langID = configurationElement + .getAttribute("language"); + + if (langID != null + && langID.equals(getVisualization() + .getLanguage())) { + + for (IConfigurationElement configC : configurationElement + .getChildren("control")) { + + String cID = configC.getAttribute("id"); + + if (getType().equals(cID)) { + + for (IConfigurationElement configO : configC + .getChildren("observer")) { + + supportedObserver.add(configO + .getAttribute("id")); + + } + + } + + } + + } + + } + + } + } + + return supportedObserver; + + } + + private void initObserver() { + + List<String> supportedObserverList = getSupportedObserverList(); + for (String oID : supportedObserverList) { + + // Check if control has already the observer + if (!hasObserver(oID)) { + + // If no, create a new instance and add the observer to the + // control + IConfigurationElement observerExtension = BMotionEditorPlugin + .getObserverExtension(oID); + + if (observerExtension != null) { + try { + + + Observer newObserver = (Observer) observerExtension + .createExecutableExtension("class"); + addObserver(newObserver); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + } + + } } @@ -328,7 +384,8 @@ public abstract class BControl implements IAdaptable, Cloneable { setAttributeValue(AttributeConstants.ATTRIBUTE_HEIGHT, newLayout.height, false); getListeners() - .firePropertyChange(PROPERTY_LAYOUT, oldLayout, newLayout); + .firePropertyChange(BControlPropertyConstants.PROPERTY_LAYOUT, + oldLayout, newLayout); } public Rectangle getLayout() { @@ -375,7 +432,8 @@ public abstract class BControl implements IAdaptable, Cloneable { location = newLocation; setAttributeValue(AttributeConstants.ATTRIBUTE_X, newLocation.x, false); setAttributeValue(AttributeConstants.ATTRIBUTE_Y, newLocation.y, false); - getListeners().firePropertyChange(PROPERTY_LOCATION, oldLocation, + getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_LOCATION, oldLocation, newLocation); } @@ -412,12 +470,14 @@ public abstract class BControl implements IAdaptable, Cloneable { } else { children.add(child); } - getListeners().firePropertyChange(PROPERTY_ADD, index, child); + getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_CHILD, index, child); } public void removeAllChildren() { getChildrenArray().clear(); - getListeners().firePropertyChange(PROPERTY_REMOVE, null, null); + getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_REMOVE_CHILD, null, null); } public boolean removeChild(int index) { @@ -428,7 +488,9 @@ public abstract class BControl implements IAdaptable, Cloneable { public boolean removeChild(BControl child) { boolean b = children.remove(child); if (b) - getListeners().firePropertyChange(PROPERTY_REMOVE, child, null); + getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_REMOVE_CHILD, child, + null); return b; } @@ -476,9 +538,10 @@ public abstract class BControl implements IAdaptable, Cloneable { public void addObserver(Observer observer) { observers.put(observer.getID(), (Observer) observer); - // for (IObserverListener listener : getObserverListener()) { - // listener.addedObserver(this, observer); - // } + getListeners() + .firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_OBSERVER, + observer, null); } public void removeObserver(Observer observer) { @@ -486,12 +549,14 @@ public abstract class BControl implements IAdaptable, Cloneable { } public void removeObserver(String observerID) { - if (hasObserver(observerID)) - observers.get(observerID).beforeDelete(this); - observers.remove(observerID); - // for (IObserverListener listener : getObserverListener()) { - // listener.removedObserver(this); - // } + Observer o = observers.remove(observerID); + if (o != null) { + o.beforeDelete(this); + getListeners() + .firePropertyChange( + BControlPropertyConstants.PROPERTY_REMOVE_OBSERVER, + o, null); + } } public Map<String, SchedulerEvent> getEvents() { @@ -512,12 +577,18 @@ public abstract class BControl implements IAdaptable, Cloneable { public void addEvent(String eventID, SchedulerEvent schedulerEvent) { events.put(eventID, schedulerEvent); + getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_ADD_EVENT, schedulerEvent, + null); } public void removeEvent(String eventID) { - if (hasEvent(eventID)) - events.get(eventID).beforeDelete(this); - events.remove(eventID); + SchedulerEvent e = events.remove(eventID); + if (e != null) { + e.beforeDelete(this); + getListeners().firePropertyChange( + BControlPropertyConstants.PROPERTY_REMOVE_EVENT, e, null); + } } public Map<String, AbstractAttribute> getAttributes() { @@ -631,24 +702,12 @@ public abstract class BControl implements IAdaptable, Cloneable { this.visualization = visualization; } - protected void populateVisualization(Visualization visualization) { - // Populate visualization node - setVisualization(visualization); - for (BControl child : getChildrenArray()) - child.populateVisualization(visualization); - for (BConnection con : getTargetConnections()) - con.populateVisualization(visualization); - for (BConnection con : getSourceConnections()) - con.populateVisualization(visualization); - } - @Override public BControl clone() throws CloneNotSupportedException { BControl clonedControl = (BControl) super.clone(); clonedControl.listeners = new PropertyChangeSupport(clonedControl); - clonedControl.observerListener = new ArrayList<IObserverListener>(); clonedControl.sourceConnections = new ArrayList<BConnection>(); clonedControl.targetConnections = new ArrayList<BConnection>(); @@ -738,23 +797,6 @@ public abstract class BControl implements IAdaptable, Cloneable { return horizontalGuide; } - /** - * @return the observerListener - */ - public ArrayList<IObserverListener> getObserverListener() { - if (observerListener == null) - observerListener = new ArrayList<IObserverListener>(); - return observerListener; - } - - public void addObserverListener(IObserverListener listener) { - getObserverListener().add(listener); - } - - public void removeObserverListener(IObserverListener listener) { - getObserverListener().remove(listener); - } - /** * Return a List of outgoing Connections. */ diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControlPropertyConstants.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControlPropertyConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..40952b6d057a68266307bdffb359fee984ed3414 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControlPropertyConstants.java @@ -0,0 +1,29 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.model; + +public final class BControlPropertyConstants { + + public static final transient String PROPERTY_LAYOUT = "ControlLayout"; + public static final transient String PROPERTY_LOCATION = "ControlLocation"; + + public static final transient String PROPERTY_ADD_CHILD = "ControlAddChild"; + public static final transient String PROPERTY_REMOVE_CHILD = "ControlRemoveChild"; + + public static final transient String PROPERTY_ADD_OBSERVER = "ControlAddObserver"; + public static final transient String PROPERTY_REMOVE_OBSERVER = "ControlRemoveObserver"; + + public static final transient String PROPERTY_ADD_EVENT = "ControlAddEvent"; + public static final transient String PROPERTY_REMOVE_EVENT = "ControlRemoveEvent"; + + public static final transient String PROPERTY_RENAME = "ControlRename"; + /** Property ID to use when the list of outgoing connections is modified. */ + public static final transient String SOURCE_CONNECTIONS = "ControlSourceConn"; + /** Property ID to use when the list of incoming connections is modified. */ + public static final transient String TARGET_CONNECTIONS = "ControlTargetConn"; + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/ObserverRootVirtualTreeNode.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/ObserverRootVirtualTreeNode.java deleted file mode 100644 index 8562f648692ec3d27aa319bf66ce9aed15adb9cb..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/ObserverRootVirtualTreeNode.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.model; - -import java.util.Collection; - -import de.bmotionstudio.gef.editor.observer.Observer; - -public class ObserverRootVirtualTreeNode { - - private Collection<Observer> observer; - private BControl control; - - public ObserverRootVirtualTreeNode(BControl control) { - this.observer = control.getObservers().values(); - this.control = control; - } - - public Collection<Observer> getObserver() { - return observer; - } - - public BControl getControl() { - return control; - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java index 1de47b1b81c7c6e2a4d2a4ebfe2ce9a0a621f517..11fa44fc0d621e8e574f762b3d7bcb1dcc554341 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java @@ -12,15 +12,8 @@ import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.draw2d.PositionConstants; -import de.be4.classicalb.core.parser.exceptions.BException; import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.ButtonGroupHelper; -import de.bmotionstudio.gef.editor.IAddErrorListener; -import de.bmotionstudio.gef.editor.scheduler.PredicateOperation; -import de.prob.core.command.ExecuteOperationCommand; -import de.prob.core.command.GetOperationByPredicateCommand; -import de.prob.core.domainobjects.Operation; -import de.prob.exceptions.ProBException; public class Visualization extends BControl { @@ -46,12 +39,6 @@ public class Visualization extends BControl { private transient IFile projectFile; - private transient ArrayList<IAddErrorListener> errorListener; - - private transient Thread operationSchedulerThread; - - private ArrayList<PredicateOperation> schedulerOperations; - public Visualization(String bmachine, String language, String version) { super(null); setVisualization(this); @@ -59,7 +46,6 @@ public class Visualization extends BControl { this.bmachine = bmachine; this.language = language; this.version = version; - this.errorListener = new ArrayList<IAddErrorListener>(); this.isRunning = false; this.snapToGeometry = true; createRulers(); @@ -70,73 +56,28 @@ public class Visualization extends BControl { protected Object readResolve() { super.readResolve(); this.isRunning = false; - populateVisualization(this); createRulers(); - this.errorListener = new ArrayList<IAddErrorListener>(); ButtonGroupHelper.reset(); - // this.errorMessages = new ArrayList<ErrorMessage>(); - // setAttributeValue(AttributeConstants.ATTRIBUTE_ID, "surface", false); + setVisualization(this); + init(); + initChildren(getChildrenArray()); return this; } - public void startOperationScheduler() { - - if (!getSchedulerOperations().isEmpty()) { - - operationSchedulerThread = new Thread(new Runnable() { - public void run() { - while (true) { - - for (PredicateOperation p : getSchedulerOperations()) { - - if (animation.getCurrentStateOperation(p - .getOperationName()) != null) { - - try { - - String fpredicate = "1=1"; - - if (p.getPredicate().length() > 0) { - fpredicate = p.getPredicate(); - } - - Operation op = GetOperationByPredicateCommand - .getOperation(animation - .getAnimator(), animation - .getState().getId(), p - .getOperationName(), - fpredicate); - ExecuteOperationCommand.executeOperation( - animation.getAnimator(), op); - - } catch (ProBException e) { - break; - } catch (BException e) { - break; - } - - } - - } - - try { - Thread.sleep(500); - } catch (InterruptedException e) { - break; - } - - } - } - }); - operationSchedulerThread.start(); - + private void initChildren(List<BControl> children) { + for (BControl c : children) { + c.setVisualization(this); + c.init(); + for (BConnection sc : c.getSourceConnections()) { + sc.setVisualization(this); + sc.init(); + } + for (BConnection tc : c.getTargetConnections()) { + tc.setVisualization(this); + tc.init(); + } + initChildren(c.getChildrenArray()); } - - } - - public void stopOperationScheduler() { - if (operationSchedulerThread != null) - operationSchedulerThread.interrupt(); } public void setIsRunning(Boolean bol) { @@ -217,12 +158,7 @@ public class Visualization extends BControl { } } - // TODO: Reimplement me!!! public boolean checkIfIdExists(String ID) { - // if (getVariableList().hasEntry(ID) == true) - // return true; - // if (getConstantList().hasEntry(ID) == true) - // return true; return getAllBControlNames().contains(ID); } @@ -317,25 +253,6 @@ public class Visualization extends BControl { return null; } - public void addErrorListener(IAddErrorListener listener) { - this.errorListener.add(listener); - } - - public void removeErrorListener(IAddErrorListener listener) { - this.errorListener.remove(listener); - } - - public void setSchedulerOperations( - ArrayList<PredicateOperation> schedulerOperations) { - this.schedulerOperations = schedulerOperations; - } - - public ArrayList<PredicateOperation> getSchedulerOperations() { - if (this.schedulerOperations == null) - this.schedulerOperations = new ArrayList<PredicateOperation>(); - return this.schedulerOperations; - } - public String getVersion() { return version; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java index 04309d362c320e767f78cd5de856cdfd7495d5b8..d7c41fb88fdb7f28de2b32a2cfc9dd9d451af59a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java @@ -3,6 +3,8 @@ package de.bmotionstudio.gef.editor.observer; import java.util.LinkedList; import java.util.List; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; @@ -92,8 +94,8 @@ public class ColumnObserver extends Observer { } @Override - public ObserverWizard getWizard(BControl control) { - return new WizardColumnObserver(control, this); + public ObserverWizard getWizard(Shell shell, BControl control) { + return new WizardColumnObserver(shell, control, this); } } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java deleted file mode 100644 index 66140364297494279a50836161fc37be784b1379..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import groovy.lang.GroovyClassLoader; -import groovy.lang.GroovyObject; - -import java.io.File; -import java.io.IOException; - -import org.codehaus.groovy.control.CompilationFailedException; -import org.eclipse.core.resources.IFile; - -import de.bmotionstudio.gef.editor.Animation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverExternalObserverScript; - -public class ExternalObserverScript extends Observer { - - public static String ID = "de.bmotionstudio.gef.editor.observer.ExternalObserverScript"; - - private transient GroovyObject groovyObject; - - private String scriptPath; - - // private String language; - - @Override - public void check(Animation animation, BControl control) { - - try { - - if (groovyObject == null) { - IFile pFile = control.getVisualization().getProjectFile(); - String myPath = (pFile.getProject().getLocation() + "/" + scriptPath) - .replace("file:", ""); - ClassLoader parent = getClass().getClassLoader(); - GroovyClassLoader loader = new GroovyClassLoader(parent); - Class<?> groovyClass; - groovyClass = loader.parseClass(new File(myPath)); - // let's call some method on an instance - groovyObject = (GroovyObject) groovyClass.newInstance(); - } - - Object[] args = { animation, control }; - groovyObject.invokeMethod("check", args); - - } catch (CompilationFailedException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - - } - - @Override - public ObserverWizard getWizard(BControl control) { - return new WizardObserverExternalObserverScript(control, this); - } - - public String getScriptPath() { - return scriptPath; - } - - public void setScriptPath(String scriptPath) { - this.scriptPath = scriptPath; - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java index 59584f2b31f9df4a8fdcd62d048597fe988219e3..d061b875402ad4379baa78f21ea04a01545af626 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java @@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.observer; import java.util.ArrayList; import java.util.List; +import org.eclipse.swt.widgets.Shell; + import de.be4.classicalb.core.parser.exceptions.BException; import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; @@ -154,8 +156,9 @@ public class ListenOperationByPredicate extends Observer { } @Override - public ObserverWizard getWizard(BControl control) { - return new WizardObserverListenOperationByPredicate(control, this); + public ObserverWizard getWizard(Shell shell, BControl control) { + return new WizardObserverListenOperationByPredicate(shell, control, + this); } public void setList(ArrayList<PredicateOperation> list) { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java index d503290e15669b161bec135606bacc8946c6d84f..2df22ada4a661a4152bf0e174cd64a32a2ef03ae 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java @@ -8,6 +8,7 @@ package de.bmotionstudio.gef.editor.observer; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.draw2d.IFigure; +import org.eclipse.swt.widgets.Shell; import de.bmotionstudio.gef.editor.AbstractExpressionControl; import de.bmotionstudio.gef.editor.BMotionEditorPlugin; @@ -68,7 +69,7 @@ public abstract class Observer extends AbstractExpressionControl implements * The corresponding control * @return the corresponding wizard */ - public abstract ObserverWizard getWizard(BControl control); + public abstract ObserverWizard getWizard(Shell shell, BControl control); public IFigure getToolTip(BControl control) { return null; diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java index f03260e6b5caa670bed04b91083347dadbcd579f..678bb63c7721e831396b492fbfd4b99ba707ba3e 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java @@ -10,20 +10,12 @@ import de.bmotionstudio.gef.editor.BindingObject; public class ObserverEvalObject extends BindingObject implements Cloneable { - private String type; // unused + private String eval; - private String eval; // Predicate + private String attribute; private Object value; - private String attribute; - - /** - * If true, value attribute is an ExpressionValueElement otherwise value - * attribute is an simple value object (e.g. background image) - * - * @see ExpressionValueElement - */ private Boolean isExpressionMode; private transient Boolean hasError; @@ -32,24 +24,13 @@ public class ObserverEvalObject extends BindingObject implements Cloneable { this.isExpressionMode = false; } - public ObserverEvalObject(String type, String eval, Boolean isExpressionMode) { - this.type = type; + public ObserverEvalObject(String eval, Boolean isExpressionMode) { this.eval = eval; this.isExpressionMode = isExpressionMode; } - public ObserverEvalObject(String type, String eval) { - this(type, eval, false); - } - - public void setType(String type) { - Object oldValue = this.type; - this.type = type; - firePropertyChange("type", oldValue, this.type); - } - - public String getType() { - return type; + public ObserverEvalObject(String eval) { + this(eval, false); } public void setEval(String eval) { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java index 252a7b622e5b7a998d97f86097650253eb368c67..a281190dfb8d626b7b0cbf9180dc9313f06cea08 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java @@ -7,6 +7,8 @@ package de.bmotionstudio.gef.editor.observer; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.PlatformUI; import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.model.BControl; @@ -24,10 +26,8 @@ public abstract class ObserverWizard extends BMotionAbstractWizard { private Observer observer; - protected Boolean observerDelete = false; - - public ObserverWizard(BControl control, Observer observer) { - super(control); + public ObserverWizard(Shell shell, BControl control, Observer observer) { + super(shell, control); this.observer = observer; } @@ -35,14 +35,6 @@ public abstract class ObserverWizard extends BMotionAbstractWizard { return this.observer; } - protected void setObserverDelete(Boolean b) { - this.observerDelete = b; - } - - public Boolean isObserverDelete() { - return this.observerDelete; - } - public abstract Point getSize(); @Override @@ -50,4 +42,11 @@ public abstract class ObserverWizard extends BMotionAbstractWizard { return observer.getName(); } + @Override + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + PlatformUI.getWorkbench().getHelpSystem() + .setHelp(newShell, observer.getID()); + } + } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java index 02773321d1ee6a0534ddfcb5e262aa47f5ad1fe7..3fdd5cbb44fb0a4617f8dc86d6ceab3a5f54d8a5 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.draw2d.IFigure; +import org.eclipse.swt.widgets.Shell; import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; @@ -64,14 +65,6 @@ public class SetAttribute extends Observer { attributeVal.toString(), control, animation); String er = attributeObj.validateValue(strAtrVal, null); if (er != null) { - // addError( - // control, - // animation, - // "You selected " - // + attributeObj.getName() - // + - // " as attribute. There is a problem with your value: " - // + strAtrVal + " - Reason: " + er); obj.setHasError(true); } else { attributeVal = attributeObj.unmarshal(strAtrVal); @@ -108,8 +101,8 @@ public class SetAttribute extends Observer { } @Override - public ObserverWizard getWizard(BControl control) { - return new WizardObserverSetAttribute(control, this); + public ObserverWizard getWizard(Shell shell, BControl control) { + return new WizardObserverSetAttribute(shell, control, this); } public void setSetAttributeObjects( @@ -133,23 +126,6 @@ public class SetAttribute extends Observer { @Override public IFigure getToolTip(BControl control) { - // // TODO: This method need rework!!! - // StringBuilder builder = new StringBuilder(); - // builder.append("Set Attribute Observer:\n\n"); - // for (SetAttributeObject obj : getSetAttributeObjects()) { - // if (obj.getEval() != null) { - // builder.append("[Predicate: " + obj.getEval()); - // } - // if (obj.getAttribute() != null) { - // builder.append(" | Attribute: " - // + control.getAttribute(obj.getAttribute()).getName()); - // } - // if (obj.getValue() != null) { - // builder.append(" | Value: " + obj.getValue() + "]"); - // } - // builder.append("\n"); - // } - // Label lb = new Label(builder.toString()); return null; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java index d73f0c5abadd0e021fdff1f2932ab3346e79004f..cdacd8225bd1c3671edb141a964f5e56257927e0 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java @@ -13,8 +13,8 @@ public class SetAttributeObject extends ObserverEvalObject implements Cloneable super(); } - public SetAttributeObject(String type, String eval) { - super(type, eval); + public SetAttributeObject(String eval) { + super(eval); } public SetAttributeObject clone() throws CloneNotSupportedException { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java index 9886b3184634dbe24246762aeadd7c237c870bfc..303d92f036fcb6cd29578dfd439c8c91fbdda8ff 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java @@ -6,6 +6,8 @@ package de.bmotionstudio.gef.editor.observer; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.model.BControl; @@ -56,8 +58,8 @@ public class SimpleValueDisplay extends Observer { } - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverSimpleValueDisplay(bcontrol, this); + public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { + return new WizardObserverSimpleValueDisplay(shell, bcontrol, this); } public String getType() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java index b078e12811804505d629a88c34b6c08b9e595651..eaa058922ab96c52c9e66ef231d0bdda702e16a5 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java @@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.observer; import java.util.ArrayList; import java.util.List; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.model.BControl; @@ -99,8 +101,8 @@ public class SwitchChildCoordinates extends Observer { } - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverCSwitchCoordinates(bcontrol, this); + public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { + return new WizardObserverCSwitchCoordinates(shell, bcontrol, this); } public List<ToggleObjectCoordinates> getToggleObjects() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java index 0f7733a383286e15814bb1321f7f0bc351fdc09d..1c60cda3b7fd50fb194e984380ab1a606df759cc 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java @@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.observer; import java.util.ArrayList; import java.util.List; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.model.BControl; @@ -109,8 +111,8 @@ public class SwitchCoordinates extends Observer { } - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverSwitchCoordinates(bcontrol, this); + public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { + return new WizardObserverSwitchCoordinates(shell, bcontrol, this); } public List<ToggleObjectCoordinates> getToggleObjects() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java index 4422c6182b1b5a1b1aab885e7b69650140c2c852..f448877091c9e82f1dcd7ddb0dfcf24ff9e71220 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IFile; +import org.eclipse.swt.widgets.Shell; import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; @@ -79,8 +80,8 @@ public class SwitchImage extends Observer { } - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverSwitchImage(bcontrol, this); + public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { + return new WizardObserverSwitchImage(shell, bcontrol, this); } public List<ToggleObjectImage> getToggleObjects() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java index 9ad72ca8e76de21b1fe7c98f8f5e1c0029210c71..2e33d00a09ac400c41482e1726fb11990b6c2c3e 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java @@ -3,6 +3,8 @@ package de.bmotionstudio.gef.editor.observer; import java.util.LinkedList; import java.util.List; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; @@ -152,8 +154,8 @@ public class TableObserver extends Observer { } @Override - public ObserverWizard getWizard(BControl control) { - return new WizardTableObserver(control, this); + public ObserverWizard getWizard(Shell shell, BControl control) { + return new WizardTableObserver(shell, control, this); } public boolean isOverrideCells() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java index 0ebd9af41725df1c3d7b59819f7534bfa0846886..a2c4ac9cf93f993a1fddac03d1859abdf818e975 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java @@ -22,18 +22,18 @@ public class ToggleObjectCoordinates extends ObserverEvalObject implements // this.animate = false; } - public ToggleObjectCoordinates(String type, String bcontrol, String x, + public ToggleObjectCoordinates(String bcontrol, String x, String y, String eval) { - super(type, eval); + super(eval); this.bcontrol = bcontrol; this.x = x; this.y = y; // this.animate = animate; } - public ToggleObjectCoordinates(String type, String x, String y, + public ToggleObjectCoordinates(String x, String y, String eval) { - this(type, null, x, y, eval); + this(null, x, y, eval); } public String getBcontrol() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java index dcd321623e5df59845f339638bacee19a1b31cba..6f173c31a2af90413cbae1a0229e47dba1246e8a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java @@ -14,8 +14,8 @@ public class ToggleObjectImage extends ObserverEvalObject implements Cloneable { public ToggleObjectImage() { } - public ToggleObjectImage(String type, String image, String eval) { - super(type, eval); + public ToggleObjectImage(String image, String eval) { + super(eval); this.image = image; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java new file mode 100644 index 0000000000000000000000000000000000000000..37ac250c4920137be13ef3d395098873f48b5772 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java @@ -0,0 +1,34 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer.view; + +import org.eclipse.jface.action.Action; +import org.eclipse.ui.PlatformUI; + +import de.bmotionstudio.gef.editor.BMotionStudioImage; + +public class HelpAction extends Action { + + private String observerID; + + public HelpAction() { + setText("Show help..."); + setImageDescriptor(BMotionStudioImage + .getImageDescriptor("icons/eclipse16/linkto_help.gif")); + setEnabled(false); + } + + @Override + public void run() { + PlatformUI.getWorkbench().getHelpSystem().displayHelp(observerID); + } + + public void setObserverID(String observerID) { + this.observerID = observerID; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java new file mode 100644 index 0000000000000000000000000000000000000000..6652afca6b93650cce63a402bc7bb3d5e019d7ee --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java @@ -0,0 +1,212 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer.view; + +import java.util.Collection; + +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.ISelectionListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.part.IPageSite; +import org.eclipse.ui.part.Page; + +import de.bmotionstudio.gef.editor.BMotionStudioImage; +import de.bmotionstudio.gef.editor.EditorImageRegistry; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.Observer; +import de.bmotionstudio.gef.editor.observer.ObserverWizard; +import de.bmotionstudio.gef.editor.part.BMSAbstractEditPart; + +public class ObserverPage extends Page implements ISelectionListener { + + private Composite container; + + private BControl selectedControl; + + private ListViewer listViewer; + + private Composite rightContainer; + + private HelpAction helpAction; + + @Override + public void createControl(Composite parent) { + container = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + // layout.horizontalSpacing = 0; + // layout.verticalSpacing = 0; + container.setLayout(layout); + listViewer = new ListViewer(container); + listViewer.setContentProvider(new IStructuredContentProvider() { + + @Override + public void dispose() { + } + + @Override + public void inputChanged(Viewer viewer, Object oldInput, + Object newInput) { + } + + @Override + public Object[] getElements(Object inputElement) { + Collection<?> observerList = (Collection<?>) inputElement; + return observerList.toArray(); + } + + }); + listViewer.setLabelProvider(new ILabelProvider() { + + @Override + public void removeListener(ILabelProviderListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public boolean isLabelProperty(Object element, String property) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void dispose() { + // TODO Auto-generated method stub + + } + + @Override + public void addListener(ILabelProviderListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public String getText(Object element) { + Observer o = (Observer) element; + return o.getName(); + } + + @Override + public Image getImage(Object element) { + return BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_OBSERVER); + } + }); + + GridData layoutData = new GridData(GridData.FILL_VERTICAL); + layoutData.widthHint = 120; + listViewer.getControl().setLayoutData(layoutData); + listViewer.addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged(SelectionChangedEvent event) { + restoreHelpButton(); + if (rightContainer != null) + rightContainer.dispose(); + if (event.getSelection() != null + && event.getSelection() instanceof StructuredSelection) { + Object firstElement = ((StructuredSelection) event + .getSelection()) + .getFirstElement(); + if (firstElement instanceof Observer) { + Observer o = (Observer) firstElement; + ObserverWizard wizard = o + .getWizard(Display.getDefault() + .getActiveShell(), selectedControl); + // IWizardPage page = wizard.getPages()[0]; + rightContainer = new Composite(container, SWT.NONE); + rightContainer.setLayoutData(new GridData( + GridData.FILL_BOTH)); + rightContainer.setLayout(new FillLayout()); + wizard.createWizardContent(rightContainer); + helpAction.setEnabled(true); + helpAction.setObserverID(o.getID()); + } + } + container.layout(); + } + }); + + getSite().getPage().addPostSelectionListener(this); + createActions(); + createMenu(getSite()); + + } + + private void createActions() { + helpAction = new HelpAction(); + } + + private void createMenu(final IPageSite pageSite) { + pageSite.getActionBars().getToolBarManager().add(helpAction); + } + + @Override + public Control getControl() { + return container; + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + + } + + @Override + public void selectionChanged(IWorkbenchPart part, ISelection selection) { + if (selection != null && selection instanceof StructuredSelection) { + Object firstElement = ((StructuredSelection) selection) + .getFirstElement(); + if (firstElement instanceof BMSAbstractEditPart) { + selectedControl = (BControl) ((BMSAbstractEditPart) firstElement) + .getModel(); + if (!listViewer.getControl().isDisposed()) { + Collection<Observer> values = selectedControl + .getObservers().values(); + listViewer.setInput(values); + if (values.size() > 0) { + Observer firstObserver = values.iterator().next(); + listViewer.setSelection(new StructuredSelection( + firstObserver)); + } else { + restoreHelpButton(); + if (rightContainer != null) + rightContainer.dispose(); + } + } + } + } + } + + @Override + public void dispose() { + getSite().getPage().addPostSelectionListener(this); + super.dispose(); + } + + private void restoreHelpButton() { + helpAction.setEnabled(false); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java new file mode 100644 index 0000000000000000000000000000000000000000..11140584515010b4df56fc28f8b8a465810e79c1 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java @@ -0,0 +1,68 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer.view; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.part.IPage; +import org.eclipse.ui.part.MessagePage; +import org.eclipse.ui.part.PageBook; +import org.eclipse.ui.part.PageBookView; + +import de.bmotionstudio.gef.editor.BMotionStudioEditor; + +public class ObserverView extends PageBookView { + + public static String ID = "de.bmotionstudio.gef.editor.ObserverView"; + + private String defaultText = "The observer view is not available."; + + private ObserverPage page; + + @Override + protected IPage createDefaultPage(PageBook book) { + MessagePage page = new MessagePage(); + initPage(page); + page.createControl(book); + page.setMessage(defaultText); + return page; + } + + @Override + protected PageRec doCreatePage(IWorkbenchPart part) { + if (part instanceof BMotionStudioEditor) { + page = new ObserverPage(); + initPage(page); + page.createControl(getPageBook()); + return new PageRec(part, page); + } + return null; + } + + @Override + protected void doDestroyPage(IWorkbenchPart part, PageRec rec) { + ObserverPage page = (ObserverPage) rec.page; + page.dispose(); + rec.dispose(); + } + + @Override + protected IWorkbenchPart getBootstrapPart() { + IWorkbenchPage page = getSite().getPage(); + if (page != null) { + return page.getActiveEditor(); + } + return null; + } + + @Override + protected boolean isImportant(IWorkbenchPart part) { + return (part instanceof IEditorPart); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java deleted file mode 100644 index 2450ad1a6a17dcc9def5a1c29a412d5a6b689dca..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer.wizard; - -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.PlatformUI; - -import de.bmotionstudio.gef.editor.observer.Observer; - -public class AbstractObserverWizardPage extends WizardPage { - - private Observer observer; - - protected AbstractObserverWizardPage(String pageName, Observer observer) { - super(pageName); - this.observer = observer; - } - - @Override - public void createControl(Composite parent) { - PlatformUI.getWorkbench().getHelpSystem() - .setHelp(parent, observer.getClass().getName()); - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java index 04c3a5cd6d6850073f3666b70767eb971400eba6..dc48f9c0ca40ea7a5a80b012db6d49f90c1dcefb 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java @@ -9,8 +9,6 @@ package de.bmotionstudio.gef.editor.observer.wizard; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.jface.databinding.swt.SWTObservables; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; @@ -18,8 +16,10 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import de.bmotionstudio.gef.editor.model.BControl; @@ -29,93 +29,80 @@ import de.bmotionstudio.gef.editor.observer.ObserverWizard; public class WizardColumnObserver extends ObserverWizard { - private class ColumnObserverPage extends WizardPage { + private Text txtExpression; + private Text txtPredicate; - private Text txtExpression; - private Text txtPredicate; - - public Text getTxtExpression() { - return txtExpression; - } - - protected ColumnObserverPage(final String pageName) { - super(pageName); - } - - public void createControl(final Composite parent) { - - final DataBindingContext dbc = new DataBindingContext(); + @Override + public Control createWizardContent(Composite parent) { - Composite container = new Composite(parent, SWT.NONE); + final DataBindingContext dbc = new DataBindingContext(); - container.setLayoutData(new GridData(GridData.FILL_BOTH)); - container.setLayout(new GridLayout(2, false)); + Composite container = new Composite(parent, SWT.NONE); - Label lb = new Label(container, SWT.NONE); - lb.setText("Predicate:"); + container.setLayout(new GridLayout(2, false)); - txtPredicate = new Text(container, SWT.BORDER); - txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - txtPredicate.setFont(new Font(Display.getDefault(), new FontData( - "Arial", 10, SWT.NONE))); + Label lb = new Label(container, SWT.NONE); + lb.setText("Predicate:"); - lb = new Label(container, SWT.NONE); - lb.setText("Expression:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + txtPredicate = new Text(container, SWT.BORDER); + txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + txtPredicate.setFont(new Font(Display.getDefault(), new FontData( + "Arial", 10, SWT.NONE))); - txtExpression = new Text(container, SWT.BORDER | SWT.MULTI - | SWT.WRAP); - txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); + lb = new Label(container, SWT.NONE); + lb.setText("Expression:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - initBindings(dbc); + txtExpression = new Text(container, SWT.BORDER | SWT.MULTI | SWT.WRAP); + txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); - setControl(container); + initBindings(dbc); - } + return container; - private void initBindings(DataBindingContext dbc) { + } - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue( - (ColumnObserver) getObserver(), "predicate")); + private void initBindings(DataBindingContext dbc) { - dbc.bindValue( - SWTObservables.observeText(txtExpression, SWT.Modify), - BeansObservables.observeValue( - (ColumnObserver) getObserver(), "expression")); + dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), + BeansObservables.observeValue((ColumnObserver) getObserver(), + "predicate")); - } + dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify), + BeansObservables.observeValue((ColumnObserver) getObserver(), + "expression")); } - public WizardColumnObserver(BControl bcontrol, + + public WizardColumnObserver(Shell shell, BControl bcontrol, Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ColumnObserverPage("ColumnObserverPage")); + super(shell, bcontrol, bobserver); } - @Override - protected Boolean prepareToFinish() { - - ColumnObserverPage page = (ColumnObserverPage) getPage("ColumnObserverPage"); - - String errorStr = ""; - - if (page.getTxtExpression().getText().length() == 0) - errorStr += "Please enter an expression.\n"; - - if (page.getErrorMessage() != null) - errorStr += "Please check the syntax/parser error.\n"; - - if (errorStr.length() > 0) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An Error occured", errorStr); - return false; - } - - return true; - - } + // @Override + // protected Boolean prepareToFinish() { + // + // ColumnObserverPage page = (ColumnObserverPage) + // getPage("ColumnObserverPage"); + // + // String errorStr = ""; + // + // if (page.getTxtExpression().getText().length() == 0) + // errorStr += "Please enter an expression.\n"; + // + // if (page.getErrorMessage() != null) + // errorStr += "Please check the syntax/parser error.\n"; + // + // if (errorStr.length() > 0) { + // MessageDialog.openError(Display.getDefault().getActiveShell(), + // "An Error occured", errorStr); + // return false; + // } + // + // return true; + // + // } @Override public Point getSize() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java index d03fa3f9aa13d32d0b6efb38bfb3319bb3474b01..c76bf57ec4f94b70f41da5fc8e7b529e7d045fac 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java @@ -12,7 +12,6 @@ import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableFontProvider; @@ -31,10 +30,10 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; -import de.be4.classicalb.core.parser.BParser; -import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; @@ -48,202 +47,121 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverCSwitchCoordinates extends ObserverWizard { - // private String lastChangedControlID; + private TableViewer tableViewer; - private class ObserverCSwitchCoordinatesPage extends - AbstractObserverWizardPage { - - private TableViewer tableViewer; - - protected ObserverCSwitchCoordinatesPage(final String pageName) { - super(pageName, getObserver()); - } - - public void createControl(Composite parent) { - - super.createControl(parent); - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, ToggleObjectCoordinates.class, - ((BMotionAbstractWizard) getWizard()).getName()); - // tableViewer - // .addSelectionChangedListener(new ISelectionChangedListener() { - // - // @Override - // public void selectionChanged(SelectionChangedEvent event) { - // IStructuredSelection selection = (IStructuredSelection) event - // .getSelection(); - // Object firstElement = selection.getFirstElement(); - // if (firstElement instanceof ObserverEvalObject) { - // restorePreview(); - // ObserverEvalObject observerEvalObject = (ObserverEvalObject) - // firstElement; - // if (!observerEvalObject.isExpressionMode()) { - // BControl control = getBControl(); - // ToggleObjectCoordinates toggleObjectCoordinates = - // (ToggleObjectCoordinates) observerEvalObject; - // String attributeX = AttributeConstants.ATTRIBUTE_X; - // String attributeY = AttributeConstants.ATTRIBUTE_Y; - // String x = toggleObjectCoordinates.getX(); - // String y = toggleObjectCoordinates.getY(); - // String controlID = toggleObjectCoordinates - // .getBcontrol(); - // BControl bControl = control - // .getChild(controlID); - // if (bControl != null) { - // bControl.setAttributeValue(attributeX, - // x, true, false); - // bControl.setAttributeValue(attributeY, - // y, true, false); - // } - // lastChangedControlID = controlID; - // } - // } - // } - // - // }); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(100); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "eval", getBControl().getVisualization(), getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Control"); - column.getColumn().setWidth(175); - column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - "bcontrol")); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("X"); - column.getColumn().setWidth(125); - column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - "x")); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Y"); - column.getColumn().setWidth(125); - column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - "y")); - - // column = new TableViewerColumn(tableViewer, SWT.NONE); - // column.getColumn().setText("Animate?"); - // column.getColumn().setWidth(75); - // column.setEditingSupport(new EditingSupport(tableViewer) { - // - // private CellEditor cellEditor = new CheckboxCellEditor( - // (Composite) tableViewer.getControl()); - // - // @Override - // protected void setValue(Object element, Object value) { - // ((ToggleObjectCoordinates) element).setAnimate(Boolean - // .valueOf(String.valueOf(value))); - // } - // - // @Override - // protected Object getValue(Object element) { - // Boolean b = ((ToggleObjectCoordinates) element) - // .getAnimate(); - // return b != null ? b : false; - // } - // - // @Override - // protected CellEditor getCellEditor(Object element) { - // return cellEditor; - // } - // - // @Override - // protected boolean canEdit(Object element) { - // return true; - // } - // - // }); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - tableViewer - .setLabelProvider(new ObserverLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), - new String[] { "eval", "bcontrol", "x", - "y", "animate" }))); - - final WritableList input = new WritableList( - ((SwitchChildCoordinates) getObserver()).getToggleObjects(), - ToggleObjectCoordinates.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(toggleObj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates( - BParser.PREDICATE_PREFIX, "", "", "", ""); - input.add(toggleObj); + @Override + public Control createWizardContent(Composite parent) { + + DataBindingContext dbc = new DataBindingContext(); + + GridLayout gl = new GridLayout(1, true); + gl.horizontalSpacing = 0; + gl.verticalSpacing = 0; + gl.marginHeight = 0; + gl.marginWidth = 0; + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(gl); + + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, ToggleObjectCoordinates.class, getName()); + + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(100); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, + "eval", getBControl().getVisualization(), getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Control"); + column.getColumn().setWidth(175); + column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, + "bcontrol")); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("X"); + column.getColumn().setWidth(125); + column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "x")); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Y"); + column.getColumn().setWidth(125); + column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "y")); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables + .observeMaps(contentProvider.getKnownElements(), new String[] { + "eval", "bcontrol", "x", "y", "animate" }))); + + final WritableList input = new WritableList( + ((SwitchChildCoordinates) getObserver()).getToggleObjects(), + ToggleObjectCoordinates.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; } - }); + ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(toggleObj); + } + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates( + "", "", "", ""); + input.add(toggleObj); + } + }); - setControl(container); + return container; - } } - public WizardObserverCSwitchCoordinates(final BControl bcontrol, - final Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ObserverCSwitchCoordinatesPage( - "ObserverCToggleCoordinatesPage")); + public WizardObserverCSwitchCoordinates(Shell shell, BControl bcontrol, + Observer bobserver) { + super(shell, bcontrol, bobserver); } - @Override - protected Boolean prepareToFinish() { - // restorePreview(); - if (((SwitchChildCoordinates) getObserver()).getToggleObjects().size() == 0) { - setObserverDelete(true); - } else { - for (ToggleObjectCoordinates obj : ((SwitchChildCoordinates) getObserver()) - .getToggleObjects()) { - if (obj.getX().isEmpty() || obj.getY().isEmpty() - || obj.getBcontrol().isEmpty()) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The x , y and control fields must not be empty."); - return false; - } - } - } - return true; - } + // @Override + // protected Boolean prepareToFinish() { + // // restorePreview(); + // if (((SwitchChildCoordinates) getObserver()).getToggleObjects().size() == + // 0) { + // setObserverDelete(true); + // } else { + // for (ToggleObjectCoordinates obj : ((SwitchChildCoordinates) + // getObserver()) + // .getToggleObjects()) { + // if (obj.getX().isEmpty() || obj.getY().isEmpty() + // || obj.getBcontrol().isEmpty()) { + // MessageDialog + // .openError(getShell(), "Please check your entries", + // "Please check your entries. The x , y and control fields must not be empty."); + // return false; + // } + // } + // } + // return true; + // } // private void restorePreview() { // if (lastChangedControlID != null) { @@ -255,11 +173,11 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard { // } // } - @Override - public boolean performCancel() { - // restorePreview(); - return super.performCancel(); - } + // @Override + // public boolean performCancel() { + // // restorePreview(); + // return super.performCancel(); + // } @Override public Point getSize() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java deleted file mode 100644 index 9e4c0d4e57f8aaec0519b81a7afdb3c4d932616b..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer.wizard; - -import org.eclipse.core.databinding.DataBindingContext; -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.jface.databinding.swt.SWTObservables; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.ExternalObserverScript; -import de.bmotionstudio.gef.editor.observer.Observer; -import de.bmotionstudio.gef.editor.observer.ObserverWizard; - -public class WizardObserverExternalObserverScript extends ObserverWizard { - - private class ObserverExternalObserverScriptPage extends WizardPage { - - private Text txtScriptPath; - - protected ObserverExternalObserverScriptPage(final String pageName) { - super(pageName); - } - - public Text getTxtScriptPath() { - return txtScriptPath; - } - - public void createControl(final Composite parent) { - - final DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayoutData(new GridData(GridData.FILL_BOTH)); - container.setLayout(new GridLayout(2, false)); - - Label lb = new Label(container, SWT.NONE); - lb.setText("Script File:"); - - txtScriptPath = new Text(container, SWT.BORDER); - txtScriptPath.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - txtScriptPath.setFont(new Font(Display.getDefault(), new FontData( - "Arial", 10, SWT.NONE))); - - initBindings(dbc); - - setControl(container); - - } - - private void initBindings(DataBindingContext dbc) { - - dbc.bindValue( - SWTObservables.observeText(txtScriptPath, SWT.Modify), - BeansObservables.observeValue( - (ExternalObserverScript) getObserver(), - "scriptPath")); - - } - - - } - - public WizardObserverExternalObserverScript(BControl bcontrol, - Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ObserverExternalObserverScriptPage( - "ObserverExternalObserverScriptPage")); - } - - @Override - protected Boolean prepareToFinish() { - - ObserverExternalObserverScriptPage page = (ObserverExternalObserverScriptPage) getPage("ObserverExternalObserverScriptPage"); - - String errorStr = ""; - - if (page.getTxtScriptPath().getText().length() == 0) - errorStr += "Please enter a path for a script file.\n"; - - if (errorStr.length() > 0) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An Error occured", errorStr); - return false; - } - - return true; - - } - - @Override - public Point getSize() { - return new Point(600, 500); - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java index 5369bc5cc1f4a17b9347fd5722a6336c94c10412..83adaee4f663a2565965bfd3cc528f807d2bcfe1 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java @@ -16,7 +16,6 @@ import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; import org.eclipse.jface.viewers.EditingSupport; @@ -38,13 +37,15 @@ import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; -import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; @@ -62,326 +63,232 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverListenOperationByPredicate extends ObserverWizard { - // private String lastChangedAttributeID; + private TableViewer tableViewer; - private class ObserverListenOperationByPredicatePage extends - AbstractObserverWizardPage { - - private TableViewer tableViewer; + @Override + public Control createWizardContent(Composite parent) { + + parent.setLayout(new FillLayout()); + + DataBindingContext dbc = new DataBindingContext(); + + GridLayout gl = new GridLayout(1, true); + gl.horizontalSpacing = 0; + gl.verticalSpacing = 0; + gl.marginHeight = 0; + gl.marginWidth = 0; + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(gl); + + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, PredicateOperation.class, getName()); + + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Operation"); + column.getColumn().setWidth(150); + column.setEditingSupport(new OperationValueEditingSupport(tableViewer, + getBControl())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(150); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, + "predicate", getBControl().getVisualization(), getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Attribute"); + column.getColumn().setWidth(150); + column.setEditingSupport(new AttributeObserverValueEditing(tableViewer)); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Value"); + column.getColumn().setWidth(175); + column.setEditingSupport(new AttributeExpressionEdittingSupport( + tableViewer, getBControl())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Expression?"); + column.getColumn().setWidth(100); + column.setEditingSupport(new IsExpressionModeEditingSupport( + tableViewer, getBControl())); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables + .observeMaps(contentProvider.getKnownElements(), new String[] { + "operationName", "predicate", "attribute", "value", + "isExpressionMode" }))); + final WritableList input = new WritableList( + ((ListenOperationByPredicate) getObserver()).getList(), + PredicateOperation.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; + } + PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(obj); + } + }); - protected ObserverListenOperationByPredicatePage(final String pageName) { - super(pageName, getObserver()); - } + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + PredicateOperation obj = new PredicateOperation(); + input.add(obj); + tableViewer.setSelection(new StructuredSelection(obj)); + } + }); - public void createControl(final Composite parent) { - - super.createControl(parent); - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - setControl(container); - - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, PredicateOperation.class, - ((BMotionAbstractWizard) getWizard()).getName()); - // tableViewer - // .addSelectionChangedListener(new ISelectionChangedListener() { - // - // @Override - // public void selectionChanged(SelectionChangedEvent event) { - // IStructuredSelection selection = (IStructuredSelection) event - // .getSelection(); - // Object firstElement = selection.getFirstElement(); - // if (firstElement instanceof ObserverEvalObject) { - // - // ObserverEvalObject observerEvalObject = (ObserverEvalObject) - // firstElement; - // BControl control = getBControl(); - // - // if (lastChangedAttributeID != null) - // control.restoreDefaultValue(lastChangedAttributeID); - // - // PredicateOperation obj = (PredicateOperation) observerEvalObject; - // - // if (!obj.isExpressionMode()) { - // - // String attribute = obj.getAttribute(); - // Object value = obj.getValue(); - // control.setAttributeValue(attribute, value, - // true, false); - // - // lastChangedAttributeID = attribute; - // - // } - // - // } - // } - // - // }); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Operation"); - column.getColumn().setWidth(150); - column.setEditingSupport(new OperationValueEditingSupport( - tableViewer, getBControl())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(150); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "predicate", getBControl().getVisualization(), - getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Attribute"); - column.getColumn().setWidth(150); - column.setEditingSupport(new AttributeObserverValueEditing( - tableViewer)); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Value"); - column.getColumn().setWidth(175); - column.setEditingSupport(new AttributeExpressionEdittingSupport( - tableViewer, getBControl())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Expression?"); - column.getColumn().setWidth(100); - column.setEditingSupport(new IsExpressionModeEditingSupport( - tableViewer, getBControl())); - - // MathTableViewerColumn columnEval = new MathTableViewerColumn( - // tableViewer, column, dbc, "predicate"); - // columnEval.addErrorMessageListener(new IMessageListener() { - // public void setMsg(final String errorMsg) { - // if (errorMsg != null) { - // setErrorMessage(errorMsg); - // } else { - // setErrorMessage(null); - // setMessage(getObserver().getDescription()); - // } - // } - // }); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - tableViewer.setLabelProvider(new ObserverLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "operationName", "predicate", "attribute", - "value", "isExpressionMode" }))); - final WritableList input = new WritableList( - ((ListenOperationByPredicate) getObserver()).getList(), - PredicateOperation.class); - tableViewer.setInput(input); - - // ColumnViewerEditorActivationStrategy activationSupport = new - // ColumnViewerEditorActivationStrategy( - // tableViewer) { - // protected boolean isEditorActivationEvent( - // ColumnViewerEditorActivationEvent event) { - // return event.eventType == - // ColumnViewerEditorActivationEvent.TRAVERSAL - // || event.eventType == - // ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION - // || event.eventType == - // ColumnViewerEditorActivationEvent.PROGRAMMATIC - // || (event.eventType == - // ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == - // KeyLookupFactory - // .getDefault().formalKeyLookup( - // IKeyLookup.ENTER_NAME)); - // } - // }; - // activationSupport.setEnableEditorActivationWithKeyboard(true); - - /* - * Without focus highlighter, keyboard events will not be delivered - * to - * ColumnViewerEditorActivationStragety#isEditorActivationEvent(...) - * (see above) - */ - // FocusCellHighlighter focusCellHighlighter = new - // FocusCellOwnerDrawHighlighter( - // tableViewer); - // TableViewerFocusCellManager focusCellManager = new - // TableViewerFocusCellManager( - // tableViewer, focusCellHighlighter); - - // TableViewerEditor.create(tableViewer, focusCellManager, - // activationSupport, ColumnViewerEditor.TABBING_VERTICAL - // | ColumnViewerEditor.KEYBOARD_ACTIVATION); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - PredicateOperation obj = new PredicateOperation(); - input.add(obj); - tableViewer.setSelection(new StructuredSelection(obj)); - } - }); + return container; - } + } - private class AttributeObserverValueEditing extends EditingSupport { + private class AttributeObserverValueEditing extends EditingSupport { - private ComboBoxViewerCellEditor cellEditor = null; + private ComboBoxViewerCellEditor cellEditor = null; - public AttributeObserverValueEditing(TableViewer cv) { - super(cv); - } + public AttributeObserverValueEditing(TableViewer cv) { + super(cv); + } - @Override - protected boolean canEdit(Object element) { - return BMotionWizardUtil.isEditElement(getViewer()); - } + @Override + protected boolean canEdit(Object element) { + return BMotionWizardUtil.isEditElement(getViewer()); + } - @Override - protected Object getValue(Object element) { - return ((PredicateOperation) element).getAttribute(); - } + @Override + protected Object getValue(Object element) { + return ((PredicateOperation) element).getAttribute(); + } - @Override - protected void setValue(Object element, Object value) { - if (value != null) { - PredicateOperation obj = (PredicateOperation) element; - obj.setAttribute(value.toString()); - obj.setIsExpressionMode(false); - } + @Override + protected void setValue(Object element, Object value) { + if (value != null) { + PredicateOperation obj = (PredicateOperation) element; + obj.setAttribute(value.toString()); + obj.setIsExpressionMode(false); } + } - @Override - protected CellEditor getCellEditor(Object element) { - if (cellEditor == null) { - - cellEditor = new ComboBoxViewerCellEditor( - (Composite) tableViewer.getControl(), SWT.READ_ONLY); - cellEditor - .setContentProvider(new ObservableListContentProvider()); - cellEditor.setLabelProvider(new LabelProvider() { - public String getText(Object element) { - return getBControl().getAttributes() - .get(element.toString()).getName(); - } - }); - cellEditor.setInput(new ComputedList() { - @Override - protected List<String> calculate() { - ArrayList<String> atrList = new ArrayList<String>(); - for (AbstractAttribute atr : getBControl() - .getAttributes().values()) { - atrList.add(atr.getID()); - } - return atrList; + @Override + protected CellEditor getCellEditor(Object element) { + if (cellEditor == null) { + + cellEditor = new ComboBoxViewerCellEditor( + (Composite) tableViewer.getControl(), SWT.READ_ONLY); + cellEditor + .setContentProvider(new ObservableListContentProvider()); + cellEditor.setLabelProvider(new LabelProvider() { + public String getText(Object element) { + return getBControl().getAttributes() + .get(element.toString()).getName(); + } + }); + cellEditor.setInput(new ComputedList() { + @Override + protected List<String> calculate() { + ArrayList<String> atrList = new ArrayList<String>(); + for (AbstractAttribute atr : getBControl() + .getAttributes().values()) { + atrList.add(atr.getID()); } - }); + return atrList; + } + }); - ((CCombo) cellEditor.getControl()) - .addFocusListener(new FocusListener() { + ((CCombo) cellEditor.getControl()) + .addFocusListener(new FocusListener() { - String oldValue; + String oldValue; - public void focusGained(FocusEvent e) { - oldValue = ((CCombo) cellEditor - .getControl()).getText(); + public void focusGained(FocusEvent e) { + oldValue = ((CCombo) cellEditor.getControl()) + .getText(); - } + } - public void focusLost(FocusEvent e) { + public void focusLost(FocusEvent e) { - if (!oldValue.equals(((CCombo) cellEditor - .getControl()).getText())) { + if (!oldValue.equals(((CCombo) cellEditor + .getControl()).getText())) { - IStructuredSelection selection = (IStructuredSelection) getViewer() - .getSelection(); + IStructuredSelection selection = (IStructuredSelection) getViewer() + .getSelection(); - PredicateOperation p = (PredicateOperation) selection - .getFirstElement(); + PredicateOperation p = (PredicateOperation) selection + .getFirstElement(); - AbstractAttribute atr = getBControl() - .getAttributes().get( - p.getAttribute()); + AbstractAttribute atr = getBControl() + .getAttributes().get( + p.getAttribute()); - p.setValue(atr.getValue()); - tableViewer.refresh(); + p.setValue(atr.getValue()); + tableViewer.refresh(); - } } + } - }); + }); - } - return cellEditor; } - + return cellEditor; } } - public WizardObserverListenOperationByPredicate(final BControl bcontrol, - final Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ObserverListenOperationByPredicatePage( - "ObserverListenOperationByPredicatePage")); - } - - @Override - public boolean performCancel() { - // getBControl().restoreDefaultValue(lastChangedAttributeID); - return super.performCancel(); + public WizardObserverListenOperationByPredicate(Shell shell, + BControl bcontrol, Observer bobserver) { + super(shell, bcontrol, bobserver); } - @Override - protected Boolean prepareToFinish() { - // getBControl().restoreDefaultValue(lastChangedAttributeID); - if (((ListenOperationByPredicate) getObserver()).getList().size() == 0) { - setObserverDelete(true); - } else { - for (PredicateOperation obj : ((ListenOperationByPredicate) getObserver()) - .getList()) { - if (obj.getOperationName().isEmpty()) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The operation field must not be empty."); - return false; - } else if (obj.getAttribute() == null) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The attribute field must not be empty."); - return false; - } - } - } - return true; - } + // @Override + // public boolean performCancel() { + // // getBControl().restoreDefaultValue(lastChangedAttributeID); + // return super.performCancel(); + // } + + // @Override + // protected Boolean prepareToFinish() { + // // getBControl().restoreDefaultValue(lastChangedAttributeID); + // if (((ListenOperationByPredicate) getObserver()).getList().size() == 0) { + // setObserverDelete(true); + // } else { + // for (PredicateOperation obj : ((ListenOperationByPredicate) + // getObserver()) + // .getList()) { + // if (obj.getOperationName().isEmpty()) { + // MessageDialog + // .openError(getShell(), "Please check your entries", + // "Please check your entries. The operation field must not be empty."); + // return false; + // } else if (obj.getAttribute() == null) { + // MessageDialog + // .openError(getShell(), "Please check your entries", + // "Please check your entries. The attribute field must not be empty."); + // return false; + // } + // } + // } + // return true; + // } @Override public Point getSize() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java index be6162187aec2fd33695432d7f0d999fc13e677c..9a6d6dbca1d235a82cdf3a772fa066e82472c855 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java @@ -37,15 +37,16 @@ import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; -import de.be4.classicalb.core.parser.BParser; -import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; @@ -62,255 +63,109 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSetAttribute extends ObserverWizard { - // private String lastChangedAttributeID; + private WritableList input; - private class WizardSetAttributePage extends AbstractObserverWizardPage { - - private WritableList input; - - private TableViewer tableViewer; - - protected WizardSetAttributePage(final String pageName) { - super(pageName, getObserver()); - } - - public void createControl(Composite parent) { - - super.createControl(parent); - - DataBindingContext dbc = new DataBindingContext(); - - GridLayout gl = new GridLayout(1, true); - gl.horizontalSpacing = 0; - gl.verticalSpacing = 0; - gl.marginHeight = 0; - gl.marginWidth = 0; - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(gl); - - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, SetAttributeObject.class, - ((BMotionAbstractWizard) getWizard()).getName()); - - // tableViewer - // .addSelectionChangedListener(new ISelectionChangedListener() { - // - // @Override - // public void selectionChanged(SelectionChangedEvent event) { - // IStructuredSelection selection = (IStructuredSelection) event - // .getSelection(); - // Object firstElement = selection.getFirstElement(); - // if (firstElement instanceof ObserverEvalObject) { - // - // ObserverEvalObject observerEvalObject = (ObserverEvalObject) - // firstElement; - // BControl control = getBControl(); - // - // if (lastChangedAttributeID != null) - // control.restoreDefaultValue(lastChangedAttributeID); - // - // SetAttributeObject setAttributeObj = (SetAttributeObject) - // observerEvalObject; - // - // if (!setAttributeObj.isExpressionMode()) { - // - // String attribute = setAttributeObj - // .getAttribute(); - // Object value = setAttributeObj.getValue(); - // control.setAttributeValue(attribute, value, - // true, false); - // - // lastChangedAttributeID = attribute; - // - // } - // - // } - // } - // - // }); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(300); - - PredicateEditingSupport pEditingSupport = new PredicateEditingSupport( - tableViewer, dbc, "eval", getBControl().getVisualization(), - getShell()); - column.setEditingSupport(pEditingSupport); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Attribute"); - column.getColumn().setWidth(150); - column.setEditingSupport(new AttributeObserverValueEditing( - tableViewer)); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Value"); - column.getColumn().setWidth(175); - column.setEditingSupport(new AttributeExpressionEdittingSupport( - tableViewer, getBControl())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Expression?"); - column.getColumn().setWidth(100); - column.setEditingSupport(new IsExpressionModeEditingSupport( - tableViewer, getBControl())); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - - tableViewer.setLabelProvider(new ObserverLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "eval", "attribute", "value", - "isExpressionMode" }))); - input = new WritableList( - ((SetAttribute) getObserver()).getSetAttributeObjects(), - SetAttributeObject.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - MessageDialog.openInformation(getShell(), - "Please select an entry.", - "Please select an entry."); - return; - } - SetAttributeObject toggleObj = (SetAttributeObject) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(toggleObj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - SetAttributeObject toggleObj = new SetAttributeObject( - BParser.PREDICATE_PREFIX, ""); - input.add(toggleObj); - tableViewer - .setSelection(new StructuredSelection(toggleObj)); - } - }); - - setControl(container); - - } - - private class AttributeObserverValueEditing extends EditingSupport { - - private ComboBoxViewerCellEditor cellEditor = null; - - public AttributeObserverValueEditing(TableViewer cv) { - super(cv); - } - - @Override - protected boolean canEdit(Object element) { - return BMotionWizardUtil.isEditElement(getViewer()); - } - - @Override - protected Object getValue(Object element) { - return ((SetAttributeObject) element).getAttribute(); - } + private TableViewer tableViewer; + @Override + public Control createWizardContent(Composite parent) { + + parent.setLayout(new FillLayout()); + + DataBindingContext dbc = new DataBindingContext(); + + GridLayout gl = new GridLayout(1, true); + gl.horizontalSpacing = 0; + gl.verticalSpacing = 0; + gl.marginHeight = 0; + gl.marginWidth = 0; + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(gl); + + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, SetAttributeObject.class, getName()); + + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(300); + + PredicateEditingSupport pEditingSupport = new PredicateEditingSupport( + tableViewer, dbc, "eval", getBControl().getVisualization(), + getShell()); + column.setEditingSupport(pEditingSupport); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Attribute"); + column.getColumn().setWidth(150); + column.setEditingSupport(new AttributeObserverValueEditing(tableViewer)); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Value"); + column.getColumn().setWidth(175); + column.setEditingSupport(new AttributeExpressionEdittingSupport( + tableViewer, getBControl())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Expression?"); + column.getColumn().setWidth(100); + column.setEditingSupport(new IsExpressionModeEditingSupport( + tableViewer, getBControl())); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + + tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables + .observeMaps(contentProvider.getKnownElements(), new String[] { + "eval", "attribute", "value", "isExpressionMode" }))); + input = new WritableList( + ((SetAttribute) getObserver()).getSetAttributeObjects(), + SetAttributeObject.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); + btRemove.addSelectionListener(new SelectionAdapter() { @Override - protected void setValue(Object element, Object value) { - if (value != null) { - SetAttributeObject obj = (SetAttributeObject) element; - obj.setAttribute(value.toString()); - obj.setIsExpressionMode(false); + public void widgetSelected(SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + MessageDialog.openInformation(getShell(), + "Please select an entry.", + "Please select an entry."); + return; } + SetAttributeObject toggleObj = (SetAttributeObject) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(toggleObj); } + }); + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); + btAdd.addSelectionListener(new SelectionAdapter() { @Override - protected CellEditor getCellEditor(Object element) { - if (cellEditor == null) { - - cellEditor = new ComboBoxViewerCellEditor( - (Composite) tableViewer.getControl(), SWT.READ_ONLY); - cellEditor - .setContentProvider(new ObservableListContentProvider()); - cellEditor.setLabelProvider(new LabelProvider() { - public String getText(Object element) { - return getBControl().getAttributes() - .get(element.toString()).getName(); - } - }); - cellEditor.setInput(new ComputedList() { - @Override - protected List<String> calculate() { - ArrayList<String> atrList = new ArrayList<String>(); - for (AbstractAttribute atr : getBControl() - .getAttributes().values()) { - atrList.add(atr.getID()); - } - return atrList; - } - }); - - ((CCombo) cellEditor.getControl()) - .addFocusListener(new FocusListener() { - - String oldValue; - - public void focusGained(FocusEvent e) { - oldValue = ((CCombo) cellEditor - .getControl()).getText(); - - } - - public void focusLost(FocusEvent e) { - - if (!oldValue.equals(((CCombo) cellEditor - .getControl()).getText())) { - - IStructuredSelection selection = (IStructuredSelection) getViewer() - .getSelection(); - - SetAttributeObject p = (SetAttributeObject) selection - .getFirstElement(); - - AbstractAttribute atr = getBControl() - .getAttributes().get( - p.getAttribute()); - - p.setValue(atr.getValue()); - tableViewer.refresh(); - - } - } - - }); - - } - return cellEditor; + public void widgetSelected(SelectionEvent e) { + SetAttributeObject toggleObj = new SetAttributeObject(""); + input.add(toggleObj); + tableViewer.setSelection(new StructuredSelection(toggleObj)); } + }); - } + return container; } - public WizardObserverSetAttribute(BControl control, Observer observer) { - super(control, observer); - addPage(new WizardSetAttributePage("WizardSetAttributePage")); + public WizardObserverSetAttribute(Shell shell, BControl control, + Observer observer) { + super(shell, control, observer); } @Override @@ -318,30 +173,31 @@ public class WizardObserverSetAttribute extends ObserverWizard { return new Point(800, 500); } - @Override - protected Boolean prepareToFinish() { - // getBControl().restoreDefaultValue(lastChangedAttributeID); - if (((SetAttribute) getObserver()).getSetAttributeObjects().size() == 0) { - setObserverDelete(true); - } else { - for (SetAttributeObject obj : ((SetAttribute) getObserver()) - .getSetAttributeObjects()) { - if (obj.getAttribute() == null) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The attribute field must not be empty."); - return false; - } - } - } - return true; - } - - @Override - public boolean performCancel() { - // getBControl().restoreDefaultValue(lastChangedAttributeID); - return super.performCancel(); - } + // @Override + // protected Boolean prepareToFinish() { + // // getBControl().restoreDefaultValue(lastChangedAttributeID); + // if (((SetAttribute) getObserver()).getSetAttributeObjects().size() == 0) + // { + // setObserverDelete(true); + // } else { + // for (SetAttributeObject obj : ((SetAttribute) getObserver()) + // .getSetAttributeObjects()) { + // if (obj.getAttribute() == null) { + // MessageDialog + // .openError(getShell(), "Please check your entries", + // "Please check your entries. The attribute field must not be empty."); + // return false; + // } + // } + // } + // return true; + // } + + // @Override + // public boolean performCancel() { + // // getBControl().restoreDefaultValue(lastChangedAttributeID); + // return super.performCancel(); + // } private class ObserverLabelProvider extends ObservableMapLabelProvider implements ITableLabelProvider, ITableColorProvider, @@ -413,11 +269,102 @@ public class WizardObserverSetAttribute extends ObserverWizard { } public Font getFont(final Object element, final int column) { - // return JFaceResources.getFontRegistry().get( - // BMotionStudioConstants.RODIN_FONT_KEY); return null; } } + private class AttributeObserverValueEditing extends EditingSupport { + + private ComboBoxViewerCellEditor cellEditor = null; + + public AttributeObserverValueEditing(TableViewer cv) { + super(cv); + } + + @Override + protected boolean canEdit(Object element) { + return BMotionWizardUtil.isEditElement(getViewer()); + } + + @Override + protected Object getValue(Object element) { + return ((SetAttributeObject) element).getAttribute(); + } + + @Override + protected void setValue(Object element, Object value) { + if (value != null) { + SetAttributeObject obj = (SetAttributeObject) element; + obj.setAttribute(value.toString()); + obj.setIsExpressionMode(false); + } + } + + @Override + protected CellEditor getCellEditor(Object element) { + if (cellEditor == null) { + + cellEditor = new ComboBoxViewerCellEditor( + (Composite) tableViewer.getControl(), SWT.READ_ONLY); + cellEditor + .setContentProvider(new ObservableListContentProvider()); + cellEditor.setLabelProvider(new LabelProvider() { + public String getText(Object element) { + return getBControl().getAttributes() + .get(element.toString()).getName(); + } + }); + cellEditor.setInput(new ComputedList() { + @Override + protected List<String> calculate() { + ArrayList<String> atrList = new ArrayList<String>(); + for (AbstractAttribute atr : getBControl() + .getAttributes().values()) { + atrList.add(atr.getID()); + } + return atrList; + } + }); + + ((CCombo) cellEditor.getControl()) + .addFocusListener(new FocusListener() { + + String oldValue; + + public void focusGained(FocusEvent e) { + oldValue = ((CCombo) cellEditor.getControl()) + .getText(); + + } + + public void focusLost(FocusEvent e) { + + if (!oldValue.equals(((CCombo) cellEditor + .getControl()).getText())) { + + IStructuredSelection selection = (IStructuredSelection) getViewer() + .getSelection(); + + SetAttributeObject p = (SetAttributeObject) selection + .getFirstElement(); + + AbstractAttribute atr = getBControl() + .getAttributes().get( + p.getAttribute()); + + p.setValue(atr.getValue()); + tableViewer.refresh(); + + } + } + + }); + + } + return cellEditor; + } + + } + } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java index 1f9a6b76e83c627a1de6fc7c4efc9159d53e4d58..5d63d4cfcd16ff5c44fe86dc0ee1023ad3d90881 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java @@ -9,16 +9,18 @@ package de.bmotionstudio.gef.editor.observer.wizard; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.jface.databinding.swt.SWTObservables; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import de.bmotionstudio.gef.editor.model.BControl; @@ -28,113 +30,102 @@ import de.bmotionstudio.gef.editor.observer.SimpleValueDisplay; public class WizardObserverSimpleValueDisplay extends ObserverWizard { - private class ObserverSimpleValueDisplayPage extends - AbstractObserverWizardPage { + private Text txtReplacementString; + private Text txtExpression; + private Text txtPredicate; - private Text txtReplacementString; - private Text txtExpression; - private Text txtPredicate; - - public Text getTxtExpression() { - return txtExpression; - } - - protected ObserverSimpleValueDisplayPage(final String pageName) { - super(pageName, getObserver()); - } - - public void createControl(final Composite parent) { - - super.createControl(parent); + @Override + public Control createWizardContent(Composite parent) { - final DataBindingContext dbc = new DataBindingContext(); + parent.setLayout(new FillLayout()); - Composite container = new Composite(parent, SWT.NONE); + final DataBindingContext dbc = new DataBindingContext(); - container.setLayoutData(new GridData(GridData.FILL_BOTH)); - container.setLayout(new GridLayout(2, false)); + Composite container = new Composite(parent, SWT.NONE); - Label lb = new Label(container, SWT.NONE); - lb.setText("Predicate:"); + container.setLayout(new GridLayout(2, false)); - txtPredicate = new Text(container, SWT.BORDER); - txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - txtPredicate.setFont(new Font(Display.getDefault(), new FontData( - "Arial", 10, SWT.NONE))); + GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); + gd.widthHint = 120; + + Label lb = new Label(container, SWT.NONE); + lb.setText("Predicate:"); + lb.setLayoutData(gd); - lb = new Label(container, SWT.NONE); - lb.setText("Expression:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + txtPredicate = new Text(container, SWT.BORDER); + txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + txtPredicate.setFont(new Font(Display.getDefault(), new FontData( + "Arial", 10, SWT.NONE))); - txtExpression = new Text(container, SWT.BORDER | SWT.MULTI - | SWT.WRAP); - txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); - // txtExpression.setFont(JFaceResources.getFontRegistry().get( - // BMotionStudioConstants.RODIN_FONT_KEY)); + lb = new Label(container, SWT.NONE); + lb.setText("Expression:"); + lb.setLayoutData(gd); - lb = new Label(container, SWT.NONE); - lb.setText("Replacement String:"); + txtExpression = new Text(container, SWT.BORDER | SWT.MULTI | SWT.WRAP); + txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); + // txtExpression.setFont(JFaceResources.getFontRegistry().get( + // BMotionStudioConstants.RODIN_FONT_KEY)); - txtReplacementString = new Text(container, SWT.BORDER); - txtReplacementString.setLayoutData(new GridData( - GridData.FILL_HORIZONTAL)); - txtReplacementString.setFont(new Font(Display.getDefault(), - new FontData("Arial", 10, SWT.NONE))); + lb = new Label(container, SWT.NONE); + lb.setText("Replacement String:"); + lb.setLayoutData(gd); - initBindings(dbc); + txtReplacementString = new Text(container, SWT.BORDER); + txtReplacementString.setLayoutData(new GridData( + GridData.FILL_HORIZONTAL)); + txtReplacementString.setFont(new Font(Display.getDefault(), + new FontData("Arial", 10, SWT.NONE))); - setControl(container); + initBindings(dbc); - } + return container; - private void initBindings(DataBindingContext dbc) { + } - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue( - (SimpleValueDisplay) getObserver(), "predicate")); + private void initBindings(DataBindingContext dbc) { - dbc.bindValue( - SWTObservables.observeText(txtExpression, SWT.Modify), - BeansObservables.observeValue( - (SimpleValueDisplay) getObserver(), "eval")); + dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), + BeansObservables.observeValue( + (SimpleValueDisplay) getObserver(), "predicate")); - dbc.bindValue(SWTObservables.observeText(txtReplacementString, - SWT.Modify), BeansObservables.observeValue( - (SimpleValueDisplay) getObserver(), "replacementString")); + dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify), + BeansObservables.observeValue( + (SimpleValueDisplay) getObserver(), "eval")); - } + dbc.bindValue(SWTObservables.observeText(txtReplacementString, + SWT.Modify), BeansObservables.observeValue( + (SimpleValueDisplay) getObserver(), "replacementString")); } - public WizardObserverSimpleValueDisplay(BControl bcontrol, + public WizardObserverSimpleValueDisplay(Shell shell, BControl bcontrol, Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ObserverSimpleValueDisplayPage( - "ObserverSimpleValueDisplayPage")); + super(shell, bcontrol, bobserver); } - @Override - protected Boolean prepareToFinish() { - - ObserverSimpleValueDisplayPage page = (ObserverSimpleValueDisplayPage) getPage("ObserverSimpleValueDisplayPage"); - - String errorStr = ""; - - if (page.getTxtExpression().getText().length() == 0) - errorStr += "Please enter an expression.\n"; - - if (page.getErrorMessage() != null) - errorStr += "Please check the syntax/parser error.\n"; - - if (errorStr.length() > 0) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An Error occured", errorStr); - return false; - } - - return true; - - } + // @Override + // protected Boolean prepareToFinish() { + // + // ObserverSimpleValueDisplayPage page = (ObserverSimpleValueDisplayPage) + // getPage("ObserverSimpleValueDisplayPage"); + // + // String errorStr = ""; + // + // if (page.getTxtExpression().getText().length() == 0) + // errorStr += "Please enter an expression.\n"; + // + // if (page.getErrorMessage() != null) + // errorStr += "Please check the syntax/parser error.\n"; + // + // if (errorStr.length() > 0) { + // MessageDialog.openError(Display.getDefault().getActiveShell(), + // "An Error occured", errorStr); + // return false; + // } + // + // return true; + // + // } @Override public Point getSize() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java index 88248dcb8a2870351498906122aa15234c3fad4b..8e502a6ff3814e90041931476f69976650d4f74c 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java @@ -12,7 +12,6 @@ import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableFontProvider; @@ -27,15 +26,16 @@ import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; -import de.be4.classicalb.core.parser.BParser; -import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; @@ -49,195 +49,96 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSwitchCoordinates extends ObserverWizard { - private class ObserverToggleCoordinatesPage extends - AbstractObserverWizardPage { - - private TableViewer tableViewer; - - protected ObserverToggleCoordinatesPage(final String pageName) { - super(pageName, getObserver()); - } - - public void createControl(Composite parent) { - - super.createControl(parent); - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, ToggleObjectCoordinates.class, - ((BMotionAbstractWizard) getWizard()).getName()); - - // tableViewer - // .addSelectionChangedListener(new ISelectionChangedListener() { - // - // @Override - // public void selectionChanged(SelectionChangedEvent event) { - // IStructuredSelection selection = (IStructuredSelection) event - // .getSelection(); - // Object firstElement = selection.getFirstElement(); - // if (firstElement instanceof ObserverEvalObject) { - // ObserverEvalObject observerEvalObject = (ObserverEvalObject) - // firstElement; - // if (!observerEvalObject.isExpressionMode()) { - // BControl control = getBControl(); - // ToggleObjectCoordinates toggleObjectCoordinates = - // (ToggleObjectCoordinates) observerEvalObject; - // String attributeX = AttributeConstants.ATTRIBUTE_X; - // String attributeY = AttributeConstants.ATTRIBUTE_Y; - // String x = toggleObjectCoordinates.getX(); - // String y = toggleObjectCoordinates.getY(); - // control.setAttributeValue(attributeX, x, - // true, false); - // control.setAttributeValue(attributeY, y, - // true, false); - // } - // } - // } - // - // }); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(200); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "eval", getBControl().getVisualization(), getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("X"); - column.getColumn().setWidth(150); - column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - "x")); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Y"); - column.getColumn().setWidth(150); - column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - "y")); - - // column = new TableViewerColumn(tableViewer, SWT.NONE); - // column.getColumn().setText("Animate?"); - // column.getColumn().setWidth(75); - // column.setEditingSupport(new EditingSupport(tableViewer) { - // - // private CellEditor cellEditor = new CheckboxCellEditor( - // (Composite) tableViewer.getControl()); - // - // @Override - // protected void setValue(Object element, Object value) { - // ((ToggleObjectCoordinates) element).setAnimate(Boolean - // .valueOf(String.valueOf(value))); - // } - // - // @Override - // protected Object getValue(Object element) { - // Boolean b = ((ToggleObjectCoordinates) element) - // .getAnimate(); - // return b != null ? b : false; - // } - // - // @Override - // protected CellEditor getCellEditor(Object element) { - // return cellEditor; - // } - // - // @Override - // protected boolean canEdit(Object element) { - // return true; - // } - // - // }); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - tableViewer.setLabelProvider(new ObserverLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "eval", "x", "y" }))); - - final WritableList input = new WritableList( - ((SwitchCoordinates) getObserver()).getToggleObjects(), - ToggleObjectCoordinates.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(toggleObj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates( - BParser.PREDICATE_PREFIX, "", String - .valueOf(getBControl().getLayout().x), - String.valueOf(getBControl().getLayout().y), ""); - input.add(toggleObj); - tableViewer - .setSelection(new StructuredSelection(toggleObj)); - } - }); - - setControl(container); - - } - } - - public WizardObserverSwitchCoordinates(final BControl bcontrol, - final Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ObserverToggleCoordinatesPage( - "ObserverToggleCoordinatesPage")); - } + private TableViewer tableViewer; @Override - protected Boolean prepareToFinish() { - // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_X); - // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y); - if (((SwitchCoordinates) getObserver()).getToggleObjects().size() == 0) { - setObserverDelete(true); - } else { - for (ToggleObjectCoordinates obj : ((SwitchCoordinates) getObserver()) - .getToggleObjects()) { - if (obj.getX().isEmpty() || obj.getY().isEmpty()) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The x and y fields must not be empty."); - return false; + public Control createWizardContent(Composite parent) { + + parent.setLayout(new FillLayout()); + + DataBindingContext dbc = new DataBindingContext(); + + GridLayout gl = new GridLayout(1, true); + gl.horizontalSpacing = 0; + gl.verticalSpacing = 0; + gl.marginHeight = 0; + gl.marginWidth = 0; + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(gl); + + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, ToggleObjectCoordinates.class, getName()); + + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(200); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, + "eval", getBControl().getVisualization(), getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("X"); + column.getColumn().setWidth(150); + column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "x")); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Y"); + column.getColumn().setWidth(150); + column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "y")); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables + .observeMaps(contentProvider.getKnownElements(), new String[] { + "eval", "x", "y" }))); + + final WritableList input = new WritableList( + ((SwitchCoordinates) getObserver()).getToggleObjects(), + ToggleObjectCoordinates.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; } + ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(toggleObj); } - } - return true; + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates( + "", String.valueOf(getBControl().getLayout().x), String + .valueOf(getBControl().getLayout().y), ""); + input.add(toggleObj); + tableViewer.setSelection(new StructuredSelection(toggleObj)); + } + }); + + return container; } - @Override - public boolean performCancel() { - // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_X); - // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y); - return super.performCancel(); + + public WizardObserverSwitchCoordinates(Shell shell, BControl bcontrol, + Observer bobserver) { + super(shell, bcontrol, bobserver); } @Override @@ -256,9 +157,6 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { private final Color errorColor = Display.getDefault().getSystemColor( SWT.COLOR_INFO_BACKGROUND); - // final Font bold = JFaceResources.getFontRegistry().getBold( - // JFaceResources.BANNER_FONT); - @Override public String getColumnText(Object element, int columnIndex) { if (columnIndex == 3) { @@ -269,11 +167,6 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { @Override public Image getColumnImage(Object element, int columnIndex) { - // if (columnIndex == 3) { - // return CheckboxCellEditorHelper - // .getCellEditorImage(((ToggleObjectCoordinates) element) - // .getAnimate()); - // } return null; } @@ -289,8 +182,6 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { } public Font getFont(final Object element, final int column) { - // return JFaceResources.getFontRegistry().get( - // BMotionStudioConstants.RODIN_FONT_KEY); return null; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java index 9c15caea177633be286db950970287681dfcd9d3..ff5d09ea575689dc6a26eaafb92de38cf6e69130 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java @@ -12,7 +12,6 @@ import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableFontProvider; @@ -27,16 +26,17 @@ import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; -import de.be4.classicalb.core.parser.BParser; import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.AttributeExpressionEdittingSupport; @@ -52,177 +52,119 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSwitchImage extends ObserverWizard { - private class ObserverSwitchImagePage extends AbstractObserverWizardPage { + private TableViewer tableViewer; - private TableViewer tableViewer; + @Override + public Control createWizardContent(Composite parent) { - protected ObserverSwitchImagePage(final String pageName) { - super(pageName, getObserver()); - } + parent.setLayout(new FillLayout()); - public void createControl(final Composite parent) { - - super.createControl(parent); - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, ToggleObjectImage.class, - ((BMotionAbstractWizard) getWizard()).getName()); - // tableViewer - // .addSelectionChangedListener(new ISelectionChangedListener() { - // - // @Override - // public void selectionChanged(SelectionChangedEvent event) { - // IStructuredSelection selection = (IStructuredSelection) event - // .getSelection(); - // Object firstElement = selection.getFirstElement(); - // if (firstElement instanceof ObserverEvalObject) { - // ObserverEvalObject observerEvalObject = (ObserverEvalObject) - // firstElement; - // if (!observerEvalObject.isExpressionMode()) { - // BControl control = getBControl(); - // ToggleObjectImage toggleObjImage = (ToggleObjectImage) - // observerEvalObject; - // String attribute = AttributeConstants.ATTRIBUTE_IMAGE; - // String image = toggleObjImage.getImage(); - // control.setAttributeValue(attribute, image, - // true, false); - // } - // } - // } - // - // }); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(300); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "eval", getBControl().getVisualization(), getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Image"); - column.getColumn().setWidth(180); - column.setEditingSupport(new AttributeExpressionEdittingSupport( - tableViewer, getBControl(), - AttributeConstants.ATTRIBUTE_IMAGE) { - - @Override - protected Object getValue(final Object element) { - ToggleObjectImage evalObject = (ToggleObjectImage) element; - return evalObject.getImage(); - } + DataBindingContext dbc = new DataBindingContext(); - @Override - protected void setValue(final Object element, final Object value) { - if (value == null) - return; - ((ToggleObjectImage) element).setImage(value.toString()); - } + GridLayout gl = new GridLayout(1, true); + gl.horizontalSpacing = 0; + gl.verticalSpacing = 0; + gl.marginHeight = 0; + gl.marginWidth = 0; - }); + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(gl); - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Expression?"); - column.getColumn().setWidth(100); - column.setEditingSupport(new IsExpressionModeEditingSupport( - tableViewer, getBControl()) { + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, ToggleObjectImage.class, getName()); - @Override - protected void setValue(final Object element, final Object value) { - Boolean bol = Boolean.valueOf(String.valueOf(value)); - ToggleObjectImage obj = (ToggleObjectImage) element; - obj.setIsExpressionMode(bol); - } + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(300); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, + "eval", getBControl().getVisualization(), getShell())); - }); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - - tableViewer.setLabelProvider(new ObserverLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "eval", "image", "isExpressionMode" }))); - final WritableList input = new WritableList( - ((SwitchImage) getObserver()).getToggleObjects(), - ToggleObjectImage.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - ToggleObjectImage toggleObj = (ToggleObjectImage) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(toggleObj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - ToggleObjectImage toggleObj = new ToggleObjectImage( - BParser.PREDICATE_PREFIX, "", ""); - input.add(toggleObj); - tableViewer - .setSelection(new StructuredSelection(toggleObj)); - } - }); + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Image"); + column.getColumn().setWidth(180); + column.setEditingSupport(new AttributeExpressionEdittingSupport( + tableViewer, getBControl(), AttributeConstants.ATTRIBUTE_IMAGE) { - setControl(container); + @Override + protected Object getValue(final Object element) { + ToggleObjectImage evalObject = (ToggleObjectImage) element; + return evalObject.getImage(); + } - } + @Override + protected void setValue(final Object element, final Object value) { + if (value == null) + return; + ((ToggleObjectImage) element).setImage(value.toString()); + } - } + }); - public WizardObserverSwitchImage(final BControl bcontrol, - final Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ObserverSwitchImagePage("ObserverToggleImagePage")); - } + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Expression?"); + column.getColumn().setWidth(100); + column.setEditingSupport(new IsExpressionModeEditingSupport( + tableViewer, getBControl()) { - @Override - protected Boolean prepareToFinish() { - // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_IMAGE); - if (((SwitchImage) getObserver()).getToggleObjects().size() == 0) { - setObserverDelete(true); - } else { - for (ToggleObjectImage obj : ((SwitchImage) getObserver()) - .getToggleObjects()) { - if (obj.getImage().isEmpty()) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The image field must not be empty."); - return false; + @Override + protected void setValue(final Object element, final Object value) { + Boolean bol = Boolean.valueOf(String.valueOf(value)); + ToggleObjectImage obj = (ToggleObjectImage) element; + obj.setIsExpressionMode(bol); + } + + }); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + + tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables + .observeMaps(contentProvider.getKnownElements(), new String[] { + "eval", "image", "isExpressionMode" }))); + final WritableList input = new WritableList( + ((SwitchImage) getObserver()).getToggleObjects(), + ToggleObjectImage.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; } + ToggleObjectImage toggleObj = (ToggleObjectImage) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(toggleObj); } - } - return true; + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + ToggleObjectImage toggleObj = new ToggleObjectImage("", ""); + input.add(toggleObj); + tableViewer.setSelection(new StructuredSelection(toggleObj)); + } + }); + + return container; } - @Override - public boolean performCancel() { - // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_IMAGE); - return super.performCancel(); + public WizardObserverSwitchImage(Shell shell, BControl bcontrol, + Observer bobserver) { + super(shell, bcontrol, bobserver); } @Override @@ -276,8 +218,6 @@ public class WizardObserverSwitchImage extends ObserverWizard { } public Font getFont(final Object element, final int column) { - // return JFaceResources.getFontRegistry().get( - // BMotionStudioConstants.RODIN_FONT_KEY); return null; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java index e816e1d3ee2c517bca6e12dd054b201e29cea5e2..d38110cd613c43aef7a7c2b12cea0e977225780f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java @@ -11,8 +11,6 @@ import java.util.ArrayList; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.jface.databinding.swt.SWTObservables; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; @@ -24,10 +22,12 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.List; +import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eventb.core.ast.PowerSetType; @@ -40,167 +40,151 @@ import de.bmotionstudio.gef.editor.observer.TableObserver; public class WizardTableObserver extends ObserverWizard { - private class TableObserverPage extends WizardPage { + private Text txtExpression; + private Text txtPredicate; + private Button cbOverrideCells; + private Button cbKeepHeader; - private Text txtExpression; - private Text txtPredicate; - private Button cbOverrideCells; - private Button cbKeepHeader; + private void initBindings(DataBindingContext dbc) { - public Text getTxtExpression() { - return txtExpression; - } - - protected TableObserverPage(final String pageName) { - super(pageName); - } + dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), + BeansObservables.observeValue((TableObserver) getObserver(), + "predicate")); - public void createControl(final Composite parent) { + dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify), + BeansObservables.observeValue((TableObserver) getObserver(), + "expression")); - final DataBindingContext dbc = new DataBindingContext(); + dbc.bindValue(SWTObservables.observeSelection(cbOverrideCells), + BeansObservables.observeValue((TableObserver) getObserver(), + "overrideCells")); - parent.setLayout(new GridLayout(1, true)); + dbc.bindValue(SWTObservables.observeSelection(cbKeepHeader), + BeansObservables.observeValue((TableObserver) getObserver(), + "keepHeader")); - Group group = new Group(parent, SWT.None); - group.setText("General settings"); - RowLayout rowLayout = new RowLayout(); - rowLayout.marginLeft = 10; - rowLayout.marginTop = 10; - rowLayout.marginBottom = 10; - group.setLayout(rowLayout); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + } - cbOverrideCells = new Button(group, SWT.CHECK); - cbOverrideCells.setText("Override cells"); + @Override + public Control createWizardContent(Composite parent) { + final DataBindingContext dbc = new DataBindingContext(); - cbKeepHeader = new Button(group, SWT.CHECK); - cbKeepHeader.setText("Keep header"); + parent.setLayout(new GridLayout(1, true)); - Group container = new Group(parent, SWT.None); - container.setText("Formal model"); - container.setLayout(new GridLayout(2, false)); - container.setLayoutData(new GridData(GridData.FILL_BOTH)); + Group group = new Group(parent, SWT.None); + group.setText("General settings"); + RowLayout rowLayout = new RowLayout(); + rowLayout.marginLeft = 10; + rowLayout.marginTop = 10; + rowLayout.marginBottom = 10; + group.setLayout(rowLayout); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - Composite conLeft = new Composite(container, SWT.NONE); - conLeft.setLayoutData(new GridData(GridData.FILL_BOTH)); - conLeft.setLayout(new GridLayout(2, false)); + cbOverrideCells = new Button(group, SWT.CHECK); + cbOverrideCells.setText("Override cells"); - Label lb = new Label(conLeft, SWT.NONE); - lb.setText("Predicate:"); + cbKeepHeader = new Button(group, SWT.CHECK); + cbKeepHeader.setText("Keep header"); - txtPredicate = new Text(conLeft, SWT.BORDER); - txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - txtPredicate.setFont(new Font(Display.getDefault(), new FontData( - "Arial", 10, SWT.NONE))); + Group container = new Group(parent, SWT.None); + container.setText("Formal model"); + container.setLayout(new GridLayout(2, false)); + container.setLayoutData(new GridData(GridData.FILL_BOTH)); - lb = new Label(conLeft, SWT.NONE); - lb.setText("Expression:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + Composite conLeft = new Composite(container, SWT.NONE); + conLeft.setLayoutData(new GridData(GridData.FILL_BOTH)); + conLeft.setLayout(new GridLayout(2, false)); - txtExpression = new Text(conLeft, SWT.BORDER | SWT.MULTI - | SWT.WRAP); - txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); + Label lb = new Label(conLeft, SWT.NONE); + lb.setText("Predicate:"); - Composite conRight = new Composite(container, SWT.NONE); + txtPredicate = new Text(conLeft, SWT.BORDER); + txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + txtPredicate.setFont(new Font(Display.getDefault(), new FontData( + "Arial", 10, SWT.NONE))); - GridData gData = new GridData(GridData.FILL_VERTICAL); - gData.widthHint = 125; + lb = new Label(conLeft, SWT.NONE); + lb.setText("Expression:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - conRight.setLayoutData(gData); - conRight.setLayout(new GridLayout(1, false)); + txtExpression = new Text(conLeft, SWT.BORDER | SWT.MULTI | SWT.WRAP); + txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); - lb = new Label(conRight, SWT.WRAP); - lb.setText("Power sets:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + Composite conRight = new Composite(container, SWT.NONE); - ArrayList<String> relationList = new ArrayList<String>(); - - java.util.List<MachineContentObject> constants = EventBHelper - .getConstants(getBControl().getVisualization()); - for (MachineContentObject mobj : constants) { - if (mobj.getType() instanceof PowerSetType) { - relationList.add(mobj.getLabel()); - } - } + GridData gData = new GridData(GridData.FILL_VERTICAL); + gData.widthHint = 125; - java.util.List<MachineContentObject> variables = EventBHelper - .getVariables(getBControl().getVisualization()); - for (MachineContentObject mobj : variables) { - if (mobj.getType() instanceof PowerSetType) { - relationList.add(mobj.getLabel()); - } - } + conRight.setLayoutData(gData); + conRight.setLayout(new GridLayout(1, false)); - final List list = new List(conRight, SWT.SINGLE | SWT.BORDER - | SWT.V_SCROLL); - list.setLayoutData(new GridData(GridData.FILL_BOTH)); - list.setItems(relationList.toArray(new String[relationList.size()])); + lb = new Label(conRight, SWT.WRAP); + lb.setText("Power sets:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - list.addMouseListener(new MouseAdapter() { - public void mouseDoubleClick(MouseEvent e) { - String[] selection = list.getSelection(); - if (selection.length > 0) - txtExpression.setText(txtExpression.getText() + " " - + selection[0]); - } - }); - initBindings(dbc); - - setControl(conLeft); + ArrayList<String> relationList = new ArrayList<String>(); + java.util.List<MachineContentObject> constants = EventBHelper + .getConstants(getBControl().getVisualization()); + for (MachineContentObject mobj : constants) { + if (mobj.getType() instanceof PowerSetType) { + relationList.add(mobj.getLabel()); + } } - private void initBindings(DataBindingContext dbc) { - - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue( - (TableObserver) getObserver(), "predicate")); - - dbc.bindValue( - SWTObservables.observeText(txtExpression, SWT.Modify), - BeansObservables.observeValue( - (TableObserver) getObserver(), "expression")); - - dbc.bindValue(SWTObservables.observeSelection(cbOverrideCells), - BeansObservables.observeValue( - (TableObserver) getObserver(), "overrideCells")); - - dbc.bindValue(SWTObservables.observeSelection(cbKeepHeader), - BeansObservables.observeValue( - (TableObserver) getObserver(), "keepHeader")); - + java.util.List<MachineContentObject> variables = EventBHelper + .getVariables(getBControl().getVisualization()); + for (MachineContentObject mobj : variables) { + if (mobj.getType() instanceof PowerSetType) { + relationList.add(mobj.getLabel()); + } } + final List list = new List(conRight, SWT.SINGLE | SWT.BORDER + | SWT.V_SCROLL); + list.setLayoutData(new GridData(GridData.FILL_BOTH)); + list.setItems(relationList.toArray(new String[relationList.size()])); + + list.addMouseListener(new MouseAdapter() { + public void mouseDoubleClick(MouseEvent e) { + String[] selection = list.getSelection(); + if (selection.length > 0) + txtExpression.setText(txtExpression.getText() + " " + + selection[0]); + } + }); + initBindings(dbc); + return conLeft; } - public WizardTableObserver(BControl bcontrol, + public WizardTableObserver(Shell shell, BControl bcontrol, Observer bobserver) { - super(bcontrol, bobserver); - addPage(new TableObserverPage("TableObserverPage")); + super(shell, bcontrol, bobserver); } - @Override - protected Boolean prepareToFinish() { - - TableObserverPage page = (TableObserverPage) getPage("TableObserverPage"); - - String errorStr = ""; - - if (page.getTxtExpression().getText().length() == 0) - errorStr += "Please enter an expression.\n"; - - if (page.getErrorMessage() != null) - errorStr += "Please check the syntax/parser error.\n"; - - if (errorStr.length() > 0) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An Error occured", errorStr); - return false; - } - - return true; - - } + // @Override + // protected Boolean prepareToFinish() { + // + // TableObserverPage page = (TableObserverPage) + // getPage("TableObserverPage"); + // + // String errorStr = ""; + // + // if (page.getTxtExpression().getText().length() == 0) + // errorStr += "Please enter an expression.\n"; + // + // if (page.getErrorMessage() != null) + // errorStr += "Please check the syntax/parser error.\n"; + // + // if (errorStr.length() > 0) { + // MessageDialog.openError(Display.getDefault().getActiveShell(), + // "An Error occured", errorStr); + // return false; + // } + // + // return true; + // + // } @Override public Point getSize() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java index dc2f797bde2deda96d0d61270e0b35de4e5d54e3..21bc714c14173d8826e437f95eaa88c2dba7907e 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java @@ -25,6 +25,7 @@ import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.editpolicy.BMSDeletePolicy; import de.bmotionstudio.gef.editor.model.BConnection; import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BControlPropertyConstants; import de.bmotionstudio.gef.editor.model.Visualization; import de.bmotionstudio.gef.editor.observer.IObserverListener; import de.bmotionstudio.gef.editor.observer.Observer; @@ -33,8 +34,10 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements PropertyChangeListener, IObserverListener { public void propertyChange(final PropertyChangeEvent evt) { - if (evt.getPropertyName().equals(BControl.PROPERTY_ADD) - || evt.getPropertyName().equals(BControl.PROPERTY_REMOVE)) { + if (evt.getPropertyName().equals( + BControlPropertyConstants.PROPERTY_ADD_CHILD) + || evt.getPropertyName().equals( + BControlPropertyConstants.PROPERTY_REMOVE_CHILD)) { refreshChildren(); } refreshVisuals(); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java index 90de631cfaa0f809698aefb6057e6922cfab1b02..c53ed10fb104fc3d4f36b646b3c4129803650026 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java @@ -43,6 +43,7 @@ import de.bmotionstudio.gef.editor.figure.AbstractBMotionFigure; import de.bmotionstudio.gef.editor.library.AbstractLibraryCommand; import de.bmotionstudio.gef.editor.library.AttributeRequest; import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BControlPropertyConstants; import de.bmotionstudio.gef.editor.model.Visualization; import de.bmotionstudio.gef.editor.observer.IObserverListener; import de.bmotionstudio.gef.editor.observer.Observer; @@ -73,8 +74,10 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart } }; - private String[] layoutAttributes = { BControl.PROPERTY_LAYOUT, - BControl.PROPERTY_LOCATION, AttributeConstants.ATTRIBUTE_X, + private String[] layoutAttributes = { + BControlPropertyConstants.PROPERTY_LAYOUT, + BControlPropertyConstants.PROPERTY_LOCATION, + AttributeConstants.ATTRIBUTE_X, AttributeConstants.ATTRIBUTE_Y, AttributeConstants.ATTRIBUTE_WIDTH, AttributeConstants.ATTRIBUTE_HEIGHT }; @@ -82,7 +85,6 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart if (!isActive()) { super.activate(); ((BControl) getModel()).addPropertyChangeListener(this); - ((BControl) getModel()).addObserverListener(this); if (getFigure() instanceof AbstractBMotionFigure) { AbstractBMotionFigure af = (AbstractBMotionFigure) getFigure(); if (isRunning()) @@ -96,7 +98,6 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart if (isActive()) { super.deactivate(); ((BControl) getModel()).removePropertyChangeListener(this); - ((BControl) getModel()).removeObserverListener(this); if (getFigure() instanceof AbstractBMotionFigure) { AbstractBMotionFigure af = (AbstractBMotionFigure) getFigure(); if (isRunning()) @@ -187,13 +188,15 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart final BControl model = (BControl) getModel(); String propName = evt.getPropertyName(); - if (BControl.SOURCE_CONNECTIONS_PROP.equals(propName)) { + if (BControlPropertyConstants.SOURCE_CONNECTIONS.equals(propName)) { refreshSourceConnections(); - } else if (BControl.TARGET_CONNECTIONS_PROP.equals(propName)) { + } else if (BControlPropertyConstants.TARGET_CONNECTIONS + .equals(propName)) { refreshTargetConnections(); } - if (propName.equals(BControl.PROPERTY_ADD) - || propName.equals(BControl.PROPERTY_REMOVE)) { + if (propName.equals(BControlPropertyConstants.PROPERTY_ADD_CHILD) + || propName + .equals(BControlPropertyConstants.PROPERTY_REMOVE_CHILD)) { refreshChildren(); } else if (Arrays.asList(layoutAttributes).contains(propName)) { // Layout attribute diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/ObserverRootTreeEditpart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/ObserverRootTreeEditpart.java deleted file mode 100644 index fd70efd9d5462ae343e734f5806cd167851ff937..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/ObserverRootTreeEditpart.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.util.ArrayList; -import java.util.List; - -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode; -import de.bmotionstudio.gef.editor.observer.IObserverListener; -import de.bmotionstudio.gef.editor.observer.Observer; - -public class ObserverRootTreeEditpart extends BMSAbstractTreeEditPart implements - IObserverListener { - - public void activate() { - if (!isActive()) { - super.activate(); - ((ObserverRootVirtualTreeNode) getModel()).getControl() - .addObserverListener(this); - } - } - - public void deactivate() { - if (isActive()) { - super.deactivate(); - ((ObserverRootVirtualTreeNode) getModel()).getControl() - .removeObserverListener(this); - } - } - - @Override - protected List<Object> getModelChildren() { - ObserverRootVirtualTreeNode model = (ObserverRootVirtualTreeNode) getModel(); - return new ArrayList<Object>(model.getObserver()); - } - - @Override - public void refreshVisuals() { - setWidgetText("Observer"); - setWidgetImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_OBSERVER)); - } - - @Override - public void addedObserver(BControl control, Observer observer) { - refreshChildren(); - } - - @Override - public void removedObserver(BControl control) { - refreshChildren(); - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java index 20a3c505bb4d594fe051a8be9c882774a7147878..cd9d5cccc938b9bdf357c226192034526952e17a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java @@ -10,6 +10,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteScheduler; @@ -97,8 +99,8 @@ public class ExecuteAnimationScript extends SchedulerEvent { } @Override - public SchedulerWizard getWizard(final BControl bcontrol) { - return new WizardExecuteScheduler(bcontrol, this); + public SchedulerWizard getWizard(Shell shell, BControl bcontrol) { + return new WizardExecuteScheduler(shell, bcontrol, this); } public ExecuteAnimationScript clone() throws CloneNotSupportedException { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java index c9114041dd765a0295d88fd92576e5e6278d4090..c3b062ed9f92d47c3ee140de8d129528bca58b5d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java @@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.scheduler; import java.util.List; import java.util.Random; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteOperationByPredicate; @@ -75,8 +77,8 @@ public class ExecuteOperationByPredicate extends SchedulerEvent { } @Override - public SchedulerWizard getWizard(BControl bcontrol) { - return new WizardExecuteOperationByPredicate(bcontrol, this); + public SchedulerWizard getWizard(Shell shell, BControl bcontrol) { + return new WizardExecuteOperationByPredicate(shell, bcontrol, this); } public void setPredicateOperation(PredicateOperation predicateOperation) { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java index 6f9b9044c4fc87feb207c2ff6f15b5ec5cd917f1..e93d23d7c59c5af14d9afd7957c605f5acc20467 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java @@ -2,6 +2,8 @@ package de.bmotionstudio.gef.editor.scheduler; import java.util.ArrayList; +import org.eclipse.swt.widgets.Shell; + import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.BindingObject; import de.bmotionstudio.gef.editor.model.BControl; @@ -49,8 +51,8 @@ public class ExecuteOperationByPredicateMulti extends SchedulerEvent { } @Override - public SchedulerWizard getWizard(BControl bcontrol) { - return new WizardExecuteOperationByPredicateMulti(bcontrol, this); + public SchedulerWizard getWizard(Shell shell, BControl bcontrol) { + return new WizardExecuteOperationByPredicateMulti(shell, bcontrol, this); } public void setOperationList(ArrayList<BindingObject> operationList) { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java index acc22a77cfb4ce228782038c422420071bde5da9..2b9cee660fa2274bf3dd65789184278c9710ca13 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java @@ -7,6 +7,7 @@ package de.bmotionstudio.gef.editor.scheduler; import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.swt.widgets.Shell; import de.bmotionstudio.gef.editor.AbstractExpressionControl; import de.bmotionstudio.gef.editor.Animation; @@ -76,7 +77,7 @@ public abstract class SchedulerEvent extends AbstractExpressionControl * The corresponding control * @return the corresponding wizard */ - public abstract SchedulerWizard getWizard(BControl bcontrol); + public abstract SchedulerWizard getWizard(Shell shell, BControl bcontrol); /** * Makes a copy of the scheduler event diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java index 11cdbb4316faab8776c1911c7af9e1b776a2f6ff..a9698cc818446c096427f5eb6f8a58034217939e 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java @@ -7,6 +7,7 @@ package de.bmotionstudio.gef.editor.scheduler; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.widgets.Shell; import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.model.BControl; @@ -26,8 +27,9 @@ public abstract class SchedulerWizard extends BMotionAbstractWizard { protected Boolean eventDelete = false; - public SchedulerWizard(BControl control, SchedulerEvent scheduler) { - super(control); + public SchedulerWizard(Shell shell, BControl control, + SchedulerEvent scheduler) { + super(shell, control); this.event = scheduler; } @@ -35,21 +37,6 @@ public abstract class SchedulerWizard extends BMotionAbstractWizard { return this.event; } - protected abstract Boolean prepareToFinish(); - - @Override - public boolean performFinish() { - return prepareToFinish(); - } - - protected void setEventDelete(Boolean b) { - this.eventDelete = b; - } - - public Boolean isEventDelete() { - return this.eventDelete; - } - public abstract Point getSize(); @Override diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java deleted file mode 100644 index 568c5f0922ff44ead8f3173c40249ec7e669bf41..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java +++ /dev/null @@ -1,335 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.scheduler.wizard; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.list.ComputedList; -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; -import org.eclipse.jface.viewers.EditingSupport; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CCombo; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.FocusListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep; -import de.bmotionstudio.gef.editor.scheduler.ObserverCallBackObject; - -@Deprecated -public class ObserverCallBackDialog extends Dialog { - - private TableViewer tableViewer; - - private final AnimationScriptStep animationScriptStep; - - private final BControl control; - - // private IObservableValue controlObservable; - - public ObserverCallBackDialog(final Shell parentShell, - final AnimationScriptStep animationScriptStep, - final BControl control) { - super(parentShell); - this.animationScriptStep = animationScriptStep; - this.control = control; - } - - @Override - protected Control createDialogArea(final Composite parent) { - - // DataBindingContext dbc = new DataBindingContext(); - - Composite container = (Composite) super.createDialogArea(parent); - container.setLayout(new GridLayout(1, true)); - - tableViewer = new TableViewer(container, SWT.BORDER - | SWT.FULL_SELECTION); - tableViewer.getTable().setLinesVisible(true); - tableViewer.getTable().setHeaderVisible(true); - tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); - tableViewer.getTable().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - - TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Control"); - column.getColumn().setWidth(225); - column.setEditingSupport(new ControlValueEditing(tableViewer, control)); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Observer"); - column.getColumn().setWidth(150); - // column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - // "observerID")); - column.setEditingSupport(new ObserverValueEditing(tableViewer, control)); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - tableViewer.setLabelProvider(new ObservableMapLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "control", "observerID" })) { - - @Override - public String getColumnText(final Object element, - final int columnIndex) { - if (columnIndex == 0) { - - ObserverCallBackObject obj = (ObserverCallBackObject) element; - - if (obj.getControl() != null) { - return obj.getControl().getID(); - } - } - return super.getColumnText(element, columnIndex); - } - - @Override - public Image getColumnImage(final Object element, - final int columnIndex) { - return null; - } - - }); - - final WritableList input = new WritableList( - animationScriptStep.getCallBackList(), - ObserverCallBackObject.class); - - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - ObserverCallBackObject obj = (ObserverCallBackObject) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - ObserverCallBackObject obj = new ObserverCallBackObject(); - input.add(obj); - } - }); - - return container; - - } - - @Override - protected Point getInitialSize() { - return new Point(600, 500); - } - - @Override - protected void okPressed() { - close(); - } - - @Override - protected void configureShell(final Shell newShell) { - super.configureShell(newShell); - newShell.setText("BMotion Studio - Observer Callback Editor"); - } - - private class ControlValueEditing extends EditingSupport { - - private ComboBoxViewerCellEditor cellEditor = null; - - private final BControl control; - - public ControlValueEditing(final TableViewer cv, final BControl control) { - super(cv); - this.control = control; - } - - @Override - protected boolean canEdit(final Object element) { - return true; - } - - @Override - protected Object getValue(final Object element) { - if (((ObserverCallBackObject) element).getControl() != null) { - return ((ObserverCallBackObject) element).getControl().getID(); - } else { - return ""; - } - } - - @Override - protected void setValue(final Object element, final Object value) { - if (value != null) { - ((ObserverCallBackObject) element).setControl(control - .getVisualization().getBControl(value.toString())); - } - } - - @Override - protected CellEditor getCellEditor(final Object element) { - if (cellEditor == null) { - cellEditor = new ComboBoxViewerCellEditor( - (Composite) getViewer().getControl(), SWT.READ_ONLY); - cellEditor - .setContenProvider(new ObservableListContentProvider()); - cellEditor.setInput(new ComputedList() { - @Override - protected List<String> calculate() { - ArrayList<String> tmpList = new ArrayList<String>(); - for (String controlID : control.getVisualization() - .getAllBControlIDs()) { - tmpList.add(controlID); - } - return tmpList; - } - }); - ((CCombo) cellEditor.getControl()) - .addFocusListener(new FocusListener() { - - String oldValue; - - public void focusGained(final FocusEvent e) { - oldValue = ((CCombo) cellEditor.getControl()) - .getText(); - - } - - public void focusLost(final FocusEvent e) { - - if (!oldValue.equals(((CCombo) cellEditor - .getControl()).getText())) { - - IStructuredSelection selection = (IStructuredSelection) getViewer() - .getSelection(); - - ObserverCallBackObject obj = (ObserverCallBackObject) selection - .getFirstElement(); - obj.setObserverID(""); - tableViewer.refresh(); - - } - } - - }); - } - return cellEditor; - } - } - - private static class ObserverValueEditing extends EditingSupport { - - private ComboBoxViewerCellEditor cellEditor = null; - - // private final BControl control; - - public ObserverValueEditing(final TableViewer cv, final BControl control) { - super(cv); - // this.control = control; - } - - @Override - protected boolean canEdit(final Object element) { - return true; - } - - @Override - protected Object getValue(final Object element) { - if (((ObserverCallBackObject) element).getObserverID() != null) { - return ((ObserverCallBackObject) element).getObserverID(); - } else { - return ""; - } - } - - @Override - protected void setValue(final Object element, final Object value) { - if (value != null) { - ((ObserverCallBackObject) element).setObserverID(value - .toString()); - } - } - - @Override - protected CellEditor getCellEditor(final Object element) { - - if (cellEditor == null) { - cellEditor = new ComboBoxViewerCellEditor( - (Composite) getViewer().getControl(), SWT.READ_ONLY); - cellEditor - .setContenProvider(new ObservableListContentProvider()); - } - // cellEditor.setInput(new ComputedList() { - // @Override - // protected List<String> calculate() { - // - // ArrayList<String> tmpList = new ArrayList<String>(); - // - // ObserverCallBackObject obj = (ObserverCallBackObject) element; - // BControl control = obj.getControl(); - // if (control != null) { - // - // for (String id : control.getObservers().keySet()) { - // tmpList.add(id); - // } - // - // } - // - // return tmpList; - // - // } - // }); - - return cellEditor; - } - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java index 58f0627cfc3d636fd2c249d7b8908947a499e153..5542930be38e6df21079b69c7250cc7c73d44746 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java @@ -141,7 +141,7 @@ public class SchedulerObjectDialog extends Dialog { Button btAdd = new Button(comp, SWT.PUSH); btAdd.setText("Add"); btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); btAdd.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java index 384a7fe54ab554bddc519823dcba7b5386ee0728..f763a9a87d3815b800d54ab7db209aa6be81b31f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java @@ -18,11 +18,9 @@ import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; import org.eclipse.jface.databinding.viewers.ViewersObservables; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.SelectionEvent; @@ -36,8 +34,10 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import de.bmotionstudio.gef.editor.BMotionStudioSWTConstants; @@ -51,266 +51,250 @@ import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; public class WizardExecuteOperationByPredicate extends SchedulerWizard { - private class SchedulerExecuteOperationByPredicatePage extends WizardPage { + private ComboViewer cbOperation; - private ComboViewer cbOperation; + private Text txtPredicate; - private Text txtPredicate; + private Text txtMaxRandomOperations; - private Text txtMaxRandomOperations; + private Label lbMaxRandomOperations; - private Label lbMaxRandomOperations; + private Composite container; - private Composite container; + private Label renderedOpLabel; - private Label renderedOpLabel; + private Button checkboxRandomMode; - private Button checkboxRandomMode; + private ScrolledComposite c1; - private ScrolledComposite c1; - - public ComboViewer getCbOperation() { - return cbOperation; - } - - public Text getTxtMaxRandomOperations() { - return txtMaxRandomOperations; - } - - protected SchedulerExecuteOperationByPredicatePage(String pageName) { - super(pageName); - } - - public void createControl(final Composite parent) { + @Override + public Control createWizardContent(Composite parent) { - final DataBindingContext dbc = new DataBindingContext(); + final DataBindingContext dbc = new DataBindingContext(); - container = new Composite(parent, SWT.NONE); - GridLayout gl = new GridLayout(2, false); - container.setLayout(gl); + container = new Composite(parent, SWT.NONE); + GridLayout gl = new GridLayout(2, false); + container.setLayout(gl); - Label lb = new Label(container, SWT.NONE); - lb.setText("Select an operation: "); + Label lb = new Label(container, SWT.NONE); + lb.setText("Select an operation: "); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.heightHint = 50; + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.heightHint = 50; - cbOperation = new ComboViewer(container, SWT.NONE); - cbOperation.getCombo().setLayoutData(new GridData(300, 50)); + cbOperation = new ComboViewer(container, SWT.NONE); + cbOperation.getCombo().setLayoutData(new GridData(300, 50)); - lb = new Label(container, SWT.NONE); - lb.setText("Predicate: "); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - txtPredicate = new Text(container, SWT.BORDER | SWT.WRAP - | SWT.V_SCROLL); - txtPredicate.setLayoutData(gd); + lb = new Label(container, SWT.NONE); + lb.setText("Predicate: "); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + txtPredicate = new Text(container, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL); + txtPredicate.setLayoutData(gd); - lb = new Label(container, SWT.NONE); - lb.setText("Random mode: "); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - checkboxRandomMode = new Button(container, SWT.CHECK); - checkboxRandomMode.addSelectionListener(new SelectionListener() { - @Override - public void widgetSelected(SelectionEvent e) { - setRandomVisibility(checkboxRandomMode.getSelection()); - } + lb = new Label(container, SWT.NONE); + lb.setText("Random mode: "); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + checkboxRandomMode = new Button(container, SWT.CHECK); + checkboxRandomMode.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + setRandomVisibility(checkboxRandomMode.getSelection()); + } - @Override - public void widgetDefaultSelected(SelectionEvent e) { - } - }); - - lbMaxRandomOperations = new Label(container, SWT.NONE); - lbMaxRandomOperations.setText("Max Random Operations: "); - lbMaxRandomOperations.setLayoutData(new GridData( - GridData.VERTICAL_ALIGN_BEGINNING)); - txtMaxRandomOperations = new Text(container, SWT.BORDER); - txtMaxRandomOperations.setLayoutData(new GridData( - GridData.FILL_HORIZONTAL)); - txtMaxRandomOperations.addVerifyListener(new VerifyListener() { - @Override - public void verifyText(VerifyEvent e) { - String string = e.text; - char[] chars = new char[string.length()]; - string.getChars(0, chars.length, chars, 0); - for (int i = 0; i < chars.length; i++) { - if (!('0' <= chars[i] && chars[i] <= '9')) { - e.doit = false; - return; - } + @Override + public void widgetDefaultSelected(SelectionEvent e) { + } + }); + + lbMaxRandomOperations = new Label(container, SWT.NONE); + lbMaxRandomOperations.setText("Max Random Operations: "); + lbMaxRandomOperations.setLayoutData(new GridData( + GridData.VERTICAL_ALIGN_BEGINNING)); + txtMaxRandomOperations = new Text(container, SWT.BORDER); + txtMaxRandomOperations.setLayoutData(new GridData( + GridData.FILL_HORIZONTAL)); + txtMaxRandomOperations.addVerifyListener(new VerifyListener() { + @Override + public void verifyText(VerifyEvent e) { + String string = e.text; + char[] chars = new char[string.length()]; + string.getChars(0, chars.length, chars, 0); + for (int i = 0; i < chars.length; i++) { + if (!('0' <= chars[i] && chars[i] <= '9')) { + e.doit = false; + return; } } - }); - setRandomVisibility(((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation().isRandom()); + } + }); + setRandomVisibility(((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation().isRandom()); - initBindings(dbc); + initBindings(dbc); - IStructuredSelection structuredSelection = (IStructuredSelection) cbOperation - .getSelection(); + IStructuredSelection structuredSelection = (IStructuredSelection) cbOperation + .getSelection(); - if (!structuredSelection.isEmpty()) { - createRenderedOperationContainer((MachineOperation) structuredSelection - .getFirstElement()); - } + if (!structuredSelection.isEmpty()) { + createRenderedOperationContainer((MachineOperation) structuredSelection + .getFirstElement()); + } - setControl(container); + return container; - } + } - private void setRandomVisibility(boolean b) { - if (lbMaxRandomOperations == null || txtMaxRandomOperations == null) - return; - lbMaxRandomOperations.setVisible(b); - txtMaxRandomOperations.setVisible(b); - } + private void setRandomVisibility(boolean b) { + if (lbMaxRandomOperations == null || txtMaxRandomOperations == null) + return; + lbMaxRandomOperations.setVisible(b); + txtMaxRandomOperations.setVisible(b); + } - private void initBindings(DataBindingContext dbc) { - - // MachineContentList operationList = BMotionEditorPlugin - // .getActiveEditor().getVisualization().getOperationList(); - // operationList.getMap().remove("INITIALISATION"); - - ObservableListContentProvider cbOpContentProvider = new ObservableListContentProvider(); - cbOperation.setContentProvider(cbOpContentProvider); - IObservableMap[] attributeMaps = BeansObservables.observeMaps( - cbOpContentProvider.getKnownElements(), - MachineContentObject.class, new String[] { "label" }); - cbOperation.setLabelProvider(new ObservableMapLabelProvider( - attributeMaps)); - cbOperation.setInput(new WritableList(EventBHelper - .getOperations(getBControl().getVisualization()), - MachineOperation.class)); - cbOperation.getCombo().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - - final IObservableValue observeSelection = ViewersObservables - .observeSingleSelection(cbOperation); - - dbc.bindValue(SWTObservables.observeSelection(cbOperation - .getCombo()), BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "operationName"), null, - null); - - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "predicate")); - - observeSelection.addValueChangeListener(new IValueChangeListener() { - public void handleValueChange(ValueChangeEvent event) { - Object sel = event.getObservableValue().getValue(); - createRenderedOperationContainer((MachineOperation) sel); - } - }); + private void initBindings(DataBindingContext dbc) { + + // MachineContentList operationList = BMotionEditorPlugin + // .getActiveEditor().getVisualization().getOperationList(); + // operationList.getMap().remove("INITIALISATION"); + + ObservableListContentProvider cbOpContentProvider = new ObservableListContentProvider(); + cbOperation.setContentProvider(cbOpContentProvider); + IObservableMap[] attributeMaps = BeansObservables.observeMaps( + cbOpContentProvider.getKnownElements(), + MachineContentObject.class, new String[] { "label" }); + cbOperation.setLabelProvider(new ObservableMapLabelProvider( + attributeMaps)); + cbOperation.setInput(new WritableList(EventBHelper + .getOperations(getBControl().getVisualization()), + MachineOperation.class)); + cbOperation.getCombo().setFont( + new Font(Display.getDefault(), new FontData("Arial", 10, + SWT.NONE))); + + final IObservableValue observeSelection = ViewersObservables + .observeSingleSelection(cbOperation); + + dbc.bindValue(SWTObservables.observeSelection(cbOperation.getCombo()), + BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "operationName"), + null, null); + + dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), + BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "predicate")); + + observeSelection.addValueChangeListener(new IValueChangeListener() { + public void handleValueChange(ValueChangeEvent event) { + Object sel = event.getObservableValue().getValue(); + createRenderedOperationContainer((MachineOperation) sel); + } + }); - dbc.bindValue(SWTObservables.observeSelection(checkboxRandomMode), - BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "random")); + dbc.bindValue(SWTObservables.observeSelection(checkboxRandomMode), + BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "random")); - dbc.bindValue(SWTObservables.observeText(txtMaxRandomOperations, - SWT.Modify), BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "maxrandom")); + dbc.bindValue(SWTObservables.observeText(txtMaxRandomOperations, + SWT.Modify), BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "maxrandom")); - } + } - private void createRenderedOperationContainer(MachineOperation op) { + private void createRenderedOperationContainer(MachineOperation op) { - if (c1 != null) - c1.dispose(); + if (c1 != null) + c1.dispose(); - GridLayout gl = new GridLayout(1, true); - gl.marginLeft = 5; - gl.marginTop = 5; + GridLayout gl = new GridLayout(1, true); + gl.marginLeft = 5; + gl.marginTop = 5; - GridData gd = new GridData(GridData.FILL_BOTH); - gd.horizontalSpan = 2; - - c1 = new ScrolledComposite(container, SWT.BORDER | SWT.H_SCROLL - | SWT.V_SCROLL); - c1.setBackground(ColorConstants.red); - c1.setLayoutData(gd); + GridData gd = new GridData(GridData.FILL_BOTH); + gd.horizontalSpan = 2; - Composite cp = new Composite(c1, SWT.NONE); - cp.setLayout(gl); + c1 = new ScrolledComposite(container, SWT.BORDER | SWT.H_SCROLL + | SWT.V_SCROLL); + c1.setBackground(ColorConstants.red); + c1.setLayoutData(gd); - renderedOpLabel = new Label(cp, SWT.NONE); - renderedOpLabel.setLayoutData(gd); - renderedOpLabel.setText(op.getRenderedOperation()); - renderedOpLabel.setFont(JFaceResources.getFontRegistry().get( - BMotionStudioSWTConstants.RODIN_FONT_KEY)); + Composite cp = new Composite(c1, SWT.NONE); + cp.setLayout(gl); - c1.setContent(cp); - c1.setExpandHorizontal(true); - c1.setExpandVertical(true); - c1.setMinSize(cp.computeSize(SWT.DEFAULT, SWT.DEFAULT)); + renderedOpLabel = new Label(cp, SWT.NONE); + renderedOpLabel.setLayoutData(gd); + renderedOpLabel.setText(op.getRenderedOperation()); + renderedOpLabel.setFont(JFaceResources.getFontRegistry().get( + BMotionStudioSWTConstants.RODIN_FONT_KEY)); - container.layout(); + c1.setContent(cp); + c1.setExpandHorizontal(true); + c1.setExpandVertical(true); + c1.setMinSize(cp.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - } + container.layout(); } - public WizardExecuteOperationByPredicate(BControl bcontrol, + public WizardExecuteOperationByPredicate(Shell shell, BControl bcontrol, SchedulerEvent scheduler) { - super(bcontrol, scheduler); - addPage(new SchedulerExecuteOperationByPredicatePage( - "SchedulerExecuteOperationByPredicatePage")); + super(shell, bcontrol, scheduler); } - @Override - protected Boolean prepareToFinish() { - - SchedulerExecuteOperationByPredicatePage page = (SchedulerExecuteOperationByPredicatePage) getPage("SchedulerExecuteOperationByPredicatePage"); - - String errorStr = ""; - - if (((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation().isRandom() - && !(Integer - .valueOf(page.getTxtMaxRandomOperations().getText()) > 0)) - errorStr += "Max Random Operations must be greater than 0.\n"; - - if (page.getCbOperation().getCombo().getSelectionIndex() == -1) - errorStr += "Please select an operation.\n"; - - if (errorStr.length() > 0) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An Error occured", errorStr); - return false; - } - - // PredicateOperation predicateOperation = - // ((ExecuteOperationByPredicate) getScheduler()) - // .getPredicateOperation(); - // - // Observer observer = getBControl().getObserver( - // ListenOperationByPredicate.ID); - // ListenOperationByPredicate listenObserver; - // - // if (observer != null) { - // listenObserver = (ListenOperationByPredicate) observer; - // listenObserver - // .removePredicateOperationByUniqueID(predicateOperation - // .getUniqueID()); - // } else { - // listenObserver = new ListenOperationByPredicate(); - // getBControl().addObserver(listenObserver); - // } - // - // try { - // listenObserver.addPredicateOperation(predicateOperation.clone()); - // } catch (CloneNotSupportedException e) { - // e.printStackTrace(); - // } - - return true; - - } + // @Override + // protected Boolean prepareToFinish() { + // + // SchedulerExecuteOperationByPredicatePage page = + // (SchedulerExecuteOperationByPredicatePage) + // getPage("SchedulerExecuteOperationByPredicatePage"); + // + // String errorStr = ""; + // + // if (((ExecuteOperationByPredicate) getScheduler()) + // .getPredicateOperation().isRandom() + // && !(Integer + // .valueOf(page.getTxtMaxRandomOperations().getText()) > 0)) + // errorStr += "Max Random Operations must be greater than 0.\n"; + // + // if (page.getCbOperation().getCombo().getSelectionIndex() == -1) + // errorStr += "Please select an operation.\n"; + // + // if (errorStr.length() > 0) { + // MessageDialog.openError(Display.getDefault().getActiveShell(), + // "An Error occured", errorStr); + // return false; + // } + // + // // PredicateOperation predicateOperation = + // // ((ExecuteOperationByPredicate) getScheduler()) + // // .getPredicateOperation(); + // // + // // Observer observer = getBControl().getObserver( + // // ListenOperationByPredicate.ID); + // // ListenOperationByPredicate listenObserver; + // // + // // if (observer != null) { + // // listenObserver = (ListenOperationByPredicate) observer; + // // listenObserver + // // .removePredicateOperationByUniqueID(predicateOperation + // // .getUniqueID()); + // // } else { + // // listenObserver = new ListenOperationByPredicate(); + // // getBControl().addObserver(listenObserver); + // // } + // // + // // try { + // // listenObserver.addPredicateOperation(predicateOperation.clone()); + // // } catch (CloneNotSupportedException e) { + // // e.printStackTrace(); + // // } + // + // return true; + // + // } @Override public Point getSize() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java index ef33b42a06fed9594556b7b95ad8a97525dd9c09..4b9e029a1ecd28a42cceb179a85358b7a6a025e8 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java @@ -10,14 +10,12 @@ import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -27,10 +25,10 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; -import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.BindingObject; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.OperationValueEditingSupport; import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; @@ -48,134 +46,222 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; */ public class WizardExecuteOperationByPredicateMulti extends SchedulerWizard { - private class MultiPage extends WizardPage { + private TableViewer tableViewer; - private TableViewer tableViewer; - - protected MultiPage(String pageName) { - super(pageName); - } - - public void createControl(final Composite parent) { - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - setControl(container); - - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, PredicateOperation.class, - ((BMotionAbstractWizard) getWizard()).getName()); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Execute Rule"); - column.getColumn().setWidth(190); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "executePredicate", getBControl().getVisualization(), - getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Operation"); - column.getColumn().setWidth(150); - column.setEditingSupport(new OperationValueEditingSupport( - tableViewer, getBControl())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Parameter"); - column.getColumn().setWidth(190); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "predicate", getBControl().getVisualization(), - getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Random Ops"); - column.getColumn().setWidth(100); - column.setEditingSupport(new RandomModeEditingSupport(tableViewer)); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - - tableViewer.setLabelProvider(new ObservableMapLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "executePredicate", "operationName", - "predicate", "maxrandom" }))); - final WritableList input = new WritableList( - ((ExecuteOperationByPredicateMulti) getScheduler()) - .getOperationList(), - PredicateOperation.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - PredicateOperation obj = new PredicateOperation(); - input.add(obj); + @Override + public Control createWizardContent(Composite parent) { + DataBindingContext dbc = new DataBindingContext(); + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(new GridLayout(1, true)); + + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, PredicateOperation.class, getName()); + + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Execute Rule"); + column.getColumn().setWidth(190); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, + "executePredicate", getBControl().getVisualization(), + getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Operation"); + column.getColumn().setWidth(150); + column.setEditingSupport(new OperationValueEditingSupport(tableViewer, + getBControl())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Parameter"); + column.getColumn().setWidth(190); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, + "predicate", getBControl().getVisualization(), getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Random Ops"); + column.getColumn().setWidth(100); + column.setEditingSupport(new RandomModeEditingSupport(tableViewer)); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + + tableViewer.setLabelProvider(new ObservableMapLabelProvider( + BeansObservables.observeMaps( + contentProvider.getKnownElements(), new String[] { + "executePredicate", "operationName", + "predicate", "maxrandom" }))); + final WritableList input = new WritableList( + ((ExecuteOperationByPredicateMulti) getScheduler()) + .getOperationList(), + PredicateOperation.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; } - }); + PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(obj); + } + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + PredicateOperation obj = new PredicateOperation(); + input.add(obj); + } + }); + + return container; - } } - public WizardExecuteOperationByPredicateMulti(BControl bcontrol, + // private class MultiPage extends WizardPage { + // + // private TableViewer tableViewer; + // + // protected MultiPage(String pageName) { + // super(pageName); + // } + // + // public void createControl(final Composite parent) { + // + // DataBindingContext dbc = new DataBindingContext(); + // + // Composite container = new Composite(parent, SWT.NONE); + // container.setLayout(new GridLayout(1, true)); + // + // setControl(container); + // + // tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + // container, PredicateOperation.class, + // ((BMotionAbstractWizard) getWizard()).getName()); + // + // TableViewerColumn column = new TableViewerColumn(tableViewer, + // SWT.NONE); + // column.getColumn().setText("Execute Rule"); + // column.getColumn().setWidth(190); + // column.setEditingSupport(new PredicateEditingSupport(tableViewer, + // dbc, "executePredicate", getBControl().getVisualization(), + // getShell())); + // + // column = new TableViewerColumn(tableViewer, SWT.NONE); + // column.getColumn().setText("Operation"); + // column.getColumn().setWidth(150); + // column.setEditingSupport(new OperationValueEditingSupport( + // tableViewer, getBControl())); + // + // column = new TableViewerColumn(tableViewer, SWT.NONE); + // column.getColumn().setText("Parameter"); + // column.getColumn().setWidth(190); + // column.setEditingSupport(new PredicateEditingSupport(tableViewer, + // dbc, "predicate", getBControl().getVisualization(), + // getShell())); + // + // column = new TableViewerColumn(tableViewer, SWT.NONE); + // column.getColumn().setText("Random Ops"); + // column.getColumn().setWidth(100); + // column.setEditingSupport(new RandomModeEditingSupport(tableViewer)); + // + // ObservableListContentProvider contentProvider = new + // ObservableListContentProvider(); + // tableViewer.setContentProvider(contentProvider); + // + // tableViewer.setLabelProvider(new ObservableMapLabelProvider( + // BeansObservables.observeMaps( + // contentProvider.getKnownElements(), new String[] { + // "executePredicate", "operationName", + // "predicate", "maxrandom" }))); + // final WritableList input = new WritableList( + // ((ExecuteOperationByPredicateMulti) getScheduler()) + // .getOperationList(), + // PredicateOperation.class); + // tableViewer.setInput(input); + // + // Composite comp = new Composite(container, SWT.NONE); + // comp.setLayout(new RowLayout()); + // comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + // + // Button btRemove = new Button(comp, SWT.PUSH); + // btRemove.setText("Remove"); + // btRemove.setImage(BMotionStudioImage + // .getImage(EditorImageRegistry.IMG_ICON_DELETE)); + // btRemove.addSelectionListener(new SelectionAdapter() { + // @Override + // public void widgetSelected(SelectionEvent e) { + // if (tableViewer.getSelection().isEmpty()) { + // return; + // } + // PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) + // tableViewer + // .getSelection()).getFirstElement(); + // input.remove(obj); + // } + // }); + // + // Button btAdd = new Button(comp, SWT.PUSH); + // btAdd.setText("Add"); + // btAdd.setImage(BMotionStudioImage + // .getImage(EditorImageRegistry.IMG_ICON_ADD)); + // btAdd.addSelectionListener(new SelectionAdapter() { + // @Override + // public void widgetSelected(SelectionEvent e) { + // PredicateOperation obj = new PredicateOperation(); + // input.add(obj); + // } + // }); + // + // } + // } + + public WizardExecuteOperationByPredicateMulti(Shell shell, + BControl bcontrol, SchedulerEvent scheduler) { - super(bcontrol, scheduler); - addPage(new MultiPage("MultiPage")); + super(shell, bcontrol, scheduler); } /* - * (non-Javadoc) - * - * @see + * // * (non-Javadoc) // * // * @see // * * de.bmotionstudio.gef.editor.scheduler.SchedulerWizard#prepareToFinish() + * // */ - @Override - protected Boolean prepareToFinish() { - if (((ExecuteOperationByPredicateMulti) getScheduler()) - .getOperationList().size() == 0) { - setEventDelete(true); - } else { - for (BindingObject obj : ((ExecuteOperationByPredicateMulti) getScheduler()) - .getOperationList()) { - if (((PredicateOperation) obj).getOperationName() == null - || ((PredicateOperation) obj).getOperationName() - .isEmpty()) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The operation field must not be empty."); - return false; - } - } - } - return true; - } + // @Override + // protected Boolean prepareToFinish() { + // if (((ExecuteOperationByPredicateMulti) getScheduler()) + // .getOperationList().size() == 0) { + // setEventDelete(true); + // } else { + // for (BindingObject obj : ((ExecuteOperationByPredicateMulti) + // getScheduler()) + // .getOperationList()) { + // if (((PredicateOperation) obj).getOperationName() == null + // || ((PredicateOperation) obj).getOperationName() + // .isEmpty()) { + // MessageDialog + // .openError(getShell(), "Please check your entries", + // "Please check your entries. The operation field must not be empty."); + // return false; + // } + // } + // } + // return true; + // } /* * (non-Javadoc) diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java index 81680ee37abd5991ef459a9c46da00c079364d65..504d38d351973f4098531d92106f17f8c8c1df01 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java @@ -19,7 +19,6 @@ import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -31,9 +30,9 @@ import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; -import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; @@ -46,119 +45,111 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardExecuteScheduler extends SchedulerWizard { - private class SchedulerPage extends WizardPage { - - private TableViewer tableViewer; - - protected SchedulerPage(String pageName) { - super(pageName); - } - - public void createControl(final Composite parent) { - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - setControl(container); - - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, AnimationScriptObject.class, - ((BMotionAbstractWizard) getWizard()).getName()); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(225); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "predicate", getBControl().getVisualization(), - getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Edit"); - column.getColumn().setWidth(225); - column.setEditingSupport(new AnimationScriptEditingSupport( - tableViewer)); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - - tableViewer.setLabelProvider(new ObservableMapLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), - new String[] { "predicate" })) { - - @Override - public String getColumnText(Object element, int columnIndex) { - if (columnIndex == 1) { - return "Edit Scheduler"; - } - return super.getColumnText(element, columnIndex); + private TableViewer tableViewer; + + @Override + public Control createWizardContent(Composite parent) { + + DataBindingContext dbc = new DataBindingContext(); + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(new GridLayout(1, true)); + + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, AnimationScriptObject.class, getName()); + + TableViewerColumn column = new TableViewerColumn(tableViewer, + SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(225); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, + dbc, "predicate", getBControl().getVisualization(), + getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Edit"); + column.getColumn().setWidth(225); + column.setEditingSupport(new AnimationScriptEditingSupport( + tableViewer)); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + + tableViewer.setLabelProvider(new ObservableMapLabelProvider( + BeansObservables.observeMaps( + contentProvider.getKnownElements(), + new String[] { "predicate" })) { + + @Override + public String getColumnText(Object element, int columnIndex) { + if (columnIndex == 1) { + return "Edit Scheduler"; } + return super.getColumnText(element, columnIndex); + } - @Override - public Image getColumnImage(Object element, int columnIndex) { - return null; - } + @Override + public Image getColumnImage(Object element, int columnIndex) { + return null; + } - }); - - final WritableList input = new WritableList( - ((ExecuteAnimationScript) getScheduler()).getList(), - AnimationScriptObject.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - AnimationScriptObject obj = (AnimationScriptObject) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - AnimationScriptObject obj = new AnimationScriptObject(""); - input.add(obj); + }); + + final WritableList input = new WritableList( + ((ExecuteAnimationScript) getScheduler()).getList(), + AnimationScriptObject.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; } - }); + AnimationScriptObject obj = (AnimationScriptObject) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(obj); + } + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + AnimationScriptObject obj = new AnimationScriptObject(""); + input.add(obj); + } + }); - } - } + return container; - public WizardExecuteScheduler(BControl bcontrol, - SchedulerEvent scheduler) { - super(bcontrol, scheduler); - addPage(new SchedulerPage("SchedulerPage")); } - - @Override - protected Boolean prepareToFinish() { - return true; + + public WizardExecuteScheduler(Shell shell, BControl bcontrol, + SchedulerEvent scheduler) { + super(shell, bcontrol, scheduler); } - @Override - public boolean performCancel() { - return true; - } + // @Override + // protected Boolean prepareToFinish() { + // return true; + // } + // + // @Override + // public boolean performCancel() { + // return true; + // } @Override public Point getSize() { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java index b2c4fa4123b2b707b4fe0898e2a2909ecbb8c488..6a82f2279dc2e3268589da2bd38cbd9fea9f85ea 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java @@ -17,7 +17,6 @@ import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.TableItem; -import de.bmotionstudio.gef.editor.BMotionStudioSWTConstants; import de.bmotionstudio.gef.editor.action.BMotionWizardAddItemAction; import de.bmotionstudio.gef.editor.action.BMotionWizardDeleteItemsAction; import de.bmotionstudio.gef.editor.library.AttributeTransfer; @@ -42,7 +41,7 @@ public class BMotionWizardUtil { tableViewer.getTable().setLinesVisible(true); tableViewer.getTable().setHeaderVisible(true); tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); - tableViewer.getTable().setFont(BMotionStudioSWTConstants.fontArial10); + // tableViewer.getTable().setFont(BMotionStudioSWTConstants.fontArial10); int operations = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] transferTypes = new Transfer[] { AttributeTransfer .getInstance() }; diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java index 35a2c477e1ef878b5d40b7a4c796cc53687ebc5c..3dd55a036ac6089db8e4085978bea219ca619e99 100644 --- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java +++ b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java @@ -11,6 +11,7 @@ import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IPerspectiveFactory; import de.bmotionstudio.gef.editor.library.LibraryView; +import de.bmotionstudio.gef.editor.observer.view.ObserverView; public class PerspectiveEditFactory implements IPerspectiveFactory { @@ -37,6 +38,7 @@ public class PerspectiveEditFactory implements IPerspectiveFactory { IPageLayout.BOTTOM, 0.75f, editorArea); // Properties view bottom.addView(IPageLayout.ID_PROP_SHEET); + bottom.addView(ObserverView.ID); } diff --git a/de.prob.ui/plugin.xml b/de.prob.ui/plugin.xml index a8edde201a3de97737dd4a38086703bde5240114..a64882ef7a42135a4a34f5d12d6b38230c1960c2 100644 --- a/de.prob.ui/plugin.xml +++ b/de.prob.ui/plugin.xml @@ -183,7 +183,6 @@ name="Consistencychecking"> </command> - <command defaultHandler="de.prob.ui.operationview.DoubleClickBehaviorHandler" id="de.prob.ui.doubleclickbehaviour" @@ -351,6 +350,11 @@ id="de.prob.ui.newcore.export" name="Export for new Core"> </command> + <command + defaultHandler="de.prob.ui.csp.StartCSPAnimationHandler" + id="de.prob.command.startCspAnimation" + name="Start CSP Animation"> + </command> </extension> <extension point="org.eclipse.ui.handlers"> @@ -1134,6 +1138,33 @@ style="push"> </command> </menuContribution> + <menuContribution + allPopups="false" + locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu"> + <command + commandId="de.prob.command.startCspAnimation" + label="Start CSP Animation" + style="push"> + <visibleWhen> + <with + variable="selection"> + <iterate + operator="or"> + <and> + <instanceof + value="org.eclipse.core.resources.IResource"> + </instanceof> + <test + forcePluginActivation="true" + property="org.eclipse.core.resources.extension" + value="csp"> + </test> + </and> + </iterate> + </with> + </visibleWhen> + </command> + </menuContribution> </extension> <extension