[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: seeking resize listener help
|
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
>