diff options
| author | Ansgar Radermacher | 2017-08-02 15:07:53 +0000 |
|---|---|---|
| committer | Ansgar Radermacher | 2017-08-02 22:06:02 +0000 |
| commit | 2f2342b41f9532400a5c0bd2628eecf823ee9310 (patch) | |
| tree | 673763eb0f4585c33cfd4ee7b7f15417568e6617 | |
| parent | a5e7b0e4ad877ea72b894c0dc470b1081d44b77a (diff) | |
| download | org.eclipse.papyrus-2f2342b41f9532400a5c0bd2628eecf823ee9310.tar.gz org.eclipse.papyrus-2f2342b41f9532400a5c0bd2628eecf823ee9310.tar.xz org.eclipse.papyrus-2f2342b41f9532400a5c0bd2628eecf823ee9310.zip | |
Bug 519107 - [All diagrams] model opening is slow, if multiple diagrams are open
- Delay diagram initialization until diagram gets focus, show busy cursor while diagram is initialized
- Advance version number (API break)
Signed-off-by: Ansgar Radermacher <ansgar.radermacher@cea.fr>
Change-Id: Id5ab6fb1a02039f2754ef93ff20bfd268ecf8804
3 files changed, 49 insertions, 3 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF index 2a9113c2e7a..185b92cb8cd 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF @@ -79,7 +79,7 @@ Require-Bundle: org.eclipse.papyrus.extensionpoints.editors;bundle-version="[1.2 org.eclipse.papyrus.infra.hyperlink;bundle-version="[2.0.0,3.0.0)", org.eclipse.nebula.widgets.richtext;bundle-version="[1.0.0,2.0.0)" Bundle-Vendor: %providerName -Bundle-Version: 2.0.1.qualifier +Bundle-Version: 2.1.0.qualifier Eclipse-BuddyPolicy: dependent Bundle-Activator: org.eclipse.papyrus.uml.diagram.common.Activator Bundle-ManifestVersion: 2 diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml index 15630dd3614..f2a17373335 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml @@ -7,6 +7,6 @@ <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>org.eclipse.papyrus.uml.diagram.common</artifactId> - <version>2.0.1-SNAPSHOT</version> + <version>2.1.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> -</project>
\ No newline at end of file +</project> diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/part/UmlGmfDiagramEditor.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/part/UmlGmfDiagramEditor.java index 64c1e5a51c8..3e5f77c9a24 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/part/UmlGmfDiagramEditor.java +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/part/UmlGmfDiagramEditor.java @@ -16,7 +16,9 @@ import org.eclipse.papyrus.infra.core.services.ServicesRegistry; import org.eclipse.papyrus.infra.gmfdiag.common.SynchronizableGmfDiagramEditor; import org.eclipse.papyrus.infra.gmfdiag.common.reconciler.DiagramVersioningUtils; import org.eclipse.papyrus.infra.ui.lifecycleevents.ISaveAndDirtyService; +import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.contexts.IContextService; @@ -46,6 +48,14 @@ public class UmlGmfDiagramEditor extends SynchronizableGmfDiagramEditor { private ServicesRegistry servicesRegistry; /** + * boolean indicating whether the viewer has already been initialized. + * Used for lazy initialization (wait, until set Focus is called) to reduce opening time + * of Papyrus editor. + * @since 2.1 + */ + protected boolean viewerInitialized = false; + + /** * Constructor. * * @param servicesRegistry @@ -65,6 +75,42 @@ public class UmlGmfDiagramEditor extends SynchronizableGmfDiagramEditor { // account. ISaveAndDirtyService saveAndDirtyService = servicesRegistry.getService(ISaveAndDirtyService.class); saveAndDirtyService.registerIsaveablePart(this); + viewerInitialized = false; + } + + /** + * Override to initialize viewer, if it gets in focus + * + * @see org.eclipse.papyrus.infra.gmfdiag.common.SynchronizableGmfDiagramEditor#setFocus() + */ + @Override + public void setFocus() { + if (!viewerInitialized) { + BusyIndicator.showWhile(Display.getDefault(), new Runnable(){ + + public void run(){ + doInitializeGraphicalViewer(); + viewerInitialized = true; + } + }); + } + super.setFocus(); + } + + /** + * Initialize the graphical viewer (calls superclass) + */ + protected void doInitializeGraphicalViewer() { + super.initializeGraphicalViewer(); + } + + /** + * @generated + */ + @Override + protected void initializeGraphicalViewer() { + // do nothing to enable a lazy initialization. + // initialization is done, if setFocus is called. } @Override |
