package com.vaadin.tests.components.splitpanel; import com.vaadin.server.Sizeable; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.HorizontalSplitPanel; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.VerticalSplitPanel; public class SplitPanelWithMinimumAndMaximum extends AbstractReindeerTestUI { @Override protected void setup(VaadinRequest request) { TabSheet tabs = new TabSheet(); VerticalLayout verticalLayout = new VerticalLayout(); verticalLayout.setMargin(false); verticalLayout.setSpacing(false); verticalLayout.setCaption("Horizontal splits"); HorizontalSplitPanel percentagePositionWithPercentageLimitsHorizontal = new HorizontalSplitPanel(); percentagePositionWithPercentageLimitsHorizontal.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontal.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontal .setFirstComponent(new Label("Min 10 % - 50 % position")); percentagePositionWithPercentageLimitsHorizontal .setSecondComponent(new Label("Max 80 %")); percentagePositionWithPercentageLimitsHorizontal.setSplitPosition(50, Sizeable.UNITS_PERCENTAGE); verticalLayout .addComponent(percentagePositionWithPercentageLimitsHorizontal); HorizontalSplitPanel pixelPositionWithPercentageLimitsHorizontal = new HorizontalSplitPanel(); pixelPositionWithPercentageLimitsHorizontal.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsHorizontal.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsHorizontal .setFirstComponent(new Label("Min 10 % - 400 px position")); pixelPositionWithPercentageLimitsHorizontal .setSecondComponent(new Label("Max 80 %")); pixelPositionWithPercentageLimitsHorizontal.setSplitPosition(400, Sizeable.UNITS_PIXELS); verticalLayout .addComponent(pixelPositionWithPercentageLimitsHorizontal); HorizontalSplitPanel pixelPositionWithPixelLimitsHorizontal = new HorizontalSplitPanel(); pixelPositionWithPixelLimitsHorizontal.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsHorizontal.setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsHorizontal .setFirstComponent(new Label("Min 100 px - 400 px position")); pixelPositionWithPixelLimitsHorizontal .setSecondComponent(new Label("Max 550 px")); pixelPositionWithPixelLimitsHorizontal.setSplitPosition(400, Sizeable.UNITS_PIXELS); verticalLayout.addComponent(pixelPositionWithPixelLimitsHorizontal); HorizontalSplitPanel percentagePositionWithPixelLimitsHorizontal = new HorizontalSplitPanel(); percentagePositionWithPixelLimitsHorizontal.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontal.setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontal .setFirstComponent(new Label("Min 100 px - 30 % position")); percentagePositionWithPixelLimitsHorizontal .setSecondComponent(new Label("Max 550 px")); percentagePositionWithPixelLimitsHorizontal.setSplitPosition(30, Sizeable.UNITS_PERCENTAGE); verticalLayout .addComponent(percentagePositionWithPixelLimitsHorizontal); HorizontalSplitPanel percentagePositionWithPercentageLimitsHorizontalResersed = new HorizontalSplitPanel(); percentagePositionWithPercentageLimitsHorizontalResersed .setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontalResersed .setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontalResersed .setFirstComponent( new Label("Max 80 % - Reversed 50 % position")); percentagePositionWithPercentageLimitsHorizontalResersed .setSecondComponent(new Label("Min 10 %")); percentagePositionWithPercentageLimitsHorizontalResersed .setSplitPosition(50, Sizeable.UNITS_PERCENTAGE, true); verticalLayout.addComponent( percentagePositionWithPercentageLimitsHorizontalResersed); HorizontalSplitPanel pixelPositionWithPercentageLimitsHorizontalResersed = new HorizontalSplitPanel(); pixelPositionWithPercentageLimitsHorizontalResersed .setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsHorizontalResersed .setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsHorizontalResersed.setFirstComponent( new Label("Max 80 % - Reversed 400 px position")); pixelPositionWithPercentageLimitsHorizontalResersed .setSecondComponent(new Label("Min 10 %")); pixelPositionWithPercentageLimitsHorizontalResersed .setSplitPosition(400, Sizeable.UNITS_PIXELS, true); verticalLayout.addComponent( pixelPositionWithPercentageLimitsHorizontalResersed); HorizontalSplitPanel pixelPositionWithPixelLimitsHorizontalResersed = new HorizontalSplitPanel(); pixelPositionWithPixelLimitsHorizontalResersed.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsHorizontalResersed.setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsHorizontalResersed.setFirstComponent( new Label("Max 550 px - Reversed 400 px position")); pixelPositionWithPixelLimitsHorizontalResersed .setSecondComponent(new Label("Min 100 px")); pixelPositionWithPixelLimitsHorizontalResersed.setSplitPosition(400, Sizeable.UNITS_PIXELS, true); verticalLayout .addComponent(pixelPositionWithPixelLimitsHorizontalResersed); HorizontalSplitPanel percentagePositionWithPixelLimitsHorizontalResersed = new HorizontalSplitPanel(); percentagePositionWithPixelLimitsHorizontalResersed .setMinSplitPosition(100, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontalResersed .setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontalResersed.setFirstComponent( new Label("Max 550 px - Reversed 30 % position")); percentagePositionWithPixelLimitsHorizontalResersed .setSecondComponent(new Label("Min 100 px")); percentagePositionWithPixelLimitsHorizontalResersed.setSplitPosition(30, Sizeable.UNITS_PERCENTAGE, true); verticalLayout.addComponent( percentagePositionWithPixelLimitsHorizontalResersed); verticalLayout.setSizeFull(); tabs.addComponent(verticalLayout); HorizontalLayout horizontalLayout = new HorizontalLayout(); horizontalLayout.setSpacing(false); horizontalLayout.setCaption("Vertical splits"); VerticalSplitPanel percentagePositionWithPercentageLimitsVertical = new VerticalSplitPanel(); percentagePositionWithPercentageLimitsVertical.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVertical.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVertical .setFirstComponent(new Label("Min 10 % - 50 % position")); percentagePositionWithPercentageLimitsVertical .setSecondComponent(new Label("Max 80 %")); percentagePositionWithPercentageLimitsVertical.setSplitPosition(50, Sizeable.UNITS_PERCENTAGE); horizontalLayout .addComponent(percentagePositionWithPercentageLimitsVertical); VerticalSplitPanel pixelPositionWithPercentageLimitsVertical = new VerticalSplitPanel(); pixelPositionWithPercentageLimitsVertical.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsVertical.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsVertical .setFirstComponent(new Label("Min 10 % - 400 px position")); pixelPositionWithPercentageLimitsVertical .setSecondComponent(new Label("Max 80 %")); pixelPositionWithPercentageLimitsVertical.setSplitPosition(400, Sizeable.UNITS_PIXELS); horizontalLayout .addComponent(pixelPositionWithPercentageLimitsVertical); VerticalSplitPanel pixelPositionWithPixelLimitsVertical = new VerticalSplitPanel(); pixelPositionWithPixelLimitsVertical.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsVertical.setMaxSplitPosition(450, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsVertical .setFirstComponent(new Label("Min 100 px - 400 px position")); pixelPositionWithPixelLimitsVertical .setSecondComponent(new Label("Max 450 px")); pixelPositionWithPixelLimitsVertical.setSplitPosition(400, Sizeable.UNITS_PIXELS); horizontalLayout.addComponent(pixelPositionWithPixelLimitsVertical); VerticalSplitPanel percentagePositionWithPixelLimitsVertical = new VerticalSplitPanel(); percentagePositionWithPixelLimitsVertical.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsVertical.setMaxSplitPosition(450, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsVertical .setFirstComponent(new Label("Min 100 px - 30 % position")); percentagePositionWithPixelLimitsVertical .setSecondComponent(new Label("Max 450 px")); percentagePositionWithPixelLimitsVertical.setSplitPosition(30, Sizeable.UNITS_PERCENTAGE); horizontalLayout .addComponent(percentagePositionWithPixelLimitsVertical); VerticalSplitPanel percentagePositionWithPercentageLimitsVerticalReversed = new VerticalSplitPanel(); percentagePositionWithPercentageLimitsVerticalReversed .setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVerticalReversed .setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVerticalReversed .setFirstComponent( new Label("Max 80 % - Reversed 50 % position")); percentagePositionWithPercentageLimitsVerticalReversed .setSecondComponent(new Label("Min 10 %")); percentagePositionWithPercentageLimitsVerticalReversed .setSplitPosition(50, Sizeable.UNITS_PERCENTAGE, true); horizontalLayout.addComponent( percentagePositionWithPercentageLimitsVerticalReversed); VerticalSplitPanel pixelPositionWithPercentageLimitsVerticalReversed = new VerticalSplitPanel(); pixelPositionWithPercentageLimitsVerticalReversed .setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsVerticalReversed .setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsVerticalReversed.setFirstComponent( new Label("Max 80 % - Reversed 400 px position")); pixelPositionWithPercentageLimitsVerticalReversed .setSecondComponent(new Label("Min 10 %")); pixelPositionWithPercentageLimitsVerticalReversed.setSplitPosition(400, Sizeable.UNITS_PIXELS, true); horizontalLayout.addComponent( pixelPositionWithPercentageLimitsVerticalReversed); VerticalSplitPanel pixelPositionWithPixelLimitsVerticalReversed = new VerticalSplitPanel(); pixelPositionWithPixelLimitsVerticalReversed.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsVerticalReversed.setMaxSplitPosition(400, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsVerticalReversed.setFirstComponent( new Label("Max 400 px - Reversed 300 px position")); pixelPositionWithPixelLimitsVerticalReversed .setSecondComponent(new Label("Min 100 px")); pixelPositionWithPixelLimitsVerticalReversed.setSplitPosition(300, Sizeable.UNITS_PIXELS, true); horizontalLayout .addComponent(pixelPositionWithPixelLimitsVerticalReversed); VerticalSplitPanel percentagePositionWithPixelLimitsVerticalReversed = new VerticalSplitPanel(); percentagePositionWithPixelLimitsVerticalReversed .setMinSplitPosition(100, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsVerticalReversed .setMaxSplitPosition(400, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsVerticalReversed.setFirstComponent( new Label("Max 400 px - Reversed 30 % position")); percentagePositionWithPixelLimitsVerticalReversed .setSecondComponent(new Label("Min 100 px")); percentagePositionWithPixelLimitsVerticalReversed.setSplitPosition(30, Sizeable.UNITS_PERCENTAGE, true); horizontalLayout.addComponent( percentagePositionWithPixelLimitsVerticalReversed); tabs.addComponent(horizontalLayout); horizontalLayout.setSizeFull(); final VerticalLayout togglableSplitPanelLayout = new VerticalLayout(); togglableSplitPanelLayout.setSpacing(false); togglableSplitPanelLayout.setMargin(false); togglableSplitPanelLayout.setCaption("Togglable minimum/maximum"); final HorizontalSplitPanel togglableSplitPanel = new HorizontalSplitPanel(); togglableSplitPanel.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); togglableSplitPanel.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); togglableSplitPanel .setFirstComponent(new Label("Min 10 % - 50 % position")); togglableSplitPanel.setSecondComponent(new Label("Max 80 %")); togglableSplitPanel.setSplitPosition(50, Sizeable.UNITS_PERCENTAGE); togglableSplitPanel.setHeight("250px"); togglableSplitPanelLayout.addComponent(togglableSplitPanel); final HorizontalLayout buttonLayout = new HorizontalLayout(); buttonLayout.setSpacing(false); Button disableMinimum = new Button("Disable min limit", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMinSplitPosition(0, Sizeable.UNITS_PERCENTAGE); } }); Button enableMinimum = new Button("Enable min limit", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); } }); Button disableMaximum = new Button("Disable max limit", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMaxSplitPosition(100, Sizeable.UNITS_PERCENTAGE); } }); Button enableMaximum = new Button("Enable max limit", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { togglableSplitPanel.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); } }); buttonLayout.addComponent(disableMinimum); buttonLayout.addComponent(enableMinimum); buttonLayout.addComponent(disableMaximum); buttonLayout.addComponent(enableMaximum); togglableSplitPanelLayout.addComponent(buttonLayout); tabs.addComponent(togglableSplitPanelLayout); addComponent(tabs); tabs.setHeight("550px"); tabs.setWidth("600px"); getLayout().setSizeFull(); } @Override protected String getTestDescription() { return "SplitPanel could have setMaxSplitPosition and setMinSplitPosition methods as a way to set maximum and minimum limits for the split position. This is not a very critical feature but could be useful in some situations."; } @Override protected Integer getTicketNumber() { return 1744; } }