Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » GEF » "Scalable" GraphicalRootEditPart and dragging feedback
"Scalable" GraphicalRootEditPart and dragging feedback [message #66894] Fri, 28 February 2003 02:46 Go to next message
Dake Gu is currently offline Dake GuFriend
Messages: 17
Registered: July 2009
Junior Member
I created a ScaleFreeformGraphicalRootEditPart to support "Scalable" graph.
The difference from FreeformGraphicalRootEditPart exists in createFigure().
I changed the HelloGef6 to take it as root EditPart and set the zoom factor
to be "0.7". It works pretty well, except that when I dragging the graph
node, the feedback has a little problem, please see the jpg.jpg attached.
It doesn't happen when I set the zoomfactor to be "2.0". Any suggestion to
resolve the problem?




------------ScaleFreeformGraphicalRootEditPart.java--------- -----------

public class ScaleFreeformGraphicalRootEditPart
extends AbstractGraphicalEditPart
implements RootEditPart, LayerConstants, LayerManager
{

protected EditPart contents;
protected EditPartViewer viewer;
private LayeredPane innerLayers;
private LayeredPane printableLayers;

protected void createEditPolicies(){}

protected IFigure createFigure() {
FreeformViewport viewport = new FreeformViewport();
innerLayers = new ScalableFreeformLayeredPane();
// difference
((ScalableFreeformLayeredPane)innerLayers).setZoom(0.7);
// difference
createLayers(innerLayers);
viewport.setContents(innerLayers);
return viewport;
}

protected void createLayers(LayeredPane layeredPane) {
layeredPane.add(getPrintableLayers(), PRINTABLE_LAYERS);
layeredPane.add(new FreeformLayer(), HANDLE_LAYER);
layeredPane.add(new FeedbackLayer(), FEEDBACK_LAYER);
}


protected LayeredPane createPrintableLayers() {
FreeformLayeredPane layeredPane = new FreeformLayeredPane();
layeredPane.add(new FreeformLayer(), PRIMARY_LAYER);
layeredPane.add(new ConnectionLayer(), CONNECTION_LAYER);
return layeredPane;
}

/**
* Doesnt provide any command support, returns an
* un-executable command
*/
public Command getCommand(Request req){
return UnexecutableCommand.INSTANCE;
}

/**
* Returns the figure to which childrens' figures will be added.
* An example would be a ScrollPane. Figures of child editpart are not
* added to the ScrollPane, but to its ViewPort's View.
*/
public IFigure getContentPane(){
return getLayer(PRIMARY_LAYER);
}

public EditPart getContents(){
return contents;
}

/**
* Return a drag tracker suitable for dragging this.
*/
public DragTracker getDragTracker(Request req) {
// The drawing cannot be dragged.
return new MarqueeDragTracker();
}

/**
* Returns the layer for the given key
*/
public IFigure getLayer(Object key){
if (innerLayers == null)
return null;
IFigure layer = innerLayers.getLayer(key);
if (layer != null)
return layer;
if (printableLayers == null)
return null;
return printableLayers.getLayer(key);
}

/**
* Returns the model of this EditPart.
*/
public Object getModel(){
return LayerManager.ID;
}

protected LayeredPane getPrintableLayers() {
if (printableLayers == null)
printableLayers = createPrintableLayers();
return printableLayers;
}

/*
* defined on interface
*/
public RootEditPart getRoot() {return this;}

/*
* from RootEditPart
*/
public EditPartViewer getViewer() {return viewer;}

protected void refreshChildren(){}

/**
* Sets the contents. The root contains a single child, it's contents.
*/
public void setContents(EditPart editpart){
if (contents != null)
removeChild(contents);
contents = editpart;
if (contents != null)
addChild(contents,0);
}

/**
* Sets the viewer.
* @param viewer EditPartViewer.
*/
public void setViewer(EditPartViewer newViewer) {
if (viewer == newViewer)
return;
if (viewer != null)
unregister();
viewer = newViewer;
if (viewer != null)
register();
}

class FeedbackLayer
extends FreeformLayer
{
FeedbackLayer() {
setEnabled(false);
}
}

}


  • Attachment: jpg.jpg
    (Size: 76.11KB, Downloaded 83 times)
Re: "Scalable" GraphicalRootEditPart and dragging feedback [message #67711 is a reply to message #66894] Mon, 03 March 2003 05:00 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: none.us.ibm.com

Are you using the latest code? What you are seeing looks like a problem
that used to be in FreeformHelper/ScalableFreeformLayeredPane.

There is already a ScalableFreeformGraphicalRootEditPart. Maybe you can use
this class. Maybe you can suggest a better name too! I don't like having 6
words in a class name.

"folklayer" <folklayer@hotmail.com> wrote in message
news:b3mgr2$h97$1@rogue.oti.com...
> I created a ScaleFreeformGraphicalRootEditPart to support "Scalable"
graph.
> The difference from FreeformGraphicalRootEditPart exists in
createFigure().
> I changed the HelloGef6 to take it as root EditPart and set the zoom
factor
> to be "0.7". It works pretty well, except that when I dragging the graph
> node, the feedback has a little problem, please see the jpg.jpg attached.
> It doesn't happen when I set the zoomfactor to be "2.0". Any suggestion to
> resolve the problem?
>
>
>
>
> ------------ScaleFreeformGraphicalRootEditPart.java--------- -----------
>
> public class ScaleFreeformGraphicalRootEditPart
> extends AbstractGraphicalEditPart
> implements RootEditPart, LayerConstants, LayerManager
> {
>
> protected EditPart contents;
> protected EditPartViewer viewer;
> private LayeredPane innerLayers;
> private LayeredPane printableLayers;
>
> protected void createEditPolicies(){}
>
> protected IFigure createFigure() {
> FreeformViewport viewport = new FreeformViewport();
> innerLayers = new ScalableFreeformLayeredPane();
> // difference
> ((ScalableFreeformLayeredPane)innerLayers).setZoom(0.7);
> // difference
> createLayers(innerLayers);
> viewport.setContents(innerLayers);
> return viewport;
> }
>
> protected void createLayers(LayeredPane layeredPane) {
> layeredPane.add(getPrintableLayers(), PRINTABLE_LAYERS);
> layeredPane.add(new FreeformLayer(), HANDLE_LAYER);
> layeredPane.add(new FeedbackLayer(), FEEDBACK_LAYER);
> }
>
>
> protected LayeredPane createPrintableLayers() {
> FreeformLayeredPane layeredPane = new FreeformLayeredPane();
> layeredPane.add(new FreeformLayer(), PRIMARY_LAYER);
> layeredPane.add(new ConnectionLayer(), CONNECTION_LAYER);
> return layeredPane;
> }
>
> /**
> * Doesnt provide any command support, returns an
> * un-executable command
> */
> public Command getCommand(Request req){
> return UnexecutableCommand.INSTANCE;
> }
>
> /**
> * Returns the figure to which childrens' figures will be added.
> * An example would be a ScrollPane. Figures of child editpart are not
> * added to the ScrollPane, but to its ViewPort's View.
> */
> public IFigure getContentPane(){
> return getLayer(PRIMARY_LAYER);
> }
>
> public EditPart getContents(){
> return contents;
> }
>
> /**
> * Return a drag tracker suitable for dragging this.
> */
> public DragTracker getDragTracker(Request req) {
> // The drawing cannot be dragged.
> return new MarqueeDragTracker();
> }
>
> /**
> * Returns the layer for the given key
> */
> public IFigure getLayer(Object key){
> if (innerLayers == null)
> return null;
> IFigure layer = innerLayers.getLayer(key);
> if (layer != null)
> return layer;
> if (printableLayers == null)
> return null;
> return printableLayers.getLayer(key);
> }
>
> /**
> * Returns the model of this EditPart.
> */
> public Object getModel(){
> return LayerManager.ID;
> }
>
> protected LayeredPane getPrintableLayers() {
> if (printableLayers == null)
> printableLayers = createPrintableLayers();
> return printableLayers;
> }
>
> /*
> * defined on interface
> */
> public RootEditPart getRoot() {return this;}
>
> /*
> * from RootEditPart
> */
> public EditPartViewer getViewer() {return viewer;}
>
> protected void refreshChildren(){}
>
> /**
> * Sets the contents. The root contains a single child, it's contents.
> */
> public void setContents(EditPart editpart){
> if (contents != null)
> removeChild(contents);
> contents = editpart;
> if (contents != null)
> addChild(contents,0);
> }
>
> /**
> * Sets the viewer.
> * @param viewer EditPartViewer.
> */
> public void setViewer(EditPartViewer newViewer) {
> if (viewer == newViewer)
> return;
> if (viewer != null)
> unregister();
> viewer = newViewer;
> if (viewer != null)
> register();
> }
>
> class FeedbackLayer
> extends FreeformLayer
> {
> FeedbackLayer() {
> setEnabled(false);
> }
> }
>
> }
>
>
>
Re: "Scalable" GraphicalRootEditPart and dragging feedback [message #67730 is a reply to message #67711] Mon, 03 March 2003 10:23 Go to previous messageGo to next message
Dake Gu is currently offline Dake GuFriend
Messages: 17
Registered: July 2009
Junior Member
I downloaded the latest build (I20030227) of gef and logic example.

I got error when I tried to open the logic editor.

Unhandled exception caught in event loop.
Reason:
org/eclipse/ui/ISaveablePart
Re: "Scalable" GraphicalRootEditPart and dragging feedback [message #68092 is a reply to message #67730] Tue, 04 March 2003 04:32 Go to previous message
Dake Gu is currently offline Dake GuFriend
Messages: 17
Registered: July 2009
Junior Member
Sorry, my mistake. I didn't download eclipse2.1 RC1.

> I downloaded the latest build (I20030227) of gef and logic example.
>
> I got error when I tried to open the logic editor.
>
> Unhandled exception caught in event loop.
> Reason:
> org/eclipse/ui/ISaveablePart
>
>
Previous Topic:How to provide visual feedback in a policy?
Next Topic:[ANN] Open Source project: Help Wanted!
Goto Forum:
  


Current Time: Fri Sep 27 00:02:09 GMT 2024

Powered by FUDForum. Page generated in 0.04071 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top