Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortle2012-05-29 15:04:52 +0000
committertle2012-05-29 15:04:52 +0000
commit8bf815cc02f2d2a205fd28f41240c1448678b5d5 (patch)
treec63889872633e3e60fdbdf518a6add96fab203f7
parent618ee4d84ed867955ba912dfbddc772e86c7e4b6 (diff)
downloadwebtools.dali-8bf815cc02f2d2a205fd28f41240c1448678b5d5.tar.gz
webtools.dali-8bf815cc02f2d2a205fd28f41240c1448678b5d5.tar.xz
webtools.dali-8bf815cc02f2d2a205fd28f41240c1448678b5d5.zip
380699 - IllegalStateException: drag and drop entity to diagram editor - Patch from Petya
-rw-r--r--jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/AddJPAEntityFeature.java97
-rw-r--r--jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveAndSaveEntityFeature.java21
-rw-r--r--jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveJPAEntityFeature.java20
-rw-r--r--jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JPASolver.java3
-rw-r--r--jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JpaArtifactFactory.java2
5 files changed, 91 insertions, 52 deletions
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/AddJPAEntityFeature.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/AddJPAEntityFeature.java
index 01d94d8032..631259e7e8 100644
--- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/AddJPAEntityFeature.java
+++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/AddJPAEntityFeature.java
@@ -19,6 +19,9 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.context.IAddContext;
import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;
@@ -56,12 +59,12 @@ import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants.Shap
import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorPredefinedColoredAreas;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorUtil;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JpaArtifactFactory;
+import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.Wrp;
@SuppressWarnings({ "restriction" })
public class AddJPAEntityFeature extends AbstractAddShapeFeature {
- private IPeUtilFacade facade;
private boolean shouldRearrangeIsARelations = true;
private static ContainerShape primaryShape;
private static ContainerShape relationShape;
@@ -71,12 +74,10 @@ public class AddJPAEntityFeature extends AbstractAddShapeFeature {
public AddJPAEntityFeature(IFeatureProvider fp, boolean shouldRearrangeIsARelations) {
super(fp);
this.shouldRearrangeIsARelations = shouldRearrangeIsARelations;
- facade = new PeUtilFacade();
}
- public AddJPAEntityFeature(IFeatureProvider fp, IPeUtilFacade facade) {
+ public AddJPAEntityFeature(IFeatureProvider fp) {
super(fp);
- this.facade = facade;
}
public boolean canAdd(IAddContext context) {
@@ -121,8 +122,8 @@ public class AddJPAEntityFeature extends AbstractAddShapeFeature {
return (IJPAEditorFeatureProvider) super.getFeatureProvider();
}
- public PictogramElement add(IAddContext context) {
- IJPAEditorFeatureProvider fp = getFeatureProvider();
+ public PictogramElement add(final IAddContext context) {
+ final IJPAEditorFeatureProvider fp = getFeatureProvider();
Object newObj = context.getNewObject();
JavaPersistentType jpt = null;
if (newObj instanceof JavaPersistentType) {
@@ -136,38 +137,50 @@ public class AddJPAEntityFeature extends AbstractAddShapeFeature {
jpt = JPAEditorUtil.getJPType(cu);
}
final Diagram targetDiagram = (Diagram) context.getTargetContainer();
-
- ContainerShape entityShape = facade.createContainerShape(targetDiagram, true);
-
- JPAEditorConstants.DIAGRAM_OBJECT_TYPE dot = JpaArtifactFactory.instance().determineDiagramObjectType(jpt);
- createEntityRectangle(context, entityShape, dot,
- this.getFeatureProvider().getDiagramTypeProvider().getDiagram());
- link(entityShape, jpt);
- Shape shape = Graphiti.getPeService().createShape(entityShape, false);
- Polyline headerBottomLine = Graphiti.getGaService().createPolyline(shape, new int[] { 0,
- 30, JPAEditorConstants.ENTITY_WIDTH, 30 });
- headerBottomLine
- .setForeground(manageColor(JPAEditorConstants.ENTITY_BORDER_COLOR));
- headerBottomLine.setLineWidth(JPAEditorConstants.ENTITY_BORDER_WIDTH);
-
- addHeader(jpt, entityShape, JPAEditorConstants.ENTITY_WIDTH, dot);
+ final Wrp wrp = new Wrp();
+ createEntity(context, fp, targetDiagram, wrp, jpt);
+ return (PictogramElement) wrp.getObj();
+ }
+
+ private void createEntity(final IAddContext context, final IJPAEditorFeatureProvider fp, final Diagram targetDiagram,
+ final Wrp wrp, final JavaPersistentType jpt) {
- createCompartments(context, jpt, entityShape);
- fillCompartments(jpt,entityShape);
+ TransactionalEditingDomain ted = TransactionUtil.getEditingDomain(targetDiagram);
- String key = fp.getKeyForBusinessObject(jpt);
- if (fp.getBusinessObjectForKey(key) == null)
- fp.putKeyToBusinessObject(key, jpt);
-
- Graphiti.getPeService().createChopboxAnchor(entityShape);
- entityShape.setVisible(true);
- layoutPictogramElement(entityShape);
-
- UpdateAttributeFeature updateFeature = new UpdateAttributeFeature(fp);
- updateFeature.reconnect(jpt);
- if (shouldRearrangeIsARelations)
- JpaArtifactFactory.instance().rearrangeIsARelations(getFeatureProvider());
- return entityShape;
+ ted.getCommandStack().execute(new RecordingCommand(ted) {
+ protected void doExecute() {
+
+ ContainerShape entityShape = Graphiti.getPeService().createContainerShape(targetDiagram, true);
+
+ JPAEditorConstants.DIAGRAM_OBJECT_TYPE dot = JpaArtifactFactory.instance().determineDiagramObjectType(jpt);
+ createEntityRectangle(context, entityShape, dot, fp.getDiagramTypeProvider().getDiagram());
+ link(entityShape, jpt);
+ Shape shape = Graphiti.getPeService().createShape(entityShape, false);
+ Polyline headerBottomLine = Graphiti.getGaService()
+ .createPolyline(shape, new int[] { 0, 30, JPAEditorConstants.ENTITY_WIDTH, 30 });
+ headerBottomLine.setForeground(manageColor(JPAEditorConstants.ENTITY_BORDER_COLOR));
+ headerBottomLine.setLineWidth(JPAEditorConstants.ENTITY_BORDER_WIDTH);
+
+ addHeader(jpt, entityShape, JPAEditorConstants.ENTITY_WIDTH, dot);
+
+ createCompartments(context, jpt, entityShape);
+ fillCompartments(jpt, entityShape);
+
+ String key = fp.getKeyForBusinessObject(jpt);
+ if (fp.getBusinessObjectForKey(key) == null)
+ fp.putKeyToBusinessObject(key, jpt);
+
+ Graphiti.getPeService().createChopboxAnchor(entityShape);
+ entityShape.setVisible(true);
+ layoutPictogramElement(entityShape);
+
+ UpdateAttributeFeature updateFeature = new UpdateAttributeFeature(fp);
+ updateFeature.reconnect(jpt);
+ if (shouldRearrangeIsARelations)
+ JpaArtifactFactory.instance().rearrangeIsARelations(getFeatureProvider());
+ wrp.setObj(entityShape);
+ }
+ });
}
private void createCompartments(IAddContext context, JavaPersistentType jpt,
@@ -295,10 +308,6 @@ public class AddJPAEntityFeature extends AbstractAddShapeFeature {
}
}
- public interface IPeUtilFacade {
- public ContainerShape createContainerShape(Diagram diagram, boolean b);
- }
-
public static RoundedRectangle createEntityRectangle(IAddContext context,
ContainerShape entityShape,
JPAEditorConstants.DIAGRAM_OBJECT_TYPE dot,
@@ -327,13 +336,7 @@ public class AddJPAEntityFeature extends AbstractAddShapeFeature {
: context.getHeight());
return entityRectangle;
}
-
- private static class PeUtilFacade implements IPeUtilFacade {
- public ContainerShape createContainerShape(Diagram diagram, boolean b) {
- return Graphiti.getPeService().createContainerShape(diagram, true);
- }
- }
-
+
private ContainerShape addHeader(JavaPersistentType addedWrapper,
ContainerShape entityShape,
int width,
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveAndSaveEntityFeature.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveAndSaveEntityFeature.java
index aac451f932..72789423f0 100644
--- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveAndSaveEntityFeature.java
+++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveAndSaveEntityFeature.java
@@ -20,7 +20,11 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.IContext;
import org.eclipse.graphiti.features.context.IRemoveContext;
import org.eclipse.graphiti.features.context.impl.RemoveContext;
import org.eclipse.graphiti.features.impl.DefaultRemoveFeature;
@@ -64,6 +68,23 @@ public class RemoveAndSaveEntityFeature extends DefaultRemoveFeature {
}
}
+ public void execute(IContext context) {
+ if (!IRemoveContext.class.isInstance(context))
+ return;
+ final IRemoveContext removeContext = (IRemoveContext)context;
+ PictogramElement pe = removeContext.getPictogramElement();
+ TransactionalEditingDomain ted = TransactionUtil.getEditingDomain(pe);
+ ted.getCommandStack().execute(new RecordingCommand(ted) {
+ protected void doExecute() {
+ removeEntityFromDiagram(removeContext);
+ }
+ });
+ }
+
+ public void removeEntityFromDiagram(IRemoveContext context){
+ super.remove(context);
+ }
+
public IJPAEditorFeatureProvider getFeatureProvider() {
return (IJPAEditorFeatureProvider)super.getFeatureProvider();
}
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveJPAEntityFeature.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveJPAEntityFeature.java
index f5bfb477c2..e647f2df5c 100644
--- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveJPAEntityFeature.java
+++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/feature/RemoveJPAEntityFeature.java
@@ -20,8 +20,12 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.context.IContext;
+import org.eclipse.graphiti.features.context.IDeleteContext;
import org.eclipse.graphiti.features.context.IRemoveContext;
import org.eclipse.graphiti.features.context.impl.RemoveContext;
import org.eclipse.graphiti.features.impl.DefaultRemoveFeature;
@@ -73,7 +77,7 @@ public class RemoveJPAEntityFeature extends DefaultRemoveFeature {
f.remove(ctx);
}
String name = ((PersistentType)bo).getName();
- getFeatureProvider().remove(name, true);
+ getFeatureProvider().remove(name, false);
}
}
@@ -85,7 +89,7 @@ public class RemoveJPAEntityFeature extends DefaultRemoveFeature {
public void execute(IContext ctx) {
if (!IRemoveContext.class.isInstance(ctx))
return;
- IRemoveContext context = (IRemoveContext)ctx;
+ final IRemoveContext context = (IRemoveContext)ctx;
PictogramElement pe = context.getPictogramElement();
Object bo = getFeatureProvider().getBusinessObjectForPictogramElement(pe);
if (!JavaPersistentType.class.isInstance(bo))
@@ -105,9 +109,19 @@ public class RemoveJPAEntityFeature extends DefaultRemoveFeature {
if (dialog.open() != 0)
return;
}
- super.execute(context);
+ TransactionalEditingDomain ted = TransactionUtil.getEditingDomain(pe);
+ ted.getCommandStack().execute(new RecordingCommand(ted) {
+ protected void doExecute() {
+ removeEntityFromDiagram(context);
+ }
+ });
+
}
+ public void removeEntityFromDiagram(IRemoveContext context){
+ super.execute(context);
+ }
+
public void postRemove(IRemoveContext context) {
if (shouldRearrangeIsARelations)
JpaArtifactFactory.instance().rearrangeIsARelations(getFeatureProvider());
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JPASolver.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JPASolver.java
index 74032b66ca..f4ecf485c7 100644
--- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JPASolver.java
+++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JPASolver.java
@@ -1406,7 +1406,8 @@ public class JPASolver implements IResourceChangeListener, IJpaSolver {
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if ((ModelIntegrationUtil.getProjectByDiagram(diagram.getName()).getProject()).equals(resource)) {
+ JpaProject jpaProject = ModelIntegrationUtil.getProjectByDiagram(diagram.getName());
+ if (jpaProject != null && (jpaProject.getProject()).equals(resource)) {
page.closeEditor(diagramBySelectedProject, false);
}
}
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JpaArtifactFactory.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JpaArtifactFactory.java
index 117dd9d068..411eb252b5 100644
--- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JpaArtifactFactory.java
+++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/util/JpaArtifactFactory.java
@@ -471,7 +471,7 @@ public class JpaArtifactFactory {
public void forceSaveEntityClass(final JavaPersistentType jpt,
IJPAEditorFeatureProvider fp) {
final ICompilationUnit cu = fp.getCompilationUnit(jpt);
- Display.getDefault().asyncExec(new Runnable() {
+ Display.getDefault().syncExec(new Runnable() {
public void run() {
try {
if (cu.isWorkingCopy())

Back to the top