Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » GEF » [Zest/Draw2d] Custom figure button event
[Zest/Draw2d] Custom figure button event [message #247248] Thu, 12 February 2009 12:43 Go to next message
Bianca Thelen is currently offline Bianca ThelenFriend
Messages: 26
Registered: July 2009
Junior Member
Hello everybody,

I have a Zest graph to which a custom figure can be added. The simplest
graph looks like this:

--------------
| Step 2 | + | <- StepFigure extends IFigure
--------------
| Document | <- DocumentFigure extends IFigure
--------------
^
|
|
--------------
| Step 1 | + | <- StepFigure extends IFigure
--------------
<- DocumentFigures aren't displayed...

Via the plus button document figures can be added to the step figure.
This works perfectly - but only for the last step figure added to the
graph (in this case Step 2). A document figure can be added to any other
step figure (here Step 1) but it isn't displayed. I've tried calling
revalidate and repaint on the step figure in question but that didn't
help. Does anybody know what I'll have to do to force Step 1 to display
the document figures added?

Kind regards,
Bianca
Re: [Zest/Draw2d] Custom figure button event [message #247297 is a reply to message #247248] Fri, 13 February 2009 16:53 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: irbull.cs.uvic.ca

It is likely a layout issue. Can you force the size of the StepFigures
to be really big.

Can you post a snippet showing the problem?

cheers,
ian

Bianca wrote:
> Hello everybody,
>
> I have a Zest graph to which a custom figure can be added. The simplest
> graph looks like this:
>
> --------------
> | Step 2 | + | <- StepFigure extends IFigure
> --------------
> | Document | <- DocumentFigure extends IFigure
> --------------
> ^
> |
> |
> --------------
> | Step 1 | + | <- StepFigure extends IFigure
> --------------
> <- DocumentFigures aren't displayed...
>
> Via the plus button document figures can be added to the step figure.
> This works perfectly - but only for the last step figure added to the
> graph (in this case Step 2). A document figure can be added to any other
> step figure (here Step 1) but it isn't displayed. I've tried calling
> revalidate and repaint on the step figure in question but that didn't
> help. Does anybody know what I'll have to do to force Step 1 to display
> the document figures added?
>
> Kind regards,
> Bianca
Re: [Zest/Draw2d] Custom figure button event [message #247312 is a reply to message #247297] Sun, 15 February 2009 16:04 Go to previous messageGo to next message
Bianca Thelen is currently offline Bianca ThelenFriend
Messages: 26
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------010605010208090200000307
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

> It is likely a layout issue. Can you force the size of the StepFigures
> to be really big.

I set the size of the StepFigure to 1000, 1000 and when I then added the
DocumentFigures they were drawn. So I need to force the StepFigure to
resize. I've tried revalidate(), repaint() and some other calls but
nothing really worked.

> Can you post a snippet showing the problem?

I've attached the classes I wrote to test what I want to achieve with
Zest and Draw2d. The items from the viewer on the left can be dropped on
any node in the graph.

Kind regards
Bianca


--------------010605010208090200000307
Content-Type: application/octet-stream;
name="GraphTest.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="GraphTest.zip"

UEsDBBQACAAIAAuITzoAAAAAAAAAAAAAAAAlAAAAWmVzdFRlc3Qvc3JjL3Rl c3QvRG9jdW1l
bnRGaWd1cmUuamF2YY1TUUvDMBB+L/Q/hD2l0BXniw/DB0WUQQWZ/oEsvWXB NgnJ1Tll/922
SWc7pRpKc819d/flu6th/JUJIAgOl3EUR7Iy2iLRVmTAS2kcZIVl+8siu9k4 tIzjrbYF2OUU
9F6K2sIk5MEys5Pc/QGSRc4OusZJ2Oof9XK2gXISIUBXgPaQrZQDdJ0acWTq TSk54SVzjtxp
Xleg0Ncj8I6gCkfC52cckWb5d4gbR9CkB7XL1QYsTZbfJ9/3JaXfromC/eCc XqVky0oHw7CG
rvc+MtU001IffAbxfaNtvjGr4EiGeFYUHbKTjc7GAbPkLPWz/AA6X6Rkvug9 x1a81vhNOV/x
pN94soYSBRV9R4gA9BYNHSfbbhup2i4LWFvVSRcCGm4X/hlSP5Ec1HrTsiCG SYVnVVLSzywR
wUh7ZrLbfvDocd2I5VIBba7w1OZeA0emRAm0Tx5SNGOIL9rksEWapM1/WZkW G47XUuxw3Knj
SW8/fI3xBVBLBwjmL+H6dAEAANUDAABQSwMEFAAIAAgAC4hPOgAAAAAAAAAA AAAAACAAAABa
ZXN0VGVzdC9zcmMvdGVzdC9HcmFwaFRlc3QuamF2YZ1YbW/bNhD+7AL9D5w/ 0ZjLphn2pd2G
ubFdGHPtoHY7tMMQMBLtsFNEjaTsuJ3/+46vkvwWt0DhSORzx7t77o6nFjT5 hy4Z0kzpV0+f
PH3C7wshNfpMV5SUmmekJyXdjLnd3tv063FHyCVhScYLxUgq6foyJaMhX5aS vTqFWTJxz7Tc
kGvBc30Y+nlBE0YyuhGlJm8kT/tU0yFNtJCbUxIrztZMKjKaaVkmGkxJr0Su Wa6vpVjxlMlv
lJ6xjCWai/wcuTm9zdgH+3IO/BRSrTWZ/Tk/vpnmKelP+o8AJF3ORCkTNlix Y7HeBxuiWX7K
NIcXxZzKJXtUb8CdZUQAn2fEnD3ouaS5WjyKfBS1lLS444kiQ3HKzFpWju3j ceiap+CJIn2u
ChB7HDi7Y1l2GPYFipYkQrIIfmPs/SYw1EJ+Kp2PiE1EeqSk9wVGpt4oP0rc vsQnWJnpTcbU
CQkXdEVcxM+G02wpJNd391CckjEn3QuLtpkV5W3GE5RkVClk3Z2DBvT16ZNW IfmKaoaUphog
tfJGq1C7BuY0eJRVgZaem30tJrncaT7N9iEm9X+ZaVaYwP+Gcvg1S+hXlLM1 ij26guDOIUtW
gqfoHrjA0M94vvzrbwSVpTrWt5bPSZR6tf7dqmq1bCIiZX/dvl3Bqdu2G0RB ldqIYgOoCgJf
dtGCZop1dtAz/oXhny8uugh+vM2tGAt/kHnEeZllXdTuSU6zdhe9AI3QDsnr 6bjvdDoCvEiN
GWwPc+jZaPJmPED/2Zfh+/H4ZjYYD67mo+nEKdm5WciCZ1mfLWiZaYU7piHc YutIF8GNwDqE
FkW2mQtshIMNcKFpk/RSZLhTN854vHP72EAdv5yw5cYq91RaDnlelPrqjuZL luJGAnbR9PYz
VDQSWToyqK6zrOWX4Ti77DlvbQ9oT4F4oRg+gnGaIHdMA8/YPZirsFdvDfOL QbwlGbiWW16i
7FfUNsn6Aqi0D5dttH1VP227GzhrNm63Q5bYgvJ02xKrEz2ZTgbnM2qo3CXU qm+c5dnz/dJ2
HFy1KnI1nUxcKs1u+qN38Djox4yWDKoZbudZWZj+FMqzFQoWKtQ/+Nryr86M yifPZoDE1uqm
LGxDeQExjSXk665ZfqF/EJqmOJy85+tOb7SZeqBn+tSv92Ew9Wbc+zh9P7+Z TPuDm3eD2egT
lF7HB9mf5LqAKFjue8z6jmcM4R/cBld9l4gpVJHPpYBICUQ07eWpgVCd3FWQ VkpUxljhdZp8
8j8xKCRmuIFsD3VcWwj7tLkznj9HsPjMr5oVmFuRKBSwBxuk/256fXM1vf4I nSa+j0eTP+rv
b6cfBtbCMIdAVWj/qEIbq7a+ovpkY1rMKAdb88TU6bZeK0Cqndy8zWBWt1Lc da19b7I70mhS
A9QU1OxMjoitQokf7yNGhGlTfSfEDWX2jaQABMcxPjRud1DVXOMisO7bW8us D7lUoftAbWvh
rrlaJhy0cchzDimXnjay2ZeqsRRUxEd/ccaFUL7AgROrsKbCAps40rOHsmSK ItLU1P8oe6Lo
JQkrDH2Nmfuga3uyp6Va9nMNFfbXeW5XsGPzoevgZOPD3/Lfgmhh//SMkGs2 ljq3hrHVRx4C
r88qzFgk1LFOHlBt3Q0ijUyoQ6HreKUbdFjb5sBhXukuEjT8dNEJHvEFwtEb 7utRLA715hi1
kOwMdrN6w+gPhr3347lXXV0NGS0Xa7Y8/3Y4cUFUhVarjkqs1iOjj/5CsPei n+biVuMiqdlZ
AcLlXF2ce0abOcJ6EyJZM+iAzu3JWp6uoBq+I9lBsmDS0hzmqu/SMmZ0xb5P dACT33m2b4/f
W/HzLEZ1t+q8roWQCMccM0Sil/HDIpxn8tus2Ym2VFrc+zzqEPZvCRNFxdne tOc+ERsXcNgq
7Setd8Ab7j63okFw17E8VTV/fIML7iQ1c0xZOJ0G4eMai6T6AHXV/RYWYUw0 XUuZcaWLmiEK
nqgSMgLXRTzcw5x3O3Yswn93RbIKKTRkPkvjMW6scC9DIa3yOGz7GAXaOkjf cWXib6/RTkOz
czSo3eOoqbFuaF3L76ZkYEhmjdiZzoCqFtFUZSNTayDoR9R+idrwp36IMfq1 KIHFhtnwC//+
B1BLBwgc53dzNgYAAHoUAABQSwMEFAAIAAgAC4hPOgAAAAAAAAAAAAAAACoA AABaZXN0VGVz
dC9zcmMvdGVzdC9TdGVwQ29udGFpbmVyRmlndXJlLmphdmHtVE1z0zAQPdOZ /gfRkzJ1VdJr
gBkI9BSGQ/gDsrV2BIpkpFXSwPS/I0WOEzkmDMMVHfy1761331up5dU33gBB cDi7vrq+kuvW
WCRf+YYzj1Kxd9by3ULuw2fB7nsfMbZhUCnZOmDC8u2DYHOjjJ0b7ZBrdLNL 0EfZeAsXIQup
4b2xAuxF2BdjVMntgu+Mx3Gk2yJrLG9XsnLs0ejUR+tLJStSKe4cWSK0oXLk 4ac2FUfgCUEL
R7rXn5FEwmqt3HCEPaeLKe7rLTR9VxGWg6VGIkzl16AxwebGawRL3pBXo4wo +OsPGeXtIEWE
BL6GLem9G1LoJM+euh7ply7RSt2Q4B5KowsSlSJ1uExi76Rbzrdg+6RxZQ4E Kfa3VFUWykgO
MH39xHWYSksTbwBJ/tOY6jgONJ8zVqow2QWZTgbkzy3/7oGi9XAaOT5lrnUV H02lvRC4ku40
AxeCZtzx9KGEpfwB9G5akLvpAfP8r24UpAyqAtek9IgxdHgHzUsFIrPrvznj 6SONhTo+Js3o
QbvZqH+X7XM7Xa2s0QEsyMZIQSyszQbynUjjESC1gKfMoBw02OCh7/Mdz1J2 mnKdFCxrQgf8
l0E4r1T2x7hyGJN6w5UU4djJ5mAECZa7c1BXUY69nGnfSTRr30aRyjxhPP+N 3iHPQOyBrHWq
6CDDi+XOIaxZGGoWzluNStObDhpygbg5LeX+Ph+v+qy937Q2euAX5E/8Dnh7 O1JDr0d4+AVQ
SwcIuTKXci4CAADSBwAAUEsDBBQACAAIAAuITzoAAAAAAAAAAAAAAAAhAAAA WmVzdFRlc3Qv
c3JjL3Rlc3QvU3RlcEZpZ3VyZS5qYXZhhVJNS+0wEF3nwv0PwVWKUtCtuHh+ bq48QXA/bcYS
zE3iJL36EP+7Saba50UqlLaZOefMnMwE6J9gQJkwptP1ar0y2+ApSU9Di701 IWKrCV5OdPun
T8a7qx26gvwNtzExoUNahJ6PKXm3CLnw1tOFdzGBS3ERem2GkXARckNGb+Cf H5ctbKBDu4ww
Ds896WpwvQpjZ00vewsxyvuEgXuR+JovQUc5Hd8KVkzgGabuExk3SAdbPJKP xoGt2Ww7QS5E
Ez0A5ctviowQcQxIqjkt/7MtaflzJh2+yDmuTrIw2IhMiJg4fgsuj58U076S bE0Vjdmp+j6L
trN5eY7kcfNF+xvgeUSVaKx1SrReZe6qvLmpGlHFK/Nqrs3sBxNNZ2e6EKC1 qmk+8rrIjj+s
xjF1cHjAGE62mfl9D6uXvVAzDUR8jmTnjZZQQXdIj562qNV/ey9xNw9AiJ4Q El76ftzm8DRL
bkO8s/L7bIQ7q2dOBjK7zOeqP2txJaV+2IZGDpju6kaopuGGiu09iWJ7X/Wz h/x8AFBLBwhA
iuaqkwEAAAAEAABQSwECFAAUAAgACAALiE865i/h+nQBAADVAwAAJQAAAAAA AAAAAAAAAAAA
AAAAWmVzdFRlc3Qvc3JjL3Rlc3QvRG9jdW1lbnRGaWd1cmUuamF2YVBLAQIU ABQACAAIAAuI
Tzoc53dzNgYAAHoUAAAgAAAAAAAAAAAAAAAAAMcBAABaZXN0VGVzdC9zcmMv dGVzdC9HcmFw
aFRlc3QuamF2YVBLAQIUABQACAAIAAuITzq5MpdyLgIAANIHAAAqAAAAAAAA AAAAAAAAAEsI
AABaZXN0VGVzdC9zcmMvdGVzdC9TdGVwQ29udGFpbmVyRmlndXJlLmphdmFQ SwECFAAUAAgA
CAALiE86QIrmqpMBAAAABAAAIQAAAAAAAAAAAAAAAADRCgAAWmVzdFRlc3Qv c3JjL3Rlc3Qv
U3RlcEZpZ3VyZS5qYXZhUEsFBgAAAAAEAAQASAEAALMMAAAAAA==
--------------010605010208090200000307--
Re: [Zest/Draw2d] Custom figure button event [message #247453 is a reply to message #247312] Fri, 20 February 2009 15:41 Go to previous messageGo to next message
Bianca Thelen is currently offline Bianca ThelenFriend
Messages: 26
Registered: July 2009
Junior Member
>> It is likely a layout issue.

I've had some more time to debug and found the following.

AbstractLayout#getPreferredSize returns the preferredSize of the figure
to which other figures can be added with no problem. So when I set the
preferredSize to null while debugging this code was run:

Thread [main] (Suspended (breakpoint at line 164 in ToolbarLayout))
ToolbarLayout.calculatePreferredSize(IFigure, int, int) line: 164
ToolbarLayout(AbstractLayout).getPreferredSize(IFigure, int, int) line: 96
ToolbarLayout(AbstractHintLayout).getPreferredSize(IFigure, int, int)
line: 87
StepContainerFigure(Figure).getPreferredSize(int, int) line: 735
FreeformLayout(XYLayout).layout(IFigure) line: 103
Figure$LayoutNotifier.layout(IFigure) line: 1812
ZestRootLayer(Figure).layout() line: 1029
ZestRootLayer(Figure).validate() line: 1739
ScalableFreeformLayeredPane(Figure).validate() line: 1741
FreeformViewport$FreeformViewportLayout.calculatePreferredSi ze(IFigure,
int, int) line: 28
FreeformViewport$FreeformViewportLayout(AbstractLayout).getP referredSize(IFigure,
int, int) line: 93
FreeformViewport$FreeformViewportLayout(AbstractHintLayout). getPreferredSize(IFigure,
int, int) line: 85
FreeformViewport(Figure).getPreferredSize(int, int) line: 735
ScrollPaneSolver.solve(Rectangle, Viewport, int, int, int, int) line: 75
Graph(FigureCanvas).layoutViewport() line: 297
FigureCanvas.access$4(FigureCanvas) line: 295
FigureCanvas$3.notifyValidating() line: 260
DeferredUpdateManager(UpdateManager).fireValidating() line: 123
DeferredUpdateManager.performValidation() line: 203
DeferredUpdateManager.performUpdate() line: 179
DeferredUpdateManager$UpdateRequest.run() line: 48
RunnableLock.run() line: 35
Synchronizer.runAsyncMessages(boolean) line: 133
Display.runAsyncMessages(boolean) line: 3800
Display.readAndDispatch() line: 3425
GraphTest.main(String[]) line: 85

The thing that differs now from the other figure that does resize when a
figure is added to it is this code. But I have no idea where that might
be triggered...

Thread [main] (Suspended (breakpoint at line 164 in ToolbarLayout))
ToolbarLayout.calculatePreferredSize(IFigure, int, int) line: 164
ToolbarLayout(AbstractLayout).getPreferredSize(IFigure, int, int) line: 96
ToolbarLayout(AbstractHintLayout).getPreferredSize(IFigure, int, int)
line: 87
StepContainerFigure(Figure).getPreferredSize(int, int) line: 735
FreeformLayout(XYLayout).layout(IFigure) line: 103
Figure$LayoutNotifier.layout(IFigure) line: 1812
ZestRootLayer(Figure).layout() line: 1029
ZestRootLayer(Figure).validate() line: 1739
ScalableFreeformLayeredPane(Figure).validate() line: 1741
FreeformViewport(Figure).validate() line: 1741
FreeformViewport(Viewport).validate() line: 363
LightweightSystem$RootFigure(Figure).validate() line: 1741
DeferredUpdateManager.performValidation() line: 207
DeferredUpdateManager.performUpdate() line: 179
DeferredUpdateManager$UpdateRequest.run() line: 48
RunnableLock.run() line: 35
Synchronizer.runAsyncMessages(boolean) line: 133
Display.runAsyncMessages(boolean) line: 3800
Display.readAndDispatch() line: 3425
GraphTest.main(String[]) line: 85
Re: [Zest/Draw2d] Custom figure button event [message #247572 is a reply to message #247453] Tue, 03 March 2009 07:25 Go to previous messageGo to next message
Bianca Thelen is currently offline Bianca ThelenFriend
Messages: 26
Registered: July 2009
Junior Member
> --------------
> | Step 2 | + | <- StepFigure extends IFigure
> --------------
> | Document | <- DocumentFigure extends IFigure
> --------------
> ^
> |
> |
> --------------
> | Step 1 | + | <- StepFigure extends IFigure
> --------------
> <- DocumentFigures aren't displayed...
>
> Via the plus button document figures can be added to the step figure.

>>> It is likely a layout issue.

As soon as a figure is moved it isn't repainted/resized when the button
is clicked. Do I need to call any special method or set a flag so that
the figure is repainted again?
Problem with custom figures when moving in the graph [message #248807 is a reply to message #247572] Wed, 06 May 2009 00:35 Go to previous messageGo to next message
Tiago Proenca is currently offline Tiago ProencaFriend
Messages: 6
Registered: July 2009
Junior Member
This move issue is happening with me also... Basically I have a custom
figure that expand/collapse... It works well when I open my view and
switch from expand to collapse and vice-versa. However, if I move some
node the figure doesn't adjust the size. In other words, it stop to
collapse.

Any ideas about that?

Tiago

Bianca wrote:
> > --------------
> > | Step 2 | + | <- StepFigure extends IFigure
> > --------------
> > | Document | <- DocumentFigure extends IFigure
> > --------------
> > ^
> > |
> > |
> > --------------
> > | Step 1 | + | <- StepFigure extends IFigure
> > --------------
> > <- DocumentFigures aren't displayed...
> >
> > Via the plus button document figures can be added to the step figure.
>
>>>> It is likely a layout issue.
>
> As soon as a figure is moved it isn't repainted/resized when the button
> is clicked. Do I need to call any special method or set a flag so that
> the figure is repainted again?
Re: Problem with custom figures when moving in the graph [message #248926 is a reply to message #248807] Tue, 12 May 2009 22:46 Go to previous message
Tiago Proenca is currently offline Tiago ProencaFriend
Messages: 6
Registered: July 2009
Junior Member
I found two solutions:

1) override the method getSize() of GraphNode and return a new
Dimension(-1,-1);

2) When you are collapsing/expanding, before call the algorithm, get the
node's figure and do:

Point loc = getLocation();
Dimension size = new Dimension(-1,-1);
Rectangle bounds = new Rectangle(loc, size);
fig.getParent().setConstraint(fig,bounds);
// Call the collapse/expand algorithm

:)

Tiago Proenca wrote:
> This move issue is happening with me also... Basically I have a custom
> figure that expand/collapse... It works well when I open my view and
> switch from expand to collapse and vice-versa. However, if I move some
> node the figure doesn't adjust the size. In other words, it stop to
> collapse.
>
> Any ideas about that?
>
> Tiago
>
> Bianca wrote:
>> > --------------
>> > | Step 2 | + | <- StepFigure extends IFigure
>> > --------------
>> > | Document | <- DocumentFigure extends IFigure
>> > --------------
>> > ^
>> > |
>> > |
>> > --------------
>> > | Step 1 | + | <- StepFigure extends IFigure
>> > --------------
>> > <- DocumentFigures aren't displayed...
>> >
>> > Via the plus button document figures can be added to the step figure.
>>
>>>>> It is likely a layout issue.
>>
>> As soon as a figure is moved it isn't repainted/resized when the
>> button is clicked. Do I need to call any special method or set a flag
>> so that the figure is repainted again?
Previous Topic:Render partly transparent SVG image for GEF FreeformLayer
Next Topic:[Announce] GEF 3.5.0 I200905121850 is available
Goto Forum:
  


Current Time: Fri Dec 19 01:45:35 GMT 2014

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

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