diff options
author | Nathalie Lepine | 2014-03-07 10:13:29 +0000 |
---|---|---|
committer | Nathalie Lepine | 2014-03-07 10:13:29 +0000 |
commit | 2e096ff40d4e89b292e663c42ff6c60bf2cb81cd (patch) | |
tree | 1922033b533b1e57287749ed79ce243bbf0ff20f | |
parent | e9e50466374a5c38d8ca1f01793597d5dd0d11b1 (diff) | |
download | org.eclipse.eef-2e096ff40d4e89b292e663c42ff6c60bf2cb81cd.tar.gz org.eclipse.eef-2e096ff40d4e89b292e663c42ff6c60bf2cb81cd.tar.xz org.eclipse.eef-2e096ff40d4e89b292e663c42ff6c60bf2cb81cd.zip |
updated eef editor/view synchro
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); + } } /** |