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" <[email protected]>
> To: <[email protected]>
> 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" <[email protected]>
>> To: <[email protected]>
>> 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" <[email protected]>
>>> To: <[email protected]>
>>> 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" <[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."
>>>
>>>
>>>
>>>
>>>
>>
>> --
>> www.tudorgirba.com
>>
>> "There are no old things, there are only old ways of looking at them."
>>
>>
>>
>>
> <ExpanderTweak.2.cs>