[
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.
### 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);