From 4932cecca53b25149ec18dd811c89997ee43e8d9 Mon Sep 17 00:00:00 2001 From: elmot Date: Fri, 29 May 2015 18:13:33 +0300 Subject: Fix for javadocs Change-Id: Id8cec85e279907795947e0b0e98649fde6eecb2d --- server/src/com/vaadin/ui/Grid.java | 44 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'server') diff --git a/server/src/com/vaadin/ui/Grid.java b/server/src/com/vaadin/ui/Grid.java index 00ed4a190d..c061a81b73 100644 --- a/server/src/com/vaadin/ui/Grid.java +++ b/server/src/com/vaadin/ui/Grid.java @@ -794,7 +794,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, /** * Marks an item as selected. * - * @param itemIds + * @param itemId * the itemId to mark as selected; null for * deselect * @return true if the selection state changed. @@ -1944,7 +1944,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, /** * Removes the row at the given position. * - * @param index + * @param rowIndex * the position of the row * * @throws IllegalArgumentException @@ -2441,7 +2441,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, private Converter converter; /** - * A check for allowing the {@link #Column(Grid, GridColumnState) + * A check for allowing the {@link #Column(Grid, GridColumnState, Object) * constructor} to call {@link #setConverter(Converter)} with a * null, even if model and renderer aren't compatible. */ @@ -3101,7 +3101,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * * @throws IllegalArgumentException * if there is no column for the provided property id - * @throws BindException + * @throws FieldGroup.BindException * if no field has been configured and there is a problem * building or binding */ @@ -3272,12 +3272,12 @@ public class Grid extends AbstractComponent implements SelectionNotifier, } /** - * An abstract base class for server-side Grid renderers. - * {@link com.vaadin.client.widget.grid.Renderer Grid renderers}. This class - * currently extends the AbstractGridExtension superclass, but this fact - * should be regarded as an implementation detail and subject to change in a - * future major or minor Vaadin revision. - * + * An abstract base class for server-side + * {@link com.vaadin.ui.renderers.Renderer Grid renderers}. This class + * currently extends the AbstractExtension superclass, but this fact should + * be regarded as an implementation detail and subject to change in a future + * major or minor Vaadin revision. + * * @param * the type this renderer knows how to present */ @@ -3348,7 +3348,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * is desired. For instance, a {@code Renderer} could first turn a * date value into a formatted string and return * {@code encode(dateString, String.class)}. - * + * * @param value * the value to be encoded * @param type @@ -3363,7 +3363,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, /** * An abstract base class for server-side Grid extensions. - * + * * @since 7.5 */ public static abstract class AbstractGridExtension extends @@ -3378,7 +3378,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, /** * Constructs a new Grid extension and extends given Grid. - * + * * @param grid * a grid instance */ @@ -3537,7 +3537,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * in Grid() constructor, or false if the user has set their * own Container. * - * @see #setContainerDataSource() + * @see #setContainerDataSource(Indexed) * @see #Grid() */ private boolean defaultContainer = true; @@ -4513,7 +4513,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * @throws IllegalArgumentException * if {@code rows} is zero or less * @throws IllegalArgumentException - * if {@code rows} is {@link Double#isInifinite(double) + * if {@code rows} is {@link Double#isInfinite(double) * infinite} * @throws IllegalArgumentException * if {@code rows} is {@link Double#isNaN(double) NaN} @@ -4759,7 +4759,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * {@link SelectionModel.Single} and {@link SelectionModel.Multi} are * supported. * - * @param itemIds + * @param itemId * the itemId to mark as selected * @return true if the selection state changed, * false if the itemId already was selected @@ -4852,10 +4852,10 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * {@link SelectionModel SelectionModels} would be able to inform Grid of * these events. * - * @param addedSelections - * the selections that were added by this event - * @param removedSelections - * the selections that were removed by this event + * @param newSelection + * the selection that was added by this event + * @param oldSelection + * the selection that was removed by this event */ public void fireSelectionEvent(Collection oldSelection, Collection newSelection) { @@ -5235,7 +5235,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, /** * Removes the row at the given position from the header section. * - * @param index + * @param rowIndex * the position of the row * * @throws IllegalArgumentException @@ -5382,7 +5382,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, /** * Removes the row at the given position from the footer section. * - * @param index + * @param rowIndex * the position of the row * * @throws IllegalArgumentException -- cgit v1.2.3 From 90e75a20bda563f90297840f4feb5668cd524633 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 15 May 2015 12:38:01 +0300 Subject: Properly handle readonly fields when clearing FieldGroup (#17166) Change-Id: I42b9fe5d945d23e202a252a8be12976608da19bf --- .../src/com/vaadin/data/fieldgroup/FieldGroup.java | 17 +++++- .../vaadin/tests/fieldgroup/AbstractBasicCrud.java | 29 ++++++++- .../vaadin/tests/fieldgroup/BasicCrudGridTest.java | 69 ++++++++++++++++++++++ .../com/vaadin/tests/fieldgroup/ComplexPerson.java | 6 +- .../tests/tb3/SingleBrowserTestPhantomJS2.java | 33 +++++++++++ 5 files changed, 146 insertions(+), 8 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridTest.java create mode 100644 uitest/src/com/vaadin/tests/tb3/SingleBrowserTestPhantomJS2.java (limited to 'server') diff --git a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java index d370c3906b..aaaae9e4f7 100644 --- a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java +++ b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java @@ -258,7 +258,19 @@ public class FieldGroup implements Serializable { if (itemDataSource == null) { // Clear any possible existing binding to clear the field field.setPropertyDataSource(null); - field.clear(); + boolean fieldReadOnly = field.isReadOnly(); + if (!fieldReadOnly) { + field.clear(); + } else { + // Temporarily make the field read-write so we can clear the + // value. Needed because setPropertyDataSource(null) does not + // currently clear the field + // (https://dev.vaadin.com/ticket/14733) + field.setReadOnly(false); + field.clear(); + field.setReadOnly(true); + } + // Will be bound when data source is set return; } @@ -1247,4 +1259,5 @@ public class FieldGroup implements Serializable { } } -} + +} \ No newline at end of file diff --git a/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java b/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java index c88047e414..0405ea2e10 100644 --- a/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java +++ b/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java @@ -128,6 +128,19 @@ public abstract class AbstractBasicCrud extends AbstractTestUIWithLog { gender.setNullRepresentation(""); age.setNullRepresentation(""); address_country.setNullRepresentation(""); + + // Last name editing is disabled through property readonly. + // Postal code editing is disabled through disabling field. + /* + * Currently only sets the initial state because of + * https://dev.vaadin.com/ticket/17847 + * + * Must set lastName state initially as BeanFieldGroup can't tell it + * should be read-only before setting an item data source + */ + lastName.setReadOnly(true); + address_postalCode.setEnabled(false); + birthDate.setNullRepresentation(""); age.addValidator(new IntegerRangeValidator( @@ -184,7 +197,21 @@ public abstract class AbstractBasicCrud extends AbstractTestUIWithLog { protected Button cancel = new Button("Cancel"); protected BeanFieldGroup fieldGroup = new BeanFieldGroup( - ComplexPerson.class); + ComplexPerson.class) { + @Override + protected void configureField(com.vaadin.ui.Field field) { + super.configureField(field); + if (field.getCaption().equals("Postal code")) { + // Last name editing is disabled through property. + // Postal code editing is disabled through field. + /* + * This is needed because of + * https://dev.vaadin.com/ticket/17847 + */ + field.setEnabled(false); + } + }; + }; public AbstractForm() { super(5, 1); diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridTest.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridTest.java new file mode 100644 index 0000000000..12bccdd065 --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridTest.java @@ -0,0 +1,69 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.fieldgroup; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.testbench.AbstractHasTestBenchCommandExecutor; +import com.vaadin.testbench.elements.AbstractComponentElement; +import com.vaadin.testbench.elements.GridElement; +import com.vaadin.testbench.elements.TextFieldElement; +import com.vaadin.tests.tb3.SingleBrowserTestPhantomJS2; + +public class BasicCrudGridTest extends SingleBrowserTestPhantomJS2 { + + @Test + public void fieldsInitiallyEmpty() { + openTestURL(); + List textFields = getFieldsLayout().$( + TextFieldElement.class).all(); + + for (TextFieldElement e : textFields) { + Assert.assertEquals("TextField should be empty", "", e.getValue()); + } + } + + private AbstractHasTestBenchCommandExecutor getFieldsLayout() { + return $(AbstractComponentElement.class).id("form"); + } + + @Test + public void fieldsClearedOnDeselect() { + openTestURL(); + + // Select row + $(GridElement.class).first().getCell(2, 2).click(); + + List textFields = getFieldsLayout().$( + TextFieldElement.class).all(); + + for (TextFieldElement e : textFields) { + Assert.assertNotEquals("TextField should not be empty", "", + e.getValue()); + } + + // Deselect row + $(GridElement.class).first().getCell(2, 2).click(); + + for (TextFieldElement e : textFields) { + Assert.assertEquals("TextField should be empty", "", e.getValue()); + } + + } +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java b/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java index 2fb7c2ac04..bb4fe89575 100644 --- a/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java +++ b/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java @@ -29,10 +29,6 @@ public class ComplexPerson { return lastName; } - public void setLastName(String lastName) { - this.lastName = lastName; - } - public Integer getAge() { return age; } @@ -97,7 +93,7 @@ public class ComplexPerson { public static ComplexPerson create(Random r) { ComplexPerson cp = new ComplexPerson(); cp.setFirstName(TestDataGenerator.getFirstName(r)); - cp.setLastName(TestDataGenerator.getLastName(r)); + cp.lastName = TestDataGenerator.getLastName(r); cp.setAlive(r.nextBoolean()); cp.setBirthDate(TestDataGenerator.getBirthDate(r)); cp.setAge((int) ((new Date(2014 - 1900, 1, 1).getTime() - cp diff --git a/uitest/src/com/vaadin/tests/tb3/SingleBrowserTestPhantomJS2.java b/uitest/src/com/vaadin/tests/tb3/SingleBrowserTestPhantomJS2.java new file mode 100644 index 0000000000..a5afe3afce --- /dev/null +++ b/uitest/src/com/vaadin/tests/tb3/SingleBrowserTestPhantomJS2.java @@ -0,0 +1,33 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.tb3; + +import java.util.Collections; +import java.util.List; + +import org.openqa.selenium.remote.DesiredCapabilities; + +import com.vaadin.testbench.parallel.Browser; + +public abstract class SingleBrowserTestPhantomJS2 extends + PrivateTB3Configuration { + @Override + public List getBrowsersToTest() { + DesiredCapabilities p2 = Browser.PHANTOMJS.getDesiredCapabilities(); + p2.setVersion("2"); + return Collections.singletonList(p2); + } +} -- cgit v1.2.3 From 3b96123d2a84204375277c62d906e3167ee4f352 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Mon, 25 May 2015 19:20:36 +0300 Subject: Replaced incorrect setter/getter with prope ones and fixed declarative (#17982) Change-Id: If1109d3759d9e6414f7d60ae3b12286aa9e29566 --- server/src/com/vaadin/ui/TabSheet.java | 30 ++++++++++++++++++++-- .../tabsheet/TabSheetDeclarativeTest.java | 19 ++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) (limited to 'server') diff --git a/server/src/com/vaadin/ui/TabSheet.java b/server/src/com/vaadin/ui/TabSheet.java index 67dfdd4258..592515c560 100644 --- a/server/src/com/vaadin/ui/TabSheet.java +++ b/server/src/com/vaadin/ui/TabSheet.java @@ -478,9 +478,11 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, * Are the tab selection parts ("tabs") hidden. * * @return true if the tabs are hidden in the UI + * @deprecated as of 7.5, use {@link #isTabsVisible()} instead */ + @Deprecated public boolean areTabsHidden() { - return !getState(false).tabsVisible; + return !isTabsVisible(); } /** @@ -488,9 +490,33 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, * * @param tabsHidden * true if the tabs should be hidden + * @deprecated as of 7.5, use {@link #setTabsVisible(boolean)} instead */ + @Deprecated public void hideTabs(boolean tabsHidden) { - getState().tabsVisible = !tabsHidden; + setTabsVisible(!tabsHidden); + } + + /** + * Sets whether the tab selection part should be shown in the UI + * + * @since 7.5 + * @param tabsVisible + * true if the tabs should be shown in the UI, false otherwise + */ + public void setTabsVisible(boolean tabsVisible) { + getState().tabsVisible = tabsVisible; + } + + /** + * Checks if the tab selection part should be shown in the UI + * + * @return true if the tabs are shown in the UI, false otherwise + * @since 7.5 + */ + public boolean isTabsVisible() { + return getState(false).tabsVisible; + } /** diff --git a/server/tests/src/com/vaadin/tests/server/component/tabsheet/TabSheetDeclarativeTest.java b/server/tests/src/com/vaadin/tests/server/component/tabsheet/TabSheetDeclarativeTest.java index bb5669a3a1..a92101f550 100644 --- a/server/tests/src/com/vaadin/tests/server/component/tabsheet/TabSheetDeclarativeTest.java +++ b/server/tests/src/com/vaadin/tests/server/component/tabsheet/TabSheetDeclarativeTest.java @@ -18,7 +18,9 @@ package com.vaadin.tests.server.component.tabsheet; import org.junit.Test; import com.vaadin.server.ExternalResource; +import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.tests.design.DeclarativeTestBase; +import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; import com.vaadin.ui.TabSheet.Tab; import com.vaadin.ui.TextField; @@ -65,4 +67,21 @@ public class TabSheetDeclarativeTest extends DeclarativeTestBase { testRead(design, ts); testWrite(design, ts); } + + @Test + public void tabsNotShown() { + String design = "\n" + + " \n" + + " My Content\n" + " \n" + + "\n"; + TabSheet ts = new TabSheet(); + ts.setTabsVisible(false); + Label l = new Label("My Content", ContentMode.HTML); + Tab tab = ts.addTab(l); + tab.setCaption("My Tab"); + ts.setSelectedTab(tab); + testRead(design, ts); + testWrite(design, ts); + + } } \ No newline at end of file -- cgit v1.2.3