Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[sapphire-dev] SapphireDiagramEditorPagePart adapt()

Hey sapphire team,

In an actionHandler for a masterDetailsPagePart I am able to call context.getPart().adapt(IEditorSite.class) and this will work because of the SapphireEditor.adapt() method in the page parent hierarchy.  

Now I have a SapphireDiagramHandler that is fired off of a double-click action for a particular node in my diagram.  In this actionhandler which I have the context I'd like to be able to get the IEditorSite but the SapphireDiagramEditor doesn't seem to support this.  Do you think we could add this to the SapphireDiagramEditor?   I have attached a patch that works for me, but I didn't want to bother with creating bugzilla entry unless the team thought this would be a good enhancement.  Perhaps there is alternatives that wouldn't require patching.

Thanks team!

--

Greg Amerson
Liferay, Inc.

www.liferay.com

---

25 Apr 2012 | Liferay Nordic Symposium | www.liferay.com/nordic2012  NEW!

23 May 2012 | Liferay France Symposium |www.liferay.com/france2012


### Eclipse Workspace Patch 1.0
#P org.eclipse.sapphire.ui
Index: src/org/eclipse/sapphire/ui/diagram/editor/SapphireDiagramEditorPagePart.java
===================================================================
RCS file: /cvsroot/technology/org.eclipse.sapphire/plugins/org.eclipse.sapphire.ui/src/org/eclipse/sapphire/ui/diagram/editor/SapphireDiagramEditorPagePart.java,v
retrieving revision 1.26
diff -u -r1.26 SapphireDiagramEditorPagePart.java
--- src/org/eclipse/sapphire/ui/diagram/editor/SapphireDiagramEditorPagePart.java	29 Feb 2012 21:06:00 -0000	1.26
+++ src/org/eclipse/sapphire/ui/diagram/editor/SapphireDiagramEditorPagePart.java	12 Mar 2012 10:02:18 -0000
@@ -42,6 +42,8 @@
 import org.eclipse.sapphire.ui.diagram.def.IDiagramExplicitConnectionBindingDef;
 import org.eclipse.sapphire.ui.diagram.def.IDiagramImplicitConnectionBindingDef;
 import org.eclipse.sapphire.ui.diagram.def.IDiagramNodeDef;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
 
 /**
  * @author <a href="mailto:shenxue.zhou@xxxxxxxxxx";>Shenxue Zhou</a>
@@ -67,8 +69,14 @@
     private int gridUnit;
     private int verticalGridUnit;
 	private List<FunctionResult> connectionImageDataFunctionResults;
+	private IEditorPart parentEditorPart;
 
-    @Override
+	public SapphireDiagramEditorPagePart( IEditorPart editorPart )
+	{
+		this.parentEditorPart = editorPart;
+	}
+
+	@Override
     protected void init()
     {
         super.init();
@@ -753,6 +761,28 @@
 		}		
 	}
 
+	@Override
+	public <A> A adapt( Class<A> adapterType )
+	{
+		A retval = null;
+
+		if( IEditorPart.class.equals( adapterType ) )
+		{
+			retval = adapterType.cast( this.parentEditorPart );
+		}
+		else if( IEditorSite.class.equals( adapterType ) )
+		{
+			retval = adapterType.cast( this.parentEditorPart.getEditorSite() );
+		}
+
+		if( retval == null )
+		{
+			retval = super.adapt( adapterType );
+		}
+
+		return retval;
+	}
+
 	// --------------------------------------------------------------------
 	// Inner classes
 	//---------------------------------------------------------------------
#P org.eclipse.sapphire.ui.gef.diagram.editor
Index: src/org/eclipse/sapphire/ui/gef/diagram/editor/SapphireDiagramEditor.java
===================================================================
RCS file: /cvsroot/technology/org.eclipse.sapphire/plugins/org.eclipse.sapphire.ui.gef.diagram.editor/src/org/eclipse/sapphire/ui/gef/diagram/editor/SapphireDiagramEditor.java,v
retrieving revision 1.30
diff -u -r1.30 SapphireDiagramEditor.java
--- src/org/eclipse/sapphire/ui/gef/diagram/editor/SapphireDiagramEditor.java	9 Mar 2012 16:41:59 -0000	1.30
+++ src/org/eclipse/sapphire/ui/gef/diagram/editor/SapphireDiagramEditor.java	12 Mar 2012 10:02:21 -0000
@@ -31,7 +31,6 @@
 import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.GraphicalViewer;
 import org.eclipse.gef.KeyHandler;
-import org.eclipse.gef.KeyStroke;
 import org.eclipse.gef.SnapToGeometry;
 import org.eclipse.gef.SnapToGrid;
 import org.eclipse.gef.dnd.TemplateTransferDragSourceListener;
@@ -39,7 +38,6 @@
 import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
 import org.eclipse.gef.palette.PaletteRoot;
 import org.eclipse.gef.ui.actions.DirectEditAction;
-import org.eclipse.gef.ui.actions.GEFActionConstants;
 import org.eclipse.gef.ui.palette.PaletteViewer;
 import org.eclipse.gef.ui.palette.PaletteViewerProvider;
 import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette;
@@ -75,14 +73,12 @@
 import org.eclipse.sapphire.ui.gef.diagram.editor.parts.SapphireDiagramEditorEditPartFactory;
 import org.eclipse.sapphire.ui.internal.SapphireUiFrameworkPlugin;
 import org.eclipse.sapphire.ui.swt.renderer.SapphireActionPresentationManager;
-import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseMoveListener;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchPartConstants;
-import org.eclipse.ui.actions.ActionFactory;
 import org.eclipse.ui.forms.editor.FormEditor;
 
 /**
@@ -116,7 +112,7 @@
         
         this.diagramPageDef = (IDiagramEditorPageDef) def.getPartDef( pageId, true, IDiagramEditorPageDef.class );
 
-        this.diagramPart = new SapphireDiagramEditorPagePart();
+		this.diagramPart = new SapphireDiagramEditorPagePart( this );
         this.diagramPart.init(null, rootModelElement, this.diagramPageDef, Collections.<String,String>emptyMap());
         
         this.configManager = new DiagramConfigurationManager(this);

Back to the top