Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEsteban Dugueperoux2015-08-31 12:33:26 +0000
committerEsteban DUGUEPEROUX2015-09-03 13:26:57 +0000
commit6dd423b3acbb4c474faaa464161abe39cd89cb85 (patch)
tree10d3c346234bc83e19524808e7c51d618958cad8
parent504dcbff7eba213112766095fc568c36346e3ca6 (diff)
downloadorg.eclipse.sirius-6dd423b3acbb4c474faaa464161abe39cd89cb85.tar.gz
org.eclipse.sirius-6dd423b3acbb4c474faaa464161abe39cd89cb85.tar.xz
org.eclipse.sirius-6dd423b3acbb4c474faaa464161abe39cd89cb85.zip
[471456] Have SessionEditorInput.getURI() returns correct URI
- To avoid SessionEditorInput.equals() returns false for equals input, we must override URIEditorInput.getURI() to return the URI of the input. Bug: 471456 Change-Id: I1e9782cf136e067eda99174b4dcc2ec381e52873 Signed-off-by: Esteban Dugueperoux <esteban.dugueperoux@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/session/SessionEditorInputTests.java19
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionEditorInput.java12
2 files changed, 29 insertions, 2 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/session/SessionEditorInputTests.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/session/SessionEditorInputTests.java
index dad2f38b95..97d43bfe0e 100644
--- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/session/SessionEditorInputTests.java
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/session/SessionEditorInputTests.java
@@ -30,9 +30,12 @@ import org.eclipse.sirius.business.api.query.URIQuery;
import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.business.api.session.factory.SessionFactory;
import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil;
+import org.eclipse.sirius.diagram.DDiagram;
+import org.eclipse.sirius.diagram.ui.business.api.query.DDiagramGraphicalQuery;
import org.eclipse.sirius.tests.support.api.TestsUtil;
import org.eclipse.sirius.tools.api.command.semantic.AddSemanticResourceCommand;
import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager;
+import org.eclipse.sirius.ui.business.api.session.SessionEditorInput;
import org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelectionCallback;
import org.eclipse.sirius.ui.business.internal.commands.ChangeViewpointSelectionCommand;
import org.eclipse.sirius.viewpoint.DAnalysis;
@@ -40,6 +43,7 @@ import org.eclipse.sirius.viewpoint.DRepresentation;
import org.eclipse.sirius.viewpoint.DView;
import org.eclipse.sirius.viewpoint.ViewpointPackage;
import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import junit.framework.TestCase;
@@ -95,7 +99,7 @@ public class SessionEditorInputTests extends TestCase {
/**
* Test that opening a {@link DRepresentation} whose {@link URI} has changed
- * to be same a already opened {@link DRepresentation} doesn't open the
+ * to be same as an already opened {@link DRepresentation} doesn't open the
* already opened {@link DRepresentation} but a new editor for the requested
* {@link DRepresentation}.
*/
@@ -120,6 +124,19 @@ public class SessionEditorInputTests extends TestCase {
IEditorPart newEditor = DialectUIManager.INSTANCE.openEditor(session, dRepresentation1, new NullProgressMonitor());
assertNotSame(editor1, newEditor);
assertEquals("Editor for representation1 should be opened", 2, EclipseUIUtil.getActivePage().getEditorReferences().length);
+ IEditorInput newEditorInput = newEditor.getEditorInput();
+ IEditorInput editor2Input = editor2.getEditorInput();
+ assertTrue(newEditorInput instanceof SessionEditorInput);
+ assertTrue(editor2Input instanceof SessionEditorInput);
+ SessionEditorInput sessionNewEditorInput = (SessionEditorInput) newEditor.getEditorInput();
+ SessionEditorInput sessionEditor2Input = (SessionEditorInput) editor2.getEditorInput();
+ URI representation1GMFDiagramURI = EcoreUtil.getURI(new DDiagramGraphicalQuery((DDiagram) dRepresentation1).getAssociatedGMFDiagram().get());
+ URI representation2GMFDiagramURI = EcoreUtil.getURI(new DDiagramGraphicalQuery((DDiagram) dRepresentation2).getAssociatedGMFDiagram().get());
+ assertEquals(representation1GMFDiagramURI, sessionNewEditorInput.getURI());
+ assertEquals(representation2GMFDiagramURI, sessionEditor2Input.getURI());
+ assertEquals(new SessionEditorInput(representation1GMFDiagramURI, dRepresentation1.getName(), session), sessionNewEditorInput);
+ assertEquals(new SessionEditorInput(representation2GMFDiagramURI, dRepresentation2.getName(), session), sessionEditor2Input);
+
DialectUIManager.INSTANCE.closeEditor(editor1, false);
DialectUIManager.INSTANCE.closeEditor(editor2, false);
TestsUtil.synchronizationWithUIThread();
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionEditorInput.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionEditorInput.java
index ab0b2a3aba..18bf8a4681 100644
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionEditorInput.java
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/business/api/session/SessionEditorInput.java
@@ -21,6 +21,7 @@ import org.eclipse.emf.common.ui.URIEditorInput;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.business.api.session.SessionManager;
import org.eclipse.sirius.business.api.session.factory.SessionFactory;
@@ -310,6 +311,15 @@ public class SessionEditorInput extends URIEditorInput {
public void dispose() {
}
+ @Override
+ public URI getURI() {
+ EObject input = inputRef != null ? inputRef.get() : null;
+ if (input != null) {
+ return EcoreUtil.getURI(input);
+ }
+ return super.getURI();
+ }
+
/**
* Overridden to test input existence in a generic way.
*
@@ -355,7 +365,7 @@ public class SessionEditorInput extends URIEditorInput {
@Override
public boolean equals(Object o) {
- boolean equals = super.equals(o);
+ boolean equals = this == o || o instanceof SessionEditorInput && getURI().equals(((SessionEditorInput) o).getURI());
if (equals && o instanceof SessionEditorInput) {
EObject input = getInput(false);
if (input != null) {

Back to the top