[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: seeking resize listener help
|
Dumb!
talking it out to myself really helped. it was that last sentence that
sparked the aha moment: i was using gridlayout, when i should've been using
filllayout. i didn't even see that because i was so hung up on just seeing
the canvas not stretching, thinking it was a problem with the listener.
jeeesh.
"Marc E" <marc_e@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:fr6spg$ala$1@xxxxxxxxxxxxxxxxxxxx
> So, to demonstrate my still utter cluelessness, i did this:
>
> my canvas object creates a listener; out in the createPartControl code, i
> create the canvas object, get the listener it creates, and then attach
> that listener to the topHalf composite.
>
> even that didn't work. so now i'm really confused: I can pass in the
> tophalf as the parent to the canvas and attach a listener like that. but
> if i pass in a new composite as the parent, have the canvas return a
> listener, and attach the listener to the same composite i attached it to
> in prior tests, it doesn't work. well... the listener gets called, but the
> redraw() events inside the listener don't seem to have any effect; i.e. my
> canvas object doesn't change.
>
> it's as if that new composite i'm passing in there is effectively locking
> my canvas or something, like it's stuck in place and can't stretch.
>
> weird.
>
> well, i'm sure it's not weird. i'm sure it's something super stupid i'm
> doing... i just can't figure it out!
>
> any help is most appreciated, as always.
>
>
> "Marc E" <marc_e@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> news:fqq16k$boh$1@xxxxxxxxxxxxxxxxxxxx
>> Greetings all.
>>
>> I've got a view that contains a number of composites. all the composites
>> use either in the top or bottom half of a sash form. one of the
>> composites has an object in it that extends canvas. Sort of picture the
>> junit view with the progress bar as the canvas.
>>
>> sort of like this:
>>
>> SashForm
>> --Composite: topHalf, SashForm is parent
>> --Composite, topHalf is parent
>> --Canvas, topHalf is parent
>> --Composite, topHalf is parent
>>
>> --Composite: bottomHalf, SashForm is parent
>> -- number of Composites, all taking bottomHalf as parent
>>
>>
>> now, what I want is to have my canvas object inside its own composite.
>> The reason is that this seems to be the only way I can have a layout
>> object for the canvas; otherwise, it takes on the layout of the parent
>> (topHalf). But I want my layout to have different margins and whatnot for
>> the canvas. However, if I do that, i.e. like so:
>>
>>
>> Composite composite= new Composite(parent, SWT.NONE);
>> GridLayout layout= new GridLayout();
>> composite.setLayout(layout);
>> myCanvas = new MyCanvasObject(composite);
>> GridData gd = new GridData(GridData.GRAB_HORIZONTAL |
>> GridData.HORIZONTAL_ALIGN_FILL);
>> myCanvas.setLayoutData(gd);
>>
>> Then the resize listener doesn't work because it's attaching to the
>> composite i'm creating and passing into the canvas. What I need, though,
>> is to have my MyCanvasObject attach its resize listener to the topHalf
>> parent object.
>>
>> Or, more specifically, I need to have my canvas object attach its resize
>> listener to whatever the heck it is in the view itself that announces
>> that "hey, i'm resized!".
>>
>> So, ideally, if I have that canvas, and I put it in any composite, i'd
>> like to have that canvas be able to respond to resizes of its containing
>> view.
>>
>> Now, if I pass in the parent topHalf directly to the canvas, and forego
>> creating a new composite with its own layout to use as the parent of the
>> canvas, then the resize listener works fine.
>>
>> by the way, here's the simple code for the resize listener:
>>
>> public MyCanvasObject(Composite parent) {
>> super(parent, SWT.NONE);
>> parent.addControlListener(new ControlAdapter() {
>> public void controlResized(ControlEvent e) {
>> System.out.println(e);
>>
>> }
>> });
>>
>> thanks for any advice!
>>
>> Marc
>>
>
>