Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorglefur2010-11-18 14:29:36 +0000
committerglefur2010-11-18 14:29:36 +0000
commit6f02870366f27c6fda9b044f050d6c0c075aa182 (patch)
tree98664aa01a47bcaaa79ee7c09f5781fd946e7228 /plugins
parent49296e0058529dcf3034e0246b9834b03b858121 (diff)
downloadorg.eclipse.eef-6f02870366f27c6fda9b044f050d6c0c075aa182.tar.gz
org.eclipse.eef-6f02870366f27c6fda9b044f050d6c0c075aa182.tar.xz
org.eclipse.eef-6f02870366f27c6fda9b044f050d6c0c075aa182.zip
FIXED: wizard editing domain shared bug
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/SinglePartPropertiesEditingComponent.java5
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/StandardPropertiesEditionComponent.java8
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/policies/impl/CreateEditingPolicy.java17
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFDetailsPage.java3
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFStandardFormPage.java3
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/viewers/PropertiesEditionContentProvider.java26
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/wizards/PropertiesEditionWizard.java5
7 files changed, 49 insertions, 18 deletions
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/SinglePartPropertiesEditingComponent.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/SinglePartPropertiesEditingComponent.java
index 03f6acbaa..39d00e851 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/SinglePartPropertiesEditingComponent.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/SinglePartPropertiesEditingComponent.java
@@ -20,11 +20,6 @@ import org.eclipse.emf.eef.runtime.impl.services.PropertiesEditionPartProviderSe
*
*/
public abstract class SinglePartPropertiesEditingComponent extends StandardPropertiesEditionComponent {
-
- /**
- * Editing context
- */
- protected PropertiesEditingContext editingContext;
/**
* EObject to edit
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/StandardPropertiesEditionComponent.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/StandardPropertiesEditionComponent.java
index 4d90a1cb3..6b7622ba3 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/StandardPropertiesEditionComponent.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/impl/components/StandardPropertiesEditionComponent.java
@@ -27,6 +27,7 @@ import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionEvent;
import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener;
import org.eclipse.emf.eef.runtime.api.notify.PropertiesEditingSemanticLister;
import org.eclipse.emf.eef.runtime.api.parts.IPropertiesEditionPart;
+import org.eclipse.emf.eef.runtime.context.PropertiesEditingContext;
import org.eclipse.emf.eef.runtime.impl.command.StandardEditingCommand;
import org.eclipse.emf.eef.runtime.impl.notify.PropertiesValidationEditionEvent;
import org.eclipse.emf.eef.runtime.impl.utils.StringTools;
@@ -60,6 +61,11 @@ public abstract class StandardPropertiesEditionComponent implements IPropertiesE
* the job that will fire the property changed event
*/
protected FirePropertiesChangedJob firePropertiesChangedJob;
+
+ /**
+ * Editing context
+ */
+ protected PropertiesEditingContext editingContext;
/**
* the editing mode
@@ -83,7 +89,7 @@ public abstract class StandardPropertiesEditionComponent implements IPropertiesE
* int, org.eclipse.emf.ecore.EObject)
*/
public void initPart(Object key, int kind, EObject element) {
- this.initPart(key, kind, element, element.eResource().getResourceSet());
+ this.initPart(key, kind, element, editingContext.getResourceSet());
}
/**
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/policies/impl/CreateEditingPolicy.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/policies/impl/CreateEditingPolicy.java
index ab3a74280..5de73cd63 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/policies/impl/CreateEditingPolicy.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/policies/impl/CreateEditingPolicy.java
@@ -3,8 +3,11 @@
*/
package org.eclipse.emf.eef.runtime.policies.impl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.change.ChangeDescription;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.eef.runtime.context.impl.EReferencePropertiesEditionContext;
import org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicyWithResult;
import org.eclipse.emf.eef.runtime.ui.utils.EditingUtils;
@@ -33,13 +36,23 @@ public class CreateEditingPolicy implements PropertiesEditingPolicyWithResult {
* @see org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicy#execute()
*/
public void execute() {
- PropertiesEditionWizard wizard = new PropertiesEditionWizard(null, editionContext.getAdapterFactory(), editionContext.getEReference());
+ EClassifier eType = editionContext.getEReference().getEType();
+ PropertiesEditionWizard wizard;
+ if (eType instanceof EClass && ((EClass)eType).isAbstract()) {
+ wizard = new PropertiesEditionWizard(null, editionContext.getAdapterFactory(), editionContext.getEReference());
+ }
+ else {
+ EObject create = EcoreUtil.create((EClass) eType);
+ wizard = new PropertiesEditionWizard(editionContext, editionContext.getAdapterFactory(), create);
+ }
WizardDialog wDialog = new WizardDialog(EditingUtils.getShell(), wizard);
int executionResult = wDialog.open();
result = wizard.getEObject();
ChangeDescription change = editionContext.getChangeRecorder().endRecording();
- if (executionResult == Window.CANCEL)
+ if (executionResult == Window.CANCEL) {
change.applyAndReverse();
+ result = null;
+ }
}
/**
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFDetailsPage.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFDetailsPage.java
index 807332753..3b1d946a3 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFDetailsPage.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFDetailsPage.java
@@ -17,6 +17,7 @@ import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent;
import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionEvent;
import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener;
+import org.eclipse.emf.eef.runtime.context.impl.DomainPropertiesEditionContext;
import org.eclipse.emf.eef.runtime.ui.layout.EEFFormLayoutFactory;
import org.eclipse.emf.eef.runtime.ui.viewers.PropertiesEditionContentProvider;
import org.eclipse.emf.eef.runtime.ui.viewers.PropertiesEditionMessageManager;
@@ -94,7 +95,7 @@ public class EEFDetailsPage extends AbstractFormPart implements IDetailsPage, IP
if (eObject != null) {
if (viewer.getToolkit() == null)
viewer.setToolkit(toolkit);
- viewer.setInput(eObject);
+ viewer.setInput(new DomainPropertiesEditionContext(null, null, editingDomain, adapterFactory, eObject));
viewer.addPropertiesListener(this);
}
}
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFStandardFormPage.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFStandardFormPage.java
index 72e1603f8..c09d33214 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFStandardFormPage.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/editors/pages/EEFStandardFormPage.java
@@ -14,6 +14,7 @@ import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent;
+import org.eclipse.emf.eef.runtime.context.impl.DomainPropertiesEditionContext;
import org.eclipse.emf.eef.runtime.ui.layout.EEFFormLayoutFactory;
import org.eclipse.emf.eef.runtime.ui.viewers.PropertiesEditionContentProvider;
import org.eclipse.emf.eef.runtime.ui.viewers.PropertiesEditionViewer;
@@ -105,7 +106,7 @@ public class EEFStandardFormPage extends FormPage {
* the input of the page
*/
public void setInput(EObject newEObject) {
- viewer.setInput(newEObject);
+ viewer.setInput(new DomainPropertiesEditionContext(null, null, editingDomain, adapterFactory, newEObject));
}
/**
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/viewers/PropertiesEditionContentProvider.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/viewers/PropertiesEditionContentProvider.java
index b44122cb4..37e835590 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/viewers/PropertiesEditionContentProvider.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/viewers/PropertiesEditionContentProvider.java
@@ -19,6 +19,7 @@ import org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent;
import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionEvent;
import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener;
import org.eclipse.emf.eef.runtime.api.parts.IPropertiesEditionPart;
+import org.eclipse.emf.eef.runtime.context.PropertiesEditingContext;
import org.eclipse.emf.eef.runtime.context.impl.DomainPropertiesEditionContext;
import org.eclipse.emf.eef.runtime.context.impl.EObjectPropertiesEditionContext;
import org.eclipse.emf.eef.runtime.impl.services.PropertiesContextService;
@@ -82,18 +83,31 @@ public class PropertiesEditionContentProvider implements IStructuredContentProvi
PropertiesContextService.getInstance().pop();
propertiesEditionComponent.dispose();
}
- PropertiesEditingProvider propertiesEditionProvider = (PropertiesEditingProvider) adapterFactory.adapt((EObject)newInput, PropertiesEditingProvider.class);
- if (propertiesEditionProvider != null) {
+ EObject eObject = null;
+ PropertiesEditingContext context = null;
+ if (newInput instanceof EObject) {
+ eObject = (EObject)newInput;
if (mode == IPropertiesEditionComponent.LIVE_MODE) {
- this.propertiesEditionComponent = propertiesEditionProvider.getPropertiesEditingComponent(new DomainPropertiesEditionContext(null, null, editingDomain, adapterFactory, (EObject)newInput), mode);
- propertiesEditionComponent.setLiveEditingDomain(editingDomain);
+ context = new DomainPropertiesEditionContext(null, null, editingDomain, adapterFactory, eObject);
} else if (mode == IPropertiesEditionComponent.BATCH_MODE) {
- this.propertiesEditionComponent = propertiesEditionProvider.getPropertiesEditingComponent(new EObjectPropertiesEditionContext(null, null, (EObject)newInput, adapterFactory), mode);
+ context = new EObjectPropertiesEditionContext(null, null, eObject, adapterFactory);
+ }
+ } else if (newInput instanceof EObjectPropertiesEditionContext) {
+ context = (PropertiesEditingContext) newInput;
+ eObject = context.getEObject();
+ }
+ if (eObject != null) {
+ PropertiesEditingProvider propertiesEditionProvider = (PropertiesEditingProvider) adapterFactory.adapt(eObject, PropertiesEditingProvider.class);
+ if (propertiesEditionProvider != null) {
+ this.propertiesEditionComponent = propertiesEditionProvider.getPropertiesEditingComponent(context, mode);
+ if (mode == IPropertiesEditionComponent.LIVE_MODE) {
+ propertiesEditionComponent.setLiveEditingDomain(editingDomain);
+ }
}
}
// FIXME: find a better way to manage the context
- PropertiesContextService.getInstance().push((EObject)newInput, propertiesEditionComponent);
+ PropertiesContextService.getInstance().push(eObject, propertiesEditionComponent);
}
/**
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/wizards/PropertiesEditionWizard.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/wizards/PropertiesEditionWizard.java
index 6b4e796c9..59e5dd4f5 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/wizards/PropertiesEditionWizard.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/ui/wizards/PropertiesEditionWizard.java
@@ -27,6 +27,7 @@ import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionEvent;
import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener;
import org.eclipse.emf.eef.runtime.context.PropertiesEditingContext;
import org.eclipse.emf.eef.runtime.context.impl.DomainPropertiesEditionContext;
+import org.eclipse.emf.eef.runtime.context.impl.EObjectPropertiesEditionContext;
import org.eclipse.emf.eef.runtime.impl.services.PropertiesContextService;
import org.eclipse.emf.eef.runtime.impl.utils.EEFUtils;
import org.eclipse.emf.eef.runtime.ui.utils.EEFRuntimeUIMessages;
@@ -119,7 +120,7 @@ public class PropertiesEditionWizard extends Wizard {
* @return the updated EObject.
*/
public EObject getEObject() {
- return editingContext.getEObject();
+ return eObject != null ? eObject : editingContext.getEObject();
}
/**
@@ -277,7 +278,7 @@ public class PropertiesEditionWizard extends Wizard {
public void setInput(EObject eObject) {
this.setTitle(eObject.eClass().getName());
this.setDescription(EEFRuntimeUIMessages.PropertiesEditionWizard_main_page_description + eObject.eClass().getName());
- viewer.setInput(eObject);
+ viewer.setInput(new EObjectPropertiesEditionContext(editingContext, null, eObject, adapterFactory));
viewer.addPropertiesListener(this);
}

Back to the top