Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » SlidableAnchor and custom polygon as NodeFigure
SlidableAnchor and custom polygon as NodeFigure [message #210001] Thu, 30 October 2008 14:15 Go to next message
Stephan Kleber is currently offline Stephan KleberFriend
Messages: 6
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------030004000506040206010307
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I need a NodeFigure to have an slidable anchor, following the outline of
my figure. At the moment on top and bottom of the figure the connection
line is set apart from the figure due to the use of an rectangular
bounding box.

I tried to acomplish my goal by overriding getPolygonPoints() from
NodeFigure which for my understanding should have done the trick. But it
didn't. The method below shows my attempt. primaryShape is an IFigure.

@Override
public PointList getPolygonPoints() {
PointList pl = primaryShape.getPolygonPoints();
return pl;
}

The result is an anchor in the middle of the shape almost all the time
except two angle-ranges which result in strangeLine.gif
The visible angled line should have gone to the shape below.

I don't have a clue where to look for the error, since I found almost no
information on this and the few I found spoke of attempts linke mine.

Help is very much appreciated.

Stephan

PS: I'm new to this newsgroup, so if I've done anything wrong in writing
this request, please criticise me constructively.

--------------030004000506040206010307
Content-Type: image/gif;
name="polyNode.gif"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="polyNode.gif"

R0lGODlhhwB8APcAAAAAAAAALgAAQQAAXAAAZgAAggAAiQAAkQAuLgAueQAu kQAumABBQQBB
mABPqwBcqwBmsQBwtwBwvS4AAC4Agi4uAC4uLi4ukS5Pmi5cmi6RzTOZmUEA AEEALkEukUFc
T08AAE8ALk8ugk8uiU9BAE9BXE9BiU9BkU9PLlwAQVxPLlxPT1xcXFyYwmYA AGaCn2aYyGax
5XAAAHBBT3BBXHBcXHBmQXCr13nC7oCAgImCq4mnsIm33JFPAJFcQZG33JG9 4JHN7phcLpjN
8pvS8pycnJ9BAJ9mAJ9wLqVwQaXN6qXX8qewsKt5T7CwsLFmALfg97u7u71w AL2JT8LCwsTy
/8jy/8vLy8yJLs2RQc2YT9KRT9SYQdTU1NT0/9a3cNfl19fu+9vX29ylXNzc 3Nz7/+DS0uPj
4+T8/+XNq+q9cOq9eerIkerq6ur78uzr8u3+/u7IgvLNkfPSkfPz8/P+/vTU nfT3+/fXpffg
t/fy7vvgq/vgsf7+/v/uvf/uzf/yxP/zyf/11P/7zf/74//91wAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAAIYAIf/8SUNDUkdCRzEw MTIAAAPMYXBw
bAIAAABtbnRyUkdCIFhZWiAH2AAKAB0AFAAVACxhY3NwQVBQTAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFla AAABVAAAABR3
dHB0AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAA AA5iVFJDAAAB
yAAAAA52Y2d0AAAB2AAAADBu/2RpbgAAAggAAAA4ZGVzYwAAAkAAAABhZHNj bQAAAqQAAADc
bW1vZAAAA4AAAAAoY3BydAAAA6gAAAAkWFlaIAAAAAAAAHjuAAA/oQAAApdY WVogAAAAAAAA
V5YAAKw9AAAVqVhZWiAAAAAAAAAmUgAAFD4AALrkWFlaIAAAAAAAAPMWAAEA AAABFspzZjMy
AAAAAAABDHIAAAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcWN1cnYA AAAAAAAAAQHN
AABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAA AQAA0XQAAAAA
AAEAAP8AANF0AAAAAAABAAAAANF0AAAAAAABAABuZGluAAAAAAAAADAAAKPA AABXAAAASkAA
AJ2AAAAmVwAAEtsAAFAAAABUQAACMzMAAjMzAAIzM2Rlc2MAAAAAAAAAB0Np bmVtYQAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAABAAAAAMbmJOTwAA AAwAAADQc3ZT
RQAAAAwAAADQZmlGSQAAAAwAAADQZGFESwAAAAwAAADQemhDTgAAAAwAAADd 0GZyRlIAAAAM
AAAA0GphSlAAAAAMAAAA0GVuVVMAAAAMAAAA0HB0QlIAAAAMAAAA0GVzRVMA AAAMAAAA0Hpo
VFcAAAAMAAAA0HJ1UlUAAAAMAAAA0GtvS1IAAAAMAAAA0GRlREUAAAAMAAAA 0G5sTkwAAAAM
AAAA0Gl0SVQAAAAMAAAA0ABDAGkAbgBlAG0AYW1tb2QAAAAAAAAGEAAAkhsC AFcrwu6KAAAA
AAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwg MjAwOAAALAAA
AACHAHwAAAj/APsIHEiwoMGDCPuQ6ZKwocOHECNKnEiRIp2KGDNq3MjRYRuG HUOKHEly4JmL
JVOqXOnwDMuXMFeSIROzpk2OKG/q3PnwzBWeQIMWbCO0KFA6II0qrXmG6NKn L51CnVpyIdWr
I3Ni3ZqxzU+uYCu20Rq2rEOaZtM2PONSrVuDUt/K9Sm3bh+yds3S+ZpXbdO+ btsCNnsG7eCy
eA9jbUNFcdmxjsEijQyWLWWucS9Ppav5auLORveCpgp5tEonmSEaNtvGiVIn TgRfPgP7NZ0o
qx2TiULHtVHXt5Mq7sK7j++ix6nwHXylscDjQqE3P6ycIPSg169EARxlufHX Bol//w4b3OB1
oOcVOhm/tXfu5+AP0k6NOTbC9Dvx92ktm+v8hPrdFKB7YZGxXkMB2pRgeVuJ 51CCNUHYR3dY
aQeRhDBhWN1U010YH0QdLrWhh79N5GBRDEaE4UsrCrQbezDd9t6DH0pEG4wr 9dYfichh1Bps
QAYp5JBEFmkkfQ+1uJKSA+GokpMHMZmSlHJRSZKVbmEpkpZpcdmRl2WBuZGY YJGZkZlboVmR
mlexOZGbU8GpomnwlUinnDyOhmeSdH5np2l70nhnjQNtUNMbDSE6UqAIGkTF Bs4dlEcNK7wQ
hkaAUAAHQpluKpAgPgCQgBcYMQqgQRvkYChCchQARg8aaP80iAmeGjRrrVxI 0IcZtb5JaBE5
AFsEQnMs0AcWsTYRgABK9GFHBnXYgUEdgtBgAwA3CJREACg0sGkTAGSARh/b dotrA+P2IcgM
KgDQQh19gCvufR8+GiwVwEJqkB0BkEBAGWs8UAcfBKAhxwF1HFxHIBwQsYcB cATcBx4XwKGG
A3U8gYPEFNdKyBEA/NBHIB1AEUgIVVycMQ702rlBqkVQIXO+qw40xwFuTAEB siN3UMXNdQAd
yAkL08rzICPAkQUALJSwxNFJF5TGBEEMDa8RRCzd9BIt9yiQvTHnG+lACsdh wBcR9OHHAGUA
rYUCCycdSNJj6MqGAhY7MFDdfdz/XStKUsQQiAhoFJKCFRcTJAa8i/chBhO/ BhssQnYAYEEA
QBAiBAIA8NBHITIEUEEDC58Ax9Bw/OECAB9gAAchSAjQwRCqs+76QFv0O2og IDAwAQx9wC77
EIAAUEXxxwOwA6F9pFozRHTAO9AdDuFFvUCJ6aEoIB7Acf30p/450KNjUyWI DtLPKX6hlJna
tZ7Ma+Z+lH3Ob1798V9mf0H755d/+/+LTP8GMkABBdAxBfQToA6omARSCUol gSD/GHiQHxnp
ghjMIGpKRcGC3Ogo9qGIAynyIqHISIQdFMiJTBgF4fBpfQ0JkVJG9EKvPYSG S5Fho2B4EApd
xUI1jE71bFrIlRW+DzsNIRBYDMSeESKEP4TZ4BHRg5D/pAWK9OMhE9+ixAnC 0IhqSREBCQXE
vPhwjOLToV1o6MQ+4LAvIRqhGA/jIAee8DIvcmAINUMbByLJMa3pkyAHSchC GvKQiEykIhfJ
yEY6UjMBAQA7
--------------030004000506040206010307
Content-Type: image/gif;
name="strangeLine.gif"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="strangeLine.gif"

R0lGODlhvwDZAPcAAAAAAAAALgAAQQAAXAAAZgAAggAAiQAAkQAuLgAueQAu kQAumABBQQBB
mABPqwBcqwBmsQBwtwBwvS4AAC4Agi4uAC4uLi4ukS5Pmi5cmi6RzTOZmUEA AEEALkEukUFc
T08AAE8ALk8ugk8uiU9BAE9BXE9BiU9BkU9PLlwAQVxPLlxPT1xcXFyYwmYA AGZmZmaCn2aY
yGax5XAAAHBBT3BBXHBcXHBmQXCr13nC7oCAgImCq4mnsIm33JFPAJFcQZG3 3JG94JHN7phc
LpjN8pvS8pycnJ9BAJ9mAJ9wLqVwQaXN6qXX8qewsKt5T7CwsLFmALfg97i4 uL1wAL2JT8DA
wMTy/8jIyMjy/8yJLs2RQc2YT9HR0dKRT9SYQdT0/9a3cNfl19fu+9vX29vb 29ylXODS0uXN
q+Xl5enp6eq9cOq9eerIkezr8u7IgvLNkfPSkfPz8/TUnfT3+/fXpffgt/fy 7vvgq/vgsfv3
8v7+/v/uvf/uzf/yxP/zyf/11AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAAIAAIf/8SUNDUkdCRzEw MTIAAAPMYXBw
bAIAAABtbnRyUkdCIFhZWiAH2AAKAB0AFAAVACxhY3NwQVBQTAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFla AAABVAAAABR3
dHB0AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAA AA5iVFJDAAAB
yAAAAA52Y2d0AAAB2AAAADBu/2RpbgAAAggAAAA4ZGVzYwAAAkAAAABhZHNj bQAAAqQAAADc
bW1vZAAAA4AAAAAoY3BydAAAA6gAAAAkWFlaIAAAAAAAAHjuAAA/oQAAApdY WVogAAAAAAAA
V5YAAKw9AAAVqVhZWiAAAAAAAAAmUgAAFD4AALrkWFlaIAAAAAAAAPMWAAEA AAABFspzZjMy
AAAAAAABDHIAAAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcWN1cnYA AAAAAAAAAQHN
AABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAA AQAA0XQAAAAA
AAEAAP8AANF0AAAAAAABAAAAANF0AAAAAAABAABuZGluAAAAAAAAADAAAKPA AABXAAAASkAA
AJ2AAAAmVwAAEtsAAFAAAABUQAACMzMAAjMzAAIzM2Rlc2MAAAAAAAAAB0Np bmVtYQAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAABAAAAAMbmJOTwAA AAwAAADQc3ZT
RQAAAAwAAADQZmlGSQAAAAwAAADQZGFESwAAAAwAAADQemhDTgAAAAwAAADd 0GZyRlIAAAAM
AAAA0GphSlAAAAAMAAAA0GVuVVMAAAAMAAAA0HB0QlIAAAAMAAAA0GVzRVMA AAAMAAAA0Hpo
VFcAAAAMAAAA0HJ1UlUAAAAMAAAA0GtvS1IAAAAMAAAA0GRlREUAAAAMAAAA 0G5sTkwAAAAM
AAAA0Gl0SVQAAAAMAAAA0ABDAGkAbgBlAG0AYW1tb2QAAAAAAAAGEAAAkhsC AFcrwu6KAAAA
AAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwg MjAwOAAALAAA
AAC/ANkAAAj/ANMIHEiwIBo0Lwa+4MJFj8OHECNKnEixosWLGDNq3Mixo8aC IAkeTChwYUOP
KFOqXMmyJcqQMEcqZOiyps2bOHM6hBlSZkmaOoMKHUpUD0+QPtOYLMq0qdOO Rw0inHnyqdWr
V6OKnPqzKtavYINqHZh0adizaF2OFVgWaNq3cDeuTdPWa9y7eCG+2Mu3r9+6 eQMHllLlChcy
aNLEiQMxDl2uSt0KnpyWsGHEihk/dAyYsuezlg8nXtz4McnIdj+rdhoaM+nN pqmunv209WjN
DjlDNku791DbmUt39k08J/DXuWN3Lc785nHcenSf5t28usrnwndLts6STG/s sIdz/1/p+Hth
0cHDa0893iMX6KrBJxff/qVv+dGVo66vkgua++e5Bp10svGHEnyr4UfgcgZ2 RAZ7nymoH3UN
VuiQhPRZWFEaVxSH4XoaZoTgbB9Ot12IEsXRoYcB3padiRCiuFMazJVYoIwT eVdji+nNByKO
EtHVnI0MAgkRGiOSyCNy+WWIo4rVEbmfkZslqeRlLqoHI5UPVWGdlBRyOeSS A054ooxV0Bgl
mS/eaKSVtIF5Zoj+cSdnjBaq+SWbWropYxo67ollj03+CCSS4935ZqCCosfk glPimFh7ih5a
X6UyosFoowK2WSSKcBKHaYgc8jeqmGMO+qiZeLYXhxQGnv9aIZOJ8unjlihe EaqothaKq4bl
xdorpGEaSMauvKpappP8bUrpsKySqqep0DLbXqupOrqsoQ0G26Cs9V0xLbXK ehpptxqCO95h
6VbLrYHYZttpn58aCyiyAJZL77kVPjYup1ne6qeFcZAhZK36Clwviu/FG6G7 vxp5rMOTqZvp
vSwm7OvAVPqbr7bmFstlwYDGCTHHqOrhHcVoWZzyxPiG5XLKRmn6b1wz0xzd Qf/llbPODk2M
189AB60Hy0URXbRDib1X2ckLL30RXQaDBjW/Uot4kLOsXS1y1hgJfZXSYEsk dtcaEztn2R+l
4TRTZLM9URya9vyb12vLzVFiXNv/FLfeFXm3onF4Iw24RUjqitPfh1skEBc3 p8R44xbRfZBL
k1N+UdMsZa755noM7pHnn0+tYswPkV76RY4hxpHqq2O0tUawxy47lBfVbrvs oVup++4YPX7z
78Bj1LrdFxZe/FWcJ592tMszH4eXxEcv16vKW/9V9drTnn33VnEPfu7fj9+U +OZThH76Eq3P
PkTuv+88yPt+Lb/f5d+vU/zy8//+nU+I3HjS8IRvFe4JT0BefdCAQAM+ry5P eFXfmkMGKcSh
gMJ64HoK+CrDUYYLFtQDBslFP4WhZoSFGc8VvOSQEV7qgBBZoXVS+BAXPkuD MLLhFWBVI9GJ
0IEl3FhX/2x4tBD2poMSIaKdYGi2CNLmglxTIsAIpTYuSJGBAsQLARVYQyDO y4QmkaJREvgZ
LFZEjPIKmBBPWLknTPAtZHDiGb2oxiqiMTpS8GBTQBiqO2YsiHbMiBR8+JYd ZsSPyQIkqxCp
BxrCRYaHpCMVF7kRSKbFkRhhpHlwSBVNFhF1OkHiRjx5JUVC0EFGxIoEO0LK BDFxb3K0ygW5
mElJruqUHiEgAnfJy1768pfADGYW55hBU24wJaCsSTJbaMtt5RBFrYzPKy0U zYdxcojQbGbI
GFJN2nSTMgDMZjG/uMYwipOE5AxkiL5ZsWlWiJ2CCec6tVk/bp7zhddk4zzH Wf9HSu4Tnf3E
pYbgORh3NoigPjOoHjbAlDZYxKE2QejQDFqFDbBwInWwwQpgIAaV9IECFfko RP7wAwAk4Aso
kehd5AmRDeiAoRR5QwHC4AMNrMQEFsHpQ7wgAT2YISUqxZk7jaADohqBInBY gB6yYFMnBEAA
S9CDHDIgVQzo4Q81uAEAcOAQJQQABQ1wiBMAQFU9eBWsEPFCWB3yBxqoAAAt ECtZiQnQSQq0
okWtAlEtKhE5BIAEBNDDGh6gBzwE9g0H0ANi9eAHDhThDgYQLGHpcAE9qMEB eoBCDgarB8pG
BAkAAAJjOxAFP4TACpfNbA4oElS4yHMDLjVCFWa7V5j/PgQOiaUCBJg6Wivg Vg+/9cMJGItT
3uphBHrQAgBYUAImGBe5ETnDBIQgXIccoQjKZS4TWEtPMNrTIXiV7V4v+pDF usEAYIiAHvYw
AOAmdgsKYCxy/YDcMvSUDfFNrUPsqwf8NsYhU5CBH0TgkBRgQb8OGUOCE9yE 7pbzuw8xalEp
IgcAWCAAQdDDEBAAgB44ZAYBqEBYq1tdPrgAAB+wqh6SIIAOEMHEKFaxQ7rw 15P6AQQMmEAM
HMJiF/cBAFb4cZABwAMHq7OlL+UIfObAuojkgcm5mYgdINoHD+gByg55Ml3x acxnRqSi5L3L
H3bASiP7MyK25U5r38JSappZ/6Bu5qddj/lPLqfzzHGu6y3pPNA38znPdg7o n9/pZy/3Wc57
NjSgb9jlTt6T0XeGM6ER7UxH1xnSgla0klUJ1EJbGirBDLWoR73LYXKX0tu0 okcYuMyWzNIj
a35aPs3JkQq22iWr5EisW6bQivDxLKLUyK6tNmsIY8SSaMHkRYYts15LRNlo QbZFmA2WNldk
kHkxZC1RXU9VVy6Pgvn1tD2NzYpAkTJxhBO1t+fsLZYxgFvG9Jw1/RAzqsbd E1k3VqwdtFiq
5txJJLc+ISLuJ4I7Ivoemzu17SEfJjx805Q2cTD58Nq8EtrFsWTF0dZobAab O7/e+PkOmOv6
2FrkcFI7IBkbxECUJ+2Apm4OAQVuP/21xH/sw3n6dG4+no/P5+ADeveErj2i W8/o0UP68pRe
PKYDz+m7g7rtpB47qq/O6qXD+ue0rjmuU87rjQP74QICADs=
--------------030004000506040206010307--
Re: SlidableAnchor and custom polygon as NodeFigure [message #210151 is a reply to message #210001] Fri, 31 October 2008 11:30 Go to previous messageGo to next message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Stephan,

Looks like you have to either override NodeFigure.createDefaultAnchor() method
or put proper connection anchor into HashMap returned by NodeFigure.getConnectionAnchors()
method.
Then you have to modify returned connection anchor appropriately to calculate
proper intersection point as a result of getLocation(Point reference) method
execution.

I think you can use one of theexisting ConnectionAnchor implementations.
For example - BaseSlidableAnchor with overriden getPolygonPoints() method
(not a method of NodeFigure!);

-----------------
Alex Shatalin
Re: SlidableAnchor and custom polygon as NodeFigure [message #210281 is a reply to message #210151] Mon, 03 November 2008 14:48 Go to previous messageGo to next message
Stephan Kleber is currently offline Stephan KleberFriend
Messages: 6
Registered: July 2009
Junior Member
Thank you Alex,

but BaseSlidableAnchor should already by able to do what I want. Look at
the predefined BaseSlidableAnchor.getPolygonPoints():

....
if (getOwner() instanceof IPolygonAnchorableFigure) {
PrecisionPointList polyList = new
PrecisionPointList(((IPolygonAnchorableFigure)
getOwner()).getPolygonPoints());
getOwner().translateToAbsolute(polyList);
return polyList;
}
....

So it should suffice if owner (returned by
BaseSlidableAnchor.getOwner()) is an implementation of
IPolygonAnchorableFigure. This is the case for a NodeFigure. So I
overrode NodeFigure.getPolygonPoints() to return the polygon points of
my figure. This works so far and produces relative coordinates for the
polygon of my NodeFigure.

I tried to override NodeFigure.createDefaultAnchor() to implement my own
calculation of the intersection points. But then I ran into a problem
translating coordinates from relative to absolute coordinates. The
methods translateToAbsolute() and translateToRelative() simply didn't do
anything on my reference points or my point list of my polygon.

Either I missed something in the API-Doc or the description of this
methods is simply wrong. Since these Methods are heavily used I assume
there is no bug. Do I have to calculate this myself, too?

Any further ideas?

Stephan


Alex Shatalin schrieb:
> Hello Stephan,
>
> Looks like you have to either override NodeFigure.createDefaultAnchor()
> method or put proper connection anchor into HashMap returned by
> NodeFigure.getConnectionAnchors() method. Then you have to modify
> returned connection anchor appropriately to calculate proper
> intersection point as a result of getLocation(Point reference) method
> execution.
>
> I think you can use one of theexisting ConnectionAnchor implementations.
> For example - BaseSlidableAnchor with overriden getPolygonPoints()
> method (not a method of NodeFigure!);
>
> -----------------
> Alex Shatalin
>
>
Re: SlidableAnchor and custom polygon as NodeFigure [message #216369 is a reply to message #210151] Mon, 26 January 2009 11:10 Go to previous messageGo to next message
Cristian is currently offline CristianFriend
Messages: 5
Registered: July 2009
Junior Member
I have same problem, i would like to define an anchor that follows the
outline of my figure.
It's a composite figure (a polygon followed by a circle)

> Looks like you have to either override NodeFigure.createDefaultAnchor()
> method or put proper connection anchor into HashMap returned by
> NodeFigure.getConnectionAnchors() method.

I tried to override NodeFigure.getConnectionAnchors() method following
the example of the logic diagram (LEDEditPart.createBoundsMap()), but in
HashTable adds Point instead of connection anchors.
Probably I'm not able to add the correct parameters to HashTable,
someone could give me an example?
Re: SlidableAnchor and custom polygon as NodeFigure [message #216425 is a reply to message #216369] Tue, 27 January 2009 02:08 Go to previous messageGo to next message
Alex Boyko is currently offline Alex BoykoFriend
Messages: 200
Registered: July 2009
Senior Member
Hi,

You need to override more than just getConnectionAnchor() method on the
NodeFigure. #getConnectionAnchorTerminal(ConnectionAnchor) should be
overriden too, so you have keys for the hashtable. Perhaps, other anchro
related methods should be overriden too, but that depends on what you're
doing.

Cheers,
Alex
Re: SlidableAnchor and custom polygon as NodeFigure [message #216517 is a reply to message #216425] Tue, 27 January 2009 16:13 Go to previous messageGo to next message
Alex Boyko is currently offline Alex BoykoFriend
Messages: 200
Registered: July 2009
Senior Member
Another option is approximate the figure with a polyline and let the
regular Slidableanchor do all the work for you.
This is the best option in my opinion!

Cheers,
Alex
Re: SlidableAnchor and custom polygon as NodeFigure [message #216578 is a reply to message #216517] Wed, 28 January 2009 14:16 Go to previous messageGo to next message
FrankTZimmermann is currently offline FrankTZimmermannFriend
Messages: 2
Registered: July 2009
Junior Member
Alex Boyko schrieb:
> Another option is approximate the figure with a polyline and let the
> regular Slidableanchor do all the work for you.
> This is the best option in my opinion!
>
> Cheers,
> Alex
>


I've just overridden this one method NodeFigure.getPolygonPoints() in
the corresponding EditPart and it works fine.


/**
* @generated NOT
*/
protected NodeFigure createNodePlate() {
final DefaultSizeNodeFigure result = new
DefaultSizeNodeFigure(getMapMode().DPtoLP(40),getMapMode().D PtoLP(40)){

@Override
public PointList getPolygonPoints(){

//just some way to get the polygon points
Rectangle bounds = new Rectangle(getBounds());
PointList ptList = new PointList();
int[] scalePoints = ((EventFigure)getPrimaryShape()).scalePointList();
for (int i=0;i<scalePoints.length;i+=2){
ptList.addPoint(scalePoints[i]+bounds.x, scalePoints[i+1]+bounds.y);
}
ptList.addPoint(scalePoints[0]+bounds.x, scalePoints[1]+bounds.y);
return ptList;
}

};
return result;
}

hope it helps
Frank
Re: SlidableAnchor and custom polygon as NodeFigure [message #219804 is a reply to message #216578] Tue, 24 February 2009 08:34 Go to previous message
Cristian is currently offline CristianFriend
Messages: 5
Registered: July 2009
Junior Member
Thanks for your help,
but what is the EventFigure class?

> protected NodeFigure createNodePlate() {
> final DefaultSizeNodeFigure result = new
> DefaultSizeNodeFigure(getMapMode().DPtoLP(40),getMapMode().D PtoLP(40)){
>
> @Override
> public PointList getPolygonPoints(){
>
> //just some way to get the polygon points
> Rectangle bounds = new Rectangle(getBounds());
> PointList ptList = new PointList();
> int[] scalePoints = ((EventFigure)getPrimaryShape()).scalePointList();
> for (int i=0;i<scalePoints.length;i+=2){
> ptList.addPoint(scalePoints[i]+bounds.x, scalePoints[i+1]+bounds.y);
> }
> ptList.addPoint(scalePoints[0]+bounds.x, scalePoints[1]+bounds.y);
> return ptList;
> }
>
> };
> return result;
> }
>
> hope it helps
> Frank
>

regards,
Cristian
Previous Topic:nodes disapear after connecting them
Next Topic:integer arrays
Goto Forum:
  


Current Time: Mon Mar 08 13:10:29 GMT 2021

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

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

Back to the top