Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2017-08-02 15:07:53 +0000
committerAnsgar Radermacher2017-08-02 22:06:02 +0000
commit2f2342b41f9532400a5c0bd2628eecf823ee9310 (patch)
tree673763eb0f4585c33cfd4ee7b7f15417568e6617
parenta5e7b0e4ad877ea72b894c0dc470b1081d44b77a (diff)
downloadorg.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
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF2
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/part/UmlGmfDiagramEditor.java46
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

Back to the top