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>