From a168397b609535d5c243b5ab584ab9bdbd54fb74 Mon Sep 17 00:00:00 2001 From: Lukas Ladenberger <lukas.ladenberger@googlemail.com> Date: Mon, 27 Aug 2012 12:05:34 +0200 Subject: [PATCH] some bugfixes --- .../gef/editor/AbstractBControlService.java | 6 + ...vider.java => BMSContextMenuProvider.java} | 153 +++++++++--------- .../editor/BMotionSelectionSynchronizer.java | 4 - .../gef/editor/BMotionStudioEditorPage.java | 19 +-- .../gef/editor/IBControlService.java | 3 + .../gef/editor/action/CopyAction.java | 9 +- .../gef/editor/action/FitImageAction.java | 10 +- .../gef/editor/action/OpenObserverAction.java | 14 +- .../gef/editor/action/PasteAction.java | 9 +- .../gef/editor/action/RenameAction.java | 1 - .../{internal => action}/RenameWizard.java | 2 +- .../gef/editor/part/BControlTreeEditPart.java | 15 +- .../editor/part/BMSTreeEditPartFactory.java | 20 ++- .../gef/editor/service/BTableCellService.java | 11 ++ .../editor/service/BTableColumnService.java | 11 ++ 15 files changed, 176 insertions(+), 111 deletions(-) rename de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/{AppContextMenuProvider.java => BMSContextMenuProvider.java} (64%) rename de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/{internal => action}/RenameWizard.java (93%) diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java index f0a5f6c8..3f3fd561 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java @@ -13,6 +13,8 @@ import org.eclipse.ui.plugin.AbstractUIPlugin; import de.bmotionstudio.gef.editor.internal.BControlTemplate; import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.BControlTreeEditPart; +import de.bmotionstudio.gef.editor.part.BMSAbstractTreeEditPart; /** * @author Lukas Ladenberger @@ -40,4 +42,8 @@ public abstract class AbstractBControlService { return true; } + public BMSAbstractTreeEditPart createTreeEditPart() { + return new BControlTreeEditPart(); + } + } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AppContextMenuProvider.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java similarity index 64% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AppContextMenuProvider.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java index 53acf882..9822355a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AppContextMenuProvider.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java @@ -14,6 +14,7 @@ import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; import org.eclipse.gef.ContextMenuProvider; import org.eclipse.gef.EditPartViewer; +import org.eclipse.gef.editparts.AbstractEditPart; import org.eclipse.gef.ui.actions.ActionRegistry; import org.eclipse.gef.ui.actions.GEFActionConstants; import org.eclipse.jface.action.IAction; @@ -24,11 +25,11 @@ import org.eclipse.ui.actions.ActionFactory; import de.bmotionstudio.gef.editor.action.OpenSchedulerEventAction; import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.BMSAbstractEditPart; -import de.bmotionstudio.gef.editor.part.VisualizationPart; +import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode; +import de.bmotionstudio.gef.editor.model.Visualization; import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; -public class AppContextMenuProvider extends ContextMenuProvider { +public class BMSContextMenuProvider extends ContextMenuProvider { private ActionRegistry actionRegistry; @@ -36,7 +37,7 @@ public class AppContextMenuProvider extends ContextMenuProvider { private String[] eventIDs = { AttributeConstants.EVENT_MOUSECLICK }; - public AppContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) { + public BMSContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) { super(viewer); setActionRegistry(registry); } @@ -54,42 +55,53 @@ public class AppContextMenuProvider extends ContextMenuProvider { action = getActionRegistry().getAction(ActionFactory.REDO.getId()); menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action); - action = actionRegistry.getAction(ActionFactory.COPY.getId()); + action = getActionRegistry().getAction(ActionFactory.COPY.getId()); menu.appendToGroup(GEFActionConstants.GROUP_COPY, action); - action = actionRegistry.getAction(ActionFactory.PASTE.getId()); + action = getActionRegistry().getAction(ActionFactory.PASTE.getId()); menu.appendToGroup(GEFActionConstants.GROUP_COPY, action); action = getActionRegistry().getAction(ActionFactory.DELETE.getId()); menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action); - buildCustomMenu(menu); + Object sel = ((IStructuredSelection) getViewer().getSelection()) + .getFirstElement(); - buildObserverMenu(menu); - - buildEventMenu(menu); + if (sel instanceof AbstractEditPart) { + AbstractEditPart editPart = (AbstractEditPart) sel; + buildCustomMenu(menu, editPart); + buildObserverMenu(menu, editPart); + buildEventMenu(menu, editPart); + } } - private void buildCustomMenu(IMenuManager menu) { + private void buildCustomMenu(IMenuManager menu, AbstractEditPart editPart) { - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.installMenu"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { + Object model = editPart.getModel(); - if ("menu".equals(configurationElement.getName())) { + if (model instanceof BControl) { - try { + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.installMenu"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("menu".equals(configurationElement.getName())) { + + try { + + IInstallMenu installMenuClass = (IInstallMenu) configurationElement + .createExecutableExtension("class"); - IInstallMenu installMenuClass = (IInstallMenu) configurationElement - .createExecutableExtension("class"); + installMenuClass.installMenu(menu, + getActionRegistry()); - installMenuClass.installMenu(menu, getActionRegistry()); + } catch (final CoreException e) { + e.printStackTrace(); + } - } catch (final CoreException e) { - e.printStackTrace(); } } @@ -100,7 +112,18 @@ public class AppContextMenuProvider extends ContextMenuProvider { } - private void buildObserverMenu(IMenuManager menu) { + private void buildObserverMenu(IMenuManager menu, AbstractEditPart editPart) { + + Object model = editPart.getModel(); + + BControl bcontrol = null; + + if (model instanceof BControl) + bcontrol = (BControl) model; + else if (model instanceof ObserverRootVirtualTreeNode) + bcontrol = ((ObserverRootVirtualTreeNode) model).getControl(); + else + return; final MenuManager handleObserverMenu = new MenuManager("Observer", BMotionStudioImage.getImageDescriptor( @@ -108,47 +131,36 @@ public class AppContextMenuProvider extends ContextMenuProvider { "icons/icon_observer.gif"), "observerMenu"); menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleObserverMenu); - IStructuredSelection selection = (IStructuredSelection) BMotionEditorPlugin - .getActiveEditor().getEditorSite().getSelectionProvider() - .getSelection(); - - if (selection.getFirstElement() instanceof BMSAbstractEditPart) { - - BControl bcontrol = (BControl) ((BMSAbstractEditPart) selection - .getFirstElement()).getModel(); - - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.observer"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("observer".equals(configurationElement.getName())) { + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.observer"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { - final String observerClassName = configurationElement - .getAttribute("class"); - final String observerName = configurationElement - .getAttribute("name"); + if ("observer".equals(configurationElement.getName())) { - if (checkIncludeObserver(observerClassName, bcontrol)) { + final String observerClassName = configurationElement + .getAttribute("class"); + final String observerName = configurationElement + .getAttribute("name"); - IAction action = getActionRegistry().getAction( - "de.bmotionstudio.gef.editor.observerAction." - + observerClassName); - action.setText(observerName); - action.setToolTipText(observerName); + if (checkIncludeObserver(observerClassName, bcontrol)) { - if (bcontrol.hasObserver(observerClassName)) { - action.setImageDescriptor(BMotionStudioImage - .getImageDescriptor( - BMotionEditorPlugin.PLUGIN_ID, - "icons/icon_chop.gif")); - } else { - action.setImageDescriptor(null); - } - handleObserverMenu.add(action); + 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); } @@ -212,23 +224,19 @@ public class AppContextMenuProvider extends ContextMenuProvider { } - private void buildEventMenu(IMenuManager menu) { + private void buildEventMenu(IMenuManager menu, AbstractEditPart editPart) { - MenuManager handleEventMenu = new MenuManager("Events", - BMotionStudioImage.getImageDescriptor( - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_event.png"), - "eventMenu"); - menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleEventMenu); + Object model = editPart.getModel(); - IStructuredSelection selection = (IStructuredSelection) BMotionEditorPlugin - .getActiveEditor().getEditorSite().getSelectionProvider() - .getSelection(); + if (model instanceof BControl && !(model instanceof Visualization)) { - if ((selection.getFirstElement() instanceof BMSAbstractEditPart) - && !(selection.getFirstElement() instanceof VisualizationPart)) { + MenuManager handleEventMenu = new MenuManager("Events", + BMotionStudioImage.getImageDescriptor( + BMotionEditorPlugin.PLUGIN_ID, + "icons/icon_event.png"), "eventMenu"); + menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleEventMenu); - BControl bcontrol = (BControl) ((BMSAbstractEditPart) selection - .getFirstElement()).getModel(); + BControl bcontrol = (BControl) model; // Has event if (bcontrol.hasEvent(eventIDs[0])) { @@ -297,7 +305,6 @@ public class AppContextMenuProvider extends ContextMenuProvider { } } - } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionSelectionSynchronizer.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionSelectionSynchronizer.java index e3a3198d..2a3753c6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionSelectionSynchronizer.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionSelectionSynchronizer.java @@ -23,9 +23,7 @@ public class BMotionSelectionSynchronizer extends SelectionSynchronizer { } protected EditPart convert(EditPartViewer viewer, EditPart part) { - EditPart p = super.convert(viewer, part); - if (viewer instanceof ScrollingGraphicalViewer || viewer instanceof TreeViewer) { Object model = part.getModel(); @@ -42,9 +40,7 @@ public class BMotionSelectionSynchronizer extends SelectionSynchronizer { return newPart; } } - return p; - } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java index f3a9da43..4ab8aad0 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java @@ -106,6 +106,7 @@ import de.bmotionstudio.gef.editor.model.BMotionRuler; import de.bmotionstudio.gef.editor.model.BMotionRulerProvider; import de.bmotionstudio.gef.editor.model.Visualization; import de.bmotionstudio.gef.editor.part.BMSAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BMSAbstractTreeEditPart; import de.bmotionstudio.gef.editor.part.BMSEditPartFactory; import de.bmotionstudio.gef.editor.part.BMSTreeEditPartFactory; @@ -162,10 +163,9 @@ public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette { Object selectedElement = ((IStructuredSelection) selection) .getFirstElement(); - if (!(selectedElement instanceof BMSAbstractEditPart)) - return; - - updateActions(getSelectionActions()); + if (selectedElement instanceof BMSAbstractEditPart + || selectedElement instanceof BMSAbstractTreeEditPart) + updateActions(getSelectionActions()); } @@ -544,7 +544,7 @@ public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette { getActionRegistry().registerAction( new ToggleGridAction(getGraphicalViewer())); - ContextMenuProvider provider = new AppContextMenuProvider(viewer, + ContextMenuProvider provider = new BMSContextMenuProvider(viewer, getActionRegistry()); viewer.setContextMenu(provider); @@ -682,7 +682,7 @@ public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette { protected void configureOutlineViewer() { getViewer().setEditDomain(getEditDomain()); getViewer().setEditPartFactory(new BMSTreeEditPartFactory()); - ContextMenuProvider provider = new AppContextMenuProvider( + ContextMenuProvider provider = new BMSContextMenuProvider( getViewer(), getActionRegistry()); getViewer().setContextMenu(provider); getViewer().setKeyHandler(getCommonKeyHandler()); @@ -747,13 +747,6 @@ public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette { } }; - // collapseAllAction - // .setImageDescriptor(ImageDescriptor - // .createFromImage(PlatformUI - // .getWorkbench() - // .getSharedImages() - // .getImage( - // ISharedImages.IMG_ELCL_COLLAPSEALL))); getSite().getActionBars().getMenuManager().add(expandAllAction); getSite().getActionBars().getMenuManager().add(collapseAllAction); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/IBControlService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/IBControlService.java index 14035d97..a55c324a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/IBControlService.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/IBControlService.java @@ -12,6 +12,7 @@ import org.eclipse.gef.palette.ToolEntry; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.model.Visualization; import de.bmotionstudio.gef.editor.part.BMSAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BMSAbstractTreeEditPart; /** * @author Lukas Ladenberger @@ -23,6 +24,8 @@ public interface IBControlService { public BMSAbstractEditPart createEditPart(); + public BMSAbstractTreeEditPart createTreeEditPart(); + public ToolEntry createToolEntry(Visualization visualization, IConfigurationElement configurationElement); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java index 7f59b18c..d2e6dfdc 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java @@ -53,10 +53,11 @@ public class CopyAction extends SelectionAction { Object nextElement = it.next(); if (nextElement instanceof EditPart) { EditPart ep = (EditPart) nextElement; - BControl node = (BControl) ep.getModel(); - if (!cmd.isCopyableControl(node)) - return null; - cmd.addElement(node); + if (ep.getModel() instanceof BControl) { + BControl node = (BControl) ep.getModel(); + if (cmd.isCopyableControl(node)) + cmd.addElement(node); + } } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java index c8e06a55..c0b1dd01 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java @@ -54,10 +54,12 @@ public class FitImageAction extends SelectionAction { for (Object obj : selectedObjects) { if (obj instanceof EditPart) { EditPart part = (EditPart) obj; - BControl bcontrol = (BControl) part.getModel(); - if (bcontrol - .getAttributeValue(AttributeConstants.ATTRIBUTE_IMAGE) != null) { - return true; + if (part.getModel() instanceof BControl) { + BControl bcontrol = (BControl) part.getModel(); + if (bcontrol + .getAttributeValue(AttributeConstants.ATTRIBUTE_IMAGE) != null) { + return true; + } } } } 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 fba03d3c..a64a0043 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 @@ -19,6 +19,7 @@ import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.command.RemoveObserverCommand; import de.bmotionstudio.gef.editor.command.SetObserverCommand; import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode; import de.bmotionstudio.gef.editor.observer.Observer; import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.prob.logging.Logger; @@ -27,10 +28,6 @@ public class OpenObserverAction extends SelectionAction { private String className; - // private Observer oldObserver; - // private Observer currentObserver; - // private BControl actionControl; - public OpenObserverAction(IWorkbenchPart part) { super(part); setLazyEnablementCalculation(true); @@ -173,8 +170,15 @@ public class OpenObserverAction extends SelectionAction { if ((objects.get(0) instanceof EditPart)) { EditPart part = (EditPart) objects.get(0); - return (BControl) part.getModel(); + BControl control = null; + if (part.getModel() instanceof ObserverRootVirtualTreeNode) + control = ((ObserverRootVirtualTreeNode) part.getModel()) + .getControl(); + else if (part.getModel() instanceof BControl) + control = (BControl) part.getModel(); + return control; } + return null; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java index 25cc581f..35515085 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java @@ -52,10 +52,11 @@ public class PasteAction extends SelectionAction { Object nextElement = it.next(); if (nextElement instanceof EditPart) { EditPart ep = (EditPart) nextElement; - BControl node = (BControl) ep.getModel(); - if (!cmd.isContainer(node)) - return null; - cmd.addElement(node); + if (ep.getModel() instanceof BControl) { + BControl node = (BControl) ep.getModel(); + if (cmd.isContainer(node)) + cmd.addElement(node); + } } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java index 9e352947..080cadb5 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java @@ -21,7 +21,6 @@ import org.eclipse.ui.plugin.AbstractUIPlugin; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.internal.RenameWizard; import de.bmotionstudio.gef.editor.model.BControl; public class RenameAction extends SelectionAction { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/RenameWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameWizard.java similarity index 93% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/RenameWizard.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameWizard.java index 117a244f..34c95998 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/RenameWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameWizard.java @@ -4,7 +4,7 @@ * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) * */ -package de.bmotionstudio.gef.editor.internal; +package de.bmotionstudio.gef.editor.action; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardPage; diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java index 5139f6d0..ca5ce02f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java @@ -27,10 +27,11 @@ import de.bmotionstudio.gef.editor.model.BConnection; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode; import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.observer.IObserverListener; import de.bmotionstudio.gef.editor.observer.Observer; public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements - PropertyChangeListener { + PropertyChangeListener, IObserverListener { public void propertyChange(final PropertyChangeEvent evt) { if (evt.getPropertyName().equals(BControl.PROPERTY_ADD) @@ -84,6 +85,7 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements if (!isActive()) { super.activate(); ((BControl) getModel()).addPropertyChangeListener(this); + ((BControl) getModel()).addObserverListener(this); } } @@ -91,6 +93,7 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements if (isActive()) { super.deactivate(); ((BControl) getModel()).removePropertyChangeListener(this); + ((BControl) getModel()).removeObserverListener(this); } } @@ -127,4 +130,14 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements } } + @Override + public void addedObserver(BControl control, Observer observer) { + refreshChildren(); + } + + @Override + public void removedObserver(BControl control) { + refreshChildren(); + } + } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java index 7114d753..51d2a0c7 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java @@ -6,9 +6,13 @@ package de.bmotionstudio.gef.editor.part; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPartFactory; +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.IBControlService; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode; import de.bmotionstudio.gef.editor.observer.Observer; @@ -20,7 +24,21 @@ public class BMSTreeEditPartFactory implements EditPartFactory { BMSAbstractTreeEditPart part = null; if (model instanceof BControl) { - part = new BControlTreeEditPart(); + + BControl control = (BControl) model; + + try { + IConfigurationElement configElement = BMotionEditorPlugin + .getControlServices().get(control.getType()); + if (configElement != null) { + IBControlService service = (IBControlService) configElement + .createExecutableExtension("service"); + part = service.createTreeEditPart(); + } + } catch (CoreException e) { + e.printStackTrace(); + } + } else if (model instanceof Observer) { part = new ObserverTreeEditPart(); } else if (model instanceof ObserverRootVirtualTreeNode) { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java index 65dd6ccc..38c27cba 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java @@ -5,7 +5,9 @@ import de.bmotionstudio.gef.editor.IBControlService; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.model.BTableCell; import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.BControlTreeEditPart; import de.bmotionstudio.gef.editor.part.BMSAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BMSAbstractTreeEditPart; import de.bmotionstudio.gef.editor.part.BTableCellPart; public class BTableCellService extends AbstractBControlService implements @@ -26,4 +28,13 @@ public class BTableCellService extends AbstractBControlService implements return false; } + @Override + public BMSAbstractTreeEditPart createTreeEditPart() { + return new BControlTreeEditPart() { + @Override + protected void createEditPolicies() { + } + }; + } + } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java index 447e9918..6290adc3 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java @@ -5,7 +5,9 @@ import de.bmotionstudio.gef.editor.IBControlService; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.model.BTableColumn; import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.BControlTreeEditPart; import de.bmotionstudio.gef.editor.part.BMSAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BMSAbstractTreeEditPart; import de.bmotionstudio.gef.editor.part.BTableColumnPart; public class BTableColumnService extends AbstractBControlService implements @@ -26,4 +28,13 @@ public class BTableColumnService extends AbstractBControlService implements return false; } + @Override + public BMSAbstractTreeEditPart createTreeEditPart() { + return new BControlTreeEditPart() { + @Override + protected void createEditPolicies() { + } + }; + } + } -- GitLab