Hi Gary,

On 24 Jan 2011, at 16:16, Gary Chambers wrote:

> Hi,
> I don't think the layouts can be merged, as such, as they have very different
> approaches.
> 
> With the TableLayout, it is possible to assign "weights" to each spaceFill
> section to get what you want, I think. (see #spaceFillWeight:)

I tried to use it, but I get no effect when I use it in your example.

Below is one of my trouts (added spaceFillWeight: 10 to morph2). What am I 
doing wrong?

| container morph1 morph2 morph3 ex1 ex2 ex3 sp1 sp2|
morph1 := (PanelMorph new fillStyle: (SolidFillStyle color: Color red))
        hResizing: #spaceFill;
        vResizing: #spaceFill.
morph2 := (PanelMorph new fillStyle: (SolidFillStyle color: Color blue))
        hResizing: #spaceFill;
        vResizing: #spaceFill;
        spaceFillWeight: 10.
morph3 := (PanelMorph new fillStyle: (SolidFillStyle color: Color yellow))
        hResizing: #spaceFill;
        vResizing: #spaceFill.
ex1 := (UITheme builder newExpander: 'Red' for: morph1) expanded: true.
ex2 := (UITheme builder newExpander: 'Blue'  for: morph2) expanded: true.
ex3 := (UITheme builder newExpander: 'Yellow'  for: morph3) expanded: true.
sp1 := EdgeGripMorph new
                target: ex1;
                edgeName: #bottom;
                vResizing: #rigid;
                extent: 24 @ ProportionalSplitterMorph splitterWidth;
                on: #mouseDown send: #expandedSizingRigid to: ex1.
sp2 := EdgeGripMorph new
                target: ex2;
                edgeName: #bottom;
                vResizing: #rigid;
                extent: 24 @ ProportionalSplitterMorph splitterWidth;
                on: #mouseDown send: #expandedSizingRigid to: ex2.
container := UITheme builder newColumn: { ex1. sp1. ex2. sp2. ex3}.
container cellInset: 0.
container extent: 400@400.
container openInWindow.

Cheers,
Doru



> Regards, Gary
> 
> ----- Original Message ----- From: "Tudor Girba" <[email protected]>
> To: <[email protected]>
> Sent: Monday, January 24, 2011 2:32 PM
> Subject: Re: [Pharo-project] collapsing panes
> 
> 
> Thanks a lot, Gary! I gave it a try and it does go in the wanted direction.
> 
> Now, the next question. I see that you are using a TableLayout. Is there a 
> way to specify a proportion (like in the proportional layout?) for the 
> initial extent of the inner panes?
> 
> If yes, then I suppose we could merge the two layouts into one.
> 
> Cheers,
> Doru
> 
> 
> On 24 Jan 2011, at 14:51, Benjamin wrote:
> 
>> I love that :)
>> It could be very useful ^^
>> 
>> 
>> Ben
>> 
>> On Jan 24, 2011, at 2:36 PM, Gary Chambers wrote:
>> 
>>> Tricky...
>>> Just an experiment, but try the following after filing in attached change 
>>> set.
>>> Can make the re-proportioning explicit and maybe fix things to constrain to
>>> the owner morph if interested...
>>> 
>>> 
>>> | container morph1 morph2 morph3 ex1 ex2 ex3 sp1 sp2|
>>> morph1 := (PanelMorph new fillStyle: (SolidFillStyle color: Color red))
>>> hResizing: #spaceFill;
>>> vResizing: #spaceFill.
>>> morph2 := (PanelMorph new fillStyle: (SolidFillStyle color: Color blue))
>>> hResizing: #spaceFill;
>>> vResizing: #spaceFill.
>>> morph3 := (PanelMorph new fillStyle: (SolidFillStyle color: Color yellow))
>>> hResizing: #spaceFill;
>>> vResizing: #spaceFill.
>>> ex1 := (UITheme builder newExpander: 'Red' for: morph1)
>>> expanded: true.
>>> ex2 := (UITheme builder newExpander: 'Blue'  for: morph2)
>>> expanded: true.
>>> ex3 := (UITheme builder newExpander: 'Yellow'  for: morph3)
>>> expanded: true.
>>> sp1 := EdgeGripMorph new
>>> target: ex1;
>>> edgeName: #bottom;
>>> vResizing: #rigid;
>>> extent: 24 @ ProportionalSplitterMorph splitterWidth;
>>> on: #mouseDown send: #expandedSizingRigid to: ex1.
>>> sp2 := EdgeGripMorph new
>>> target: ex2;
>>> edgeName: #bottom;
>>> vResizing: #rigid;
>>> extent: 24 @ ProportionalSplitterMorph splitterWidth;
>>> on: #mouseDown send: #expandedSizingRigid to: ex2.
>>> container := UITheme builder newColumn: {
>>> ex1.
>>> sp1.
>>> ex2.
>>> sp2.
>>> ex3}.
>>> container cellInset: 0.
>>> container extent: 400@400.
>>> container openInWindow.
>>> 
>>> 
>>> 
>>> Have a play/fun.
>>> 
>>> Regards, Gary
>>> 
>>> ----- Original Message ----- From: "Tudor Girba" <[email protected]>
>>> To: "[email protected] Development" 
>>> <[email protected]>
>>> Sent: Friday, January 21, 2011 11:18 PM
>>> Subject: [Pharo-project] collapsing panes
>>> 
>>> 
>>> Hi,
>>> 
>>> I have a question about how to obtain an effect similar to minimizing a 
>>> pane in Eclipse. Let's consider the example from below. I have a 
>>> ProportionalLayout because I want to fill the entire space and be able to 
>>> resize the inside panes. Now, I would also like to have some way of 
>>> collapsing one of the panes and have the rest resize to fill the rest of 
>>> the space. It's a bit like I would need some part of a behavior from the 
>>> TableLayout.
>>> 
>>> Can anyone provide me with some hints in this direction? Do I need to 
>>> create a new Layout?
>>> 
>>> | container morph1 morph2 morph3 window |
>>> container := PanelMorph new.
>>> morph1 := PanelMorph new fillStyle: (SolidFillStyle color: Color red).
>>> morph2 := PanelMorph new fillStyle: (SolidFillStyle color: Color blue).
>>> morph3 := PanelMorph new fillStyle: (SolidFillStyle color: Color yellow).
>>> container changeProportionalLayout.
>>> container addMorph: morph1 fullFrame: (LayoutFrame fractions: (0 @ 0 
>>> corner: 1 @ 0.33)).
>>> container addMorph: morph2 fullFrame: (LayoutFrame fractions: (0 @ 0.33 
>>> corner: 1 @ 0.66)).
>>> container addMorph: morph3 fullFrame: (LayoutFrame fractions: (0 @ 0.66 
>>> corner: 1 @ 1)).
>>> container addPaneSplitters.
>>> container fillStyle: (SolidFillStyle color: Color yellow).
>>> container extent: 400@400.
>>> container openInWindow.
>>> 
>>> Cheers,
>>> Doru
>>> 
>>> 
>>> --
>>> www.tudorgirba.com
>>> 
>>> "Be rather willing to give than demanding to get."
>>> 
>>> 
>>> 
>>> <ExpanderTweak.1.cs>
>> 
>> 
> 
> --
> www.tudorgirba.com
> 
> "Every now and then stop and ask yourself if the war you're fighting is the 
> right one."
> 
> 
> 
> 
> 

--
www.tudorgirba.com

"Problem solving efficiency grows with the abstractness level of problem 
understanding."




Reply via email to