class SplitPanelPositioningExample(VerticalLayout): def __init__(self): super(SplitPanelPositioningExample, self).__init__() self.setStyleName('split-panel-positioning-example') self.setSpacing(True) controls = HorizontalLayout() controls.setSpacing(True) self.addComponent(controls) self._verticalSplitPanel = VerticalSplitPanel() self._verticalSplitPanel.setSplitPosition(100, ISizeable.UNITS_PIXELS) self._verticalSplitPanel.setLocked(True) self._verticalSplitPanel.setHeight('450px') self._verticalSplitPanel.setWidth('100%') self.addComponent(self._verticalSplitPanel) # Add some content to the top topArea = Label() topArea.setStyleName('top-area') topArea.addStyleName('measured-from-top') topArea.setSizeFull() self._verticalSplitPanel.addComponent(topArea) # Add a horizontal split panel in the bottom area self._horizontalSplitPanel = HorizontalSplitPanel() self._horizontalSplitPanel.setSplitPosition(30, ISizeable.UNITS_PERCENTAGE) self._horizontalSplitPanel.setSizeFull() self._horizontalSplitPanel.setLocked(True) self._verticalSplitPanel.addComponent(self._horizontalSplitPanel) # Add some content to the left and right sides of the vertical layout leftArea = Label() leftArea.setStyleName('left-area') leftArea.addStyleName('measured-from-left') leftArea.setSizeFull() self._horizontalSplitPanel.addComponent(leftArea) rightArea = Label() rightArea.setStyleName('right-area') rightArea.setSizeFull() self._horizontalSplitPanel.addComponent(rightArea) # Allow user to set the splitter positioning self._measurePositionFromLeft = OptionGroup('Horizontal split position', ['30% from left', '30% from right']) self._measurePositionFromLeft.setValue('30% from left') self._measurePositionFromLeft.setImmediate(True) l = LeftRightListener(self, leftArea, rightArea) self._measurePositionFromLeft.addListener(l, IValueChangeListener) controls.addComponent(self._measurePositionFromLeft) controls.setComponentAlignment(self._measurePositionFromLeft, Alignment.MIDDLE_CENTER) self._measurePositionFromTop = OptionGroup('Vertical split position', ['100px from top', '100px from bottom']) self._measurePositionFromTop.setValue('100px from top') self._measurePositionFromTop.setImmediate(True) l = TopBottomListener(self, leftArea, rightArea, topArea) self._measurePositionFromTop.addListener(l, IValueChangeListener) controls.addComponent(self._measurePositionFromTop) controls.setComponentAlignment(self._measurePositionFromTop, Alignment.MIDDLE_CENTER)
def __init__(self): super(SplitPanelBasicExample, self).__init__() # First a vertical SplitPanel vert = VerticalSplitPanel() vert.setHeight('450px') vert.setWidth('100%') vert.setSplitPosition(150, ISizeable.UNITS_PIXELS) self.addComponent(vert) # add a label to the upper area vert.addComponent(Label(self.brownFox)) # Add a horizontal SplitPanel to the lower area horiz = HorizontalSplitPanel() horiz.setSplitPosition(50) # percent vert.addComponent(horiz) # left component: horiz.addComponent(Label(self.brownFox)) # right component: horiz.addComponent(Label(self.brownFox)) # Lock toggle button toggleLocked = CheckBox('Splits locked', LockListener(vert, horiz)) toggleLocked.setImmediate(True) self.addComponent(toggleLocked)