diff options
author | cbrun | 2015-08-25 15:21:38 +0000 |
---|---|---|
committer | cbrun | 2015-08-31 11:53:39 +0000 |
commit | 9a5022f50b039ca1ad976e5b98aeb2f7752d7fb4 (patch) | |
tree | b33554c8f296b93222ee831da8c3dba3e3eaea58 | |
parent | 5f9a6586707fa1a349c9494bb7da9628652007a0 (diff) | |
download | org.eclipse.sirius-9a5022f50b039ca1ad976e5b98aeb2f7752d7fb4.tar.gz org.eclipse.sirius-9a5022f50b039ca1ad976e5b98aeb2f7752d7fb4.tar.xz org.eclipse.sirius-9a5022f50b039ca1ad976e5b98aeb2f7752d7fb4.zip |
[475829] Redirect xxxExecs calls to default display if no workbench
Redirect all the PlatformUI.getWorkbench().getDisplay().syncExec /
asyncExec / readAndDispatch calls to a specific method which will check
if the workbench is here and will use Display.getDefault() when the
workbench is not present.
Bug: 475829
Change-Id: Ib543ede26578db7354a28ac0ed59f54b7925e44c
Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
38 files changed, 128 insertions, 70 deletions
diff --git a/plugins/org.eclipse.sirius.common.ui/src/org/eclipse/sirius/common/ui/tools/api/util/EclipseUIUtil.java b/plugins/org.eclipse.sirius.common.ui/src/org/eclipse/sirius/common/ui/tools/api/util/EclipseUIUtil.java index d0450c0cab..b8fa6c94e4 100644 --- a/plugins/org.eclipse.sirius.common.ui/src/org/eclipse/sirius/common/ui/tools/api/util/EclipseUIUtil.java +++ b/plugins/org.eclipse.sirius.common.ui/src/org/eclipse/sirius/common/ui/tools/api/util/EclipseUIUtil.java @@ -294,4 +294,56 @@ public final class EclipseUIUtil { } } } + + /** + * Post a runnable to be invoked by the user-interface thread at the next + * reasonable opportunity. + * + * If a workbench is started its Display instance will be used, otherwhise + * Display.getDefault() will be used. + * + * @param r + * the runnable to execute. + */ + public static void displayAsyncExec(Runnable r) { + getCurrentDisplay().asyncExec(r); + } + + private static Display getCurrentDisplay() { + Display d; + if (PlatformUI.isWorkbenchRunning()) { + d = PlatformUI.getWorkbench().getDisplay(); + } else { + d = Display.getDefault(); + } + return d; + } + + /** + * Post a runnable to be invoked by the user-interface thread at the next + * reasonable opportunity. The thread which calls this method is suspended + * until the runnable completes. + * + * If a workbench is started its Display instance will be used, otherwhise + * Display.getDefault() will be used. + * + * @param r + * the runnable to execute. + */ + public static void displaySyncExec(Runnable r) { + getCurrentDisplay().syncExec(r); + } + + /** + * Process any event or runnables waiting in the user-interface queue. + */ + public static void synchronizeWithUIThread() { + Display d = getCurrentDisplay(); + while (d.readAndDispatch()) { + /* + * We wait for the UI thread to process all remaining events. + */ + } + } + } diff --git a/plugins/org.eclipse.sirius.diagram.sequence.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius.diagram.sequence.ui/META-INF/MANIFEST.MF index 86bce59e40..57ab577148 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.sirius.diagram.sequence.ui/META-INF/MANIFEST.MF @@ -11,6 +11,7 @@ Require-Bundle: com.google.guava;bundle-version="[11.0.2,16.0)", org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0", org.eclipse.ui.ide;bundle-version="3.8.2", org.eclipse.sirius.diagram.ui;bundle-version="2.0.0", + org.eclipse.sirius.common.ui;bundle-version="3.0.0", org.eclipse.sirius.diagram.ui.ext;bundle-version="3.0.0", org.eclipse.emf.common.ui;bundle-version="2.7.0" Bundle-Localization: plugin diff --git a/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/edit/part/SequenceDiagramEditPart.java b/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/edit/part/SequenceDiagramEditPart.java index 8215ff43ab..efc1d0c6c6 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/edit/part/SequenceDiagramEditPart.java +++ b/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/edit/part/SequenceDiagramEditPart.java @@ -26,6 +26,7 @@ import org.eclipse.sirius.business.api.session.ModelChangeTrigger; import org.eclipse.sirius.business.api.session.Session; import org.eclipse.sirius.business.api.session.SessionEventBroker; import org.eclipse.sirius.business.internal.session.SessionEventBrokerImpl; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.sequence.business.internal.elements.ISequenceElementAccessor; import org.eclipse.sirius.diagram.sequence.business.internal.elements.SequenceDiagram; import org.eclipse.sirius.diagram.sequence.business.internal.refresh.RefreshLayoutCommand; @@ -50,7 +51,6 @@ import org.eclipse.sirius.ext.base.Option; import org.eclipse.sirius.ext.base.Options; import org.eclipse.sirius.tools.api.ui.property.IPropertiesProvider; import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; -import org.eclipse.ui.PlatformUI; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; @@ -156,14 +156,14 @@ public class SequenceDiagramEditPart extends DDiagramEditPart { public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) { if (event.getNewValue() instanceof Boolean && ((Boolean) event.getNewValue()).booleanValue()) { if (WorkspaceViewerProperties.SNAPTOGEOMETRY.equals(event.getProperty())) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { @Override public void run() { workspaceViewerPreferenceStore.setValue(WorkspaceViewerProperties.SNAPTOGEOMETRY, Boolean.FALSE); } }); } else if (WorkspaceViewerProperties.SNAPTOGRID.equals(event.getProperty())) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { @Override public void run() { workspaceViewerPreferenceStore.setValue(WorkspaceViewerProperties.SNAPTOGRID, Boolean.FALSE); diff --git a/plugins/org.eclipse.sirius.diagram.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius.diagram.ui/META-INF/MANIFEST.MF index 37634d3bd4..fc7e69cb6e 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.sirius.diagram.ui/META-INF/MANIFEST.MF @@ -56,8 +56,7 @@ Export-Package: org.eclipse.sirius.diagram.description.concern.provider;version= org.eclipse.sirius.diagram.ui.business.api.view;version="2.0.4", org.eclipse.sirius.diagram.ui.business.internal.bracket;x-internal:=true;version="2.0.4", org.eclipse.sirius.diagram.ui.business.internal.bracket.handles;x-internal:=true;version="2.0.4", - org.eclipse.sirius.diagram.ui.business.internal.bracket.locators;x-internal:=true;version="2.0.4", - org.eclipse.sirius.diagram.ui.business.internal.browser;x-internal:=true;version="2.0.4", + org.eclipse.sirius.diagram.ui.business.internal.bracket.locators;x-internal:=true;version="2.0.4", org.eclipse.sirius.diagram.ui.business.internal.command;x-internal:=true;version="2.1.0", org.eclipse.sirius.diagram.ui.business.internal.dialect;x-internal:=true;version="3.0.0", org.eclipse.sirius.diagram.ui.business.internal.edit.helpers;x-internal:=true;version="2.0.4", diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/dialect/DiagramDialectUIServices.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/dialect/DiagramDialectUIServices.java index b7f54d8982..9130921969 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/dialect/DiagramDialectUIServices.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/dialect/DiagramDialectUIServices.java @@ -63,6 +63,7 @@ import org.eclipse.sirius.business.api.session.SessionManager; import org.eclipse.sirius.common.tools.DslCommonPlugin; import org.eclipse.sirius.common.tools.api.interpreter.IInterpreterSiriusVariables; import org.eclipse.sirius.common.tools.api.util.StringUtil; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.DDiagramElement; import org.eclipse.sirius.diagram.DSemanticDiagram; @@ -212,7 +213,7 @@ public class DiagramDialectUIServices implements DialectUIServices { } }; - PlatformUI.getWorkbench().getDisplay().syncExec(runnable); + EclipseUIUtil.displaySyncExec(runnable); monitor.worked(10); if (runnable.getResult() != null) { dialectEditor = runnable.getResult(); @@ -252,7 +253,7 @@ public class DiagramDialectUIServices implements DialectUIServices { viewpointsName += ", " + neededSirius.getName(); //$NON-NLS-1$ } final String description = viewpointsName; - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { @Override public void run() { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/image/refresh/WorkspaceImageFigureRefresher.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/image/refresh/WorkspaceImageFigureRefresher.java index 9baff5e62d..1012504c10 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/image/refresh/WorkspaceImageFigureRefresher.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/image/refresh/WorkspaceImageFigureRefresher.java @@ -18,6 +18,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DiagramPlugin; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; @@ -67,7 +68,7 @@ public class WorkspaceImageFigureRefresher implements IResourceChangeListener { * Refresh all the edit parts of the opened editors. */ private void refreshOpenedEditors() { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (activeWorkbenchWindow != null) { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/DiagramHeaderPostCommitListener.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/DiagramHeaderPostCommitListener.java index 6406210408..83895cd94c 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/DiagramHeaderPostCommitListener.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/DiagramHeaderPostCommitListener.java @@ -15,10 +15,10 @@ import org.eclipse.emf.transaction.ResourceSetChangeEvent; import org.eclipse.emf.transaction.ResourceSetListenerImpl; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DiagramPackage; import org.eclipse.sirius.diagram.ui.tools.internal.editor.header.DiagramHeaderComposite; import org.eclipse.sirius.viewpoint.ViewpointPackage; -import org.eclipse.ui.PlatformUI; /** * A ResourceSet listener to refresh the diagram header after changes on : @@ -81,7 +81,7 @@ public class DiagramHeaderPostCommitListener extends ResourceSetListenerImpl { * Refresh the diagram header composite. */ private void refreshDiagramHeader() { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { if (diagramHeader != null && !diagramHeader.isDisposed()) { diagramHeader.rebuildHeaderSection(); diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/VisibilityPostCommitListener.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/VisibilityPostCommitListener.java index 745fd63bdd..8c522db490 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/VisibilityPostCommitListener.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/listener/VisibilityPostCommitListener.java @@ -23,11 +23,11 @@ import org.eclipse.gmf.runtime.notation.Edge; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.sirius.common.tools.api.listener.NotificationUtil; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeEditPart; import org.eclipse.sirius.ext.base.Option; import org.eclipse.sirius.ext.base.Options; -import org.eclipse.ui.PlatformUI; import com.google.common.base.Function; import com.google.common.base.Predicate; @@ -101,7 +101,7 @@ public class VisibilityPostCommitListener extends ResourceSetListenerImpl { parts.add(elementParts.get()); } } - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { for (DEdgeEditPart edgePart : Iterables.filter(parts, DEdgeEditPart.class)) { Edge edge = (Edge) edgePart.getNotationView(); diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusValidationDecoratorProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusValidationDecoratorProvider.java index dcfe0559b3..77d9a50595 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusValidationDecoratorProvider.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusValidationDecoratorProvider.java @@ -45,6 +45,7 @@ import org.eclipse.gmf.runtime.draw2d.ui.mapmode.MapModeUtil; import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.gmf.runtime.notation.Edge; import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DiagramPlugin; import org.eclipse.sirius.diagram.ui.business.api.view.SiriusGMFHelper; import org.eclipse.sirius.diagram.ui.internal.edit.parts.DDiagramEditPart; @@ -133,7 +134,7 @@ public class SiriusValidationDecoratorProvider extends AbstractProvider implemen return; } final Diagram fdiagram = diagram; - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { @Override public void run() { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/action/ConcernComboContributionItem.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/action/ConcernComboContributionItem.java index 06f0eb48a4..e1b0c74d1a 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/action/ConcernComboContributionItem.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/action/ConcernComboContributionItem.java @@ -21,6 +21,7 @@ import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.emf.transaction.util.TransactionUtil; import org.eclipse.jface.action.ContributionItem; import org.eclipse.sirius.common.tools.api.util.StringUtil; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.description.concern.ConcernDescription; import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor; @@ -42,7 +43,6 @@ import org.eclipse.swt.widgets.ToolItem; import org.eclipse.ui.IPartListener; import org.eclipse.ui.IPartService; import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PlatformUI; /** * A ControlContribution that uses a {@link org.eclipse.swt.widgets.Combo} as @@ -136,7 +136,7 @@ public class ConcernComboContributionItem extends ContributionItem { private void diagramChanged() { if (Display.getCurrent() == null) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { refresh(false); } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/AbstractSpecificDDiagramEditor.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/AbstractSpecificDDiagramEditor.java index a0aabe3048..ba91e43816 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/AbstractSpecificDDiagramEditor.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/AbstractSpecificDDiagramEditor.java @@ -36,7 +36,6 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; /** * A specific editor you may extend, which includes a session. The session @@ -68,7 +67,7 @@ public abstract class AbstractSpecificDDiagramEditor extends DDiagramEditorImpl }); domain.getCommandStack().execute(new CreateAndStoreGMFDiagramCommand(session, (DSemanticDiagram) diagram)); - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { final IEditorPart activeEditor = EclipseUIUtil.getActiveEditor(); if (activeEditor != null) { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/permission/EditPartAuthorityListener.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/permission/EditPartAuthorityListener.java index c66c301f86..a7d27c355b 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/permission/EditPartAuthorityListener.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/permission/EditPartAuthorityListener.java @@ -18,6 +18,7 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramRootEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DecorationEditPolicy; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DDiagramElement; import org.eclipse.sirius.diagram.ui.internal.edit.parts.DDiagramEditPart; import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin; @@ -30,7 +31,6 @@ import org.eclipse.sirius.ecore.extender.business.api.permission.LockStatus; import org.eclipse.sirius.ext.base.Option; import org.eclipse.sirius.ext.base.Options; import org.eclipse.sirius.viewpoint.DSemanticDecorator; -import org.eclipse.ui.PlatformUI; /** * Listener disabling /enabling edit parts when their locking status is @@ -129,7 +129,7 @@ public class EditPartAuthorityListener implements IAuthorityListener { doRefreshEditMode(enableEditMode, diagramEditor, semanticElement); } else { // Otherwise, we launch it asynchronously - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { @Override public void run() { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java index 4602675dde..1629bdfa92 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java @@ -96,6 +96,7 @@ import org.eclipse.sirius.business.api.session.SessionManager; import org.eclipse.sirius.business.api.session.SessionManagerListener; import org.eclipse.sirius.common.tools.api.interpreter.IInterpreter; import org.eclipse.sirius.common.tools.api.util.StringUtil; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.common.ui.tools.api.util.IObjectActionDelegateWrapper; import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.DDiagramElement; @@ -1106,7 +1107,7 @@ public class DDiagramEditorImpl extends SiriusDiagramEditor implements DDiagramE public void notify(final int changeKind) { DDiagramEditorSessionListenerDelegate dDiagramEditorSessionListenerDelegate = new DDiagramEditorSessionListenerDelegate(this, toolFilterWhenRepresentationIsLocked, changeKind); if (Display.getCurrent() == null) { - PlatformUI.getWorkbench().getDisplay().asyncExec(dDiagramEditorSessionListenerDelegate); + EclipseUIUtil.displayAsyncExec(dDiagramEditorSessionListenerDelegate); } else { dDiagramEditorSessionListenerDelegate.run(); } @@ -1144,7 +1145,7 @@ public class DDiagramEditorImpl extends SiriusDiagramEditor implements DDiagramE } }; if (Display.getCurrent() == null) { - PlatformUI.getWorkbench().getDisplay().asyncExec(runnable); + EclipseUIUtil.displayAsyncExec(runnable); } else { runnable.run(); } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java index 7aa8abbf88..c287512c0f 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java @@ -21,6 +21,7 @@ import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor; import org.eclipse.sirius.ecore.extender.business.api.permission.IAuthorityListener; import org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority; @@ -33,7 +34,6 @@ import org.eclipse.swt.widgets.ToolBar; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PlatformUI; import org.osgi.framework.Bundle; import org.osgi.framework.Version; @@ -196,7 +196,7 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL } private void updateAllItems() { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { List<IContributionItem> items = Arrays.asList(manager.getItems()); for (IContributionItem item : items) { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarRefresher.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarRefresher.java index 04cc8f11fd..445fead1c6 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarRefresher.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarRefresher.java @@ -13,6 +13,7 @@ package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar; import org.eclipse.emf.transaction.ResourceSetChangeEvent; import org.eclipse.emf.transaction.ResourceSetListenerImpl; import org.eclipse.emf.transaction.TransactionalEditingDomain; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; @@ -61,7 +62,7 @@ public class TabbarRefresher extends ResourceSetListenerImpl { * Reinit the toolbar */ private void reinitToolbar() { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (activeWorkbenchWindow != null) { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/part/SiriusDiagramGraphicalViewer.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/part/SiriusDiagramGraphicalViewer.java index 82c941e6fd..6a6142d525 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/part/SiriusDiagramGraphicalViewer.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/part/SiriusDiagramGraphicalViewer.java @@ -25,11 +25,11 @@ import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer; import org.eclipse.jface.util.TransferDropTargetListener; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DiagramPlugin; import org.eclipse.sirius.diagram.ui.tools.api.part.IDiagramDialectGraphicalViewer; import org.eclipse.sirius.diagram.ui.tools.internal.editor.SiriusPaletteToolDropTargetListener; import org.eclipse.sirius.diagram.ui.tools.internal.graphical.edit.policies.ChangeBoundRequestRecorder; -import org.eclipse.ui.PlatformUI; /** * {@link org.eclipse.gef.GraphicalViewer} used for the @@ -173,7 +173,7 @@ public class SiriusDiagramGraphicalViewer extends DiagramGraphicalViewer impleme */ @Override protected void sendUpdateRequest() { - PlatformUI.getWorkbench().getDisplay().asyncExec(new UpdateRequest()); + EclipseUIUtil.displayAsyncExec(new UpdateRequest()); } /** diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/filters/FiltersActivationAdapter.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/filters/FiltersActivationAdapter.java index b27aaafc54..7a9241758a 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/filters/FiltersActivationAdapter.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/filters/FiltersActivationAdapter.java @@ -16,10 +16,10 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.DiagramPackage; import org.eclipse.sirius.diagram.description.filter.FilterDescription; -import org.eclipse.ui.PlatformUI; /** * An adapter to listen layer activation change. @@ -44,7 +44,7 @@ public class FiltersActivationAdapter extends AdapterImpl { } private void update(final DDiagram diagram, final FilterDescription filter, final boolean activate) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { if (viewer != null) { viewer.update(filter, null); @@ -54,7 +54,7 @@ public class FiltersActivationAdapter extends AdapterImpl { } private void update(final DDiagram notifier, final Collection<FilterDescription> filters, final boolean b) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { if (viewer != null && filters != null) { for (FilterDescription filter : filters) { diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersActivationAdapter.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersActivationAdapter.java index 4e3a9e6522..baaa5535e6 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersActivationAdapter.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersActivationAdapter.java @@ -14,11 +14,11 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.DiagramPackage; import org.eclipse.sirius.diagram.description.Layer; import org.eclipse.sirius.diagram.ui.tools.api.graphical.edit.palette.PaletteManager; -import org.eclipse.ui.PlatformUI; /** * An adapter to listen layer activation change. @@ -56,7 +56,7 @@ public class LayersActivationAdapter extends AdapterImpl { } private void update(final DDiagram diagram, final Layer layer, final boolean activate) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { if (viewer != null) { viewer.update(layer, null); diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersEventsListener.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersEventsListener.java index fe1c824152..169957e9d4 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersEventsListener.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/views/providers/layers/LayersEventsListener.java @@ -13,7 +13,7 @@ package org.eclipse.sirius.diagram.ui.tools.internal.views.providers.layers; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.sirius.business.api.session.SessionListener; -import org.eclipse.ui.PlatformUI; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; /** * A listener to update the viewer. @@ -55,7 +55,7 @@ public class LayersEventsListener implements SessionListener { } private void updateViewer() { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { if (viewer != null && !viewer.getControl().isDisposed()) { viewer.refresh(); diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html index 2acffdc33a..ba8457cf6f 100644 --- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html +++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html @@ -769,6 +769,13 @@ <li><span class="label label-success">Added</span> Classes from <code>org.eclipse.sirius.common.ui.tools.api.dialog.quickoutline</code> packages are available in API to allow editor to provide quick outline feature easily. </li> + <li><span class="label label-success">Added</span> The methods + <code>displaySyncExec(Runnable)</code> , + <code>displayAsyncExec(Runnable)</code> and + <code>synchronizeWithUIThread()</code> have been added in class + <code>org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil</code> to encapsulate accesses to the current + <code>Display</code> instance. + </li> <li><span class="label label-info">Moved</span> Extensions in <code>plugin.xml</code> that provide UI functionalities have been moved to <code>org.eclipse.sirius.common.ui.ext</code>. diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile index 5c9cf2da43..235c52702d 100644 --- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile +++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile @@ -222,6 +222,7 @@ h4. Changes in @org.eclipse.sirius.common@ h4. Changes in @org.eclipse.sirius.common.ui@ * <span class="label label-success">Added</span> Classes from @org.eclipse.sirius.common.ui.tools.api.dialog.quickoutline@ packages are available in API to allow editor to provide quick outline feature easily. +* <span class="label label-success">Added</span> The methods @displaySyncExec(Runnable)@ , @displayAsyncExec(Runnable)@ and @synchronizeWithUIThread()@ have been added in class @org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil@ to encapsulate accesses to the current @Display@ instance. * <span class="label label-info">Moved</span> Extensions in @plugin.xml@ that provide UI functionalities have been moved to @org.eclipse.sirius.common.ui.ext@. h4. Changes in @org.eclipse.sirius@ diff --git a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/business/internal/dialect/TableDialectUIServices.java b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/business/internal/dialect/TableDialectUIServices.java index 5dc2cd1ae9..4081911dad 100644 --- a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/business/internal/dialect/TableDialectUIServices.java +++ b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/business/internal/dialect/TableDialectUIServices.java @@ -35,6 +35,7 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.sirius.business.api.session.Session; import org.eclipse.sirius.common.tools.DslCommonPlugin; import org.eclipse.sirius.common.tools.api.util.StringUtil; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.table.business.internal.metamodel.TableToolVariables; import org.eclipse.sirius.table.metamodel.table.DTable; import org.eclipse.sirius.table.metamodel.table.DTableElement; @@ -120,7 +121,7 @@ public class TableDialectUIServices implements DialectUIServices { } } }; - PlatformUI.getWorkbench().getDisplay().syncExec(runnable); + EclipseUIUtil.displaySyncExec(runnable); monitor.worked(8); if (runnable.getResult() instanceof AbstractDTableEditor) { editorPart = runnable.getResult(); diff --git a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/provider/TableUIUpdater.java b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/provider/TableUIUpdater.java index 2fc2eca01b..bf1e57a58a 100644 --- a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/provider/TableUIUpdater.java +++ b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/editor/provider/TableUIUpdater.java @@ -26,6 +26,7 @@ import org.eclipse.emf.transaction.ResourceSetListenerImpl; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.emf.transaction.util.TransactionUtil; import org.eclipse.sirius.business.api.dialect.DRepresentationNotificationFilter; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.table.metamodel.table.DCell; import org.eclipse.sirius.table.metamodel.table.DCellStyle; import org.eclipse.sirius.table.metamodel.table.DColumn; @@ -38,7 +39,6 @@ import org.eclipse.sirius.table.ui.tools.internal.editor.DTableTreeViewer; import org.eclipse.sirius.table.ui.tools.internal.editor.DTableViewerManager; import org.eclipse.sirius.viewpoint.DRepresentation; import org.eclipse.sirius.viewpoint.ViewpointPackage; -import org.eclipse.ui.PlatformUI; import com.google.common.collect.Sets; @@ -263,7 +263,7 @@ public class TableUIUpdater extends ResourceSetListenerImpl { Runnable tableUIUpdaterRunnable = new TableUIUpdaterRunnable(dTableViewerManager, dTableTreeViewer, toExpands, toCollapses, toRefreshInViewerWithUpdateLabels, launchGlobalRefreshWithoutUpdateLabels, launchGlobalRefreshWithUpdateLabels, objectsToUpdateInViewer, dColumnsToUpdateDirectly, dColumnsWidthToUpdate, dColumnsToRemove, dColumnsToAdd, dColumnsToVisibilityChanged, updateHeaderColumnWidth); - PlatformUI.getWorkbench().getDisplay().asyncExec(tableUIUpdaterRunnable); + EclipseUIUtil.displayAsyncExec(tableUIUpdaterRunnable); } } diff --git a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/properties/section/common/AbstractDTablePropertySection.java b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/properties/section/common/AbstractDTablePropertySection.java index 5760d8f5b4..e56830c043 100644 --- a/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/properties/section/common/AbstractDTablePropertySection.java +++ b/plugins/org.eclipse.sirius.table.ui/src/org/eclipse/sirius/table/ui/tools/internal/properties/section/common/AbstractDTablePropertySection.java @@ -31,13 +31,13 @@ import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.views.properties.IPropertySourceProvider; import org.eclipse.ui.views.properties.PropertySheetPage; import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; import org.eclipse.sirius.common.tools.DslCommonPlugin; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.table.metamodel.table.provider.TableUIPlugin; import org.eclipse.sirius.table.ui.tools.api.editor.DTableEditor; import org.eclipse.sirius.tools.api.profiler.SiriusTasksKey; @@ -325,7 +325,7 @@ public abstract class AbstractDTablePropertySection extends AbstractPropertySect if (notifier instanceof EObject && contentPage != null && contentPage.getControl() != null) { final Control control = contentPage.getControl(); - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { if (!control.isDisposed() && control.isVisible()) { refresh(); diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/DeleteFromDiagramActionTests.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/DeleteFromDiagramActionTests.java index adc8abf35c..b624d337f2 100644 --- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/DeleteFromDiagramActionTests.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/DeleteFromDiagramActionTests.java @@ -21,8 +21,6 @@ import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocument import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.sirius.diagram.DDiagram; -import org.eclipse.sirius.diagram.ui.business.internal.browser.DiagramEditorBrowser; -import org.eclipse.sirius.diagram.ui.business.internal.browser.MatchBySemanticElement; import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeNameEditPart; import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor; import org.eclipse.sirius.diagram.ui.tools.internal.actions.delete.DeleteFromDiagramAction; diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/browser/DiagramEditorBrowser.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/DiagramEditorBrowser.java index 7840c8b8ee..073438efc6 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/browser/DiagramEditorBrowser.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/DiagramEditorBrowser.java @@ -8,7 +8,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.sirius.diagram.ui.business.internal.browser; +package org.eclipse.sirius.tests.unit.diagram.action; import java.util.Collections; import java.util.Iterator; @@ -18,7 +18,7 @@ import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.requests.ArrangeRequest; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor; -import org.eclipse.ui.PlatformUI; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import com.google.common.base.Predicate; import com.google.common.collect.Iterators; @@ -99,7 +99,7 @@ public class DiagramEditorBrowser { */ public void arrangeAll() throws InterruptedException { - synchronizationWithUIThread(); + EclipseUIUtil.synchronizeWithUIThread(); final ArrangeRequest request = new ArrangeRequest(ActionIds.ACTION_ARRANGE_ALL); request.setPartsToArrange(Lists.newArrayList(editor.getDiagramEditPart())); @@ -108,18 +108,9 @@ public class DiagramEditorBrowser { editor.getEditingDomain().getCommandStack().flush(); editor.getDiagramEditPart().getRoot().getViewer().flush(); - synchronizationWithUIThread(); + EclipseUIUtil.synchronizeWithUIThread(); Thread.sleep(30000); - synchronizationWithUIThread(); - } - - private void synchronizationWithUIThread() { - while (PlatformUI.getWorkbench().getDisplay().readAndDispatch()) { - /* - * We'll just wait for the UI thread to process all the events - * needed to refresh the diagram. - */ - } + EclipseUIUtil.synchronizeWithUIThread(); } } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/browser/MatchByAutoSizeStatus.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/MatchByAutoSizeStatus.java index b7d58d67f5..0113f6dc5f 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/browser/MatchByAutoSizeStatus.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/MatchByAutoSizeStatus.java @@ -8,7 +8,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.sirius.diagram.ui.business.internal.browser; +package org.eclipse.sirius.tests.unit.diagram.action; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.notation.Bounds; diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/browser/MatchBySemanticElement.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/MatchBySemanticElement.java index c386fb1f98..956bff7754 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/internal/browser/MatchBySemanticElement.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/action/MatchBySemanticElement.java @@ -8,7 +8,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.sirius.diagram.ui.business.internal.browser; +package org.eclipse.sirius.tests.unit.diagram.action; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/ArrangeAllTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/ArrangeAllTest.java index 1c1fcb50f0..4f1683cabd 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/ArrangeAllTest.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/ArrangeAllTest.java @@ -20,7 +20,6 @@ import org.eclipse.gef.SnapToGrid; import org.eclipse.gef.requests.ChangeBoundsRequest; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; -import org.eclipse.sirius.diagram.ui.business.internal.browser.MatchByAutoSizeStatus; import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramContainerEditPart; import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeContainerEditPart; import org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase; @@ -28,6 +27,7 @@ import org.eclipse.sirius.tests.swtbot.support.api.business.UIDiagramRepresentat import org.eclipse.sirius.tests.swtbot.support.api.business.UILocalSession; import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource; import org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor; +import org.eclipse.sirius.tests.unit.diagram.action.MatchByAutoSizeStatus; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; diff --git a/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/business/internal/dialect/TreeDialectUIServices.java b/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/business/internal/dialect/TreeDialectUIServices.java index b7961fdb6a..1df4cbb8b6 100644 --- a/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/business/internal/dialect/TreeDialectUIServices.java +++ b/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/business/internal/dialect/TreeDialectUIServices.java @@ -34,6 +34,7 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.sirius.business.api.session.Session; import org.eclipse.sirius.common.tools.DslCommonPlugin; import org.eclipse.sirius.common.tools.api.util.StringUtil; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.tools.api.profiler.SiriusTasksKey; import org.eclipse.sirius.tree.DTree; import org.eclipse.sirius.tree.DTreeItem; @@ -140,7 +141,7 @@ public class TreeDialectUIServices implements DialectUIServices { } } }; - PlatformUI.getWorkbench().getDisplay().syncExec(runnable); + EclipseUIUtil.displaySyncExec(runnable); monitor.worked(8); IEditorPart result = runnable.getResult(); if (canHandleEditor(result)) { diff --git a/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/tools/internal/editor/provider/TreeUIUpdater.java b/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/tools/internal/editor/provider/TreeUIUpdater.java index db4267e131..2f2db4d5f5 100644 --- a/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/tools/internal/editor/provider/TreeUIUpdater.java +++ b/plugins/org.eclipse.sirius.tree.ui/src/org/eclipse/sirius/tree/ui/tools/internal/editor/provider/TreeUIUpdater.java @@ -21,6 +21,7 @@ import org.eclipse.emf.transaction.ResourceSetListenerImpl; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.emf.transaction.util.TransactionUtil; import org.eclipse.sirius.business.api.dialect.DRepresentationNotificationFilter; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.tree.DTree; import org.eclipse.sirius.tree.DTreeItem; import org.eclipse.sirius.tree.DTreeItemContainer; @@ -30,7 +31,6 @@ import org.eclipse.sirius.tree.ui.tools.internal.editor.DTreeViewer; import org.eclipse.sirius.viewpoint.DRepresentation; import org.eclipse.sirius.viewpoint.ViewpointPackage; import org.eclipse.sirius.viewpoint.description.style.StylePackage; -import org.eclipse.ui.PlatformUI; import com.google.common.collect.Sets; @@ -167,7 +167,7 @@ public class TreeUIUpdater extends ResourceSetListenerImpl { if (!toRefreshInViewer.isEmpty() || !toUpdateInViewer.isEmpty() || !toCollapses.isEmpty() || !toExpands.isEmpty()) { final Object[] objectsToUpdateInViewer = Sets.difference(toUpdateInViewer, toRefreshInViewer).toArray(new Object[0]); Runnable runnable = new TreeUIUpdaterRunnable(dTreeViewer, toRefreshInViewer, objectsToUpdateInViewer, toExpands, toCollapses); - PlatformUI.getWorkbench().getDisplay().asyncExec(runnable); + EclipseUIUtil.displayAsyncExec(runnable); } } diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/EditorNameAdapter.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/EditorNameAdapter.java index 37dad136f1..3c53cd27ad 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/EditorNameAdapter.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/EditorNameAdapter.java @@ -19,13 +19,13 @@ import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.sirius.business.api.session.SessionListener; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.ui.business.api.dialect.DialectEditor; import org.eclipse.sirius.viewpoint.DRepresentation; import org.eclipse.sirius.viewpoint.ViewpointPackage; import org.eclipse.sirius.viewpoint.provider.SiriusEditPlugin; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.PlatformUI; /** * Adapter which update name of editors when diagram name change. @@ -95,7 +95,7 @@ public class EditorNameAdapter extends AdapterImpl { * the editor part */ private void updateEditorInputName(final SessionEditorInput editorInput, final IEditorPart editor) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { editorInput.setName(editor.getTitle()); } diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionHelper.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionHelper.java index 90029f40fa..2359005d28 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionHelper.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionHelper.java @@ -20,6 +20,7 @@ import org.eclipse.jface.window.Window; import org.eclipse.sirius.business.api.dialect.DialectManager; import org.eclipse.sirius.business.api.query.RepresentationDescriptionQuery; import org.eclipse.sirius.business.api.session.Session; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; import org.eclipse.sirius.ui.tools.internal.dialogs.RepresentationsSelectionDialog; import org.eclipse.sirius.viewpoint.DRepresentation; @@ -144,7 +145,7 @@ public final class SessionHelper { if (candidates.size() == 1) { selection.addAll(candidates); } else if (candidates.size() > 1) { - PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { + EclipseUIUtil.displaySyncExec(new Runnable() { public void run() { final Shell shell = PlatformUI.getWorkbench().getDisplay().getActiveShell(); final RepresentationsSelectionDialog dlg = new RepresentationsSelectionDialog(shell, candidates); diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/analysis/SmartDialogAnalysisSelector.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/analysis/SmartDialogAnalysisSelector.java index b86ddf0a84..cdfd7f57aa 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/analysis/SmartDialogAnalysisSelector.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/analysis/SmartDialogAnalysisSelector.java @@ -19,6 +19,7 @@ import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.window.Window; import org.eclipse.sirius.business.api.session.danalysis.DAnalysisSelector; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.viewpoint.DAnalysis; import org.eclipse.sirius.viewpoint.DRepresentation; import org.eclipse.sirius.viewpoint.provider.SiriusEditPlugin; @@ -100,7 +101,7 @@ public class SmartDialogAnalysisSelector implements DAnalysisSelector { } }; /* synch execution as the user need to choose before we can get further */ - PlatformUI.getWorkbench().getDisplay().syncExec(runnable); + EclipseUIUtil.displaySyncExec(runnable); if (runnable.getResult() instanceof DAnalysis) { return (DAnalysis) runnable.getResult(); } diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/command/AbstractSWTCallback.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/command/AbstractSWTCallback.java index d79c594874..ce88b05c04 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/command/AbstractSWTCallback.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/command/AbstractSWTCallback.java @@ -45,6 +45,7 @@ import org.eclipse.sirius.common.tools.api.util.TreeItemWrapper; import org.eclipse.sirius.common.ui.SiriusTransPlugin; import org.eclipse.sirius.common.ui.tools.api.selection.EMFMessageDialog; import org.eclipse.sirius.common.ui.tools.api.selection.EObjectSelectionWizard; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.tools.api.command.ui.UICallBack; import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; import org.eclipse.sirius.ui.business.api.resource.LoadEMFResourceRunnableWithProgress; @@ -278,7 +279,7 @@ public abstract class AbstractSWTCallback implements UICallBack { setResult(MessageDialog.openQuestion(getActiveShell(), title, message)); } }; - PlatformUI.getWorkbench().getDisplay().syncExec(reload); + EclipseUIUtil.displaySyncExec(reload); return reload.getResult(); } } diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/session/OpenViewpointSelectionAction.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/session/OpenViewpointSelectionAction.java index 76a371bd65..977ff37fd1 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/session/OpenViewpointSelectionAction.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/session/OpenViewpointSelectionAction.java @@ -14,9 +14,9 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.jface.action.Action; import org.eclipse.sirius.business.api.session.Session; import org.eclipse.sirius.business.api.session.SessionManager; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelection; import org.eclipse.sirius.viewpoint.provider.SiriusEditPlugin; -import org.eclipse.ui.PlatformUI; /** * An actions opening a dialog allowing to change the {@link ViewpointSelection} @@ -59,7 +59,7 @@ public class OpenViewpointSelectionAction extends Action { @Override public void run() { final Session session = SessionManager.INSTANCE.getExistingSession(sessionURI); - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + EclipseUIUtil.displayAsyncExec(new Runnable() { public void run() { ViewpointSelection.openViewpointsSelectionDialog(session); } diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java index 6d0a36bda5..473ac1ea61 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/AbstractDTreeEditor.java @@ -39,6 +39,7 @@ import org.eclipse.sirius.business.api.session.SessionManager; import org.eclipse.sirius.business.api.session.SessionManagerListener; import org.eclipse.sirius.business.api.session.SessionStatus; import org.eclipse.sirius.common.ui.SiriusTransPlugin; +import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil; import org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor; import org.eclipse.sirius.ecore.extender.business.api.permission.IAuthorityListener; import org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority; @@ -663,7 +664,7 @@ public abstract class AbstractDTreeEditor extends EditorPart implements DialectE public void notify(final int changeKind) { AbstractDTreeEditorSessionListenerDelegate abstractDTreeEditorSessionListenerDelegate = new AbstractDTreeEditorSessionListenerDelegate(this, changeKind); if (Display.getCurrent() == null) { - PlatformUI.getWorkbench().getDisplay().asyncExec(abstractDTreeEditorSessionListenerDelegate); + EclipseUIUtil.displayAsyncExec(abstractDTreeEditorSessionListenerDelegate); } else { abstractDTreeEditorSessionListenerDelegate.run(); } diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/SelectDRepresentationElementsListener.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/SelectDRepresentationElementsListener.java index a648dd8014..20a7d3f3fe 100644 --- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/SelectDRepresentationElementsListener.java +++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/editor/SelectDRepresentationElementsListener.java @@ -34,7 +34,6 @@ import org.eclipse.sirius.viewpoint.DRepresentationElement; import org.eclipse.sirius.viewpoint.UIState; import org.eclipse.sirius.viewpoint.ViewpointPackage; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.PlatformUI; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; @@ -131,7 +130,7 @@ public class SelectDRepresentationElementsListener extends ResourceSetListenerIm // Set the selection in async exec: for some dialect, ui could // be refresh by another post commit triggered after this one // and doing some UI refresh in sync exec. - PlatformUI.getWorkbench().getDisplay().asyncExec(new SetSelectionRunnable(dialectEditor, elementsToSelect)); + EclipseUIUtil.displayAsyncExec(new SetSelectionRunnable(dialectEditor, elementsToSelect)); } } } |