Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathalie Lepine2014-03-07 10:13:29 +0000
committerNathalie Lepine2014-03-07 10:13:29 +0000
commit2e096ff40d4e89b292e663c42ff6c60bf2cb81cd (patch)
tree1922033b533b1e57287749ed79ce243bbf0ff20f
parente9e50466374a5c38d8ca1f01793597d5dd0d11b1 (diff)
downloadorg.eclipse.eef-2e096ff40d4e89b292e663c42ff6c60bf2cb81cd.tar.gz
org.eclipse.eef-2e096ff40d4e89b292e663c42ff6c60bf2cb81cd.tar.xz
org.eclipse.eef-2e096ff40d4e89b292e663c42ff6c60bf2cb81cd.zip
updated eef editor/view synchro
-rw-r--r--plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/editor/EEFReflectiveEditor.java2
-rw-r--r--plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/EEFReflectiveView.java404
-rw-r--r--plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/listener/EEFViewPartListener.java8
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/internal/binding/PropertiesBindingHandlerImpl.java47
-rw-r--r--plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/notify/AbstractModelChangesNotifier.java4
5 files changed, 401 insertions, 64 deletions
diff --git a/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/editor/EEFReflectiveEditor.java b/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/editor/EEFReflectiveEditor.java
index 4c19727dd..9f4f1c1ab 100644
--- a/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/editor/EEFReflectiveEditor.java
+++ b/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/editor/EEFReflectiveEditor.java
@@ -781,7 +781,7 @@ public class EEFReflectiveEditor extends FormEditor implements IEditingDomainPro
public void run() {
if (PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null && PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
final EEFReflectiveView eefView = (EEFReflectiveView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(EEFReflectiveView.ID);
- if (eefView != null) {
+ if (eefView != null && !getEditingDomainForOtherModel().equals(eefView.getEditingDomain())) {
eefView.refresh();
}
}
diff --git a/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/EEFReflectiveView.java b/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/EEFReflectiveView.java
index 1462c4a03..63d43d8a3 100644
--- a/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/EEFReflectiveView.java
+++ b/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/EEFReflectiveView.java
@@ -12,8 +12,9 @@ package org.eclipse.emf.eef.view;
import java.util.List;
-import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
@@ -23,7 +24,6 @@ import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EContentAdapter;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
@@ -41,13 +41,17 @@ import org.eclipse.emf.eef.editor.internal.services.SelectionService;
import org.eclipse.emf.eef.editor.internal.services.ViewerService;
import org.eclipse.emf.eef.runtime.binding.BindingHandlerProvider;
import org.eclipse.emf.eef.runtime.binding.PropertiesBindingHandler;
+import org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent;
import org.eclipse.emf.eef.runtime.binding.settings.EEFBindingSettings;
import org.eclipse.emf.eef.runtime.binding.settings.EEFBindingSettingsProvider;
import org.eclipse.emf.eef.runtime.context.EditingContextFactoryProvider;
-import org.eclipse.emf.eef.runtime.editingModel.presentation.util.EditingModelEditorResourceSet;
+import org.eclipse.emf.eef.runtime.context.PropertiesEditingContext;
import org.eclipse.emf.eef.runtime.editingModel.provider.EditingModelItemProviderAdapterFactory;
import org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl;
import org.eclipse.emf.eef.runtime.internal.context.EObjectPropertiesEditingContext;
+import org.eclipse.emf.eef.runtime.notify.PropertiesEditingEvent;
+import org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicy;
+import org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicyProvider;
import org.eclipse.emf.eef.runtime.ui.swt.EEFRuntimeUISWT;
import org.eclipse.emf.eef.runtime.ui.swt.EEFSWTConstants;
import org.eclipse.emf.eef.runtime.ui.swt.e3.E3EEFRuntimeUIPlatformPlugin;
@@ -56,7 +60,13 @@ import org.eclipse.emf.eef.runtime.ui.swt.resources.ImageManager;
import org.eclipse.emf.eef.runtime.ui.swt.viewer.EEFContentProvider;
import org.eclipse.emf.eef.runtime.ui.swt.viewer.EEFViewer;
import org.eclipse.emf.eef.runtime.util.EEFEditingService;
+import org.eclipse.emf.eef.runtime.util.EEFEditingServiceProvider;
import org.eclipse.emf.eef.runtime.util.EMFServiceProvider;
+import org.eclipse.emf.eef.runtime.view.lock.EEFLockManager;
+import org.eclipse.emf.eef.runtime.view.lock.EEFLockManagerProvider;
+import org.eclipse.emf.eef.runtime.view.lock.policies.EEFLockEvent;
+import org.eclipse.emf.eef.runtime.view.lock.policies.EEFLockPolicyFactoryProvider;
+import org.eclipse.emf.eef.runtime.view.notify.EEFNotifierProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
@@ -83,7 +93,10 @@ import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.part.ViewPart;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+import com.google.common.base.Function;
import com.google.common.collect.Lists;
/**
@@ -119,6 +132,8 @@ public class EEFReflectiveView extends ViewPart {
private SelectionBroker selectionBroker;
+ private ToolItem load;
+
/**
* Constructor.
*/
@@ -134,18 +149,6 @@ public class EEFReflectiveView extends ViewPart {
adapterFactory.addAdapterFactory(new EditingModelItemProviderAdapterFactory());
adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
- editingDomain = new AdapterFactoryEditingDomain(adapterFactory, new BasicCommandStack(), new EditingModelEditorResourceSet() {
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.edit.domain.IEditingDomainProvider#getEditingDomain()
- */
- public EditingDomain getEditingDomain() {
- return editingDomain;
- }
-
- });
}
/**
@@ -179,23 +182,6 @@ public class EEFReflectiveView extends ViewPart {
refreshPageLayout();
}
});
- editingDomain.getResourceSet().eAdapters().add(new EContentAdapter() {
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
- */
- @Override
- public void notifyChanged(Notification notification) {
- if ((notification.getNotifier() instanceof ResourceSet || notification.getNotifier() instanceof Resource) && (notification.getEventType() == Notification.ADD || notification.getEventType() == Notification.REMOVE)) {
- super.notifyChanged(notification);
- modelViewer.getViewer().refresh();
- bindingPreviewViewer.refresh();
- }
- }
-
- });
if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
@@ -239,10 +225,10 @@ public class EEFReflectiveView extends ViewPart {
createModelViewer(toolkit, modelContainer);
modelSection.setClient(modelContainer);
ToolBar actions = new ToolBar(modelSection, SWT.NONE);
- ToolItem load = new ToolItem(actions, SWT.PUSH);
+ load = new ToolItem(actions, SWT.PUSH);
load.setImage(imageManager.getImage(EEFRuntimeUISWT.getResourceLocator(), "Load"));
load.setToolTipText("Load a model in the editor resources");
- load.addSelectionListener(new LoadSelectionAdapter(editingDomain));
+ load.addSelectionListener(new LoadSelectionAdapter(this));
modelSection.setTextClient(actions);
return modelSection;
@@ -347,8 +333,7 @@ public class EEFReflectiveView extends ViewPart {
return false;
}
});
-
- modelViewer.getViewer().setInput(editingDomain.getResourceSet());
+ setInput(editingDomain);
}
private void createPreviewSectionContents(FormToolkit toolkit, Composite previewContainer) {
@@ -399,14 +384,17 @@ public class EEFReflectiveView extends ViewPart {
private static class LoadSelectionAdapter extends SelectionAdapter {
private ExtendedLoadResourceAction action;
+ private EEFReflectiveView view;
/**
* @param domain
* the {@link EditingDomain} to load.
*/
- public LoadSelectionAdapter(EditingDomain domain) {
+ public LoadSelectionAdapter(EEFReflectiveView view) {
+ this.view = view;
this.action = new ExtendedLoadResourceAction();
- action.setEditingDomain(domain);
+ this.view = view;
+ action.setEditingDomain(view.getEditingDomain());
}
/**
@@ -416,6 +404,18 @@ public class EEFReflectiveView extends ViewPart {
*/
@Override
public void widgetSelected(SelectionEvent e) {
+ if (view.getEditingDomain() == null) {
+ if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
+ IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ if (activeEditor instanceof EEFReflectiveEditor) {
+ view.setInput(((EEFReflectiveEditor) activeEditor).getEditingDomainForOtherModel());
+ action.setEditingDomain(((EEFReflectiveEditor) activeEditor).getEditingDomainForOtherModel());
+ }
+ }
+ }
+ if (!view.getEditingDomain().equals(action.getEditingDomain())) {
+ action.setEditingDomain(view.getEditingDomain());
+ }
action.run();
}
@@ -444,10 +444,7 @@ public class EEFReflectiveView extends ViewPart {
EObject selection = selectionService.unwrapSelection(event.getSelection());
if (selection != null) {
final EObjectPropertiesEditingContext propertiesEditingContext = (EObjectPropertiesEditingContext) contextFactoryProvider.getEditingContextFactory(selection).createPropertiesEditingContext(adapterFactory, selection);
-
propertiesEditingContext.setBindingManagerProvider(getBindingHandlerProvider(propertiesEditingContext));
-
- // propertiesEditingContext.getEditingComponent();
propertiesEditingContext.getOptions().setOption(EEFSWTConstants.FORM_TOOLKIT, toolkit);
bindingPreviewViewer.setInput(propertiesEditingContext);
}
@@ -472,13 +469,38 @@ public class EEFReflectiveView extends ViewPart {
if (editingDomain == null) {
setEditingDomain(null);
modelViewer.getViewer().setInput(new ResourceSetImpl());
- bindingPreviewViewer.setInput(null);
+ if (bindingPreviewViewer != null) {
+ bindingPreviewViewer.setInput(null);
+ }
} else {
setEditingDomain(editingDomain);
modelViewer.getViewer().setInput(editingDomain.getResourceSet());
+ getEditingDomain().getResourceSet().eAdapters().add(new EContentAdapter() {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ if ((notification.getNotifier() instanceof ResourceSet || notification.getNotifier() instanceof Resource) && (notification.getEventType() == Notification.ADD || notification.getEventType() == Notification.REMOVE)) {
+ super.notifyChanged(notification);
+ modelViewer.getViewer().refresh();
+ bindingPreviewViewer.refresh();
+ }
+ }
+
+ });
+ if (bindingPreviewViewer != null) {
+ bindingPreviewViewer.setInput(null);
+ }
}
}
+ /**
+ * Refresh
+ */
public void refresh() {
bindingPreviewViewer.refresh();
}
@@ -526,9 +548,6 @@ public class EEFReflectiveView extends ViewPart {
*/
public DelegatingBindingHandler(EMFServiceProvider emfServiceProvider, PropertiesBindingHandlerImpl propertiesBindingHandler) {
this.propertiesBindingHandler = propertiesBindingHandler;
- setEMFServiceProvider(emfServiceProvider);
- setLockPolicyFactoryProvider(propertiesBindingHandler.getLockPolicyFactoryProvider());
- setEventAdmin(propertiesBindingHandler.getEventAdmin());
}
/**
@@ -543,6 +562,299 @@ public class EEFReflectiveView extends ViewPart {
return bindingSettingsProvider;
}
+ /**
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#getEventAdmin()
+ */
+ public EventAdmin getEventAdmin() {
+ return propertiesBindingHandler.getEventAdmin();
+ }
+
+ /**
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#getEMFServiceProvider()
+ */
+ public EMFServiceProvider getEMFServiceProvider() {
+ return propertiesBindingHandler.getEMFServiceProvider();
+ }
+
+ /**
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#getEEFEditingServiceProvider()
+ */
+ public EEFEditingServiceProvider getEEFEditingServiceProvider() {
+ return propertiesBindingHandler.getEEFEditingServiceProvider();
+ }
+
+ /**
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#getLockPolicyFactoryProvider()
+ */
+ public EEFLockPolicyFactoryProvider getLockPolicyFactoryProvider() {
+ return propertiesBindingHandler.getLockPolicyFactoryProvider();
+ }
+
+ /**
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#getLockManagerProvider()
+ */
+ public EEFLockManagerProvider getLockManagerProvider() {
+ return propertiesBindingHandler.getLockManagerProvider();
+ }
+
+ /**
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#getPolicyProvider()
+ */
+ public PropertiesEditingPolicyProvider getPolicyProvider() {
+ return propertiesBindingHandler.getPolicyProvider();
+ }
+
+ /**
+ * @param editingContext
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#createComponent(org.eclipse.emf.eef.runtime.context.PropertiesEditingContext)
+ */
+ public PropertiesEditingComponent createComponent(PropertiesEditingContext editingContext) {
+ return super.createComponent(editingContext);
+ }
+
+ /**
+ * @param component
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#disposeComponent(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent)
+ */
+ public void disposeComponent(PropertiesEditingComponent component) {
+ super.disposeComponent(component);
+ }
+
+ /**
+ * @param view
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#getLockManager(java.lang.Object)
+ */
+ public EEFLockManager getLockManager(Object view) {
+ return propertiesBindingHandler.getLockManager(view);
+ }
+
+ /**
+ * @param editingComponent
+ * @param event
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#delayedApplyingPropertiesChanged(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent,
+ * org.eclipse.emf.eef.runtime.notify.PropertiesEditingEvent)
+ */
+ public void delayedApplyingPropertiesChanged(PropertiesEditingComponent editingComponent, PropertiesEditingEvent event) {
+ super.delayedApplyingPropertiesChanged(editingComponent, event);
+ }
+
+ /**
+ * @param obj
+ * @return
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ /**
+ * @param editingComponent
+ * @param editingEvent
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#firePropertiesChanged(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent,
+ * org.eclipse.emf.eef.runtime.notify.PropertiesEditingEvent)
+ */
+ public void firePropertiesChanged(PropertiesEditingComponent editingComponent, PropertiesEditingEvent editingEvent) {
+ super.firePropertiesChanged(editingComponent, editingEvent);
+ }
+
+ /**
+ * @param editingComponent
+ * @param lockEvent
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#fireLockChanged(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent,
+ * org.eclipse.emf.eef.runtime.view.lock.policies.EEFLockEvent)
+ */
+ public void fireLockChanged(PropertiesEditingComponent editingComponent, EEFLockEvent lockEvent) {
+ super.fireLockChanged(editingComponent, lockEvent);
+ }
+
+ /**
+ * @param editingComponent
+ * @param editingPolicy
+ * @param policyEditingContext
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#execute(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent,
+ * org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicy,
+ * org.eclipse.emf.eef.runtime.context.PropertiesEditingContext)
+ */
+ public void execute(PropertiesEditingComponent editingComponent, PropertiesEditingPolicy editingPolicy, PropertiesEditingContext policyEditingContext) {
+ super.execute(editingComponent, editingPolicy, policyEditingContext);
+ }
+
+ /**
+ * @param editingComponent
+ * @param function
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#executeOnViews(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent,
+ * com.google.common.base.Function)
+ */
+ public void executeOnViews(PropertiesEditingComponent editingComponent, Function<Object, Void> function) {
+ super.executeOnViews(editingComponent, function);
+ }
+
+ /**
+ * @param event
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#handleEvent(org.osgi.service.event.Event)
+ */
+ public void handleEvent(Event event) {
+ super.handleEvent(event);
+ }
+
+ /**
+ * @return
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ /**
+ * @param eventAdmin
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setEventAdmin(org.osgi.service.event.EventAdmin)
+ */
+ public void setEventAdmin(EventAdmin eventAdmin) {
+ propertiesBindingHandler.setEventAdmin(eventAdmin);
+ }
+
+ /**
+ * @param bindingSettingsProvider
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setBindingSettingsProvider(org.eclipse.emf.eef.runtime.binding.settings.EEFBindingSettingsProvider)
+ */
+ public void setBindingSettingsProvider(EEFBindingSettingsProvider bindingSettingsProvider) {
+ propertiesBindingHandler.setBindingSettingsProvider(bindingSettingsProvider);
+ }
+
+ /**
+ * @param editingPolicyProvider
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setEditingPolicyProvider(org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicyProvider)
+ */
+ public void setEditingPolicyProvider(PropertiesEditingPolicyProvider editingPolicyProvider) {
+ propertiesBindingHandler.setEditingPolicyProvider(editingPolicyProvider);
+ }
+
+ /**
+ * @param emfServiceProvider
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setEMFServiceProvider(org.eclipse.emf.eef.runtime.util.EMFServiceProvider)
+ */
+ public void setEMFServiceProvider(EMFServiceProvider emfServiceProvider) {
+ propertiesBindingHandler.setEMFServiceProvider(emfServiceProvider);
+ }
+
+ /**
+ * @param eefEditingServiceProvider
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setEEFEditingServiceProvider(org.eclipse.emf.eef.runtime.util.EEFEditingServiceProvider)
+ */
+ public void setEEFEditingServiceProvider(EEFEditingServiceProvider eefEditingServiceProvider) {
+ propertiesBindingHandler.setEEFEditingServiceProvider(eefEditingServiceProvider);
+ }
+
+ /**
+ * @param eefNotifierProvider
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setEEFNotifierProvider(org.eclipse.emf.eef.runtime.view.notify.EEFNotifierProvider)
+ */
+ public void setEEFNotifierProvider(EEFNotifierProvider eefNotifierProvider) {
+ propertiesBindingHandler.setEEFNotifierProvider(eefNotifierProvider);
+ }
+
+ /**
+ * @param lockPolicyFactoryProvider
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setLockPolicyFactoryProvider(org.eclipse.emf.eef.runtime.view.lock.policies.EEFLockPolicyFactoryProvider)
+ */
+ public void setLockPolicyFactoryProvider(EEFLockPolicyFactoryProvider lockPolicyFactoryProvider) {
+ propertiesBindingHandler.setLockPolicyFactoryProvider(lockPolicyFactoryProvider);
+ }
+
+ /**
+ * @param lockManagerProvider
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#setLockManagerProvider(org.eclipse.emf.eef.runtime.view.lock.EEFLockManagerProvider)
+ */
+ public void setLockManagerProvider(EEFLockManagerProvider lockManagerProvider) {
+ propertiesBindingHandler.setLockManagerProvider(lockManagerProvider);
+ }
+
+ /**
+ * @param element
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#serviceFor(org.eclipse.emf.ecore.EObject)
+ */
+ public boolean serviceFor(EObject element) {
+ return propertiesBindingHandler.serviceFor(element);
+ }
+
+ /**
+ * @param editingComponent
+ * @param msg
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#notifyModelChanged(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent,
+ * org.eclipse.emf.common.notify.Notification)
+ */
+ public void notifyModelChanged(PropertiesEditingComponent editingComponent, Notification msg) {
+ super.notifyModelChanged(editingComponent, msg);
+ }
+
+ /**
+ * @param editingComponent
+ * @param msg
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#notifySettingsChanged(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent,
+ * org.eclipse.emf.common.notify.Notification)
+ */
+ public void notifySettingsChanged(PropertiesEditingComponent editingComponent, Notification msg) {
+ super.notifySettingsChanged(editingComponent, msg);
+ }
+
+ /**
+ * @param editingComponent
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#initLockPolicies(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent)
+ */
+ public void initLockPolicies(PropertiesEditingComponent editingComponent) {
+ super.initLockPolicies(editingComponent);
+ }
+
+ /**
+ * @param notifier
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#initModelChangesNotifierIfNeeded(org.eclipse.emf.common.notify.Notifier)
+ */
+ public void initModelChangesNotifierIfNeeded(Notifier notifier) {
+ super.initModelChangesNotifierIfNeeded(notifier);
+ }
+
+ /**
+ * @param editingComponent
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#registerEditingComponentAsEventHandler(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent)
+ */
+ public void registerEditingComponentAsEventHandler(PropertiesEditingComponent editingComponent) {
+ super.registerEditingComponentAsEventHandler(editingComponent);
+ }
+
+ /**
+ * @return
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return super.toString();
+ }
+
+ /**
+ * @param editingComponent
+ * @return
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#validate(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent)
+ */
+ public Diagnostic validate(PropertiesEditingComponent editingComponent) {
+ return super.validate(editingComponent);
+ }
+
+ /**
+ * @param editingComponent
+ * @see org.eclipse.emf.eef.runtime.internal.binding.PropertiesBindingHandlerImpl#unregisterEditingComponent(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent)
+ */
+ public void unregisterEditingComponent(PropertiesEditingComponent editingComponent) {
+ super.unregisterEditingComponent(editingComponent);
+ }
+
}
private class DelegatingBindingSettingsProvider implements EEFBindingSettingsProvider {
@@ -573,4 +885,4 @@ public class EEFReflectiveView extends ViewPart {
}
-} \ No newline at end of file
+}
diff --git a/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/listener/EEFViewPartListener.java b/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/listener/EEFViewPartListener.java
index 9cb83630e..34a02e07d 100644
--- a/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/listener/EEFViewPartListener.java
+++ b/plugins/org.eclipse.emf.eef.editor/src/org/eclipse/emf/eef/view/listener/EEFViewPartListener.java
@@ -50,7 +50,9 @@ public class EEFViewPartListener implements IPartListener {
public void partClosed(IWorkbenchPart part) {
if (part instanceof EEFReflectiveEditor && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null && PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(EEFReflectiveView.ID);
- if (view instanceof EEFReflectiveView) {
+ IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ boolean isEEFActiveEditor = activeEditor instanceof EEFReflectiveEditor && !((EEFReflectiveView) view).getEditingDomain().equals(((EEFReflectiveEditor) activeEditor).getEditingDomainForOtherModel());
+ if (view instanceof EEFReflectiveView && (isEEFActiveEditor || activeEditor == null)) {
((EEFReflectiveView) view).setInput(null);
}
}
@@ -82,7 +84,7 @@ public class EEFViewPartListener implements IPartListener {
IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (activeEditor instanceof EEFReflectiveEditor) {
EditingDomain domain = ((EEFReflectiveEditor) activeEditor).getEditingDomainForOtherModel();
- if (domain != null && !domain.getResourceSet().getResources().isEmpty() && !domain.equals(view.getEditingDomain())) {
+ if (domain != null && !domain.equals(view.getEditingDomain())) {
view.setInput(domain);
}
}
@@ -91,7 +93,7 @@ public class EEFViewPartListener implements IPartListener {
IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(EEFReflectiveView.ID);
if (view instanceof EEFReflectiveView) {
EditingDomain domain = editor.getEditingDomainForOtherModel();
- if (domain != null && !domain.getResourceSet().getResources().isEmpty() && !domain.equals(((EEFReflectiveView) view).getEditingDomain())) {
+ if (domain != null && !domain.equals(((EEFReflectiveView) view).getEditingDomain())) {
((EEFReflectiveView) view).setInput(domain);
}
}
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/internal/binding/PropertiesBindingHandlerImpl.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/internal/binding/PropertiesBindingHandlerImpl.java
index 80fbd64c4..434bef565 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/internal/binding/PropertiesBindingHandlerImpl.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/internal/binding/PropertiesBindingHandlerImpl.java
@@ -248,7 +248,7 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
eObject = ((ReflectivePropertiesEditingContext) editingContext).getEObject();
}
if (eObject != null && eObject.eClass() != null) {
- EMFService emfService = emfServiceProvider.getEMFService(eObject.eClass().getEPackage());
+ EMFService emfService = getEMFServiceProvider().getEMFService(eObject.eClass().getEPackage());
Notifier highestNotifier = emfService.highestNotifier(eObject);
initModelChangesNotifierIfNeeded(highestNotifier);
if (editingContext instanceof EObjectPropertiesEditingContext) {
@@ -302,7 +302,7 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
* @see org.eclipse.emf.eef.runtime.binding.PropertiesBindingHandler#getLockManager(java.lang.Object)
*/
public EEFLockManager getLockManager(Object view) {
- return lockManagerProvider.getLockManager(view);
+ return getLockManagerProvider().getLockManager(view);
}
/**
@@ -318,20 +318,20 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
for (Object view : editingComponent.getViews()) {
if (view != null) {
View viewDescriptor = editingComponent.getDescriptorForView(view);
- ViewHandler<?> viewHandler = viewHandlerProvider.getViewHandler(viewDescriptor);
+ ViewHandler<?> viewHandler = getViewHandlerProvider().getViewHandler(viewDescriptor);
viewHandler.refreshGraphical(editingComponent, view);
}
}
} else if (msg.getFeature() instanceof EStructuralFeature && editingModel != null) {
EObject source = editingComponent.getEObject();
- EMFService service = emfServiceProvider.getEMFService(source.eClass().getEPackage());
+ EMFService service = getEMFServiceProvider().getEMFService(source.eClass().getEPackage());
EStructuralFeature structuralFeature = service.mapFeature(source.eClass(), (EStructuralFeature) msg.getFeature());
EClassBinding binding = editingModel.binding(source);
Object propertyEditor = binding.propertyEditor(source, structuralFeature, editingComponent.getEditingContext().getOptions().autowire());
for (Object view : editingComponent.getViews()) {
if (view != null) {
- ViewHandler<?> viewHandler = viewHandlerProvider.getViewHandler(editingComponent.getDescriptorForView(view));
+ ViewHandler<?> viewHandler = getViewHandlerProvider().getViewHandler(editingComponent.getDescriptorForView(view));
switch (msg.getEventType()) {
case Notification.SET:
try {
@@ -408,7 +408,7 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
EditingContextFactoryProvider contextFactoryProvider = editingContext.getContextFactoryProvider();
PropertiesEditingContextFactory service = contextFactoryProvider.getEditingContextFactory(editingComponent.getEObject());
SemanticPropertiesEditingContext semanticEditingContext = (SemanticPropertiesEditingContext) service.createSemanticPropertiesEditingContext(editingContext, editingEvent);
- PropertiesEditingPolicy editingPolicy = editingPolicyProvider.getEditingPolicy(semanticEditingContext);
+ PropertiesEditingPolicy editingPolicy = getEditingPolicyProvider().getEditingPolicy(semanticEditingContext);
if (editingEvent.delayedChanges()) {
delayedApplyingPropertiesChanged(editingComponent, editingEvent);
} else {
@@ -444,7 +444,7 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
* @see com.google.common.base.Function#apply(java.lang.Object)
*/
public Void apply(Object view) {
- lockManagerProvider.getLockManager(view).fireLockChange(editingComponent, view, lockEvent);
+ getLockManagerProvider().getLockManager(view).fireLockChange(editingComponent, view, lockEvent);
return null;
}
@@ -490,7 +490,7 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
*/
public void initLockPolicies(PropertiesEditingComponent editingComponent) {
List<EEFLockPolicy> result = Lists.newArrayList();
- Collection<EEFLockPolicyFactory> factories = lockPolicyFactoryProvider.getLockPolicyFactories(editingComponent.getEObject());
+ Collection<EEFLockPolicyFactory> factories = getLockPolicyFactoryProvider().getLockPolicyFactories(editingComponent.getEObject());
for (EEFLockPolicyFactory factory : factories) {
EEFLockPolicy lockPolicy = factory.createLockPolicy();
if (editingComponent.enableLockPolicy(lockPolicy)) {
@@ -527,7 +527,7 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
notification = new ValidationBasedNotification(valueDiagnostic);
}
for (Object view : editingComponent.getViews()) {
- EEFNotifier notifier = eefNotifierProvider.getNotifier(view);
+ EEFNotifier notifier = getEEFNotifierProvider().getNotifier(view);
if (notifier != null) {
notifier.notify(view, notification);
}
@@ -535,14 +535,14 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
} else {
if (notifyEditor) {
for (Object view : editingComponent.getViews()) {
- EEFNotifier notifier = eefNotifierProvider.getNotifier(view);
+ EEFNotifier notifier = getEEFNotifierProvider().getNotifier(view);
if (notifier != null) {
notifier.clearEditorNotification(view, editingEvent.getAffectedEditor());
}
}
} else {
for (Object view : editingComponent.getViews()) {
- EEFNotifier notifier = eefNotifierProvider.getNotifier(view);
+ EEFNotifier notifier = getEEFNotifierProvider().getNotifier(view);
if (notifier != null) {
notifier.clearViewNotification(view);
}
@@ -573,7 +573,7 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
*/
private Diagnostic validateValue(PropertiesEditingComponent editingComponent, PropertiesEditingEvent editingEvent) {
Diagnostic ret = Diagnostic.OK_INSTANCE;
- EStructuralFeature feature = eefEditingServiceProvider.getEditingService(editingComponent.getEObject()).featureFromEditor(editingComponent.getEditingContext(), editingEvent.getAffectedEditor());
+ EStructuralFeature feature = getEEFEditingServiceProvider().getEditingService(editingComponent.getEObject()).featureFromEditor(editingComponent.getEditingContext(), editingEvent.getAffectedEditor());
// At this point, I consider that only binding with EStructuralFeature
// are able to validate a editing value
// TODO: Skipped test on EEnum to process later.
@@ -638,12 +638,33 @@ public class PropertiesBindingHandlerImpl implements PropertiesBindingHandler, E
public void initModelChangesNotifierIfNeeded(Notifier notifier) {
Adapter existingAdapter = EcoreUtil.getExistingAdapter(notifier, ModelChangesNotifier.class);
if (existingAdapter == null) {
- notifier.eAdapters().add(new ModelChangesNotifierImpl(eventAdmin));
+ notifier.eAdapters().add(new ModelChangesNotifierImpl(getEventAdmin()));
}
}
/**
+ * @return the viewHandlerProvider
+ */
+ public ViewHandlerProvider getViewHandlerProvider() {
+ return viewHandlerProvider;
+ }
+
+ /**
+ * @return the editingPolicyProvider
+ */
+ public PropertiesEditingPolicyProvider getEditingPolicyProvider() {
+ return editingPolicyProvider;
+ }
+
+ /**
+ * @return the eefNotifierProvider
+ */
+ public EEFNotifierProvider getEEFNotifierProvider() {
+ return eefNotifierProvider;
+ }
+
+ /**
* {@inheritDoc}
*
* @see org.eclipse.emf.eef.runtime.notify.ModelChangesNotificationManager#registerEditingComponentAsEventHandler(org.eclipse.emf.eef.runtime.binding.PropertiesEditingComponent)
diff --git a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/notify/AbstractModelChangesNotifier.java b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/notify/AbstractModelChangesNotifier.java
index 5b7f67157..928e7f7db 100644
--- a/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/notify/AbstractModelChangesNotifier.java
+++ b/plugins/org.eclipse.emf.eef.runtime/src/org/eclipse/emf/eef/runtime/notify/AbstractModelChangesNotifier.java
@@ -62,7 +62,9 @@ public abstract class AbstractModelChangesNotifier extends EContentAdapter imple
Map<String, Object> properties = Maps.newHashMap();
properties.put("notification", notification);
Event event = new Event(topic, properties);
- eventAdmin.postEvent(event);
+ if (eventAdmin != null) {
+ eventAdmin.postEvent(event);
+ }
}
/**

Back to the top