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.girba@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>