Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcletavernie2013-03-20 12:25:31 +0000
committercletavernie2013-03-20 12:25:31 +0000
commited149e30b1db7a2d5c2ba33d1c365cff02526389 (patch)
tree8c5d072d31eae5d7ce9c4ad145aa7ef8a68f586e /incoming
parent39fdafc3ea7e219f208f7f5fabfd5b8d4f7fe967 (diff)
downloadorg.eclipse.papyrus-ed149e30b1db7a2d5c2ba33d1c365cff02526389.tar.gz
org.eclipse.papyrus-ed149e30b1db7a2d5c2ba33d1c365cff02526389.tar.xz
org.eclipse.papyrus-ed149e30b1db7a2d5c2ba33d1c365cff02526389.zip
402662: [Editor - Services] Papyrus shall provide a Service to open page(s) associated to an Element
https://bugs.eclipse.org/bugs/show_bug.cgi?id=402662 Bug fixes
Diffstat (limited to 'incoming')
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.openelement/src/org/eclipse/papyrus/infra/services/openelement/service/impl/OpenElementServiceImpl.java39
1 files changed, 34 insertions, 5 deletions
diff --git a/incoming/org.eclipse.papyrus.infra.services.openelement/src/org/eclipse/papyrus/infra/services/openelement/service/impl/OpenElementServiceImpl.java b/incoming/org.eclipse.papyrus.infra.services.openelement/src/org/eclipse/papyrus/infra/services/openelement/service/impl/OpenElementServiceImpl.java
index 20921197996..541cfea2131 100644
--- a/incoming/org.eclipse.papyrus.infra.services.openelement/src/org/eclipse/papyrus/infra/services/openelement/service/impl/OpenElementServiceImpl.java
+++ b/incoming/org.eclipse.papyrus.infra.services.openelement/src/org/eclipse/papyrus/infra/services/openelement/service/impl/OpenElementServiceImpl.java
@@ -82,13 +82,31 @@ public class OpenElementServiceImpl implements OpenElementService {
/**
* {@inheritDoc}
*/
- public IMultiDiagramEditor openElement(final EObject viewElement) throws PartInitException, ServiceException {
+ public IMultiDiagramEditor openElement(EObject viewElement) throws PartInitException, ServiceException {
URI pageURI = getPageForViewElement(viewElement);
if(pageURI == null) {
return null;
}
- return openURI(pageURI);
+ IMultiDiagramEditor editor = openURI(pageURI);
+ if(editor != null) {
+ if(editor.getActiveEditor() instanceof IRevealSemanticElement) {
+ final IRevealSemanticElement revealElement = (IRevealSemanticElement)editor.getActiveEditor();
+ final EObject semanticElement = EMFHelper.getEObject(viewElement);
+ Display.getDefault().syncExec(new Runnable() {
+
+ public void run() {
+ revealElement.revealSemanticElement(Collections.singletonList(semanticElement));
+ }
+ });
+
+ }
+ }
+
+ if(editor != null) {
+ editor.getEditorSite().getPage().activate(editor);
+ }
+ return editor;
}
/**
@@ -96,7 +114,11 @@ public class OpenElementServiceImpl implements OpenElementService {
*/
public IMultiDiagramEditor openSemanticElement(final EObject semanticElement) throws PartInitException, ServiceException {
URI[] pages = getPagesForSemanticElement(semanticElement);
- return openSemanticElement(semanticElement, pages);
+ IMultiDiagramEditor editor = openSemanticElement(semanticElement, pages);
+ if(editor != null) {
+ editor.getEditorSite().getPage().activate(editor);
+ }
+ return editor;
}
/**
@@ -114,7 +136,11 @@ public class OpenElementServiceImpl implements OpenElementService {
pageURIs[i++] = uri;
}
- return openSemanticElement(semanticElement, pageURIs);
+ IMultiDiagramEditor editor = openSemanticElement(semanticElement, pageURIs);
+ if(editor != null) {
+ editor.getEditorSite().getPage().activate(editor);
+ }
+ return editor;
}
private IMultiDiagramEditor openSemanticElement(final EObject semanticElement, URI[] pageURIs) throws ServiceException, PartInitException {
@@ -244,7 +270,7 @@ public class OpenElementServiceImpl implements OpenElementService {
}
private IFile getDiFile(URI uri) {
- URI fileURI = uri.trimFileExtension();
+ URI fileURI = uri.trimFileExtension().trimFragment();
fileURI = fileURI.appendFileExtension(SashModel.MODEL_FILE_EXTENSION);
if(fileURI.isPlatformResource()) {
@@ -317,6 +343,9 @@ public class OpenElementServiceImpl implements OpenElementService {
}
private IMultiDiagramEditor openURIsInNewEditor(IFile diFile, URI[] pageURIs) throws PartInitException {
+ if(diFile == null) {
+ return null;
+ }
final IEditorInput input = new PapyrusPageInput(diFile, pageURIs, false);
RunnableWithResult<IMultiDiagramEditor> runnable;

Back to the top