I love to hear that kind of news.
In addition, I think that we should really get rid of toolBuilder because it 
will not support new ui elements.

Stef

On Jan 25, 2011, at 4:31 PM, Gary Chambers wrote:

> OK, try the following, after filing in attached change set,
> I've had a dabble with announcements too ;-) ...
> 
> 
> | container morph1 morph2 morph3 morph4 ex1 ex2 ex3 ex4 sp1 sp2 sp3|
> 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.
> morph4 := (PanelMorph new fillStyle: (SolidFillStyle color: Color green)) 
> hResizing: #spaceFill; vResizing: #spaceFill.
> ex1 := (UITheme builder newExpander: 'Red' for: morph1) spaceFillWeight: 1; 
> expanded: true.
> ex2 := (UITheme builder newExpander: 'Blue'  for: morph2) spaceFillWeight: 2; 
> expanded: true.
> ex3 := (UITheme builder newExpander: 'Yellow'  for: morph3) spaceFillWeight: 
> 3; expanded: true.
> ex4 := (UITheme builder newExpander: 'Green'  for: morph4) spaceFillWeight: 
> 4; expanded: true.
> sp1 := EdgeGripMorph new
> target: ex1;
> edgeName: #bottom;
> fitTargetOwner: true;
> on: #mouseDown send: #expandedSizingRigid to: ex1.
> sp2 := EdgeGripMorph new
> target: ex2;
> edgeName: #bottom;
> fitTargetOwner: true;
> on: #mouseDown send: #expandedSizingRigid to: ex2.
> sp3 := EdgeGripMorph new
> target: ex3;
> edgeName: #bottom;
> fitTargetOwner: true;
> on: #mouseDown send: #expandedSizingRigid to: ex3.
> ex1 announcer on: ExpanderMorphAnnouncement do: [:ann |
> sp1
> visible: ann expanderMorph expanded;
> disableTableLayout: ann expanderMorph expanded not].
> ex2 announcer on: ExpanderMorphAnnouncement do: [:ann |
> sp2
> visible: ann expanderMorph expanded;
> disableTableLayout: ann expanderMorph expanded not].
> ex3 announcer on: ExpanderMorphAnnouncement do: [:ann |
> sp3
> visible: ann expanderMorph expanded;
> disableTableLayout: ann expanderMorph expanded not].
> container := UITheme builder newColumn: {
> ex1.
> sp1.
> ex2.
> sp2.
> ex3.
> sp3.
> ex4}.
> container cellInset: 0.
> container extent: 400@400.
> container openInWindow.
> 
> 
> 
> 
> Once people are happy with it I'll wrap thing up into a new morph that
> takes the burdensome details away (ExpanderGroupMorph or something like that).
> Later, like tabs, ability to add/remove sections dynamically etc.
> 
> Regards, Gary
> 
> ----- Original Message ----- From: "Gary Chambers" <gazzagu...@btinternet.com>
> To: <Pharo-project@lists.gforge.inria.fr>
> Sent: Tuesday, January 25, 2011 3:07 PM
> Subject: Re: [Pharo-project] collapsing panes
> 
> 
>> I'm working on it... changeset soon...
>> 
>> Regards, Gary
>> 
>> ----- Original Message ----- From: "Tudor Girba" <tudor.gi...@gmail.com>
>> To: <Pharo-project@lists.gforge.inria.fr>
>> Sent: Tuesday, January 25, 2011 2:15 PM
>> Subject: Re: [Pharo-project] collapsing panes
>> 
>> 
>> Ahh, indeed! My bad. Thanks Gary.
>> 
>> The main issue that seems to be left is the resizing. Currently, resizing 
>> propagates the changes to all the following morphs. This is great when the 
>> table layout is inside a GeneralScrollPane, but it leads to a bit of an odd 
>> behavior when stretching inside a bounded morph. Is there an easy option to 
>> change the behavior of the resizer?
>> 
>> Cheers,
>> Doru
>> 
>> 
>> 
>> On 25 Jan 2011, at 12:07, Gary Chambers wrote:
>> 
>>> Hi Doru,
>>> 
>>> The weight should be applied to the expanders themselves...
>>> 
>>> 
>>> ex1 := (UITheme builder newExpander: 'Red' for: morph1)
>>> spaceFillWeight: 1;
>>> expanded: true.
>>> ex2 := (UITheme builder newExpander: 'Blue'  for: morph2)
>>> spaceFillWeight: 2;
>>> expanded: true.
>>> ex3 := (UITheme builder newExpander: 'Yellow'  for: morph3)
>>> spaceFillWeight: 3;
>>> expanded: true.
>>> 
>>> Regards, Gary
>>> 
>>> ----- Original Message ----- From: "Tudor Girba" <tudor.gi...@gmail.com>
>>> To: <Pharo-project@lists.gforge.inria.fr>
>>> Sent: Monday, January 24, 2011 9:14 PM
>>> Subject: Re: [Pharo-project] collapsing panes
>>> 
>>> 
>>> 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" <tudor.gi...@gmail.com>
>>>> To: <Pharo-project@lists.gforge.inria.fr>
>>>> 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" <tudor.gi...@gmail.com>
>>>>>> To: "Pharo-project@lists.gforge.inria.fr Development" 
>>>>>> <pharo-project@lists.gforge.inria.fr>
>>>>>> 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."
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> --
>> www.tudorgirba.com
>> 
>> "There are no old things, there are only old ways of looking at them."
>> 
>> 
>> 
>> 
> <ExpanderTweak.2.cs>


Reply via email to