Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormvelten2011-01-19 01:26:35 +0000
committermvelten2011-01-19 01:26:35 +0000
commiteb323eeac74e30d22d784aea53eb441fe010c8cf (patch)
tree5b01d05cddc92b6e89c961deccea19241b9761ce
parente0b2fed29fc0a5ecbf189c3e00d9c2037df51b00 (diff)
downloadorg.eclipse.papyrus-eb323eeac74e30d22d784aea53eb441fe010c8cf.tar.gz
org.eclipse.papyrus-eb323eeac74e30d22d784aea53eb441fe010c8cf.tar.xz
org.eclipse.papyrus-eb323eeac74e30d22d784aea53eb441fe010c8cf.zip
REOPENED - bug 334262: [General] Navigation and integration with the creation diagram service
https://bugs.eclipse.org/bugs/show_bug.cgi?id=334262 don't use selection listener for action bar actions
-rw-r--r--plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramAction.java27
-rw-r--r--plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramContributor.java11
2 files changed, 25 insertions, 13 deletions
diff --git a/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramAction.java b/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramAction.java
index 7c061b67554..663f2f92395 100644
--- a/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramAction.java
+++ b/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramAction.java
@@ -19,14 +19,17 @@ import java.util.List;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.papyrus.core.extension.commands.CreationCommandDescriptor;
import org.eclipse.papyrus.core.navigation.NavigableElement;
import org.eclipse.papyrus.core.navigation.NavigationHelper;
import org.eclipse.papyrus.core.utils.DiResourceSet;
import org.eclipse.papyrus.core.utils.EditorUtils;
import org.eclipse.papyrus.core.utils.GMFtoEMFCommandWrapper;
-import org.eclipse.ui.actions.BaseSelectionListenerAction;
+import org.eclipse.ui.IEditorPart;
/**
* This action will try to create a diagram on the currently selected element,
@@ -37,10 +40,12 @@ import org.eclipse.ui.actions.BaseSelectionListenerAction;
* @author mvelten
*
*/
-public class ActionBarCreateDiagramAction extends BaseSelectionListenerAction {
+public class ActionBarCreateDiagramAction extends Action {
private CreationCommandDescriptor desc;
+ private IEditorPart activeEditor = null;
+
public ActionBarCreateDiagramAction(CreationCommandDescriptor desc) {
super(desc.getLabel());
this.desc = desc;
@@ -61,9 +66,13 @@ public class ActionBarCreateDiagramAction extends BaseSelectionListenerAction {
return getText();
}
+ public void setActiveEditor(IEditorPart editor) {
+ activeEditor = editor;
+ }
+
@Override
public void run() {
- EObject selectedElement = resolveSemanticObject(getStructuredSelection().getFirstElement());
+ EObject selectedElement = getSelectedElement();
if(selectedElement != null) {
// This is not necessary but it avoids to compute the whole navigation graph
@@ -108,6 +117,18 @@ public class ActionBarCreateDiagramAction extends BaseSelectionListenerAction {
}
}
+ private EObject getSelectedElement() {
+ if(activeEditor != null) {
+ ISelection selection = activeEditor.getEditorSite().getSelectionProvider().getSelection();
+ if(selection instanceof IStructuredSelection) {
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ return resolveSemanticObject(obj);
+
+ }
+ }
+ return null;
+ }
+
/**
* Resolve semantic element
*
diff --git a/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramContributor.java b/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramContributor.java
index 50c0666eef2..0ff1009d828 100644
--- a/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramContributor.java
+++ b/plugins/core/org.eclipse.papyrus.core/src/org/eclipse/papyrus/core/multidiagram/actionbarcontributor/ActionBarCreateDiagramContributor.java
@@ -31,8 +31,6 @@ import org.eclipse.ui.part.EditorActionBarContributor;
*/
public class ActionBarCreateDiagramContributor extends EditorActionBarContributor {
- private IEditorPart currentEditor = null;
-
private ArrayList<ActionBarCreateDiagramAction> createDiagramActions = new ArrayList<ActionBarCreateDiagramAction>();
public ActionBarCreateDiagramContributor() {
@@ -54,14 +52,7 @@ public class ActionBarCreateDiagramContributor extends EditorActionBarContributo
public void setActiveEditor(IEditorPart targetEditor) {
for(ActionBarCreateDiagramAction createDiagramAction : createDiagramActions) {
- if(currentEditor != null) {
- currentEditor.getEditorSite().getSelectionProvider().removeSelectionChangedListener(createDiagramAction);
- }
-
- if(targetEditor != null) {
- targetEditor.getEditorSite().getSelectionProvider().addSelectionChangedListener(createDiagramAction);
- }
+ createDiagramAction.setActiveEditor(targetEditor);
}
- currentEditor = targetEditor;
}
}

Back to the top