Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Graphiti » creating a ChopboxAnchor on a nested polygon
creating a ChopboxAnchor on a nested polygon [message #789436] Thu, 02 February 2012 20:12 Go to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Hi there again,

I have a new issue with creating connections to a polygon nested in an invisible rectangle. When I create a connection it anchors to the outer invisible rectangle and not to the polygon. It is a very similar situation as in the tutorial, in fact I believe I have faithfully replicated this feature setup. (See below)

When I re-ran the tutorial example everything seemed fine. The chop box was associated with the inner rectangle and made its connections there. Unfortunately not so with my parallelogram. Is there anything that I am obviously missing?

It seems to me that I need to create a container shape that is specific to the polygon and associate the chop box with that. However, then in the layout routine it is not clear what pictogram element the context would be picking up or is there a way to change my layout code so that I can still have the outer invisible rectangle be the "parent" (i.e. dictating the size for the addition ornaments, namely the diamond that is added from time to time.)?

Thanks in advance,
Joe


     public PictogramElement add(IAddContext context) {
         Strategy addedClass = (Strategy) context.getNewObject();
         Diagram targetDiagram = (Diagram) context.getTargetContainer();


         SafetyCase sc = (SafetyCase)targetDiagram.getLink().getBusinessObjects().get(0);
         sc.getNode().add(addedClass);


         // CONTAINER SHAPE
         IPeCreateService peCreateService = Graphiti.getPeCreateService();
         ContainerShape containerShape =
              peCreateService.createContainerShape(targetDiagram, true);
 
         // define a default size for the shape
         int width = context.getWidth() <= 0 ? 100 : context.getWidth();
         int height = context.getHeight() <= 0 ? 50 : context.getHeight();
         
         IGaService gaService = Graphiti.getGaService();
         Polygon p;
         {
         	int offset = 0;
         	Rectangle invisible = gaService.createInvisibleRectangle(containerShape);
         	if(addedClass.isToBeDeveloped()){
         		System.out.println("Strat add offset????");
         		offset = UNDEVELOPED_OFFSET;
         	}
         	gaService.setLocationAndSize(invisible, context.getX(), context.getY(), width, height+offset);
 
        	 int xy[] = new int[] {25,0,100,0,75,50,0,50};
        //	 Polygon p = gaService.createPolygon(containerShape, xy);
        	 p = gaService.createPolygon(invisible, xy);
        	 p.setParentGraphicsAlgorithm(invisible);
        	 p.setBackground(manageColor(CLASS_BACKGROUND));
        	 p.setForeground(manageColor(CLASS_FOREGROUND));
        	 p.setLineWidth(2);
        	 Graphiti.getPeService().setPropertyValue(containerShape, "shape-type", "parallelogram");
             gaService.setLocationAndSize(p, 0, 0, width, height);
  
             // create link and wire it
             link(containerShape, addedClass);
         }
         {
         	if(addedClass.isToBeDeveloped()){
         		Shape shape = peCreateService.createShape(containerShape, false);
         		int[] diamondXY = new int[] {10,0,20,10,10,20,0,10};
         		Polygon diamond = gaService.createPolygon(shape, diamondXY);
         		diamond.setBackground(manageColor(UNDEV_BACKGROUND));
         		diamond.setForeground(manageColor(UNDEV_FOREGROUND));
         		diamond.setLineWidth(2);
         		Graphiti.getPeService().setPropertyValue(shape, "shape-type", "diamond");
         		//gaService.setLocationAndSize(p, width/2, height, 10, 10);
         		gaService.setLocation(diamond,  (width/2-10), (height));
         		
         		link(shape, addedClass);
         	
         	}
         }
         // SHAPE WITH TEXT
    // ...............Elided text stuff
         
         // add a chopbox anchor to the shape
         ChopboxAnchor cpb = peCreateService.createChopboxAnchor(containerShape);
         cpb.setReferencedGraphicsAlgorithm(p);
        

         // call the layout feature
         
         layoutPictogramElement(containerShape);
         
         return containerShape;
     }     



	public boolean layout(ILayoutContext context){
        boolean anythingChanged = false;
        boolean mDevelop = false;
        ContainerShape containerShape =
            (ContainerShape) context.getPictogramElement();
        GraphicsAlgorithm containerGa = containerShape.getGraphicsAlgorithm();

        PictogramElement pe = context.getPictogramElement();
        EList<EObject> bOs = pe.getLink().getBusinessObjects();
        Strategy s = (Strategy) bOs.get(0);
        if (s.isToBeDeveloped()){
        	mDevelop = true;
        }
        
        // polygon is added first so will always be 0????
        Polygon poly = (Polygon) containerGa.getGraphicsAlgorithmChildren().get(0);
        // height
        if (containerGa.getHeight() < MIN_HEIGHT) {
            containerGa.setHeight(MIN_HEIGHT);
            anythingChanged = true;
        }

        // width
        if (containerGa.getWidth() < MIN_WIDTH) {
            containerGa.setWidth(MIN_WIDTH);
            anythingChanged = true;
        }
        
        
        resizePoly(poly,containerGa.getWidth(), containerGa.getHeight());

        int containerWidth = containerGa.getWidth();
        int containerHeight = containerGa.getHeight();

        for (Shape shape : containerShape.getChildren()){
            GraphicsAlgorithm graphicsAlgorithm = shape.getGraphicsAlgorithm();
            IGaService gaService = Graphiti.getGaService();
            IDimension size =
                 gaService.calculateSize(graphicsAlgorithm);
            if (containerWidth != size.getWidth()) {
                 if (graphicsAlgorithm instanceof MultiText) {
                	MultiText mt = (MultiText) graphicsAlgorithm;
                	mt.setHeight(containerHeight - DESCRIPTION_OFFSET);
                	mt.setWidth(containerWidth);
                	anythingChanged = true;
                } else if (graphicsAlgorithm instanceof Rectangle){
                	Rectangle rt = (Rectangle) graphicsAlgorithm;
                	
                       	rt.setHeight(containerHeight); //- UNDEVELOPED_OFFSET );
                    	rt.setWidth(containerWidth);
                	
                } else if (graphicsAlgorithm instanceof Polygon){
                	
                	Polygon pg = (Polygon) graphicsAlgorithm;
                	PictogramElement pge = pg.getPictogramElement();
                	if(Graphiti.getPeService().getPropertyValue(pge, "shape-type").equals("diamond")){
                		System.out.println("DIAMOND FOUND");
                		pg.setX(containerWidth/2 - UNDEVELOPED_OFFSET/2);
                    	pg.setY(containerHeight - UNDEVELOPED_OFFSET);
                	}
                } else if (graphicsAlgorithm instanceof Polyline) {
                    Polyline polyline = (Polyline) graphicsAlgorithm;
                    Point secondPoint = polyline.getPoints().get(1);
                    Point newSecondPoint =
                        gaService.createPoint(containerWidth, secondPoint.getY());
                    polyline.getPoints().set(1, newSecondPoint);
                    anythingChanged = true;
                } else {
                    gaService.setWidth(graphicsAlgorithm,
                        containerWidth);
                    anythingChanged = true;
                }
            }
        }
        return anythingChanged;
	}
Re: creating a ChopboxAnchor on a nested polygon [message #789756 is a reply to message #789436] Fri, 03 February 2012 06:09 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Hi Joe,

you're right: the shape is associated with the chopbox anchor. When you nest
graphics algorithms within each other, the anchor still appears for the GA
that is directly associated with the shape.

Not sure what the issue with the layout feature is for you: you define in
which context your layout feature is called in the feature provider. Maybe
there is an issue?

Another option would be not to use the standard chopbox anchors, but box
relative or fixpoint anchors. They are in principle standard shapes that
need a graphics algorithm visualization and can be arranged just as other
shapes can.

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #792198 is a reply to message #789756] Mon, 06 February 2012 13:34 Go to previous messageGo to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Hi there,

So the issue turned out to be partially in my ToolBehaviorProvider. Took a long time to narrow that one down... ugh. Silly mistakes...

On the parallelogram I have gotten closer to a solution but it is not quite the way I want it yet. I have attached a basic diagram with three nodes. You will note that the arrow going to the Strategy1 node stops short of the actual shape. What I am looking to implement is having the arrow attach directly to the parallelogram.

The invisible bounding box actually extends below the green diamond on all features.
There seems to be another bounding box defining the width and height of the parallelogram. The top and bottom of this box is flush with the parallelogram in most locations (ie not in the upper left and lower right).

I can get the chop box to be inline with all of the lines in the parallelogram if I create another container shape and with the parallelogram as its child. This new container shape is a child of the outer container shape.

However this solution breaks to context selection and hence move and resize (at least as it is currently implemented.) Any thoughts on a workaround for this to get the connection features to connect directly to the parallelogram on all sides?


Thanks in advance, as always.
Joe
Re: creating a ChopboxAnchor on a nested polygon [message #792249 is a reply to message #792198] Mon, 06 February 2012 14:57 Go to previous messageGo to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Just thought I would throw this out there in addition to my other reply. I thought about Michael's suggestion about using a BoxRelativeAnchor and implemented it in the following fashion (where p is the original parallelogram):
        BoxRelativeAnchor box = peCreateService.createBoxRelativeAnchor(containerShape);
         box.setRelativeWidth(1.0);
         box.setRelativeHeight(1.0);
         box.setReferencedGraphicsAlgorithm(p);
         
         Polygon pbox = gaService.createPolygon(box, xy);
         pbox.setLineVisible(false);
         pbox.setFilled(false);
         gaService.setLocationAndSize(pbox, -width , -height, width, height);



This solution seems to work in that I can connect to the boundary of the parallelogram on all sides. However... there is always a however...
this seems to mess up the context selection in that when I select the item the BoxRelativeAnchor pictogram is selected and not the original containerShape.

Why would this now be the case? Is there any way to push this feature back down or is there a better way to create the pbox that holds the BoxRelativeAnchor so it is in a shape held within the outer containerShape?

Thanks.
Joe


Re: creating a ChopboxAnchor on a nested polygon [message #794307 is a reply to message #792249] Thu, 09 February 2012 00:56 Go to previous messageGo to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Hi there again,

Playing around with the second solution above (BoxRelativeAnchor) has not yielded much.
For some odd reason when ever I click on the graphic the box around the BoxRelativeAnchor parallelogram comes up not the actual graphics algorithm that, in theory, should be. The tool behavior should be to now retrieve the visible parallelogram. The box around the BoxRelativeAnchor is different than a standard selection context box. It is black with small squares on the corners. I am not exactly sure what that represents.

Is there something I am missing here?

Is there a way to use the ToolBehavior to pass a selection of the BoxRelativeAnchor parallelogram on to the main container and hence to the visible graphics algorithm?

Thanks again,

Joe
Re: creating a ChopboxAnchor on a nested polygon [message #794435 is a reply to message #794307] Thu, 09 February 2012 04:33 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Josef,

sorry, I cannot tell what's wrong here, but that sounds at least odd.

To giva at least an answer to your last question: you can change which
PictogramElement gets selected when you select something in the diagram by
overriding getSelection(PictogramElement originalPe, PictogramElement[]
oldSelection) in your tool behavior provider.

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #794782 is a reply to message #794435] Thu, 09 February 2012 12:49 Go to previous messageGo to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Is there anyway to determine what is actually being selected here? In my tests it still appears to be the Container shape.
I attached an image of the odd box that shows up when I select it.

At the point when this box is highlighted it becomes impossible to do any manipulation of the graphics algorithm (move or re-size).


Is there any example of over riding the behavior of getSelection? I found the one on trying to find connections. But that one did not seem to work necessarily.

  • Attachment: odd_box.png
    (Size: 11.89KB, Downloaded 121 times)
Re: creating a ChopboxAnchor on a nested polygon [message #795751 is a reply to message #794782] Fri, 10 February 2012 17:23 Go to previous messageGo to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Hi all,

I might be narrowing in on a solution but would like to see if anyone could push me over the top.

I was able to improve the selectability (hmm, made up word) of the Strategy graphic by adding in code to the getClickArea method that retrieved the graphics algorithm from the Anchor container.

	@Override
	public GraphicsAlgorithm[] getClickArea(PictogramElement pe) {
		IFeatureProvider featureProvider = getFeatureProvider();
		Object bo = featureProvider.getBusinessObjectForPictogramElement(pe);
		if (bo instanceof Goal) {
			GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
			GraphicsAlgorithm rectangle = invisible.getGraphicsAlgorithmChildren().get(0);
			return new GraphicsAlgorithm[] { rectangle };
		}
		else if (bo instanceof Strategy) {
			GraphicsAlgorithm invisible = pe.getGraphicsAlgorithm();
			GraphicsAlgorithm parallel = invisible.getGraphicsAlgorithmChildren().get(0);
			GraphicsAlgorithm anchorbox = null;
			if(pe instanceof ContainerShape){
				if(pe instanceof AnchorContainer){
					EList<Anchor> alist = ((ContainerShape) pe).getAnchors();
					Anchor anch = alist.get(0);
					anchorbox = anch.getGraphicsAlgorithm();
				}
			}
			return new GraphicsAlgorithm[] {parallel , anchorbox};
		}
		return super.getClickArea(pe);
	}


Basically I added the nested "if" creating the anchorbox.

The benefit to this is that now if I click on the small triangle areas in the "square" on the left and the right of the parallelogram the Strategy node is in context. It is still the case that if I click directly on the Strategy graphic algorithm I get the small black box outline.

I still cannot figure out what this black box outline actually is. Does anyone have any idea? Further does anyone know if it is presentable as a graphics algorithm so that when I "click" on it I can retrieve it and add it to the union of other GA's?

If nothing else I hope my meanderings help someone else down the line.

Thanks everyone (Michael in particular). (I was in a hurry with my last note and hence forgot to say thanks. So double Thanks!)

Joe


Re: creating a ChopboxAnchor on a nested polygon [message #820013 is a reply to message #795751] Tue, 13 March 2012 12:11 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Hi Joe,

took some time until I got back to this, sorry...

I tried a simple idea I got after looking at this again. If an invisible
rectangle does not work, why not use an invisible polygon? I managed to
easily get a diagram like in the attached screenshot by using a chopbox
anchor and an invisible polygon holding the shown polygon and the object
below. Is that what you were trying to build?

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #820016 is a reply to message #795751] Tue, 13 March 2012 12:11 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Hi Joe,

took some time until I got back to this, sorry...

I tried a simple idea I got after looking at this again. If an invisible
rectangle does not work, why not use an invisible polygon? I managed to
easily get a diagram like in the attached screenshot by using a chopbox
anchor and an invisible polygon holding the shown polygon and the object
below. Is that what you were trying to build?

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #820021 is a reply to message #795751] Tue, 13 March 2012 12:11 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Hi Joe,

took some time until I got back to this, sorry...

I tried a simple idea I got after looking at this again. If an invisible
rectangle does not work, why not use an invisible polygon? I managed to
easily get a diagram like in the attached screenshot by using a chopbox
anchor and an invisible polygon holding the shown polygon and the object
below. Is that what you were trying to build?

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #820024 is a reply to message #795751] Tue, 13 March 2012 12:11 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Hi Joe,

took some time until I got back to this, sorry...

I tried a simple idea I got after looking at this again. If an invisible
rectangle does not work, why not use an invisible polygon? I managed to
easily get a diagram like in the attached screenshot by using a chopbox
anchor and an invisible polygon holding the shown polygon and the object
below. Is that what you were trying to build?

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #820028 is a reply to message #795751] Tue, 13 March 2012 12:11 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Hi Joe,

took some time until I got back to this, sorry...

I tried a simple idea I got after looking at this again. If an invisible
rectangle does not work, why not use an invisible polygon? I managed to
easily get a diagram like in the attached screenshot by using a chopbox
anchor and an invisible polygon holding the shown polygon and the object
below. Is that what you were trying to build?

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #820032 is a reply to message #795751] Tue, 13 March 2012 12:11 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
Hi Joe,

took some time until I got back to this, sorry...

I tried a simple idea I got after looking at this again. If an invisible
rectangle does not work, why not use an invisible polygon? I managed to
easily get a diagram like in the attached screenshot by using a chopbox
anchor and an invisible polygon holding the shown polygon and the object
below. Is that what you were trying to build?

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #823150 is a reply to message #820032] Sat, 17 March 2012 17:44 Go to previous messageGo to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Hi Michael,

Thank you so much for looking into this for me. I apologize it has taken me so long to get back to this.

Unfortunately, that still leaves the connection feature dangling below the bottom of the diamond as opposed to being connected to the polygon. The sides look great though!

I thought I would try and run with your idea and implement something similar:

         int polyxy[] = new int[] {25,0,100,0,75,50,0,50};
         int offset = 0;
         Rectangle invisibleRect = gaService.createInvisibleRectangle(containerShape);
         if(addedClass.isToBeDeveloped() || addedClass.isToBeInstantiated()){
         	offset = UNDEVELOPED_OFFSET;
         }
         	
         gaService.setLocationAndSize(invisibleRect, context.getX(), context.getY(), width, height + offset);
        
         // CREATE new shape for chop box
         Shape shapePoly = peCreateService.createShape(containerShape,true);
         Polygon invisible = gaService.createPolygon(shapePoly, polyxy);
         
       	invisible.setFilled(false
       	invisible.setLineVisible(false);
       	
       	gaService.setLocationAndSize(invisible, 0, 0, width, height );
       	//invisible.setParentGraphicsAlgorithm(invisibleRect);
         
        // VISIBLE POLYGON	
        Polygon p = gaService.createPolygon(invisibleRect, polyxy);
        p.setStyle(StyleUtil.getStyleForNode(getDiagram()));
        gaService.setLocationAndSize(p, 0, 0, width, height);
         p.setParentGraphicsAlgorithm(invisibleRect);
        	 //p.setParentGraphicsAlgorithm(invisible);
        //invisible.setParentGraphicsAlgorithm(invisibleRect);
        Graphiti.getPeService().setPropertyValue(containerShape, "shape-type", "parallelogram1");
         
        Graphiti.getPeService().setPropertyValue(shapePoly, "shape-type", "parallelogram2");
          	
             // create link and wire it
         link(containerShape, addedClass);
         link(shapePoly, addedClass);


Unfortunately the "invisible" polygon does not render (I turned it to visible and made it bigger to test this) unless I set the parent GA to be invisibleRect. At that point though I get the following NPE.
!ENTRY org.eclipse.graphiti 4 0 2012-03-17 14:23:32.831
!MESSAGE refresh edit part problem
!STACK 0
java.lang.NullPointerException
	at org.eclipse.draw2d.Figure.add(Figure.java:148)
	at org.eclipse.draw2d.Figure.add(Figure.java:184)
	at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addChildVisual(AbstractGraphicalEditPart.java:209)
	at org.eclipse.graphiti.ui.internal.parts.ContainerShapeEditPart.addChildVisual(ContainerShapeEditPart.java:161)
	at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:211)
	at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart.java:781)
	at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refreshChildren(ShapeEditPart.java:635)
	at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:726)
	at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:644)
	at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refresh(ShapeEditPart.java:555)
	at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:253)
	at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223)
	at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:212)
	at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart.java:781)
	at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refreshChildren(ShapeEditPart.java:635)
	at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:726)
	at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:644)
	at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refresh(ShapeEditPart.java:555)
	at org.eclipse.graphiti.ui.internal.parts.DiagramEditPart.refresh(DiagramEditPart.java:183)
