Piotr, The JavaDoc comment suggests that setting a SplitPane's 'resizeMode' property to PRIMARY_REGION should do it. http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/SplitPane.ResizeMode.html#PRIMARY_REGION http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/SplitPane.html#setResizeMode(org.apache.pivot.wtk.SplitPane.ResizeMode)
But I just played around with in the Component Explorer demo, and can't see a change in behaviour when the resize mode is changed, but that might just be because of the Container that is is in (a ScrollPane in this particular demo). http://pivot.apache.org/demos/component-explorer.html (Layout Containers -> SplitPane) If the PRIMARY_REGION resize mode doesn't actually work (perhaps I just misunderstood the purpose of PRIMARY_REGION?), then it should still be possible to achieve what you want without too much effort. (I dont't have the source code in front of me right now, but will check it later.) My first idea was to use a SplitPaneListener to listen for the 'splitRatioChanged' events. The listener would would resize the target Component & SplitPane, and adjust the 'splitRatio' as required. Although that might work, I think the user experience would not be good due to all the resizing. http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/SplitPaneListener.html It might be easier to subclass SplitPane and associate it with a custom SplitPaneSkin (based on the existing org.apache.pivot.wtk.skin.terra.TerraSplitPaneSkin class). Your custom skin would keep the mouse handling & splitter painting code from TerraSplitPaneSkin , but just change what happens when the splitter is dragged. So rather than changing the 'splitRatio', it would resize the 'target' Component (and SplitPane itself) as the splitter handle is dragged . Another option would be to use a TablePane as the Container for your 2 Components. http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/TablePane.html (This method would be quick and easy if the 'splitter' size only ever changes programmatically, but it is probably too much work to build in the changes based on use/mouse input.) For the vertical layout orientation, you would create 1 column and 2 rows. One row would have a relative height of '1*', meaning that it would use all space available to it. The other would have a relative height of '-1', meaning that it would just use the size required for the Component in the row. You could use 2 columns, and 1 row for a horizontal layout orientation. The TablePane would handle the actual sizing for you, but you would need to handle the mouse events yourself as well as the painting of the 'spliiter handle'. http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/ComponentMouseListener.html http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/ComponentMouseButtonListener.html http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/ComponentMouseWheelListener.html http://pivot.apache.org/2.0/docs/api/org/apache/pivot/wtk/ContainerMouseListener.html Chris 2011/6/19 Piotr Kołaczkowski <[email protected]> > > Hi, > > In Pivot 2.0, is there a way to create a component with one edge thick > just like the splitter in the SplitPane, so that when user drags this edge, > the component resizes appropriately, but only this component and not the > other one that is above/below/left/right? > > Imagine two components, one placed over another, in a single Expander (but > it can be a BoxPane, Border or whatever): > > =================== > Expander title > ----------------------------- > > Vertically resizable component > > ------------++-------------- > Fixed size component > =================== > > I want the edge denoted by ---++--- to act very much like a traditional > SplitPane, except that > it doesn't resize the bottom component. So of course, when the user drags > it, the total height of the container holding the two components also > changes. > If it is not possible to do that with the draggable splitter in the middle, > I would be also satisfied with a solution, that the bottom edge of the > expander can be resized, like this: > > =================== > Expander title > ----------------------------- > > Resizable component 1 > > ---------------------------- > Fixed size component 2 > =======++========== > > > I tried that with SplitPane, by simply setting minimum, maximum and > preferredHeight of the bottom component to the same value, but it seems to > ignore this, and it also doesn't resize the container. :( > > Thank you and best regards, > Piotr > > > -- > Piotr Kołaczkowski > Instytut Informatyki, Politechnika Warszawska > Nowowiejska 15/19, 00-665 Warszawa > e-mail: [email protected] > www: http://home.elka.pw.edu.pl/~pkolaczk/ > >
