Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2018-07-06 17:19:51 +0000
committerHenrik Rentz-Reichert2018-07-06 17:22:00 +0000
commit0509ac03bea494b08a92251e68e9efc92e415a20 (patch)
treed070ca8800c829827df8aff75c1b773fe1115908 /plugins/org.eclipse.etrice.ui.common.base
parentc2dfdeabf15d7e367bcd92731e6ac8651ffb9cac (diff)
parentbed42b94fbf934db15e792b247ee747f0c37ebf4 (diff)
downloadorg.eclipse.etrice-0509ac03bea494b08a92251e68e9efc92e415a20.tar.gz
org.eclipse.etrice-0509ac03bea494b08a92251e68e9efc92e415a20.tar.xz
org.eclipse.etrice-0509ac03bea494b08a92251e68e9efc92e415a20.zip
Merge remote-tracking branch 'newfsmgen_finalize'
Conflicts: plugins/org.eclipse.etrice.ui.behavior.fsm/META-INF/MANIFEST.MF plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF Change-Id: Icc81a851cdcdb35081b8eaa3d5b025c1f850de54
Diffstat (limited to 'plugins/org.eclipse.etrice.ui.common.base')
-rw-r--r--plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/commands/UpdateCommand.java23
-rw-r--r--plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SuperClassListener.java67
-rw-r--r--plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/support/DiagramAccessBase.java50
3 files changed, 79 insertions, 61 deletions
diff --git a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/commands/UpdateCommand.java b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/commands/UpdateCommand.java
index c96378159..4e7837b3d 100644
--- a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/commands/UpdateCommand.java
+++ b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/commands/UpdateCommand.java
@@ -10,9 +10,10 @@ package org.eclipse.etrice.ui.common.base.commands;
import org.eclipse.emf.transaction.RecordingCommand;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
import org.eclipse.graphiti.features.context.impl.UpdateContext;
-import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;
import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.ui.services.GraphitiUi;
/**
* @author Henrik Rentz-Reichert - initial contribution and API
@@ -20,26 +21,26 @@ import org.eclipse.graphiti.mm.pictograms.Diagram;
*/
public class UpdateCommand extends RecordingCommand {
- private Diagram diagram;
- private AbstractUpdateFeature feature;
+ private IDiagramTypeProvider dtp;
- public UpdateCommand(Diagram diag, TransactionalEditingDomain domain, AbstractUpdateFeature feature) {
- super(domain);
- this.feature = feature;
+ public UpdateCommand(String providerId, Diagram diagram, TransactionalEditingDomain editingDomain) {
+ super(editingDomain);
+
+ dtp = GraphitiUi.getExtensionManager().createDiagramTypeProvider(diagram, providerId); //$NON-NLS-1$
}
public boolean updateNeeded() {
- UpdateContext context = new UpdateContext(diagram);
- return feature.updateNeeded(context).toBoolean();
+ UpdateContext ctx = new UpdateContext(dtp.getDiagram());
+ return dtp.getFeatureProvider().getUpdateFeature(ctx).updateNeeded(ctx).toBoolean();
}
/* (non-Javadoc)
* @see org.eclipse.emf.transaction.RecordingCommand#doExecute()
*/
@Override
- protected void doExecute() {
- UpdateContext context = new UpdateContext(diagram);
- feature.update(context);
+ protected void doExecute() {
+ UpdateContext ctx = new UpdateContext(dtp.getDiagram());
+ dtp.getFeatureProvider().getUpdateFeature(ctx).update(ctx);
}
}
diff --git a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SuperClassListener.java b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SuperClassListener.java
index 61cac5f7d..20741c198 100644
--- a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SuperClassListener.java
+++ b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SuperClassListener.java
@@ -39,32 +39,34 @@ public class SuperClassListener implements IPartListener, ResourceSetListener, I
private List<TransactionalEditingDomain> domains;
private List<IXtextDocument> xtextDocuments;
private boolean changeInSuperClass;
-
+
public SuperClassListener(DiagramEditorBase diagramEditor, Object editorClass) {
this.diagramEditor = diagramEditor;
this.editorClass = editorClass;
domains = new ArrayList<TransactionalEditingDomain>();
xtextDocuments = new ArrayList<IXtextDocument>();
changeInSuperClass = false;
-
- assert(editorClass instanceof Class) : "Class expected";
+
+ assert (editorClass instanceof Class) : "Class expected";
}
-
+
public boolean isChangeInSuperClass() {
return changeInSuperClass;
}
- public void dispose(){
- for(TransactionalEditingDomain domain : domains){
- if(domain != null)
+ public void dispose() {
+ for (TransactionalEditingDomain domain : domains) {
+ if (domain != null)
domain.removeResourceSetListener(this);
}
- for(IXtextDocument document : xtextDocuments){
- if(document != null)
+ for (IXtextDocument document : xtextDocuments) {
+ if (document != null)
document.removeModelListener(this);
}
+ domains.clear();
+ xtextDocuments.clear();
}
-
+
// ---
// IPartListener
// ---
@@ -81,18 +83,22 @@ public class SuperClassListener implements IPartListener, ResourceSetListener, I
@Override
public void partClosed(IWorkbenchPart part) {
- if(part instanceof DiagramEditorBase){
- DiagramEditorBase editor = (DiagramEditorBase)part;
+ if (part == diagramEditor) {
+ dispose();
+ return;
+ }
+
+ if (part instanceof DiagramEditorBase) {
+ DiagramEditorBase editor = (DiagramEditorBase) part;
TransactionalEditingDomain toRemove = editor.getEditingDomain();
- if(toRemove != null){
+ if (toRemove != null) {
toRemove.removeResourceSetListener(this);
domains.remove(toRemove);
}
}
-
- if (((Class<?>)editorClass).isInstance(part)) {
+ if (((Class<?>) editorClass).isInstance(part)) {
IXtextDocument toRemove = ((XtextEditor) part).getDocument();
- if(toRemove != null){
+ if (toRemove != null) {
toRemove.removeModelListener(this);
xtextDocuments.remove(toRemove);
}
@@ -101,43 +107,43 @@ public class SuperClassListener implements IPartListener, ResourceSetListener, I
@Override
public void partDeactivated(IWorkbenchPart part) {
- if(part == diagramEditor)
+ if (part == diagramEditor)
changeInSuperClass = false;
}
@Override
public void partOpened(IWorkbenchPart part) {
// initial
- if(part==diagramEditor){
+ if (part == diagramEditor) {
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
for (IEditorReference editorRef : activePage.getEditorReferences()) {
IEditorPart editor = editorRef.getEditor(false);
- if (editor != null && editor!=diagramEditor)
+ if (editor != null && editor != diagramEditor)
partOpened(editor);
}
return;
}
-
- if(part instanceof DiagramEditorBase){
- DiagramEditorBase editor = (DiagramEditorBase)part;
+
+ if (part instanceof DiagramEditorBase) {
+ DiagramEditorBase editor = (DiagramEditorBase) part;
TransactionalEditingDomain domain = editor.getEditingDomain();
- if(!domains.contains(domain) && diagramEditor.registerSuperClassListener(editor)){
+ if (!domains.contains(domain) && diagramEditor.registerSuperClassListener(editor)) {
domain.addResourceSetListener(this);
domains.add(domain);
}
}
-
- if (((Class<?>)editorClass).isInstance(part)) {
+
+ if (((Class<?>) editorClass).isInstance(part)) {
XtextEditor editor = (XtextEditor) part;
IXtextDocument document = editor.getDocument();
-
- if(!xtextDocuments.contains(document) && diagramEditor.registerSuperClassListener(editor)){
+
+ if (!xtextDocuments.contains(document) && diagramEditor.registerSuperClassListener(editor)) {
editor.getDocument().addModelListener(this);
xtextDocuments.add(document);
}
}
}
-
+
// ---
// ResourceSetListener
// ---
@@ -148,8 +154,7 @@ public class SuperClassListener implements IPartListener, ResourceSetListener, I
}
@Override
- public Command transactionAboutToCommit(ResourceSetChangeEvent event)
- throws RollbackException {
+ public Command transactionAboutToCommit(ResourceSetChangeEvent event) throws RollbackException {
return null;
}
@@ -173,7 +178,7 @@ public class SuperClassListener implements IPartListener, ResourceSetListener, I
public boolean isPostcommitOnly() {
return true;
}
-
+
// ---
// IXtextModelListener
// ---
diff --git a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/support/DiagramAccessBase.java b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/support/DiagramAccessBase.java
index d380b3c07..00cab7af3 100644
--- a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/support/DiagramAccessBase.java
+++ b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/support/DiagramAccessBase.java
@@ -59,23 +59,30 @@ public abstract class DiagramAccessBase {
@Inject
private IResourceSetProvider resourceSetProvider;
- /**
- *
- */
public DiagramAccessBase() {
super();
injectMembers();
}
+
+ /**
+ * Load diagram based on rootObjects resource URI
+ */
+ public Diagram getDiagram(EObject rootObject){
+ ResourceSet rs = newResourceSet(EcoreUtil.getURI(rootObject));
+
+ return getDiagram(rootObject, rs);
+ }
- public Diagram getDiagram(EObject rootObject) {
+ /**
+ * Load diagram based on rootObjects resource URI into given resourceSet
+ */
+ public Diagram getDiagram(EObject rootObject, ResourceSet rs) {
Resource resource = rootObject.eResource();
if (resource==null)
return null;
URI uri = resource.getURI();
- ResourceSet rs = newResourceSet(uri);
-
URI diagURI = null;
boolean exists = false;
if (uri.isPlatformResource()) {
@@ -144,33 +151,34 @@ public abstract class DiagramAccessBase {
}
private ResourceSet newResourceSet(URI uri) {
- ResourceSet rs;
if (uri.isPlatformResource()) {
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uri.toPlatformString(true)));
IProject project = file.getProject();
- rs = resourceSetProvider.get(project);
- }
- else {
- rs = new XtextResourceSet();
+ return resourceSetProvider.get(project);
}
- return rs;
+
+ return new XtextResourceSet();
}
private void populateDiagram(EObject rootObject, Diagram diagram) {
- ResourceSet rs = newResourceSet(rootObject.eResource().getURI());
+ ResourceSet rs = diagram.eResource().getResourceSet();
+
+ // IMPORTANT STEP: this resolves the object and creates a new resource in the resource set
+ URI boUri = EcoreUtil.getURI(rootObject);
+ rootObject = rs.getEObject(boUri, true);
+ boolean editingDomainOwner = false;
TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(rs);
if (editingDomain == null) {
// Not yet existing, create one
editingDomain = TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain(rs);
+ editingDomainOwner = true;
}
-
- // IMPORTANT STEP: this resolves the object and creates a new resource in the resource set
- URI boUri = EcoreUtil.getURI(rootObject);
- rootObject = editingDomain.getResourceSet().getEObject(boUri, true);
editingDomain.getCommandStack().execute(getInitialCommand(rootObject, diagram, editingDomain));
- editingDomain.dispose();
+ if(editingDomainOwner){
+ editingDomain.dispose();
+ }
}
/**
@@ -178,11 +186,13 @@ public abstract class DiagramAccessBase {
*/
private void updateDiagram(Diagram diagram, boolean doSave) {
ResourceSet rs = diagram.eResource().getResourceSet();
+ boolean editingDomainOwner = false;
TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(rs);
try {
if (editingDomain == null) {
// Not yet existing, create one and start a write transaction
editingDomain = TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain(rs);
+ editingDomainOwner = true;
((TransactionalEditingDomainImpl)editingDomain).startTransaction(false, null);
}
@@ -202,7 +212,9 @@ public abstract class DiagramAccessBase {
catch (InterruptedException e) {
}
- editingDomain.dispose();
+ if(editingDomainOwner){
+ editingDomain.dispose();
+ }
}
public DiagramEditorBase findDiagramEditor(EObject rootObject) {

Back to the top