From 088f6fbcc6796ef5e9fcfe4e601e5930327ed61c Mon Sep 17 00:00:00 2001 From: Lukas Ladenberger <lukas.ladenberger@googlemail.com> Date: Tue, 5 Feb 2013 11:35:10 +0100 Subject: [PATCH] reverted some commits --- de.bmotionstudio.gef.editor/plugin.xml | 522 +++++++++--------- ...tionstudio.gef.editor.includeObserver.exsd | 8 +- .../gef/editor/BMSContextMenuProvider.java | 94 +++- .../gef/editor/BMotionAbstractWizard.java | 70 +-- .../gef/editor/EditorImageRegistry.java | 13 +- .../action/BMotionAbstractWizardDialog.java | 107 ++++ .../action/BMotionObserverWizardDialog.java | 35 ++ .../BMotionSchedulerEventWizardDialog.java | 43 ++ .../gef/editor/action/OpenObserverAction.java | 111 +++- .../action/OpenSchedulerEventAction.java | 86 ++- .../gef/editor/model/BControl.java | 34 +- .../gef/editor/observer/ColumnObserver.java | 6 +- .../observer/ExternalObserverScript.java | 77 +++ .../observer/ListenOperationByPredicate.java | 7 +- .../gef/editor/observer/Observer.java | 3 +- .../editor/observer/ObserverEvalObject.java | 29 +- .../gef/editor/observer/ObserverWizard.java | 23 +- .../gef/editor/observer/SetAttribute.java | 30 +- .../editor/observer/SetAttributeObject.java | 4 +- .../editor/observer/SimpleValueDisplay.java | 6 +- .../observer/SwitchChildCoordinates.java | 6 +- .../editor/observer/SwitchCoordinates.java | 6 +- .../gef/editor/observer/SwitchImage.java | 5 +- .../gef/editor/observer/TableObserver.java | 59 +- .../observer/ToggleObjectCoordinates.java | 8 +- .../editor/observer/ToggleObjectImage.java | 4 +- .../gef/editor/observer/view/HelpAction.java | 34 -- .../editor/observer/view/ObserverPage.java | 212 ------- .../editor/observer/view/ObserverView.java | 68 --- .../wizard/AbstractObserverWizardPage.java | 30 + .../observer/wizard/WizardColumnObserver.java | 125 +++-- .../WizardObserverCSwitchCoordinates.java | 310 +++++++---- .../WizardObserverExternalObserverScript.java | 111 ++++ ...ardObserverListenOperationByPredicate.java | 483 +++++++++------- .../wizard/WizardObserverSetAttribute.java | 477 +++++++++------- .../WizardObserverSimpleValueDisplay.java | 159 +++--- .../WizardObserverSwitchCoordinates.java | 283 +++++++--- .../wizard/WizardObserverSwitchImage.java | 258 +++++---- .../observer/wizard/WizardTableObserver.java | 246 +++++---- .../scheduler/ExecuteAnimationScript.java | 6 +- .../ExecuteOperationByPredicate.java | 6 +- .../ExecuteOperationByPredicateMulti.java | 6 +- .../gef/editor/scheduler/SchedulerEvent.java | 3 +- .../gef/editor/scheduler/SchedulerWizard.java | 21 +- .../wizard/SchedulerObjectDialog.java | 2 +- .../WizardExecuteOperationByPredicate.java | 422 +++++++------- ...izardExecuteOperationByPredicateMulti.java | 328 ++++------- .../wizard/WizardExecuteScheduler.java | 203 +++---- 48 files changed, 2899 insertions(+), 2290 deletions(-) create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java delete mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java delete mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java delete mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java create mode 100644 de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java diff --git a/de.bmotionstudio.gef.editor/plugin.xml b/de.bmotionstudio.gef.editor/plugin.xml index f7e7118b..e910bbd0 100644 --- a/de.bmotionstudio.gef.editor/plugin.xml +++ b/de.bmotionstudio.gef.editor/plugin.xml @@ -52,15 +52,6 @@ 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 point="org.eclipse.ui.menus"> @@ -402,255 +393,270 @@ point="de.bmotionstudio.gef.editor.includeObserver"> <include language="EventB"> - <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> + <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> </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 9a9fd6bf..42a20dc1 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,9 +54,6 @@ </appInfo> </annotation> <complexType> - <sequence minOccurs="1" maxOccurs="unbounded"> - <element ref="observer"/> - </sequence> <attribute name="id" type="string" use="required"> <annotation> <documentation> @@ -74,6 +71,9 @@ </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="control"/> + <element ref="observer"/> </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 58faadce..2dab8b07 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 @@ -128,9 +128,51 @@ public class BMSContextMenuProvider extends ContextMenuProvider { "icons/icon_observer.gif"), "observerMenu"); menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleObserverMenu); - IExtensionPoint extensionPoint = Platform.getExtensionRegistry() - .getExtensionPoint( - "de.bmotionstudio.gef.editor.includeObserver"); + 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"); for (IExtension extension : extensionPoint.getExtensions()) { for (IConfigurationElement configurationElement : extension @@ -142,35 +184,25 @@ public class BMSContextMenuProvider extends ContextMenuProvider { .getAttribute("language"); if (langID != null - && langID.equals(bcontrol.getVisualization().getLanguage())) { - - for (IConfigurationElement configC : configurationElement - .getChildren("control")) { - - String cID = configC.getAttribute("id"); + && langID.equals(control.getVisualization() + .getLanguage())) { - if (bcontrol.getType().equals(cID)) { + for (IConfigurationElement cObserver : configurationElement + .getChildren("observer")) { - for (IConfigurationElement configO : configC - .getChildren("observer")) { + String oID = cObserver.getAttribute("id"); - String oID = configO.getAttribute("id"); - IAction action = getActionRegistry() - .getAction( - "de.bmotionstudio.gef.editor.observerAction." - + oID); + if (observerID.equals(oID)) { - String name = oID; + for (IConfigurationElement configBControl : cObserver + .getChildren("control")) { - IConfigurationElement observerExtension = BMotionEditorPlugin - .getObserverExtension(oID); - if (observerExtension != null) - name = observerExtension - .getAttribute("name"); + String bID = configBControl + .getAttribute("id"); - action.setText(name); - - handleObserverMenu.add(action); + if (control.getType().equals(bID)) { + return true; + } } @@ -185,6 +217,8 @@ public class BMSContextMenuProvider extends ContextMenuProvider { } } + return false; + } private void buildEventMenu(IMenuManager menu, AbstractEditPart editPart) { @@ -245,6 +279,14 @@ 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 fa865249..b4524f4a 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,79 +6,29 @@ package de.bmotionstudio.gef.editor; -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 org.eclipse.jface.wizard.Wizard; import de.bmotionstudio.gef.editor.model.BControl; -public abstract class BMotionAbstractWizard extends TrayDialog { +public abstract class BMotionAbstractWizard extends Wizard { private BControl control; - public static final int CLOSE = 2; - - public BMotionAbstractWizard(Shell shell, BControl control) { - super(shell); + public BMotionAbstractWizard(BControl control) { this.control = control; } - public BControl getBControl() { - return this.control; - } - @Override - protected void configureShell(Shell newShell) { - super.configureShell(newShell); + public boolean performFinish() { + return 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 BControl getBControl() { + return this.control; } - public abstract Control createWizardContent(Composite parent); + public abstract String getName(); + protected abstract Boolean prepareToFinish(); + } 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 72511e5f..56b16757 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,6 +18,7 @@ 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"; @@ -27,7 +28,6 @@ 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,6 +54,8 @@ 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, @@ -70,9 +72,6 @@ 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 new file mode 100644 index 00000000..d9a3d5c3 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java @@ -0,0 +1,107 @@ +/** + * (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 new file mode 100644 index 00000000..b5ccee62 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java @@ -0,0 +1,35 @@ +/** + * (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 new file mode 100644 index 00000000..f14aa16a --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java @@ -0,0 +1,43 @@ +/** + * (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 d8ff6ba3..352e07a9 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,11 +8,16 @@ 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.swt.widgets.Display; +import org.eclipse.jface.wizard.WizardDialog; 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.observer.Observer; import de.bmotionstudio.gef.editor.observer.ObserverWizard; @@ -44,23 +49,79 @@ public class OpenObserverAction extends SelectionAction { if (actionControl != null) { + Observer oldObserver = null; Observer observer = getControl().getObserver(getClassName()); - ObserverWizard wizard = observer.getWizard(Display.getDefault() - .getActiveShell(), actionControl); + // 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); if (wizard != null) { - 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(); + + 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); + } + } else { Logger.notifyUserWithoutBugreport("The Observer \"" + observer.getName() @@ -70,6 +131,28 @@ 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; } 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 f35094ca..dff15928 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,12 +8,16 @@ 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.swt.widgets.Display; +import org.eclipse.jface.wizard.WizardDialog; 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; @@ -23,6 +27,7 @@ public class OpenSchedulerEventAction extends SelectionAction { private String className; private String eventID; + private SchedulerEvent clonedSchedulerEvent; public OpenSchedulerEventAction(IWorkbenchPart part) { super(part); @@ -41,33 +46,82 @@ 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(Display - .getDefault().getActiveShell(), bcontrol); + SchedulerWizard wizard = newSchedulerEvent.getWizard(bcontrol); if (wizard != null) { - wizard.create(); - wizard.getShell().setSize(wizard.getSize()); + BMotionSchedulerEventWizardDialog dialog = new BMotionSchedulerEventWizardDialog( + getWorkbenchPart(), wizard); + dialog.create(); + dialog.getShell().setSize(wizard.getSize()); String title = "Scheduler Event: " + newSchedulerEvent.getName() + " Control: " + bcontrol .getAttributeValue(AttributeConstants.ATTRIBUTE_ID); - 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(); + 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); + } } else { Logger.notifyUserWithoutBugreport("The Scheduler Event \"" @@ -83,6 +137,14 @@ 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/model/BControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java index 8d153eff..1d93f734 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 @@ -165,8 +165,7 @@ public abstract class BControl implements IAdaptable, Cloneable { initStandardAttributes(); // Init custom control attributes initAttributes(); - // Init observer - initObserver(); + } private List<String> getSupportedObserverList() { @@ -220,37 +219,6 @@ public abstract class BControl implements IAdaptable, Cloneable { } - 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(); - } - } - - } - - } - - } - private void initStandardAttributes() { // Init unique ID 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 d7c41fb8..04309d36 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,8 +3,6 @@ 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; @@ -94,8 +92,8 @@ public class ColumnObserver extends Observer { } @Override - public ObserverWizard getWizard(Shell shell, BControl control) { - return new WizardColumnObserver(shell, control, this); + public ObserverWizard getWizard(BControl control) { + return new WizardColumnObserver(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 new file mode 100644 index 00000000..66140364 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java @@ -0,0 +1,77 @@ +/** + * (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 d061b875..59584f2b 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,8 +9,6 @@ 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; @@ -156,9 +154,8 @@ public class ListenOperationByPredicate extends Observer { } @Override - public ObserverWizard getWizard(Shell shell, BControl control) { - return new WizardObserverListenOperationByPredicate(shell, control, - this); + public ObserverWizard getWizard(BControl control) { + return new WizardObserverListenOperationByPredicate(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 2df22ada..d503290e 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,7 +8,6 @@ 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; @@ -69,7 +68,7 @@ public abstract class Observer extends AbstractExpressionControl implements * The corresponding control * @return the corresponding wizard */ - public abstract ObserverWizard getWizard(Shell shell, BControl control); + public abstract ObserverWizard getWizard(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 678bb63c..f03260e6 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,12 +10,20 @@ import de.bmotionstudio.gef.editor.BindingObject; public class ObserverEvalObject extends BindingObject implements Cloneable { - private String eval; + private String type; // unused - private String attribute; + private String eval; // Predicate 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; @@ -24,13 +32,24 @@ public class ObserverEvalObject extends BindingObject implements Cloneable { this.isExpressionMode = false; } - public ObserverEvalObject(String eval, Boolean isExpressionMode) { + public ObserverEvalObject(String type, String eval, Boolean isExpressionMode) { + this.type = type; this.eval = eval; this.isExpressionMode = isExpressionMode; } - public ObserverEvalObject(String eval) { - this(eval, false); + 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 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 a281190d..252a7b62 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,8 +7,6 @@ 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; @@ -26,8 +24,10 @@ public abstract class ObserverWizard extends BMotionAbstractWizard { private Observer observer; - public ObserverWizard(Shell shell, BControl control, Observer observer) { - super(shell, control); + protected Boolean observerDelete = false; + + public ObserverWizard(BControl control, Observer observer) { + super(control); this.observer = observer; } @@ -35,6 +35,14 @@ 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 @@ -42,11 +50,4 @@ 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 3fdd5cbb..02773321 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,7 +10,6 @@ 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; @@ -65,6 +64,14 @@ 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); @@ -101,8 +108,8 @@ public class SetAttribute extends Observer { } @Override - public ObserverWizard getWizard(Shell shell, BControl control) { - return new WizardObserverSetAttribute(shell, control, this); + public ObserverWizard getWizard(BControl control) { + return new WizardObserverSetAttribute(control, this); } public void setSetAttributeObjects( @@ -126,6 +133,23 @@ 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 cdacd822..d73f0c5a 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 eval) { - super(eval); + public SetAttributeObject(String type, String eval) { + super(type, 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 303d92f0..9886b318 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,8 +6,6 @@ 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; @@ -58,8 +56,8 @@ public class SimpleValueDisplay extends Observer { } - public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { - return new WizardObserverSimpleValueDisplay(shell, bcontrol, this); + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverSimpleValueDisplay(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 eaa05892..b078e128 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,8 +9,6 @@ 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; @@ -101,8 +99,8 @@ public class SwitchChildCoordinates extends Observer { } - public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { - return new WizardObserverCSwitchCoordinates(shell, bcontrol, this); + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverCSwitchCoordinates(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 1c60cda3..0f7733a3 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,8 +9,6 @@ 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; @@ -111,8 +109,8 @@ public class SwitchCoordinates extends Observer { } - public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { - return new WizardObserverSwitchCoordinates(shell, bcontrol, this); + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverSwitchCoordinates(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 f4488770..4422c618 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,7 +11,6 @@ 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; @@ -80,8 +79,8 @@ public class SwitchImage extends Observer { } - public ObserverWizard getWizard(Shell shell, final BControl bcontrol) { - return new WizardObserverSwitchImage(shell, bcontrol, this); + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverSwitchImage(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 889da54b..9ad72ca8 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,8 +3,6 @@ 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; @@ -101,33 +99,34 @@ public class TableObserver extends Observer { String content = rows.get(i - numberOfOldRows); - if (content != null && content.length() > 0) { + if (content != null && content.length() > 0) content = UnicodeTranslator.toAscii(content); - content = content.replaceAll("^\\(", ""); - content = content.replaceAll("\\)$", ""); - List<String> columns = split2(content, '#'); - int numberOfNewColumns = columns.size(); - - // Set only one time the number of columns! - if (!setColumns) { - int ncolumns = numberOfNewColumns; - if (numberOfOldColumns > numberOfNewColumns) - ncolumns = numberOfOldColumns; - control.setAttributeValue( - AttributeConstants.ATTRIBUTE_COLUMNS, ncolumns, - true, false); - setColumns = true; - } - - for (int z = 0; z < numberOfNewColumns; z++) { - String val = columns.get(z); - BControl column = control.getChildrenArray().get(z); - BControl cell = column.getChildrenArray().get(i); - if (val != null && val.length() > 0) - val = UnicodeTranslator.toUnicode(val); - cell.setAttributeValue( - AttributeConstants.ATTRIBUTE_TEXT, val); - } + + content = content.replaceAll("^\\(", ""); + content = content.replaceAll("\\)$", ""); + + List<String> columns = split2(content, '#'); + int numberOfNewColumns = columns.size(); + + // Set only one time the number of columns! + if (!setColumns) { + int ncolumns = numberOfNewColumns; + if (numberOfOldColumns > numberOfNewColumns) + ncolumns = numberOfOldColumns; + control.setAttributeValue( + AttributeConstants.ATTRIBUTE_COLUMNS, ncolumns, + true, false); + setColumns = true; + } + + for (int z = 0; z < numberOfNewColumns; z++) { + String val = columns.get(z); + BControl column = control.getChildrenArray().get(z); + BControl cell = column.getChildrenArray().get(i); + if (val != null && val.length() > 0) + val = UnicodeTranslator.toUnicode(val); + cell.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, + val); } } @@ -153,8 +152,8 @@ public class TableObserver extends Observer { } @Override - public ObserverWizard getWizard(Shell shell, BControl control) { - return new WizardTableObserver(shell, control, this); + public ObserverWizard getWizard(BControl control) { + return new WizardTableObserver(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 a2c4ac9c..0ebd9af4 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 bcontrol, String x, + public ToggleObjectCoordinates(String type, String bcontrol, String x, String y, String eval) { - super(eval); + super(type, eval); this.bcontrol = bcontrol; this.x = x; this.y = y; // this.animate = animate; } - public ToggleObjectCoordinates(String x, String y, + public ToggleObjectCoordinates(String type, String x, String y, String eval) { - this(null, x, y, eval); + this(type, 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 6f173c31..dcd32162 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 image, String eval) { - super(eval); + public ToggleObjectImage(String type, String image, String eval) { + super(type, 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 deleted file mode 100644 index 37ac250c..00000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java +++ /dev/null @@ -1,34 +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.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 deleted file mode 100644 index 6652afca..00000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java +++ /dev/null @@ -1,212 +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.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 deleted file mode 100644 index 11140584..00000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java +++ /dev/null @@ -1,68 +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.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 new file mode 100644 index 00000000..2450ad1a --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java @@ -0,0 +1,30 @@ +/** + * (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 dc48f9c0..04c3a5cd 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,6 +9,8 @@ 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; @@ -16,10 +18,8 @@ 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,80 +29,93 @@ import de.bmotionstudio.gef.editor.observer.ObserverWizard; public class WizardColumnObserver extends ObserverWizard { - private Text txtExpression; - private Text txtPredicate; + private class ColumnObserverPage extends WizardPage { - @Override - public Control createWizardContent(Composite parent) { + private Text txtExpression; + private Text txtPredicate; - final DataBindingContext dbc = new DataBindingContext(); + public Text getTxtExpression() { + return txtExpression; + } - Composite container = new Composite(parent, SWT.NONE); + protected ColumnObserverPage(final String pageName) { + super(pageName); + } - container.setLayout(new GridLayout(2, false)); + public void createControl(final Composite parent) { - Label lb = new Label(container, SWT.NONE); - lb.setText("Predicate:"); + final DataBindingContext dbc = new DataBindingContext(); - 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))); + Composite container = new Composite(parent, SWT.NONE); - lb = new Label(container, SWT.NONE); - lb.setText("Expression:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + container.setLayoutData(new GridData(GridData.FILL_BOTH)); + container.setLayout(new GridLayout(2, false)); - txtExpression = new Text(container, SWT.BORDER | SWT.MULTI | SWT.WRAP); - txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); + Label lb = new Label(container, SWT.NONE); + lb.setText("Predicate:"); - initBindings(dbc); + 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))); - return container; + lb = new Label(container, SWT.NONE); + lb.setText("Expression:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - } + txtExpression = new Text(container, SWT.BORDER | SWT.MULTI + | SWT.WRAP); + txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); - private void initBindings(DataBindingContext dbc) { + initBindings(dbc); - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue((ColumnObserver) getObserver(), - "predicate")); + setControl(container); - dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify), - BeansObservables.observeValue((ColumnObserver) getObserver(), - "expression")); + } - } + private void initBindings(DataBindingContext dbc) { + + 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(Shell shell, BControl bcontrol, + } + + } + + public WizardColumnObserver(BControl bcontrol, Observer bobserver) { - super(shell, bcontrol, bobserver); + super(bcontrol, bobserver); + addPage(new ColumnObserverPage("ColumnObserverPage")); } - // @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 c76bf57e..d03fa3f9 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,6 +12,7 @@ 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; @@ -30,10 +31,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; @@ -47,121 +48,202 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverCSwitchCoordinates extends ObserverWizard { - private TableViewer tableViewer; + // private String lastChangedControlID; - @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; + 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); } - 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); - } - }); + }); + + 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); + } + }); - return container; + setControl(container); + } } - public WizardObserverCSwitchCoordinates(Shell shell, BControl bcontrol, - Observer bobserver) { - super(shell, bcontrol, bobserver); + public WizardObserverCSwitchCoordinates(final BControl bcontrol, + final Observer bobserver) { + super(bcontrol, bobserver); + addPage(new ObserverCSwitchCoordinatesPage( + "ObserverCToggleCoordinatesPage")); } - // @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) { @@ -173,11 +255,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 new file mode 100644 index 00000000..9e4c0d4e --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java @@ -0,0 +1,111 @@ +/** + * (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 83adaee4..5369bc5c 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,6 +16,7 @@ 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; @@ -37,15 +38,13 @@ 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; @@ -63,232 +62,326 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverListenOperationByPredicate extends ObserverWizard { - private TableViewer tableViewer; + // private String lastChangedAttributeID; - @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); - } - }); + private class ObserverListenOperationByPredicatePage extends + AbstractObserverWizardPage { - 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)); - } - }); + private TableViewer tableViewer; - return container; + protected ObserverListenOperationByPredicatePage(final String pageName) { + super(pageName, getObserver()); + } - } + 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)); + } + }); - private class AttributeObserverValueEditing extends EditingSupport { + } - private ComboBoxViewerCellEditor cellEditor = null; + private class AttributeObserverValueEditing extends EditingSupport { - public AttributeObserverValueEditing(TableViewer cv) { - super(cv); - } + private ComboBoxViewerCellEditor cellEditor = null; - @Override - protected boolean canEdit(Object element) { - return BMotionWizardUtil.isEditElement(getViewer()); - } + public AttributeObserverValueEditing(TableViewer cv) { + super(cv); + } - @Override - protected Object getValue(Object element) { - return ((PredicateOperation) element).getAttribute(); - } + @Override + protected boolean canEdit(Object element) { + return BMotionWizardUtil.isEditElement(getViewer()); + } - @Override - protected void setValue(Object element, Object value) { - if (value != null) { - PredicateOperation obj = (PredicateOperation) element; - obj.setAttribute(value.toString()); - obj.setIsExpressionMode(false); + @Override + protected Object getValue(Object element) { + return ((PredicateOperation) element).getAttribute(); } - } - @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()); + @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(); } - return atrList; - } - }); + }); + 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(Shell shell, - BControl bcontrol, Observer bobserver) { - super(shell, bcontrol, bobserver); + 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(); } - // @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 + 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 9a6d6dbc..be616218 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,16 +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.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; @@ -63,109 +62,255 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSetAttribute extends ObserverWizard { - private WritableList input; + // private String lastChangedAttributeID; - private TableViewer tableViewer; + 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 - 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 - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - MessageDialog.openInformation(getShell(), - "Please select an entry.", - "Please select an entry."); - return; + 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); } - 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(""); - input.add(toggleObj); - tableViewer.setSelection(new StructuredSelection(toggleObj)); + 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; } - }); - return container; + } } - public WizardObserverSetAttribute(Shell shell, BControl control, - Observer observer) { - super(shell, control, observer); + public WizardObserverSetAttribute(BControl control, Observer observer) { + super(control, observer); + addPage(new WizardSetAttributePage("WizardSetAttributePage")); } @Override @@ -173,31 +318,30 @@ 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, @@ -269,102 +413,11 @@ 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 5d63d4cf..1f9a6b76 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,18 +9,16 @@ 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; @@ -30,102 +28,113 @@ import de.bmotionstudio.gef.editor.observer.SimpleValueDisplay; public class WizardObserverSimpleValueDisplay extends ObserverWizard { - private Text txtReplacementString; - private Text txtExpression; - private Text txtPredicate; + private class ObserverSimpleValueDisplayPage extends + AbstractObserverWizardPage { - @Override - public Control createWizardContent(Composite parent) { + private Text txtReplacementString; + private Text txtExpression; + private Text txtPredicate; - parent.setLayout(new FillLayout()); + public Text getTxtExpression() { + return txtExpression; + } - final DataBindingContext dbc = new DataBindingContext(); + protected ObserverSimpleValueDisplayPage(final String pageName) { + super(pageName, getObserver()); + } - Composite container = new Composite(parent, SWT.NONE); + public void createControl(final Composite parent) { - container.setLayout(new GridLayout(2, false)); + super.createControl(parent); - GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); - gd.widthHint = 120; - - Label lb = new Label(container, SWT.NONE); - lb.setText("Predicate:"); - lb.setLayoutData(gd); + final DataBindingContext dbc = new DataBindingContext(); - 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))); + Composite container = new Composite(parent, SWT.NONE); - lb = new Label(container, SWT.NONE); - lb.setText("Expression:"); - lb.setLayoutData(gd); + container.setLayoutData(new GridData(GridData.FILL_BOTH)); + container.setLayout(new GridLayout(2, false)); - 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)); + Label lb = new Label(container, SWT.NONE); + lb.setText("Predicate:"); - lb = new Label(container, SWT.NONE); - lb.setText("Replacement String:"); - lb.setLayoutData(gd); + 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))); - 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("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)); + // txtExpression.setFont(JFaceResources.getFontRegistry().get( + // BMotionStudioConstants.RODIN_FONT_KEY)); - return container; + lb = new Label(container, SWT.NONE); + lb.setText("Replacement String:"); - } + 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))); + + initBindings(dbc); + + setControl(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(Shell shell, BControl bcontrol, + public WizardObserverSimpleValueDisplay(BControl bcontrol, Observer bobserver) { - super(shell, bcontrol, bobserver); + super(bcontrol, bobserver); + addPage(new ObserverSimpleValueDisplayPage( + "ObserverSimpleValueDisplayPage")); } - // @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 8e502a6f..88248dcb 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,6 +12,7 @@ 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; @@ -26,16 +27,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.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,96 +49,195 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSwitchCoordinates extends ObserverWizard { - private TableViewer tableViewer; + private class ObserverToggleCoordinatesPage extends + AbstractObserverWizardPage { - @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, 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; + 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); } - 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( - "", String.valueOf(getBControl().getLayout().x), String - .valueOf(getBControl().getLayout().y), ""); - input.add(toggleObj); - tableViewer.setSelection(new StructuredSelection(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); + + } + } - return container; + public WizardObserverSwitchCoordinates(final BControl bcontrol, + final Observer bobserver) { + super(bcontrol, bobserver); + addPage(new ObserverToggleCoordinatesPage( + "ObserverToggleCoordinatesPage")); } + @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; + } + } + } + return true; + } - public WizardObserverSwitchCoordinates(Shell shell, BControl bcontrol, - Observer bobserver) { - super(shell, bcontrol, bobserver); + @Override + public boolean performCancel() { + // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_X); + // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y); + return super.performCancel(); } @Override @@ -157,6 +256,9 @@ 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) { @@ -167,6 +269,11 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { @Override public Image getColumnImage(Object element, int columnIndex) { + // if (columnIndex == 3) { + // return CheckboxCellEditorHelper + // .getCellEditorImage(((ToggleObjectCoordinates) element) + // .getAnimate()); + // } return null; } @@ -182,6 +289,8 @@ 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 ff5d09ea..9c15caea 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,6 +12,7 @@ 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; @@ -26,17 +27,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.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,119 +52,177 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSwitchImage extends ObserverWizard { - private TableViewer tableViewer; + private class ObserverSwitchImagePage extends AbstractObserverWizardPage { - @Override - public Control createWizardContent(Composite parent) { - - parent.setLayout(new FillLayout()); + private TableViewer tableViewer; - DataBindingContext dbc = new DataBindingContext(); + protected ObserverSwitchImagePage(final String pageName) { + super(pageName, getObserver()); + } - GridLayout gl = new GridLayout(1, true); - gl.horizontalSpacing = 0; - gl.verticalSpacing = 0; - gl.marginHeight = 0; - gl.marginWidth = 0; + 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(); + } - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(gl); + @Override + protected void setValue(final Object element, final Object value) { + if (value == null) + return; + ((ToggleObjectImage) element).setImage(value.toString()); + } - tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( - container, ToggleObjectImage.class, getName()); + }); - 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("Expression?"); + column.getColumn().setWidth(100); + column.setEditingSupport(new IsExpressionModeEditingSupport( + tableViewer, getBControl()) { - 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 void setValue(final Object element, final Object value) { + Boolean bol = Boolean.valueOf(String.valueOf(value)); + ToggleObjectImage obj = (ToggleObjectImage) element; + obj.setIsExpressionMode(bol); + } - @Override - protected Object getValue(final Object element) { - ToggleObjectImage evalObject = (ToggleObjectImage) element; - return evalObject.getImage(); - } + }); + + 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)); + } + }); - @Override - protected void setValue(final Object element, final Object value) { - if (value == null) - return; - ((ToggleObjectImage) element).setImage(value.toString()); - } + setControl(container); - }); + } - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Expression?"); - column.getColumn().setWidth(100); - column.setEditingSupport(new IsExpressionModeEditingSupport( - tableViewer, getBControl()) { + } - @Override - protected void setValue(final Object element, final Object value) { - Boolean bol = Boolean.valueOf(String.valueOf(value)); - ToggleObjectImage obj = (ToggleObjectImage) element; - obj.setIsExpressionMode(bol); - } + public WizardObserverSwitchImage(final BControl bcontrol, + final Observer bobserver) { + super(bcontrol, bobserver); + addPage(new ObserverSwitchImagePage("ObserverToggleImagePage")); + } - }); - - 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; + @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; } - 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("", ""); - input.add(toggleObj); - tableViewer.setSelection(new StructuredSelection(toggleObj)); - } - }); - - return container; + } + return true; } - public WizardObserverSwitchImage(Shell shell, BControl bcontrol, - Observer bobserver) { - super(shell, bcontrol, bobserver); + @Override + public boolean performCancel() { + // getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_IMAGE); + return super.performCancel(); } @Override @@ -218,6 +276,8 @@ 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 d38110cd..e816e1d3 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,6 +11,8 @@ 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; @@ -22,12 +24,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.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,151 +40,167 @@ import de.bmotionstudio.gef.editor.observer.TableObserver; public class WizardTableObserver extends ObserverWizard { - private Text txtExpression; - private Text txtPredicate; - private Button cbOverrideCells; - private Button cbKeepHeader; + private class TableObserverPage extends WizardPage { - private void initBindings(DataBindingContext dbc) { + private Text txtExpression; + private Text txtPredicate; + private Button cbOverrideCells; + private Button cbKeepHeader; - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue((TableObserver) getObserver(), - "predicate")); + public Text getTxtExpression() { + return txtExpression; + } - dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify), - BeansObservables.observeValue((TableObserver) getObserver(), - "expression")); + protected TableObserverPage(final String pageName) { + super(pageName); + } - dbc.bindValue(SWTObservables.observeSelection(cbOverrideCells), - BeansObservables.observeValue((TableObserver) getObserver(), - "overrideCells")); + public void createControl(final Composite parent) { - dbc.bindValue(SWTObservables.observeSelection(cbKeepHeader), - BeansObservables.observeValue((TableObserver) getObserver(), - "keepHeader")); + final DataBindingContext dbc = new DataBindingContext(); - } + parent.setLayout(new GridLayout(1, true)); - @Override - public Control createWizardContent(Composite parent) { - final DataBindingContext dbc = new DataBindingContext(); + 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)); - parent.setLayout(new GridLayout(1, true)); + cbOverrideCells = new Button(group, SWT.CHECK); + cbOverrideCells.setText("Override cells"); - 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)); + cbKeepHeader = new Button(group, SWT.CHECK); + cbKeepHeader.setText("Keep header"); - cbOverrideCells = new Button(group, SWT.CHECK); - cbOverrideCells.setText("Override cells"); + Group container = new Group(parent, SWT.None); + container.setText("Formal model"); + container.setLayout(new GridLayout(2, false)); + container.setLayoutData(new GridData(GridData.FILL_BOTH)); - cbKeepHeader = new Button(group, SWT.CHECK); - cbKeepHeader.setText("Keep header"); + Composite conLeft = new Composite(container, SWT.NONE); + conLeft.setLayoutData(new GridData(GridData.FILL_BOTH)); + conLeft.setLayout(new GridLayout(2, false)); - Group container = new Group(parent, SWT.None); - container.setText("Formal model"); - container.setLayout(new GridLayout(2, false)); - container.setLayoutData(new GridData(GridData.FILL_BOTH)); + Label lb = new Label(conLeft, SWT.NONE); + lb.setText("Predicate:"); - Composite conLeft = new Composite(container, SWT.NONE); - conLeft.setLayoutData(new GridData(GridData.FILL_BOTH)); - conLeft.setLayout(new GridLayout(2, false)); + 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))); - Label lb = new Label(conLeft, SWT.NONE); - lb.setText("Predicate:"); + lb = new Label(conLeft, SWT.NONE); + lb.setText("Expression:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - 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))); + txtExpression = new Text(conLeft, SWT.BORDER | SWT.MULTI + | SWT.WRAP); + txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); - lb = new Label(conLeft, SWT.NONE); - lb.setText("Expression:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + Composite conRight = new Composite(container, SWT.NONE); - txtExpression = new Text(conLeft, SWT.BORDER | SWT.MULTI | SWT.WRAP); - txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); + GridData gData = new GridData(GridData.FILL_VERTICAL); + gData.widthHint = 125; - Composite conRight = new Composite(container, SWT.NONE); + conRight.setLayoutData(gData); + conRight.setLayout(new GridLayout(1, false)); - GridData gData = new GridData(GridData.FILL_VERTICAL); - gData.widthHint = 125; + lb = new Label(conRight, SWT.WRAP); + lb.setText("Power sets:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - conRight.setLayoutData(gData); - conRight.setLayout(new GridLayout(1, false)); + 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()); + } + } - lb = new Label(conRight, SWT.WRAP); - lb.setText("Power sets:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + java.util.List<MachineContentObject> variables = EventBHelper + .getVariables(getBControl().getVisualization()); + for (MachineContentObject mobj : variables) { + if (mobj.getType() instanceof PowerSetType) { + relationList.add(mobj.getLabel()); + } + } - ArrayList<String> relationList = new ArrayList<String>(); + 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); + + setControl(conLeft); - java.util.List<MachineContentObject> constants = EventBHelper - .getConstants(getBControl().getVisualization()); - for (MachineContentObject mobj : constants) { - if (mobj.getType() instanceof PowerSetType) { - relationList.add(mobj.getLabel()); - } } - java.util.List<MachineContentObject> variables = EventBHelper - .getVariables(getBControl().getVisualization()); - for (MachineContentObject mobj : variables) { - 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")); + } - 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(Shell shell, BControl bcontrol, + public WizardTableObserver(BControl bcontrol, Observer bobserver) { - super(shell, bcontrol, bobserver); + super(bcontrol, bobserver); + addPage(new TableObserverPage("TableObserverPage")); } - // @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/scheduler/ExecuteAnimationScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java index cd9d5ccc..20a3c505 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,8 +10,6 @@ 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; @@ -99,8 +97,8 @@ public class ExecuteAnimationScript extends SchedulerEvent { } @Override - public SchedulerWizard getWizard(Shell shell, BControl bcontrol) { - return new WizardExecuteScheduler(shell, bcontrol, this); + public SchedulerWizard getWizard(final BControl bcontrol) { + return new WizardExecuteScheduler(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 c3b062ed..c9114041 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,8 +9,6 @@ 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; @@ -77,8 +75,8 @@ public class ExecuteOperationByPredicate extends SchedulerEvent { } @Override - public SchedulerWizard getWizard(Shell shell, BControl bcontrol) { - return new WizardExecuteOperationByPredicate(shell, bcontrol, this); + public SchedulerWizard getWizard(BControl bcontrol) { + return new WizardExecuteOperationByPredicate(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 e93d23d7..6f9b9044 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,8 +2,6 @@ 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; @@ -51,8 +49,8 @@ public class ExecuteOperationByPredicateMulti extends SchedulerEvent { } @Override - public SchedulerWizard getWizard(Shell shell, BControl bcontrol) { - return new WizardExecuteOperationByPredicateMulti(shell, bcontrol, this); + public SchedulerWizard getWizard(BControl bcontrol) { + return new WizardExecuteOperationByPredicateMulti(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 2b9cee66..acc22a77 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,7 +7,6 @@ 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; @@ -77,7 +76,7 @@ public abstract class SchedulerEvent extends AbstractExpressionControl * The corresponding control * @return the corresponding wizard */ - public abstract SchedulerWizard getWizard(Shell shell, BControl bcontrol); + public abstract SchedulerWizard getWizard(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 a9698cc8..11cdbb43 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,7 +7,6 @@ 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; @@ -27,9 +26,8 @@ public abstract class SchedulerWizard extends BMotionAbstractWizard { protected Boolean eventDelete = false; - public SchedulerWizard(Shell shell, BControl control, - SchedulerEvent scheduler) { - super(shell, control); + public SchedulerWizard(BControl control, SchedulerEvent scheduler) { + super(control); this.event = scheduler; } @@ -37,6 +35,21 @@ 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/SchedulerObjectDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java index 5542930b..58f0627c 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_NEW_WIZ)); + .getImage(EditorImageRegistry.IMG_ICON_ADD)); 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 f763a9a8..384a7fe5 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,9 +18,11 @@ 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; @@ -34,10 +36,8 @@ 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,250 +51,266 @@ import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; public class WizardExecuteOperationByPredicate extends SchedulerWizard { - private ComboViewer cbOperation; + private class SchedulerExecuteOperationByPredicatePage extends WizardPage { - private Text txtPredicate; + private ComboViewer cbOperation; - private Text txtMaxRandomOperations; + private Text txtPredicate; - private Label lbMaxRandomOperations; + private Text txtMaxRandomOperations; - private Composite container; + private Label lbMaxRandomOperations; - private Label renderedOpLabel; + private Composite container; - private Button checkboxRandomMode; + private Label renderedOpLabel; - private ScrolledComposite c1; + private Button checkboxRandomMode; - @Override - public Control createWizardContent(Composite parent) { + private ScrolledComposite c1; - final DataBindingContext dbc = new DataBindingContext(); + public ComboViewer getCbOperation() { + return cbOperation; + } - container = new Composite(parent, SWT.NONE); - GridLayout gl = new GridLayout(2, false); - container.setLayout(gl); + public Text getTxtMaxRandomOperations() { + return txtMaxRandomOperations; + } - Label lb = new Label(container, SWT.NONE); - lb.setText("Select an operation: "); + protected SchedulerExecuteOperationByPredicatePage(String pageName) { + super(pageName); + } - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.heightHint = 50; + public void createControl(final Composite parent) { - cbOperation = new ComboViewer(container, SWT.NONE); - cbOperation.getCombo().setLayoutData(new GridData(300, 50)); + final DataBindingContext dbc = new DataBindingContext(); - 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); + container = new Composite(parent, SWT.NONE); + GridLayout gl = new GridLayout(2, false); + container.setLayout(gl); - 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()); - } + Label lb = new Label(container, SWT.NONE); + lb.setText("Select an operation: "); - @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; + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.heightHint = 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("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; + } } } - } - }); - 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()); + } - return container; + setControl(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; + 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); - c1 = new ScrolledComposite(container, SWT.BORDER | SWT.H_SCROLL - | SWT.V_SCROLL); - c1.setBackground(ColorConstants.red); - c1.setLayoutData(gd); + Composite cp = new Composite(c1, SWT.NONE); + cp.setLayout(gl); - Composite cp = new Composite(c1, SWT.NONE); - cp.setLayout(gl); + renderedOpLabel = new Label(cp, SWT.NONE); + renderedOpLabel.setLayoutData(gd); + renderedOpLabel.setText(op.getRenderedOperation()); + renderedOpLabel.setFont(JFaceResources.getFontRegistry().get( + BMotionStudioSWTConstants.RODIN_FONT_KEY)); - renderedOpLabel = new Label(cp, SWT.NONE); - renderedOpLabel.setLayoutData(gd); - renderedOpLabel.setText(op.getRenderedOperation()); - renderedOpLabel.setFont(JFaceResources.getFontRegistry().get( - BMotionStudioSWTConstants.RODIN_FONT_KEY)); + c1.setContent(cp); + c1.setExpandHorizontal(true); + c1.setExpandVertical(true); + c1.setMinSize(cp.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - c1.setContent(cp); - c1.setExpandHorizontal(true); - c1.setExpandVertical(true); - c1.setMinSize(cp.computeSize(SWT.DEFAULT, SWT.DEFAULT)); + container.layout(); - container.layout(); + } } - public WizardExecuteOperationByPredicate(Shell shell, BControl bcontrol, + public WizardExecuteOperationByPredicate(BControl bcontrol, SchedulerEvent scheduler) { - super(shell, bcontrol, scheduler); + super(bcontrol, scheduler); + addPage(new SchedulerExecuteOperationByPredicatePage( + "SchedulerExecuteOperationByPredicatePage")); } - // @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 4b9e029a..ef33b42a 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,12 +10,14 @@ 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; @@ -25,10 +27,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; @@ -46,222 +48,134 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; */ public class WizardExecuteOperationByPredicateMulti extends SchedulerWizard { - private TableViewer tableViewer; + private class MultiPage extends WizardPage { - @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); - } - }); + private TableViewer tableViewer; - return container; + 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); + } + }); - // 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, + public WizardExecuteOperationByPredicateMulti(BControl bcontrol, SchedulerEvent scheduler) { - super(shell, bcontrol, scheduler); + super(bcontrol, scheduler); + addPage(new MultiPage("MultiPage")); } /* - * // * (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 504d38d3..81680ee3 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,6 +19,7 @@ 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; @@ -30,9 +31,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; @@ -45,111 +46,119 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardExecuteScheduler extends SchedulerWizard { - 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); - } + private class SchedulerPage extends WizardPage { - @Override - public Image getColumnImage(Object element, int columnIndex) { - return null; - } + 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); - }); - - 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; + 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); } - 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; + @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); + } + }); + } } - - public WizardExecuteScheduler(Shell shell, BControl bcontrol, + + public WizardExecuteScheduler(BControl bcontrol, SchedulerEvent scheduler) { - super(shell, bcontrol, scheduler); + super(bcontrol, scheduler); + addPage(new SchedulerPage("SchedulerPage")); } - // @Override - // protected Boolean prepareToFinish() { - // return true; - // } - // - // @Override - // public boolean performCancel() { - // return true; - // } + @Override + protected Boolean prepareToFinish() { + return true; + } + + @Override + public boolean performCancel() { + return true; + } @Override public Point getSize() { -- GitLab