Filtering out nodes and connections from a diagram results in dangling connections in filtered state [message #199379] |
Fri, 14 October 2005 15:43 |
Eclipse User |
|
|
|
Originally posted by: smeier.xxx.xxx
This is a multi-part message in MIME format.
--------------020302080804040600070606
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hi there.
I have a problem which was often discussed in this newsgroup, but I
couldn't manage, sorry. I use GEF 3.1 for a diagram editor which can
create nested nodes and connections that can connect arbitrary nodes as
shown in the example attachment, situation a.
I'd like to filter out, for example, the inner node X in the diagram and
I want also filter out the connection y. This is shown in situation b.
in the attachement.
Unfortunately it results something like in situation c. with a dangling
connection but the node is filtered out correctly.
The code I use is the following in the edit part of the node.
I have a propertyChange method which listens for specific events. When
changing the visibility property of the node, the
refreshSourceConncetions() and refreshNodes() are called.
public void propertyChange(PropertyChangeEvent evt) {
String prop = evt.getPropertyName();
if (ModelElement.VISIBILITY_PROP.equals(prop)) {
refreshChildren();
refreshSourceConnections();
} else if (NodeContainer.ZOOMED_PROP.equals(prop)) {
refreshChildren();
refreshSourceConnections();
refreshVisuals();
} else if (Node.SIZE_PROP.equals(prop) ||
Node.LOCATION_PROP.equals(prop)) {
refreshVisuals();
} else if (Node.NAME_PROP.equals(prop)) {
....
}
}
I have overridden the getModelChildren() and the
getModelSourceConnections() which provide now a filtered list of all
visible nodes and visible source connections respectively.
Somehow like this:
protected List getModelChildren() {
FilteredArrayList list = new
FilteredArrayList(
(ArrayList)getCastedObjectModel().getChildren());
list.setFilter(new ModelElementVisibilityFilter());
return list;
}
protected List getModelSourceConnections() {
FilteredArrayList list = new
FilteredArrayList(
(ArrayList)getCastedModel().getSourceConnections());
list.setFilter(new ModelElementVisibilityFilter());
return list;
}
The used classes which provide the filter service work correctly and the
visible properties of the corresponding connections and nodes are set
properly (ie. to false) before calling the methods refreshChildren() and
refreshConnections().
The filtering of the nodes works, in contrast to connections which
dangle somehow after the filter operation. When debugging GEF, it looks
as if the edit parts of the connection are thrown away in the
refreshSourceConnections() method, but somehow there are still some
remaining artifacts of them.
What's wrong?
thanx & regards
Silvio
--------------020302080804040600070606
Content-Type: image/gif; x-mac-type="47494666"; x-mac-creator="4D655361";
name="Untitled-1.gif"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="Untitled-1.gif"
R0lGODlh3wF0AsQfAMDAwD8/P0BAQICAgAAAAL+/v39/f/Dw8ODg4KCgoLCw sDAwMGBgYJCQ
kCAgINDQ0HBwcFBQUBAQEC8vL4+Pj+/v7w8PD09PT9/f38/Pzx8fH19fX29v b5+fn///////
/yH5BAEAAB8ALAAAAADfAXQCAAX/4CeOImCeaKqubOu+cMweZG3feK7vfO// wKBwSCwaj8ik
cnkjBJ7QqHRKrVqv2Kx2agEwv+CweEwum89oIMHDbrvf8Lh8Tq/b7/CAN83v +/+AgYJoa3iG
h4iJh3qDjY6PkJGSX4WKlpeYd4yTnJ2en6BplZmkpZiboamqq6ytIqOmsbJ2 qK62t7i5ZrCz
vb5stbrCw8TFOry/yabBxs3Oz6zIytOXzNDX2NmD0tTdi3va4eLjZdze53XW 5Ovs7T7m6PF5
4O719vev8vq09Pj+/9rg7ZOnDqDBg7oEDkRXEKHDh6kULvTWEKLFi5AkTqRW EaPHj300blTW
EaTJk2FE/478VRKly5dFVK7s1RKmzZs7ZL4pQKCnz59AgwodSpRogUQ1cSpd +kGnmwIBZnoI
cBRRUqZYXzptA1UqVaT9soplupVN15lfrYYdy9ZmWQ9nV6b91rYuzrdxR841 dNWuX4B4o6Kt
SvevYZCBvRLmu/aw44OJB4N9TPlhZLmL8fStzBnbZUUcKLDBcKFCpr2aG3de Te5zogwWTAcQ
fTqzJtWsc2dznYiDgQITSqG+rbt460x5FVWwMCGDcNv8jEsPiFwwpgsalkFP h3u691y8EQG/
YOD55O/oi4U/NKEABgsYSA2Pnr5+wuqYOgg2sEH+djqb2SegI+vhQYFzHlRg gP9pp/w3R4AD
RghIgfrMx52EGIZCIUEOygFhhiCWg59kaoVoYiQbxmMhgN2d6OIZKTLUYRwf hoiACTo0IECL
NzzAAAM0fADBAz8E+VeM56z4II8v1kDAABA4sNYDAhxgJBARKHAAAwl8sOMH CFx5AwIOHIYk
RTPO02QQBIigQAQ3DDBATDV8+aVxZ3ajpIdMZsiAAAuE1eYHDUDwwZYLCPDA Aw44IMAHCggg
AJAfDNCAlIgqOgIEBAiQgJxeAgCBBAsYqsACC8zpJQSPtgkAAxEswIAIWwoQ AQR9WpQnR2m+
USN6NJBpQ6eoisBAAx8A8CioZNLQwKwDLEDDsck+OsL/oKDa6UWzoX4gAbJN JSsBAl52SS0C
EuQK0a7T7EmjuhGKKsCgJLR5AASzOiDnAG2C2oCq3laqqr5y0huuwN1+mYAA cjJ8cLjKigBq
mSLceRO7JPXqxq/ePbAAkQa/cq23KCD87wgSIEzyCfVKPKe2hDJwArn0umot qPRa7NaImJ23
5ghQfvCAvQqM/EECC3xALdBzcvusyks76XLCRXNrNMQ3zxkBsgekqxTGybir 5s8jICApBEmf
eq2kERBZ69YqRzopDaAe+ifcRmfrxalzyh0BDTVXO/UBEdga6Nc866VxGxyT HcoC5N6FXFGU
V275UIsDA6/jqiiQwKvWSj6R/wHlLdQ455Ic8G/RS71VCukTnY767NduBLvp m9OuexO2lz6Q
7Ltz7jopt/+ee/DID59J8fsAj/zPymPCfIXHP6979JdMT1D11s+OvSXaq8h9 98L3Hvv45JP9
vSLhM4R++muun0j7Sb4P/4vyI0I/Rfbff2L+h9ifnvrnvxAB0BAC5AgBC5ih yznwgRCMoAQX
yMAKBqFuFswgOzCowQ6Gg4MeDCE0QCjCEhaDhCZMYS5QqMIWtoKFLoxhKGAo wxpygoY2zOEj
cKjDHgaChz4MIh+AKMQiloGIRkwiGJCoxCYmgYlOjCIRoCjFKv6AilbMog6w qMUu1gCHDQBX
AsDlxf8yqiwHAKDY4cxYRh5KSVhsbCPAcvCsk8XRizzsGuTu6MVI9QBWfPRi xHiwxkBmcZA5
QEAEZmVILSISBw+YYyOr+MhJBrKSlrwjJjPJxk1ysoye/GQXQynKQ4aulGYk JSqlqMpVOrGV
rlQiLGNpxFnS8mdUkpQud8nLXvryl75cgASAScxiGnOXRLrlYQDQngI485nQ jKY0p0nNalrz
mti05gQoqMyHAMA6UiEJN7uJkG+GU4Hk/Is5zynOdPplnexkyTjd+Q94xpMm 86QnPux5T1k4
T58A4Wc/l5FPgNZDoAOVT0EN2g6EJvQUC2XoOhz6UEv8U6L2oGhFfYZRpWj/ dKOF6ahHwQnS
akRUpNr4aEmJg1KcqHSlF2rpTV4K0yXJdKYkrWlIb+oSmup0bDztaU5/ytKg osSnRGXcSY1q
DKQmdSpLZSoxnJrUi0r1GlQlqlWv+oys/nSrXG2GV3UK1rAWY6w1LatZh4FW mKp1rbpo60rf
CldcyLWkdK2rLe4K0rzqtRV83ahf/7qKwFZ0sIRNhWEfitjEgmKxCW2sYz0B 2YFKdrKcqGw/
L4tZSWj2npztLCQ+G8/QitYRpGWnaU87iNSec7WsDYRrwwnb2P5htl6Jqm0j gVu06Ha3j+it
XH4L3EYIVy/ELa4gjruR2ir3DMw933PJEV3cTXcc/9U13nXFkd3mJXe7fOgu 9cCb0qE+1abk
xYZ4t5de9Zr3vO9qL1YlSN/62pco35WvfvfL3/76978ADrCAB0zgAhv4wAhO sIIXzOAGO/jB
EI6whCdM4Qpb+MIYzrCGN8zhDnv4wyAOsYhHTOISm/jEKE6xilfM4ha7+MUw jrGMZ0zjGtv4
xjjOsY53zOMe+/jHQA6ykIdM5CIb+chITrKSlyzTfTn5yVCOspSnTOUqW/nK WH5yl3JMANJ5
+ctgDrOYx0zmMpv5zGhOM39OaeMDErUAbK6xm38KZx3PWad15jJ8e5FnHN+5 pn2+8Z9hGug2
73kWhZbzoWWRaBoPeqWNnv/xo0saaRlPGqSVPskDDIWDA5ggcj0Qkw4SsGUR 3Oh4cSbBA0BN
KJ3x4NQAcJvQOB1qxCw6Fpk2SSgnNYAIOICMiaRYDzj4pAH8egiDSmYNFgAn EVDJSgdg9RYZ
NoAECGuQys4Blz5y6Y3mGiS73gO6+kdsU6dMCIMKGaRGFaS6EZGEg1T3zm5d im9/RFnRioC0
LfY0KsmKBgsTAM2Sxao5RWsBrENbBCIwx0F1zW6JIlIuixa4cM3LUyRggAK2 zShHJaBRjzpV
qirGKqa1LGIXT0CmiGQpKWVLR2uU28L80e2K2tsjACAAuRrQ7BFYLGIOYPmc JGAkV0mASAmA
0wH/HHCApFes4SaIgLmQFbEsXS3dIqsB0d80NYRx60vfIsEAqO0Fm2WdWhGL Ft1eZqg0gonp
Qko1O2r+0JtjBJHn9jk43kQmOf1JaXcyu9IYICcp3YnYUNojwfh1NAdsueJY J8GpAKAAAqx9
agtr2JxCNgCZAWDg8RbB4vulKr2J7FMlkPs66J5Qu18E73UCx7E8doJkJsBr gt/aCQi3h3JX
ylDpYlmyRg75rI/gR3JaQJfcPadnzexhXRdZ6FeGI+Z3K1x1s6Vn6F1v1Z8E AESP2QFYd/0G
hD/oJKABBJAleKePgOdPb5nQkha1Q0EKTlKCVOQtT4LwHw1O7mYoVmN8/9GH Na8wLcBmfYEn
NHA3djTHfaTgehYhKrHyN2pTMYkyKZHzAIUTAQBwAGwDOIIjMWcjAgrne95i JXeDLH+iKady
K0lzMNHCOlxHK5ZXNwjAbJASgtB3RgZYKQj3NsiigHswKAH3d/jAegMlge60 cQ8IgZjAhMqE
KwrgNUkIhVHofQYFAJYibfWghP0khScGhvckhiZGhvFkhiWGhuykhiTGhufk hiMGh+EkhyJG
h1JhhyGGhzOhhyDGhyvhhx8GiCMhiB5GiBthiB2GiBOhiBzGiAvhiBsGiQMh iRpGiftgiRmG
ifqgiRjGifLgiRcGivEgihZGiuhgihWGiuegiv8Uxore4IoTBovdIIsSRovU YIsRhovToIsQ
xovK4IsPBozJIIwORoy/YIwNhoy+oIwMxox8poUvBo2IJo0uRo2MZo0tho24 po0sxo2m4IwL
Bo7dZ2dYeAniqGDkGIHeuGLriBztqGLvmIXmeI6KkI4JNo/oGI8ppo+WgI8I 5o/3yI8oJpCJ
AJAHZpDiQZBjaI8DWY8OeQgIaWAKKZEMeYYRuZB2tgUc2ZEe+ZEgOQUTcJEl JgMmeZIomZIq
yQLZxmQu+ZIwGZMyOZM0WZM2eZM4mZM6uZM82ZM++ZNAGZRCOZREWZRGeZRI mZRKuZRM2ZRO
+ZRQGZVSOZVUWZVWeZX/WJmVWpkVD7CSXvmVYAkDLdljAjABIXmWaJmWVzCS QiYAmXNrE9lg
bpmRcRCXDDaXdLkTJMlieJmXXLGXK9aXfgkXgKligumXdrlgh5mXialgi0mX jZlgj5mRkYlg
kxmRlXlgl+mQmWlgm2mPnVlgn3mOoUlgo4mFpTlgpwmFqSlgqwmBrRlgr8l9 sQlgs0lvtflf
twmXhZliu7louelfv3lowdlfw7lnxclfxwlfyblfy3lezalfz/lU0Slf05lU 1dle1/lmvYli
20ln3Xli34ln4Wli4wlo5Vli50lo6Uli6wlp7Tli70lp8Sli84lp9Rli9+lt +Qli+2lz/flh
//9ZdwHqYQPaegXaYQe6hAnKYQsahg26YQ9ahhGqYROahhWaYRfahhmKYRsa hx16YR9ahyFq
YSOahyVaYSfahylKYSsaiC06YS9aiDEqYTOaiDUaYTfaiDkKYTsaiT36YD9a iUHqYEOaiUUq
l28JnEl6l0tKnE2qmBSQTVRapVZ6pVj6TBQQpQrGKsf0pWAapmI6prtEa1t5 pmiapmq6pmza
pm76pnAap3I6p3Rap3Z6p3iap3q6p3zap376p4AaqII6qIRaqIZ6qIiaqIq6 qIzaqI76qJAa
qZI6qZRaqZZ6qZiaqZq6qZzaqZ5qYbAWlqI6qqRqAqI2YwOgAWq5qv+s2qpQ 0AU5NgC+M5jo
dWOySqsxZauziqtAZWO3yqt8Equ7CqxKJazEGl8XgQBeqAMHMJZC8ACnegTN +gOrNgLQ6gjX
qgPKigbbGmrO2gPH86vHujH5dQaKZCsNEK1bJEk7oH044Gq0wq4/MEuTQmpE Aq+dJq9DkAAt
ia9ip69LBLA14K5XIwTiOq6ak1KPQjgCiwPMYqZoBJj4qjpC0GywlINucq9e MADfOgIUmwQK
QCSeUzFrgQCchkUjCymltq4+QLAEeEHDeqzOdQQP0AAqRwKDlLMDEDlNp3II sGU/KzAIwAD6
EjkK0HvOdrSKsrNlMwB78HljJCaRRCXi1gD/5Nc0JsC0ptYAnwY0T2ICSwtq XMhqRLuzOLIj
H7dtR5OuImBtywcmWQtqkRS08VoCe5CuJyApL+M5Kzu0RSsnCsC2bSu4tPIp 5KIsDIO4TRNG
RsKFRQO4hBu1hZsAfkQCP9sA5NKzRhK4CEAvkusDB4uwM1sEOuI5VzJIoAIB WXI4AmCznmYt
aTcAqhMoQdJvBEAkxwJ+EFCF5HIqb2JwjncpkodwA+A1vhst0ucAuzsukIJw aAMOOfd5usu7
QrK64NAAtKs3HtMARJIqH0cDidIlrqK81Ku6AOBr/UcuCwcmKSMnQyszXoJw P+Kx2PuBxTtG
alRtcOcmCqAADqCs/z/yeQFMKADwcSKwSAVcKRKAvyLgvXCXKnKDs8oXsmRC av9bva8yKA6s
rl8Us8Q6ukTgfwM7TDr4ARTDdVaYs8syJ48kLBAQNP8LADH4wl6Sue3LaYV0 wR9wOHukNBQ3
fCb4MpFTSAcjw0Fswm7Sc6j7Ml7wJa9iguwXOa4yw3NCMQdgMFwCglWSANBi cKoiAEVzxTh7
MzhsAoy0fjXgI15cgDIMtmJXxk8sJDbLSJVLspuyZQkAAXAkxnGMxsPmwcAK wkLgSRGDLjcy
TCXIKFWiwghTSf+bNI88gjizSypjMTlTdiYneDijd/K3xOCnS7S2xAmzsY4i KeI7Mp4cOv8G
w8VjVG0ahzB1s4AjIMqhYmy6VGpIU3AqUzdoY2xcOEexzIWl7CnZd0oGcyfK gkj9Mswru0WA
zKuCHARLd6qDtH5LdwO6F4N+BCqV9MKzwnBUlzU7zGrBPAI9zMOR88qaXMVD TA+DssTXbAOi
DDNOKH8/6L5WbDBLxwAI4CMxCCrlDH20vCP1XAMNuMZeF4ME3XOVTHmM5CZ0 fEofc8dtCwHx
LMYFfUXPjKvRHASsYroIl3pJjMEKQC5Oezi/FsHMki6N6wBFcymHK86+W31f DA5IowC+3Lw4
HYPrfDSBUrz04Hg3Is7mW9KzLM5fwgBDssNO+3ioLM4BzAAhYyv/DcxIoLIw TVyElsvS5Zwq
CTwCv4Y0c4LVR7Mj6ILT+ScrCdzVTX0oEFw4kud4FOx4H0cusPIq5+bVzezM CEuuxhBJKqcl
prZlHwvYYYLTyYQArtslOJIssit2pqYqdNvYis29ybIH1qZqHPt5W3u1YLJl jR1JyWy5HDvZ
e2DYZQPaXpDZqkODAyDYANM0qu0mOxsyjf05dju4RxM5ksSFnobZRvvaRqI6 1obZYoQsCOC0
nA0pr33ZbRvcgq25zVzZmUtqm4u5pYbTgv3HfV2sPxMkjNIJQeJ+dhG649rR JnEqkkJ+khAt
ttKxWGHeMluuCSbfH0zfCGbfgYzfB6bf/9DM3wbm3xwN4AUm4LSK3v1l4IOJ 4Pyl4H7J4Pvl
4HkJ4fol4XRJ4fJl4RmJ4e2l4RHJ4enl4Q4J4uQl4vZI4uBl4ueI4tul4ljI 4tfl4lAI49Ml
4xBI489l49yH48ql4/TG48Xl47cG5MAl5ItG5Ltl5IeG5Lal5HvG5LHl5PAF 5awl5edF5adl
5U+F5aKl5VVF4ATm5VoF5gMm5l9F5gJm5mSF5gGm5mnF5gDm5m4F5/8l53NF 5/5l53iF5wm+
0QfO5w3u5wsO6BEu6A9O6BVu6BOO6Bmu6BfO6B3u6BsO6SEu6R9O6SVu6SOO 6Smu6SfO6S3u
6SsO6jEu6i9O6v81buozjuo5ruo3zuo97uo7DutBLus/TutFbutDjutJrutH zutN7utLDuxR
HgBqduzInuzKvuwaQOys9ctZFu3SPu3UXu3L+qnYnu3avu3c3u3e/u3gHu7i Pu7kXu7mfu7o
/gVcxKfrvqdB86gu26fxzqfzvqf1rqf3nqf5jqfhDanypqj/nqgBj6gDf6gF b6gHX6jo96j+
iqgNf6gPb6gRX6gTn5S5RKYY30ukkvEc70vwfWPMlKUiP/IkX6XbFGTrhVwo /16XvvL77fL/
DfMDLvN/TvODbvOHjvOLrvOPzvOT7vMtD2Qp31zO/lxDL11Cz/KbDvRLn/Qv 7/QxD/WDMy/1
NU/1N2/1OY/1O6/1Pc/1P+/1Qf9jR29dYN/0Yq/0n870aV/2a3/2T+/2UQ/3 Uy/3VU/3V2/3
WY/3W6/3Xc/3X+/3Ye9jY69dbD/qam/4hX/qh6/4ib/qi+/4jf/qjy/5kT/r k2/5lX/rl6/5
mb/rm+/5Qn9foj/6pE8ARQ9XIQAAOw==
--------------020302080804040600070606--
|
|
|
Re: Filtering out nodes and connections from a diagram results in dangling connections in filtered [message #199441 is a reply to message #199379] |
Sat, 15 October 2005 10:49 |
Eclipse User |
|
|
|
Originally posted by: smeier.xxx.xxx
Hi
In the meantime I noticed, that the editpart seems to be deleted from
the editparts but it is still drawn. It is not possible to select the line.
So what might be the problem.
regards
Silvio
Silvio Meier wrote:
> Hi there.
>
> I have a problem which was often discussed in this newsgroup, but I
> couldn't manage, sorry. I use GEF 3.1 for a diagram editor which can
> create nested nodes and connections that can connect arbitrary nodes as
> shown in the example attachment, situation a.
>
> I'd like to filter out, for example, the inner node X in the diagram and
> I want also filter out the connection y. This is shown in situation b.
> in the attachement.
>
> Unfortunately it results something like in situation c. with a dangling
> connection but the node is filtered out correctly.
>
> The code I use is the following in the edit part of the node.
>
> I have a propertyChange method which listens for specific events. When
> changing the visibility property of the node, the
> refreshSourceConncetions() and refreshNodes() are called.
>
> public void propertyChange(PropertyChangeEvent evt) {
> String prop = evt.getPropertyName();
>
> if (ModelElement.VISIBILITY_PROP.equals(prop)) {
> refreshChildren();
> refreshSourceConnections();
> } else if (NodeContainer.ZOOMED_PROP.equals(prop)) {
> refreshChildren();
> refreshSourceConnections();
> refreshVisuals();
> } else if (Node.SIZE_PROP.equals(prop) ||
> Node.LOCATION_PROP.equals(prop)) {
> refreshVisuals();
> } else if (Node.NAME_PROP.equals(prop)) {
> ....
> }
> }
>
> I have overridden the getModelChildren() and the
> getModelSourceConnections() which provide now a filtered list of all
> visible nodes and visible source connections respectively.
> Somehow like this:
>
> protected List getModelChildren() {
> FilteredArrayList list = new
> FilteredArrayList(
> (ArrayList)getCastedObjectModel().getChildren());
>
> list.setFilter(new ModelElementVisibilityFilter());
> return list;
> }
>
> protected List getModelSourceConnections() {
> FilteredArrayList list = new
> FilteredArrayList(
> (ArrayList)getCastedModel().getSourceConnections());
>
> list.setFilter(new ModelElementVisibilityFilter());
> return list;
> }
>
> The used classes which provide the filter service work correctly and the
> visible properties of the corresponding connections and nodes are set
> properly (ie. to false) before calling the methods refreshChildren() and
> refreshConnections().
>
>
> The filtering of the nodes works, in contrast to connections which
> dangle somehow after the filter operation. When debugging GEF, it looks
> as if the edit parts of the connection are thrown away in the
> refreshSourceConnections() method, but somehow there are still some
> remaining artifacts of them.
>
> What's wrong?
>
> thanx & regards
> Silvio
>
>
> ------------------------------------------------------------ ------------
>
|
|
|
Re: Filtering out nodes and connections from a diagram results in dangling connections in filtered [message #199547 is a reply to message #199441] |
Mon, 17 October 2005 08:15 |
Eclipse User |
|
|
|
Originally posted by: markus.nosse.gmx.net
Hi Silvio,
I ran across a similar problem when I tried to make nodes collapse and
expandable. Remeber what is required to get a connection between two
editparts: you have to override getModelSourceConnections and
getModelTargetConnections.
If your filter eliminates a source edit part of some connection, this
connection must be removed from the target edit part as well. So I'd say
that refreshing the target nodes of filtered connections will result in
the desired behavior.
-- markus
Silvio Meier wrote:
> Hi
>
> In the meantime I noticed, that the editpart seems to be deleted from
> the editparts but it is still drawn. It is not possible to select the line.
>
> So what might be the problem.
>
> regards
> Silvio
>
>
> Silvio Meier wrote:
>
>> Hi there.
>>
>> I have a problem which was often discussed in this newsgroup, but I
>> couldn't manage, sorry. I use GEF 3.1 for a diagram editor which can
>> create nested nodes and connections that can connect arbitrary nodes
>> as shown in the example attachment, situation a.
>>
>> I'd like to filter out, for example, the inner node X in the diagram
>> and I want also filter out the connection y. This is shown in
>> situation b. in the attachement.
>>
>> Unfortunately it results something like in situation c. with a
>> dangling connection but the node is filtered out correctly.
>>
>> The code I use is the following in the edit part of the node.
>>
>> I have a propertyChange method which listens for specific events. When
>> changing the visibility property of the node, the
>> refreshSourceConncetions() and refreshNodes() are called.
>>
>> public void propertyChange(PropertyChangeEvent evt) {
>> String prop = evt.getPropertyName();
>>
>> if (ModelElement.VISIBILITY_PROP.equals(prop)) {
>> refreshChildren();
>> refreshSourceConnections();
>> } else if (NodeContainer.ZOOMED_PROP.equals(prop)) {
>> refreshChildren();
>> refreshSourceConnections();
>> refreshVisuals();
>> } else if (Node.SIZE_PROP.equals(prop) ||
>> Node.LOCATION_PROP.equals(prop)) {
>> refreshVisuals();
>> } else if (Node.NAME_PROP.equals(prop)) {
>> ....
>> }
>> }
>>
>> I have overridden the getModelChildren() and the
>> getModelSourceConnections() which provide now a filtered list of all
>> visible nodes and visible source connections respectively.
>> Somehow like this:
>>
>> protected List getModelChildren() {
>> FilteredArrayList list = new
>> FilteredArrayList(
>> (ArrayList)getCastedObjectModel().getChildren());
>>
>> list.setFilter(new ModelElementVisibilityFilter());
>> return list;
>> }
>>
>> protected List getModelSourceConnections() {
>> FilteredArrayList list = new
>> FilteredArrayList(
>> (ArrayList)getCastedModel().getSourceConnections());
>>
>> list.setFilter(new ModelElementVisibilityFilter());
>> return list;
>> }
>>
>> The used classes which provide the filter service work correctly and
>> the visible properties of the corresponding connections and nodes are
>> set properly (ie. to false) before calling the methods
>> refreshChildren() and refreshConnections().
>>
>>
>> The filtering of the nodes works, in contrast to connections which
>> dangle somehow after the filter operation. When debugging GEF, it
>> looks as if the edit parts of the connection are thrown away in the
>> refreshSourceConnections() method, but somehow there are still some
>> remaining artifacts of them.
>>
>> What's wrong?
>>
>> thanx & regards
>> Silvio
>>
>>
>> ------------------------------------------------------------ ------------
>>
|
|
|
Re: Filtering out nodes and connections from a diagram results in dangling connections in filtered [message #199651 is a reply to message #199547] |
Mon, 17 October 2005 17:54 |
Eclipse User |
|
|
|
Originally posted by: smeier.xxx.xxx
Hi Markus
Thank you. Seems to be logical but shouldn't this do the
refreshSourceConnection() method implementation of the GEF, because this
method is responsible for removing the corresponding ConnectionEditParts?
cheers
Silvio
Markus wrote:
> Hi Silvio,
>
> I ran across a similar problem when I tried to make nodes collapse and
> expandable. Remeber what is required to get a connection between two
> editparts: you have to override getModelSourceConnections and
> getModelTargetConnections.
>
> If your filter eliminates a source edit part of some connection, this
> connection must be removed from the target edit part as well. So I'd say
> that refreshing the target nodes of filtered connections will result in
> the desired behavior.
>
> -- markus
>
> Silvio Meier wrote:
>
>> Hi
>>
>> In the meantime I noticed, that the editpart seems to be deleted from
>> the editparts but it is still drawn. It is not possible to select the
>> line.
>>
>> So what might be the problem.
>>
>> regards
>> Silvio
>>
>>
>> Silvio Meier wrote:
>>
>>> Hi there.
>>>
>>> I have a problem which was often discussed in this newsgroup, but I
>>> couldn't manage, sorry. I use GEF 3.1 for a diagram editor which can
>>> create nested nodes and connections that can connect arbitrary nodes
>>> as shown in the example attachment, situation a.
>>>
>>> I'd like to filter out, for example, the inner node X in the diagram
>>> and I want also filter out the connection y. This is shown in
>>> situation b. in the attachement.
>>>
>>> Unfortunately it results something like in situation c. with a
>>> dangling connection but the node is filtered out correctly.
>>>
>>> The code I use is the following in the edit part of the node.
>>>
>>> I have a propertyChange method which listens for specific events.
>>> When changing the visibility property of the node, the
>>> refreshSourceConncetions() and refreshNodes() are called.
>>>
>>> public void propertyChange(PropertyChangeEvent evt) {
>>> String prop = evt.getPropertyName();
>>>
>>> if (ModelElement.VISIBILITY_PROP.equals(prop)) {
>>> refreshChildren();
>>> refreshSourceConnections();
>>> } else if (NodeContainer.ZOOMED_PROP.equals(prop)) {
>>> refreshChildren();
>>> refreshSourceConnections();
>>> refreshVisuals();
>>> } else if (Node.SIZE_PROP.equals(prop) ||
>>> Node.LOCATION_PROP.equals(prop)) {
>>> refreshVisuals();
>>> } else if (Node.NAME_PROP.equals(prop)) {
>>> ....
>>> }
>>> }
>>>
>>> I have overridden the getModelChildren() and the
>>> getModelSourceConnections() which provide now a filtered list of all
>>> visible nodes and visible source connections respectively.
>>> Somehow like this:
>>>
>>> protected List getModelChildren() {
>>> FilteredArrayList list = new
>>> FilteredArrayList(
>>> (ArrayList)getCastedObjectModel().getChildren());
>>>
>>> list.setFilter(new ModelElementVisibilityFilter());
>>> return list;
>>> }
>>>
>>> protected List getModelSourceConnections() {
>>> FilteredArrayList list = new
>>> FilteredArrayList(
>>> (ArrayList)getCastedModel().getSourceConnections());
>>>
>>> list.setFilter(new ModelElementVisibilityFilter());
>>> return list;
>>> }
>>>
>>> The used classes which provide the filter service work correctly and
>>> the visible properties of the corresponding connections and nodes
>>> are set properly (ie. to false) before calling the methods
>>> refreshChildren() and refreshConnections().
>>>
>>>
>>> The filtering of the nodes works, in contrast to connections which
>>> dangle somehow after the filter operation. When debugging GEF, it
>>> looks as if the edit parts of the connection are thrown away in the
>>> refreshSourceConnections() method, but somehow there are still some
>>> remaining artifacts of them.
>>>
>>> What's wrong?
>>>
>>> thanx & regards
>>> Silvio
>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
|
|
|
Powered by
FUDForum. Page generated in 0.19614 seconds