Skip to main content



      Home
Home » Modeling » Graphiti » How to connect 2 elements created out of same Eobject to different pictogramelements(How to connect 2 elements created out of same Eobject to different pictogramelements)
How to connect 2 elements created out of same Eobject to different pictogramelements [message #1101242] Wed, 04 September 2013 03:35 Go to next message
Eclipse UserFriend
Hi All

I am facing a problem.i am creating 2 pictogram elements for an eobject
(ex: Student A) and i want to connect it to pictogram elements (ex: university and college). i can be able to create 2 diagrams using student A Eobject.


But during connection ,

connection between studentA and university.

sourceAnchor=getFeatureProvider().getPictogramElementForBusinessObject(StudentA);---->(1)
targetAnchor=getFeatureProvider().getPictogramElementForBusinessObject(University);

connection between studentA and college.

sourceAnchor=getFeatureProvider().getPictogramElementForBusinessObject(StudentA);--->(2)
targetAnchor=getFeatureProvider().getPictogramElementForBusinessObject(college);


But when i do as above , then the pictogram element is coming as same for (1) && (2)
so both university and college is connecting to same pictogram element(studentA).but i want it to be different.

Is there any way to resolve this issue?if i am doing something wrong means please let me know.

PFA my sample explanation.

i have drawn the expected and current behaviour

Thanks
Palani
Re: How to connect 2 elements created out of same Eobject to different pictogramelements [message #1101301 is a reply to message #1101242] Wed, 04 September 2013 05:16 Go to previous messageGo to next message
Eclipse UserFriend
getAllPictogramElementsForBusinessObject ?
Re: How to connect 2 elements created out of same Eobject to different pictogramelements [message #1101351 is a reply to message #1101242] Wed, 04 September 2013 06:48 Go to previous messageGo to next message
Eclipse UserFriend
Hi Sylvain

Thanks for you reply.

But getAllPictogramElementsForBusinessObject gives you all the pictogramelements with respect to that object.

For ex: for studentA EObject,if you are creating a container shape and that container shape contains shapes for graphics algorithm. Then getAllPictogramElementsForBusinessObject(StudentA) will give you 1)ContainerShape
2)Shape
3)Shape and so on.

So i cant use that method.

Thanks
Palani
Re: How to connect 2 elements created out of same Eobject to different pictogramelements [message #1101420 is a reply to message #1101351] Wed, 04 September 2013 08:44 Go to previous messageGo to next message
Eclipse UserFriend
Palani,

that should be the way to go, but you will need some more means to identify
the right pictogram element. Maybe a property on the pictogram element
created while adding it to the diagram could help.

If I understood correctly you have two pictogram elements on one diagram
both representing the same student instance and therefor being linked to
that same instance. So the other way around you have 2 links from student to
different pictogram elements, only the first is retrieved by
getPictogramElementForBusinessObject. Only
getAllPictogramElementsForBusinessObject wil give you both.

Michael
Re: How to connect 2 elements created out of same Eobject to different pictogramelements [message #1102912 is a reply to message #1101351] Fri, 06 September 2013 03:31 Go to previous messageGo to next message
Eclipse UserFriend
To give you an example:

In the add method, I do
    private final IPeCreateService pec = Graphiti.getPeCreateService();
    private final IPeService pes = Graphiti.getPeService();



    ContainerShape outer = pec.createContainerShape(parent, true);
    pes.setPropertyValue(outer, AUT_ELEMENT, OUTER);
    ...
    Shape hline = pec.createShape(outer, false);
    pes.setPropertyValue(hline, AUT_ELEMENT, HLINE);
I label each shape with a unique string during creation and adding of the shapes.

When I need a shape I do something like
        ContainerShape outer = (ContainerShape)elm;
        Shape hline = null;
        Shape vline = null;
        Shape kind = null;
        Shape name = null;
        for (Shape child: outer.getChildren()) {
            val = pes.getPropertyValue(child, AUT_ELEMENT);
            if (val == null) continue; // Ignore other graphical elements.

            if (val.equals(HLINE)) {
                hline = child;
            } else if (val.equals(VLINE)) {
                vline = child;
            } else if (val.equals(KIND)) {
                kind = child;
            } else if (val.equals(NAME)) {
                name = child;
            }
        }
        Assert.notNull(hline);
        Assert.notNull(vline);
        Assert.notNull(kind);
        Assert.notNull(name);
This is perhaps a bit too generic for you, but basically, I walk through all shapes, and pick out the ones with the right label. That way I know what I get.

This works much better for me than the 'isinstance' approach of the tutorial.
Re: How to connect 2 elements created out of same Eobject to different pictogramelements [message #1105616 is a reply to message #1102912] Tue, 10 September 2013 00:40 Go to previous messageGo to next message
Eclipse UserFriend
Hi Albert

Thanks for your reply.

But my scenario is different

For Ex: consider from project explorer i am dragging and dropping a node to graphiti and creating a shape out of that object and then again am dragging and dropping the same object and connecting the same. Now i close and reopen my editor , at that time am trying to get the shape using the node object , that is giving me only one shape. so how to address this issue and draw connection between the shapes.

Thanks
Palani
Re: How to connect 2 elements created out of same Eobject to different pictogramelements [message #1105691 is a reply to message #1105616] Tue, 10 September 2013 03:01 Go to previous messageGo to next message
Eclipse UserFriend
Did you look in the file itself?
For very small models, an xml file is still understandable, so you can check whether the expected number of shapes and connections are actually stored.

Another problem I found once is not setting the size of a shape, or a weird location. If you don't see two objects, that does not mean there are not two objects, some may be invisible (eg 0 width or a weird colour) or be drawn below some other object. Positions and sizes are also in the xml file, so you can check there too.
Re: How to connect 2 elements created out of same Eobject to different pictogramelements [message #1105710 is a reply to message #1105616] Tue, 10 September 2013 03:34 Go to previous message
Eclipse UserFriend
Hi All

Finally i got the solution. its my mistake of understanding about getAllPictogramElementsForBusinessObject() Thanks Michael and Sylvain.

Thanks
Palani
Previous Topic:Property View - not refreshed after undo
Next Topic:Coordinates of Connection Decorators
Goto Forum:
  


Current Time: Thu Jul 17 12:40:46 EDT 2025

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

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

Back to the top