From ee7526e0876fbe5e418331e3883ad5b9a1d7a828 Mon Sep 17 00:00:00 2001 From: Tapio Aali Date: Thu, 31 May 2012 08:34:34 +0000 Subject: [PATCH] Created a test for disabling and enabling max/min split position of SplitPanel. Also fixed some inconsistenties from the AbstractSplitPanel class. svn changeset:23859/svn branch:6.8 --- src/com/vaadin/ui/AbstractSplitPanel.java | 20 ++-- .../SplitPanelWithMinimumAndMaximum.html | 55 ++++++++++ .../SplitPanelWithMinimumAndMaximum.java | 102 ++++++++++++++---- 3 files changed, 144 insertions(+), 33 deletions(-) diff --git a/src/com/vaadin/ui/AbstractSplitPanel.java b/src/com/vaadin/ui/AbstractSplitPanel.java index 586dbc81fe..0588e44d40 100644 --- a/src/com/vaadin/ui/AbstractSplitPanel.java +++ b/src/com/vaadin/ui/AbstractSplitPanel.java @@ -41,11 +41,11 @@ public abstract class AbstractSplitPanel extends AbstractLayout { private boolean posReversed = false; - private int posMin = 0; + private float posMin = 0; private int posMinUnit = UNITS_PERCENTAGE; - private int posMax = 100; + private float posMax = 100; private int posMaxUnit = UNITS_PERCENTAGE; @@ -222,10 +222,10 @@ public abstract class AbstractSplitPanel extends AbstractLayout { final String maximumPosition = posMax + UNIT_SYMBOLS[posMaxUnit]; target.addAttribute("position", position); - if (minimumPosition != "0%") { + if (!minimumPosition.equals("0%")) { target.addAttribute("minimumPosition", minimumPosition); } - if (maximumPosition != "100%") { + if (!maximumPosition.equals("100%")) { target.addAttribute("maximumPosition", maximumPosition); } @@ -348,7 +348,7 @@ public abstract class AbstractSplitPanel extends AbstractLayout { * the unit (from {@link Sizeable}) in which the size is given. * Allowed units are UNITS_PERCENTAGE and UNITS_PIXELS */ - public void setMinimumSplitPosition(int pos, int unit) { + public void setMinSplitPosition(float pos, int unit) { setSplitPositionLimits(pos, unit, posMax, posMaxUnit); } @@ -358,7 +358,7 @@ public abstract class AbstractSplitPanel extends AbstractLayout { * * @return the minimum position of the splitter */ - public int getMinSplitPosition() { + public float getMinSplitPosition() { return posMin; } @@ -381,7 +381,7 @@ public abstract class AbstractSplitPanel extends AbstractLayout { * the unit (from {@link Sizeable}) in which the size is given. * Allowed units are UNITS_PERCENTAGE and UNITS_PIXELS */ - public void setMaxSplitPosition(int pos, int unit) { + public void setMaxSplitPosition(float pos, int unit) { setSplitPositionLimits(posMin, posMinUnit, pos, unit); } @@ -391,7 +391,7 @@ public abstract class AbstractSplitPanel extends AbstractLayout { * * @return the maximum position of the splitter */ - public int getMaxSplitPosition() { + public float getMaxSplitPosition() { return posMax; } @@ -419,8 +419,8 @@ public abstract class AbstractSplitPanel extends AbstractLayout { * the unit (from {@link Sizeable}) in which the maximum position * is given. */ - private void setSplitPositionLimits(int minPos, int minPosUnit, int maxPos, - int maxPosUnit) { + private void setSplitPositionLimits(float minPos, int minPosUnit, + float maxPos, int maxPosUnit) { if ((minPosUnit != UNITS_PERCENTAGE && minPosUnit != UNITS_PIXELS) || (maxPosUnit != UNITS_PERCENTAGE && maxPosUnit != UNITS_PIXELS)) { throw new IllegalArgumentException( diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.html b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.html index 3aefedeff3..70d619edac 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.html +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.html @@ -201,6 +201,61 @@ vertical-splits-down + + mouseClick + vaadin=runcomvaadintestscomponentssplitpanelSplitPanelWithMinimumAndMaximum::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]/domChild[0]/domChild[0] + 25,5 + + + dragAndDrop + vaadin=runcomvaadintestscomponentssplitpanelSplitPanelWithMinimumAndMaximum::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[1]/ChildComponentContainer[0]/VSplitPanelHorizontal[0]/domChild[0]/domChild[2]/domChild[0] + -239,0 + + + screenCapture + + togglable-to-min-with-limit-enabled + + + click + vaadin=runcomvaadintestscomponentssplitpanelSplitPanelWithMinimumAndMaximum::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[1]/ChildComponentContainer[1]/VHorizontalLayout[0]/ChildComponentContainer[0]/VButton[0]/domChild[0]/domChild[0] + + + + dragAndDrop + vaadin=runcomvaadintestscomponentssplitpanelSplitPanelWithMinimumAndMaximum::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[1]/ChildComponentContainer[0]/VSplitPanelHorizontal[0]/domChild[0]/domChild[2]/domChild[0] + -60,0 + + + screenCapture + + togglable-to-min-with-limit-disabled + + + dragAndDrop + vaadin=runcomvaadintestscomponentssplitpanelSplitPanelWithMinimumAndMaximum::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[1]/ChildComponentContainer[0]/VSplitPanelHorizontal[0]/domChild[0]/domChild[2]/domChild[0] + 478,0 + + + screenCapture + + togglable-to-max-with-limit-enabled + + + click + vaadin=runcomvaadintestscomponentssplitpanelSplitPanelWithMinimumAndMaximum::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[1]/ChildComponentContainer[1]/VHorizontalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0] + + + + dragAndDrop + vaadin=runcomvaadintestscomponentssplitpanelSplitPanelWithMinimumAndMaximum::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[1]/ChildComponentContainer[0]/VSplitPanelHorizontal[0]/domChild[0]/domChild[2]/domChild[0] + 113,0 + + + screenCapture + + togglable-to-max-with-limit-disabled + diff --git a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java index 9fa6fc18a3..f7c3dd84e4 100644 --- a/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java +++ b/tests/testbench/com/vaadin/tests/components/splitpanel/SplitPanelWithMinimumAndMaximum.java @@ -2,6 +2,7 @@ package com.vaadin.tests.components.splitpanel; import com.vaadin.terminal.Sizeable; import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.HorizontalSplitPanel; import com.vaadin.ui.Label; @@ -19,8 +20,8 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { horizontalSplitsLayout.setCaption("Horizontal splits"); HorizontalSplitPanel percentagePositionWithPercentageLimitsHorizontal = new HorizontalSplitPanel(); - percentagePositionWithPercentageLimitsHorizontal - .setMinimumSplitPosition(10, Sizeable.UNITS_PERCENTAGE); + percentagePositionWithPercentageLimitsHorizontal.setMinSplitPosition( + 10, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontal.setMaxSplitPosition( 80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontal @@ -33,7 +34,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(percentagePositionWithPercentageLimitsHorizontal); HorizontalSplitPanel pixelPositionWithPercentageLimitsHorizontal = new HorizontalSplitPanel(); - pixelPositionWithPercentageLimitsHorizontal.setMinimumSplitPosition(10, + pixelPositionWithPercentageLimitsHorizontal.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsHorizontal.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); @@ -47,7 +48,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(pixelPositionWithPercentageLimitsHorizontal); HorizontalSplitPanel pixelPositionWithPixelLimitsHorizontal = new HorizontalSplitPanel(); - pixelPositionWithPixelLimitsHorizontal.setMinimumSplitPosition(100, + pixelPositionWithPixelLimitsHorizontal.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsHorizontal.setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); @@ -61,8 +62,8 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(pixelPositionWithPixelLimitsHorizontal); HorizontalSplitPanel percentagePositionWithPixelLimitsHorizontal = new HorizontalSplitPanel(); - percentagePositionWithPixelLimitsHorizontal.setMinimumSplitPosition( - 100, Sizeable.UNITS_PIXELS); + percentagePositionWithPixelLimitsHorizontal.setMinSplitPosition(100, + Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontal.setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontal @@ -76,7 +77,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { HorizontalSplitPanel percentagePositionWithPercentageLimitsHorizontalResersed = new HorizontalSplitPanel(); percentagePositionWithPercentageLimitsHorizontalResersed - .setMinimumSplitPosition(10, Sizeable.UNITS_PERCENTAGE); + .setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontalResersed .setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsHorizontalResersed @@ -91,7 +92,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { HorizontalSplitPanel pixelPositionWithPercentageLimitsHorizontalResersed = new HorizontalSplitPanel(); pixelPositionWithPercentageLimitsHorizontalResersed - .setMinimumSplitPosition(10, Sizeable.UNITS_PERCENTAGE); + .setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsHorizontalResersed .setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsHorizontalResersed @@ -105,8 +106,8 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(pixelPositionWithPercentageLimitsHorizontalResersed); HorizontalSplitPanel pixelPositionWithPixelLimitsHorizontalResersed = new HorizontalSplitPanel(); - pixelPositionWithPixelLimitsHorizontalResersed.setMinimumSplitPosition( - 100, Sizeable.UNITS_PIXELS); + pixelPositionWithPixelLimitsHorizontalResersed.setMinSplitPosition(100, + Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsHorizontalResersed.setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsHorizontalResersed @@ -121,7 +122,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { HorizontalSplitPanel percentagePositionWithPixelLimitsHorizontalResersed = new HorizontalSplitPanel(); percentagePositionWithPixelLimitsHorizontalResersed - .setMinimumSplitPosition(100, Sizeable.UNITS_PIXELS); + .setMinSplitPosition(100, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontalResersed .setMaxSplitPosition(550, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsHorizontalResersed @@ -141,8 +142,8 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { verticalSplitsLayout.setCaption("Vertical splits"); VerticalSplitPanel percentagePositionWithPercentageLimitsVertical = new VerticalSplitPanel(); - percentagePositionWithPercentageLimitsVertical.setMinimumSplitPosition( - 10, Sizeable.UNITS_PERCENTAGE); + percentagePositionWithPercentageLimitsVertical.setMinSplitPosition(10, + Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVertical.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVertical @@ -155,7 +156,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(percentagePositionWithPercentageLimitsVertical); VerticalSplitPanel pixelPositionWithPercentageLimitsVertical = new VerticalSplitPanel(); - pixelPositionWithPercentageLimitsVertical.setMinimumSplitPosition(10, + pixelPositionWithPercentageLimitsVertical.setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsVertical.setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); @@ -169,7 +170,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(pixelPositionWithPercentageLimitsVertical); VerticalSplitPanel pixelPositionWithPixelLimitsVertical = new VerticalSplitPanel(); - pixelPositionWithPixelLimitsVertical.setMinimumSplitPosition(100, + pixelPositionWithPixelLimitsVertical.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsVertical.setMaxSplitPosition(450, Sizeable.UNITS_PIXELS); @@ -182,7 +183,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { verticalSplitsLayout.addComponent(pixelPositionWithPixelLimitsVertical); VerticalSplitPanel percentagePositionWithPixelLimitsVertical = new VerticalSplitPanel(); - percentagePositionWithPixelLimitsVertical.setMinimumSplitPosition(100, + percentagePositionWithPixelLimitsVertical.setMinSplitPosition(100, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsVertical.setMaxSplitPosition(450, Sizeable.UNITS_PIXELS); @@ -197,7 +198,7 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { VerticalSplitPanel percentagePositionWithPercentageLimitsVerticalReversed = new VerticalSplitPanel(); percentagePositionWithPercentageLimitsVerticalReversed - .setMinimumSplitPosition(10, Sizeable.UNITS_PERCENTAGE); + .setMinSplitPosition(10, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVerticalReversed .setMaxSplitPosition(80, Sizeable.UNITS_PERCENTAGE); percentagePositionWithPercentageLimitsVerticalReversed @@ -211,8 +212,8 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(percentagePositionWithPercentageLimitsVerticalReversed); VerticalSplitPanel pixelPositionWithPercentageLimitsVerticalReversed = new VerticalSplitPanel(); - pixelPositionWithPercentageLimitsVerticalReversed - .setMinimumSplitPosition(10, Sizeable.UNITS_PERCENTAGE); + pixelPositionWithPercentageLimitsVerticalReversed.setMinSplitPosition( + 10, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsVerticalReversed.setMaxSplitPosition( 80, Sizeable.UNITS_PERCENTAGE); pixelPositionWithPercentageLimitsVerticalReversed @@ -226,8 +227,8 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(pixelPositionWithPercentageLimitsVerticalReversed); VerticalSplitPanel pixelPositionWithPixelLimitsVerticalReversed = new VerticalSplitPanel(); - pixelPositionWithPixelLimitsVerticalReversed.setMinimumSplitPosition( - 100, Sizeable.UNITS_PIXELS); + pixelPositionWithPixelLimitsVerticalReversed.setMinSplitPosition(100, + Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsVerticalReversed.setMaxSplitPosition(400, Sizeable.UNITS_PIXELS); pixelPositionWithPixelLimitsVerticalReversed @@ -241,8 +242,8 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { .addComponent(pixelPositionWithPixelLimitsVerticalReversed); VerticalSplitPanel percentagePositionWithPixelLimitsVerticalReversed = new VerticalSplitPanel(); - percentagePositionWithPixelLimitsVerticalReversed - .setMinimumSplitPosition(100, Sizeable.UNITS_PIXELS); + percentagePositionWithPixelLimitsVerticalReversed.setMinSplitPosition( + 100, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsVerticalReversed.setMaxSplitPosition( 400, Sizeable.UNITS_PIXELS); percentagePositionWithPixelLimitsVerticalReversed @@ -258,6 +259,61 @@ public class SplitPanelWithMinimumAndMaximum extends TestBase { tabs.addComponent(verticalSplitsLayout); verticalSplitsLayout.setSizeFull(); + final VerticalLayout togglableSplitPanelLayout = new VerticalLayout(); + 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(); + + Button disableMinimum = new Button("Disable min limit", + new Button.ClickListener() { + public void buttonClick(Button.ClickEvent event) { + togglableSplitPanel.setMinSplitPosition(0, + Sizeable.UNITS_PERCENTAGE); + + } + }); + Button enableMinimum = new Button("Enable min limit", + new Button.ClickListener() { + public void buttonClick(Button.ClickEvent event) { + togglableSplitPanel.setMinSplitPosition(10, + Sizeable.UNITS_PERCENTAGE); + + } + }); + Button disableMaximum = new Button("Disable max limit", + new Button.ClickListener() { + public void buttonClick(Button.ClickEvent event) { + togglableSplitPanel.setMaxSplitPosition(100, + Sizeable.UNITS_PERCENTAGE); + + } + }); + Button enableMaximum = new Button("Enable max limit", + new Button.ClickListener() { + 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"); -- 2.39.5