Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Fluegge2011-10-27 16:52:33 +0000
committerMartin Fluegge2011-10-27 16:52:33 +0000
commita0e58a5611861c52a64b909ee24b0fa2078e5cd6 (patch)
treea2c20c42fc29c5fc8ea6d90dd4f675a7fc75fd5b
parent4a6963d2cf1fd2f96c847b8530102b1f804d9c89 (diff)
downloadcdo-a0e58a5611861c52a64b909ee24b0fa2078e5cd6.tar.gz
cdo-a0e58a5611861c52a64b909ee24b0fa2078e5cd6.tar.xz
cdo-a0e58a5611861c52a64b909ee24b0fa2078e5cd6.zip
[359656] [Dawn] Provide collaborative extension for
Graphiti editors https://bugs.eclipse.org/bugs/show_bug.cgi?id=359656
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn.emf/src/org/eclipse/emf/cdo/dawn/emf/editors/impl/DawnEMFEditorSupport.java206
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/notifications/impl/DawnGMFLockingHandler.java104
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/synchronize/DawnChangeHelper.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiDiagramEditor.java11
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiEditorSupport.java34
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/notifications/DawnGraphitiHandler.java29
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/util/DawnGraphitiUtil.java31
-rw-r--r--plugins/org.eclipse.emf.cdo.dawn/src/org/eclipse/emf/cdo/dawn/notifications/BasicDawnTransactionHandler.java8
8 files changed, 224 insertions, 212 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.emf/src/org/eclipse/emf/cdo/dawn/emf/editors/impl/DawnEMFEditorSupport.java b/plugins/org.eclipse.emf.cdo.dawn.emf/src/org/eclipse/emf/cdo/dawn/emf/editors/impl/DawnEMFEditorSupport.java
index 0da1605dd8..8b7c19ddf7 100644
--- a/plugins/org.eclipse.emf.cdo.dawn.emf/src/org/eclipse/emf/cdo/dawn/emf/editors/impl/DawnEMFEditorSupport.java
+++ b/plugins/org.eclipse.emf.cdo.dawn.emf/src/org/eclipse/emf/cdo/dawn/emf/editors/impl/DawnEMFEditorSupport.java
@@ -1,103 +1,103 @@
-/*
- * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Martin Fluegge - initial API and implementation
- */
-package org.eclipse.emf.cdo.dawn.emf.editors.impl;
-
-import org.eclipse.emf.cdo.dawn.editors.IDawnEditor;
-import org.eclipse.emf.cdo.dawn.editors.impl.DawnAbstractEditorSupport;
-import org.eclipse.emf.cdo.dawn.emf.notifications.impl.DawnEMFHandler;
-import org.eclipse.emf.cdo.dawn.emf.notifications.impl.DawnEMFLockingHandler;
-import org.eclipse.emf.cdo.dawn.notifications.BasicDawnListener;
-import org.eclipse.emf.cdo.dawn.spi.DawnState;
-import org.eclipse.emf.cdo.transaction.CDOTransactionHandlerBase;
-import org.eclipse.emf.cdo.util.CDOUtil;
-import org.eclipse.emf.cdo.view.CDOView;
-
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.ecore.EObject;
-
-import java.util.Map;
-
-/**
- * @author Martin Fluegge
- * @since 1.0
- */
-public class DawnEMFEditorSupport extends DawnAbstractEditorSupport
-{
- public DawnEMFEditorSupport(IDawnEditor editor)
- {
- super(editor);
- }
-
- public void close()
- {
- CDOView view = getView();
- if (view != null && !view.isClosed())
- {
- view.close();
- }
- }
-
- @Override
- protected BasicDawnListener getBasicHandler()
- {
- return new DawnEMFHandler(getEditor());
- }
-
- @Override
- protected BasicDawnListener getLockingHandler()
- {
- return new DawnEMFLockingHandler(getEditor());
- }
-
- @Override
- protected CDOTransactionHandlerBase getTransactionHandler()
- {
- return null;
- }
-
- @Override
- public void rollback()
- {
- super.rollback();
- refresh();
- }
-
- public void refresh()
- {
- ((IViewerProvider)getEditor()).getViewer().refresh();
- }
-
- public void lockObject(Object objectToBeLocked)
- {
- if (objectToBeLocked instanceof EObject)
- {
- CDOUtil.getCDOObject((EObject)objectToBeLocked).cdoWriteLock().lock();
- }
- refresh();
- }
-
- public void unlockObject(Object objectToBeUnlocked)
- {
- CDOUtil.getCDOObject((EObject)objectToBeUnlocked).cdoWriteLock().unlock();
- refresh();
- }
-
- public void handleRemoteLockChanges(Map<Object, DawnState> changedObjects)
- {
- getEditor().getSite().getShell().getDisplay().asyncExec(new Runnable()
- {
- public void run()
- {
- refresh();
- }
- });
- }
-}
+/*
+ * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Martin Fluegge - initial API and implementation
+ */
+package org.eclipse.emf.cdo.dawn.emf.editors.impl;
+
+import org.eclipse.emf.cdo.dawn.editors.IDawnEditor;
+import org.eclipse.emf.cdo.dawn.editors.impl.DawnAbstractEditorSupport;
+import org.eclipse.emf.cdo.dawn.emf.notifications.impl.DawnEMFHandler;
+import org.eclipse.emf.cdo.dawn.emf.notifications.impl.DawnEMFLockingHandler;
+import org.eclipse.emf.cdo.dawn.notifications.BasicDawnListener;
+import org.eclipse.emf.cdo.dawn.spi.DawnState;
+import org.eclipse.emf.cdo.transaction.CDOTransactionHandlerBase;
+import org.eclipse.emf.cdo.util.CDOUtil;
+import org.eclipse.emf.cdo.view.CDOView;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.ecore.EObject;
+
+import java.util.Map;
+
+/**
+ * @author Martin Fluegge
+ * @since 1.0
+ */
+public class DawnEMFEditorSupport extends DawnAbstractEditorSupport
+{
+ public DawnEMFEditorSupport(IDawnEditor editor)
+ {
+ super(editor);
+ }
+
+ public void close()
+ {
+ CDOView view = getView();
+ if (view != null && !view.isClosed())
+ {
+ view.close();
+ }
+ }
+
+ @Override
+ protected BasicDawnListener getBasicHandler()
+ {
+ return new DawnEMFHandler(getEditor());
+ }
+
+ @Override
+ protected BasicDawnListener getLockingHandler()
+ {
+ return new DawnEMFLockingHandler(getEditor());
+ }
+
+ @Override
+ protected CDOTransactionHandlerBase getTransactionHandler()
+ {
+ return new DawnEMFHandler(getEditor());
+ }
+
+ @Override
+ public void rollback()
+ {
+ super.rollback();
+ refresh();
+ }
+
+ public void refresh()
+ {
+ ((IViewerProvider)getEditor()).getViewer().refresh();
+ }
+
+ public void lockObject(Object objectToBeLocked)
+ {
+ if (objectToBeLocked instanceof EObject)
+ {
+ CDOUtil.getCDOObject((EObject)objectToBeLocked).cdoWriteLock().lock();
+ }
+ refresh();
+ }
+
+ public void unlockObject(Object objectToBeUnlocked)
+ {
+ CDOUtil.getCDOObject((EObject)objectToBeUnlocked).cdoWriteLock().unlock();
+ refresh();
+ }
+
+ public void handleRemoteLockChanges(Map<Object, DawnState> changedObjects)
+ {
+ getEditor().getSite().getShell().getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ refresh();
+ }
+ });
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/notifications/impl/DawnGMFLockingHandler.java b/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/notifications/impl/DawnGMFLockingHandler.java
index fe5275a6fe..ae5262146d 100644
--- a/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/notifications/impl/DawnGMFLockingHandler.java
+++ b/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/notifications/impl/DawnGMFLockingHandler.java
@@ -1,79 +1,25 @@
-/*
- * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Martin Fluegge - initial API and implementation
- */
-package org.eclipse.emf.cdo.dawn.gmf.notifications.impl;
-
-import org.eclipse.emf.cdo.dawn.editors.IDawnEditor;
-import org.eclipse.emf.cdo.dawn.notifications.BasicDawnLockingHandler;
-
-/**
- * @author Martin Fluegge
- */
-public class DawnGMFLockingHandler extends BasicDawnLockingHandler
-{
- public DawnGMFLockingHandler(IDawnEditor editor)
- {
- super(editor);
- }
-
- // @Override
- // public void handleLocksChangedEvent(CDOViewLocksChangedEvent event)
- // {
- // CDOViewLocksChangedEvent lockEvent = event;
- //
- // CDOLockState[] lockStates = lockEvent.getLockStates();
- //
- // List<Object> remotelyLockedObjects = new ArrayList<Object>();
- // List<Object> remotelyUnlockedObjects = new ArrayList<Object>();
- //
- // for (CDOLockState state : lockStates)
- // {
- // Object lockedObject = state.getLockedObject();
- //
- // CDOView view = editor.getDawnEditorSupport().getView();
- // CDOID id;
- // if (lockedObject instanceof CDOID)
- // {
- // id = (CDOID)lockedObject;
- // }
- // else if (lockedObject instanceof CDOIDAndBranch)
- // {
- // id = ((CDOIDAndBranch)lockedObject).getID();
- // }
- // else
- // {
- // throw new RuntimeException("Unexpected object type: " + lockedObject);
- // }
- //
- // if (id != null)
- // {
- // CDOObject object = view.getObject(id);
- // if (object.cdoWriteLock().isLocked())
- // {
- // throw new RuntimeException("Shoudl not occur");
- // }
- // else if (object.cdoWriteLock().isLockedByOthers())
- // {
- // remotelyLockedObjects.add(object);
- // }
- // else
- // {
- // remotelyUnlockedObjects.add(object);
- // }
- // }
- // }
- //
- // IDawnEditorSupport dawnEditorSupport = editor.getDawnEditorSupport();
- //
- // dawnEditorSupport.handleRemotelyLockedObjects(remotelyLockedObjects);
- // dawnEditorSupport.handleRemotelyUnlockedObjects(remotelyUnlockedObjects);
- // // dawnEditorSupport.refresh();
- // }
-}
+/*
+ * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Martin Fluegge - initial API and implementation
+ */
+package org.eclipse.emf.cdo.dawn.gmf.notifications.impl;
+
+import org.eclipse.emf.cdo.dawn.editors.IDawnEditor;
+import org.eclipse.emf.cdo.dawn.notifications.BasicDawnLockingHandler;
+
+/**
+ * @author Martin Fluegge
+ */
+public class DawnGMFLockingHandler extends BasicDawnLockingHandler
+{
+ public DawnGMFLockingHandler(IDawnEditor editor)
+ {
+ super(editor);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/synchronize/DawnChangeHelper.java b/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/synchronize/DawnChangeHelper.java
index 07266e9335..8478665b42 100644
--- a/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/synchronize/DawnChangeHelper.java
+++ b/plugins/org.eclipse.emf.cdo.dawn.gmf/src/org/eclipse/emf/cdo/dawn/gmf/synchronize/DawnChangeHelper.java
@@ -466,20 +466,19 @@ public class DawnChangeHelper
/**
* activates a given EditPart
*
- * @param e
+ * @param editPart
*/
- public static void activateEditPart(final EditPart e)
+ public static void activateEditPart(final EditPart editPart)
{
Display.getDefault().asyncExec(new Runnable()
{
public void run()
{
- e.activate();
- org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart g = (org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart)e;
- g.getFigure().setEnabled(true);
+ editPart.activate();
+ AbstractGraphicalEditPart graphicalEditPart = (AbstractGraphicalEditPart)editPart;
+ graphicalEditPart.getFigure().setEnabled(true);
}
});
-
}
/**
@@ -511,8 +510,6 @@ public class DawnChangeHelper
editPart.deactivate();
editPart.getViewer().deselect(editPart);
- // org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart g =
- // (org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart)e;
AbstractGraphicalEditPart graphicalEditPart = (AbstractGraphicalEditPart)editPart;
graphicalEditPart.getFigure().setEnabled(false);
}
diff --git a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiDiagramEditor.java b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiDiagramEditor.java
index 9600ad0331..d6fbfa4de5 100644
--- a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiDiagramEditor.java
+++ b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiDiagramEditor.java
@@ -21,6 +21,7 @@ import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.graphiti.ui.editor.DiagramEditor;
import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
import org.eclipse.graphiti.ui.internal.services.GraphitiUiInternal;
@@ -111,7 +112,8 @@ public class DawnGraphitiDiagramEditor extends DiagramEditor implements IDawnEdi
@Override
public boolean isDirty()
{
- return super.isDirty() || dawnEditorSupport.isDirty();
+ // return super.isDirty() || dawnEditorSupport.isDirty();
+ return dawnEditorSupport.isDirty();
}
public void setDirty()
@@ -120,6 +122,13 @@ public class DawnGraphitiDiagramEditor extends DiagramEditor implements IDawnEdi
}
@Override
+ public void doSave(IProgressMonitor monitor)
+ {
+ dawnEditorSupport.setDirty(false);
+ super.doSave(monitor);
+ }
+
+ @Override
public void dispose()
{
try
diff --git a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiEditorSupport.java b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiEditorSupport.java
index cf25a514bc..b1d25f40b0 100644
--- a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiEditorSupport.java
+++ b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/editors/DawnGraphitiEditorSupport.java
@@ -38,6 +38,7 @@ import org.eclipse.gef.RootEditPart;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.ui.editor.DiagramEditor;
+import java.util.List;
import java.util.Map;
/**
@@ -189,24 +190,39 @@ public class DawnGraphitiEditorSupport extends DawnAbstractEditorSupport
refresh();
}
- public void handleRemoteLockChanges(Map<Object, DawnState> changedObjects)
+ public void handleRemoteLockChanges(final Map<Object, DawnState> changedObjects)
{
- for (Object o : changedObjects.keySet())
+ DawnEditorHelper.getDisplay().asyncExec(new Runnable()
{
- handleLock((CDOObject)o, getView());
- }
+ public void run()
+ {
+ for (Object o : changedObjects.keySet())
+ {
+ handleLock((CDOObject)o, getView());
+ }
+ }
+ });
+
refresh();
}
private void handleLock(CDOObject object, CDOView cdoView)
{
EObject element = CDOUtil.getEObject(object); // either semantic object or notational
- PictogramElement pictogramElement = DawnGraphitiUtil.getPictgramElement(element);
- if (pictogramElement != null)
+
+ DiagramEditor editor = (DiagramEditor)getEditor();
+
+ List<PictogramElement> pictogramElements = DawnGraphitiUtil.getPictgramElements(editor.getDiagramTypeProvider()
+ .getDiagram(), element);
+
+ for (PictogramElement pictogramElement : pictogramElements)
{
- // if there is no view, the semantic object is not displayed.
- EditPart editPart = DawnGraphitiUtil.getEditpart(pictogramElement, ((DiagramEditor)getEditor())
- .getGraphicalViewer().getRootEditPart());
+ EditPart editPart = DawnGraphitiUtil.getEditpart(pictogramElement, editor.getGraphicalViewer().getRootEditPart());
+
+ if (editPart == null)
+ {
+ continue;
+ }
if (object.cdoWriteLock().isLocked())
{
diff --git a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/notifications/DawnGraphitiHandler.java b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/notifications/DawnGraphitiHandler.java
index ec3096673a..73e99bc679 100644
--- a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/notifications/DawnGraphitiHandler.java
+++ b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/notifications/DawnGraphitiHandler.java
@@ -23,6 +23,7 @@ import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.transaction.CDOTransactionConflictEvent;
import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.util.InvalidObjectException;
+import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.cdo.view.CDOViewInvalidationEvent;
import org.eclipse.emf.ecore.EObject;
@@ -39,6 +40,8 @@ import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.ui.editor.DiagramEditor;
import org.eclipse.swt.widgets.Display;
+import java.util.List;
+
/**
* @author Martin Fluegge
*/
@@ -55,7 +58,9 @@ public class DawnGraphitiHandler extends BasicDawnTransactionHandler
@Override
public void handleViewInvalidationEvent(CDOViewInvalidationEvent event)
{
+ CDOView view = editor.getDawnEditorSupport().getView();
editor.getDawnEditorSupport().refresh();
+ System.out.println(view);
}
/**
@@ -71,27 +76,33 @@ public class DawnGraphitiHandler extends BasicDawnTransactionHandler
EObject element = CDOUtil.getEObject(cdoObject); // either semantic object or notational
- PictogramElement pictgramElement = DawnGraphitiUtil.getPictgramElement(element);
+ List<PictogramElement> pictgramElements = DawnGraphitiUtil.getPictgramElements(((DiagramEditor)editor)
+ .getDiagramTypeProvider().getDiagram(), element);
GraphicalViewer graphicalViewer = ((DiagramEditor)editor).getGraphicalViewer();
- final EditPart editpart = DawnGraphitiUtil.getEditpart(pictgramElement, graphicalViewer.getRootEditPart());
- if (DawnConflictHelper.isConflicted(cdoObject))
+ for (PictogramElement pictgramElement : pictgramElements)
{
- DawnEditorHelper.getDisplay().syncExec(new Runnable()
+ final EditPart editpart = DawnGraphitiUtil.getEditpart(pictgramElement, graphicalViewer.getRootEditPart());
+
+ if (DawnConflictHelper.isConflicted(cdoObject))
{
- public void run()
+ DawnEditorHelper.getDisplay().syncExec(new Runnable()
{
- int typeConflictLocallyDeleted = DawnAppearancer.TYPE_CONFLICT_REMOTELY_DELETED;
- DawnAppearancer.setEditPartConflicted(editpart, typeConflictLocallyDeleted);
- }
- });
+ public void run()
+ {
+ int typeConflictLocallyDeleted = DawnAppearancer.TYPE_CONFLICT_REMOTELY_DELETED;
+ DawnAppearancer.setEditPartConflicted(editpart, typeConflictLocallyDeleted);
+ }
+ });
+ }
}
}
@Override
public void modifyingObject(CDOTransaction transaction, final CDOObject object, CDOFeatureDelta featureDelta)
{
+ super.modifyingObject(transaction, object, featureDelta);
editor.getDawnEditorSupport().refresh();
}
diff --git a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/util/DawnGraphitiUtil.java b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/util/DawnGraphitiUtil.java
index be3259a4f9..3d49b290ff 100644
--- a/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/util/DawnGraphitiUtil.java
+++ b/plugins/org.eclipse.emf.cdo.dawn.graphiti/src/org/eclipse/emf/cdo/dawn/graphiti/util/DawnGraphitiUtil.java
@@ -13,7 +13,12 @@ package org.eclipse.emf.cdo.dawn.graphiti.util;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.EditPart;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+
+import java.util.Collections;
+import java.util.List;
/**
* @author Martin Fluegge
@@ -33,14 +38,36 @@ public class DawnGraphitiUtil
{
return child;
}
- return getEditpart(pictogramElement, child);
+
+ EditPart childEditPart = getEditpart(pictogramElement, child);
+ if (childEditPart != null)
+ {
+ return childEditPart;
+ }
}
return null;
}
+ public static List<PictogramElement> getPictgramElements(Diagram diagram, EObject element)
+ {
+ PictogramElement pictgramElement = getPictgramElement(element);
+
+ if (element instanceof PictogramElement)
+ {
+ return Collections.singletonList((PictogramElement)element);
+ }
+
+ if (pictgramElement != null)
+ {
+ return Collections.singletonList(pictgramElement);
+ }
+
+ return Graphiti.getLinkService().getPictogramElements(diagram, element);
+ }
+
/**
* Tries to retriev the pictogram element from a given element. If the element itself is a PictogramElement, the
- * element will be returned. Otherwise all eContainers will be checked until a PictogramElement ist found.
+ * element will be returned. Otherwise all eContainers will be checked until a PictogramElement is found.
*/
public static PictogramElement getPictgramElement(EObject element)
{
diff --git a/plugins/org.eclipse.emf.cdo.dawn/src/org/eclipse/emf/cdo/dawn/notifications/BasicDawnTransactionHandler.java b/plugins/org.eclipse.emf.cdo.dawn/src/org/eclipse/emf/cdo/dawn/notifications/BasicDawnTransactionHandler.java
index e777bf4735..042398772a 100644
--- a/plugins/org.eclipse.emf.cdo.dawn/src/org/eclipse/emf/cdo/dawn/notifications/BasicDawnTransactionHandler.java
+++ b/plugins/org.eclipse.emf.cdo.dawn/src/org/eclipse/emf/cdo/dawn/notifications/BasicDawnTransactionHandler.java
@@ -55,7 +55,13 @@ public class BasicDawnTransactionHandler extends BasicDawnListener implements ID
}
public void modifyingObject(CDOTransaction transaction, CDOObject object, CDOFeatureDelta featureDelta)
- { // This method can be overwritten be subclasses
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("modifyingObject {0}", object); //$NON-NLS-1$
+ }
+
+ editor.setDirty();
}
public void committingTransaction(CDOTransaction transaction, CDOCommitContext commitContext)

Back to the top