...

But I am not certain where this is derived from exactly.

I'll use your solution for the moment and keep playing.
Thanks again,
Joe
Re: creating a ChopboxAnchor on a nested polygon [message #826008 is a reply to message #823150] Wed, 21 March 2012 10:32 Go to previous messageGo to next message
Michael Wenz is currently offline Michael Wenz
Messages: 1577
Registered: July 2009
Location: Walldorf, Germany
Senior Member
It seems that you have a shape without an associated GA, that's usually the
cause of such a NPE.

How about defining the outer invisble polygon just the size that it covers
exactly all inner visible polygons?

Polygon invisiblePolygon = gaService.createPolygon(containerShape,
new int[] { 25, 0, 100, 0, 75,50, 50,50, 55,55, 50,60, 45,55, 50,50
,0,50 });

Michael
Re: creating a ChopboxAnchor on a nested polygon [message #826865 is a reply to message #826008] Thu, 22 March 2012 11:46 Go to previous messageGo to next message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Hi Michael,

I thought about that at one point but discounted for reasons which I do not recall at this point. But no harm in trying. I believe my main concern was the on an update to the model, sometimes the diamond will be eliminated during editing (a user initiated state update). I was worried about replacing the entire container. However, I will give it a whirl!
Thanks as always for your support and attention.
Joe
Re: creating a ChopboxAnchor on a nested polygon [message #831963 is a reply to message #826865] Thu, 29 March 2012 11:24 Go to previous message
Josef Pohl is currently offline Josef Pohl
Messages: 82
Registered: January 2012
Member
Hi Michael,
Sorry it has taken me a bit to get back to this. I have had a few other things going on, as I am sure we all do.

Well, this worked. It took a bit to get the rendering right but it worked really well.

So I have two other questions which are somewhat related.
The first is related to the similar connection placement for rounded rectangles. I have tried a few different implementations with the chopbox (implementations as in
containershape and GA configurations) but the connection feature will not connect directly to the GA on the corners. (It again is offset by the rectangle.) I tried this behavior in the tutorial code and got a similar outcome. I am rounding my corners a lot more than the tutorial. Is there something similar that I could try to get the attachment at the corners?

The second question relates to refresh and update. I am setting certain properties, such as the odd diamond and some text via the property viewer (I used the EEF methodology to create these.) Is there any way to get a "refresh" to fire automatically when an update is recognized? What is the sequence of events that cause an update to be recognized?

Thanks, as always!

Joe
Previous Topic:Graphiti compatibility
Next Topic:Property sheet with table
Goto Forum:
  


Current Time: Thu Jul 31 01:40:20 EDT 2014

Powered by FUDForum. Page generated in 0.02226 seconds