summaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/tests/tickets/Ticket1983.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/vaadin/tests/tickets/Ticket1983.java')
-rw-r--r--src/com/vaadin/tests/tickets/Ticket1983.java138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/com/vaadin/tests/tickets/Ticket1983.java b/src/com/vaadin/tests/tickets/Ticket1983.java
new file mode 100644
index 0000000000..b02047aca2
--- /dev/null
+++ b/src/com/vaadin/tests/tickets/Ticket1983.java
@@ -0,0 +1,138 @@
+package com.vaadin.tests.tickets;
+
+import com.vaadin.Application;
+import com.vaadin.data.util.IndexedContainer;
+import com.vaadin.terminal.Sizeable;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Layout;
+import com.vaadin.ui.OrderedLayout;
+import com.vaadin.ui.SplitPanel;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Button.ClickEvent;
+
+/**
+ * Test class for ticket 1983
+ */
+public class Ticket1983 extends Application {
+
+ @Override
+ public void init() {
+ Window main = new Window("Test for ticket 1983");
+ main.setLayout(new TestLayout());
+ setMainWindow(main);
+ }
+
+ private static class TestLayout extends SplitPanel {
+ boolean isLong = true;
+ final Table table = new MyTable();
+ final String propId = "col";
+ final String propId2 = "col2";
+
+ public TestLayout() {
+ super(ORIENTATION_HORIZONTAL);
+
+ setSplitPosition(200, Sizeable.UNITS_PIXELS);
+ setMargin(false);
+ setLocked(true);
+
+ final SplitPanel leftSide = initLeftSide();
+ setFirstComponent(leftSide);
+
+ final Layout rightSide = new OrderedLayout();
+ rightSide.setHeight("100%");
+ setSecondComponent(rightSide);
+ }
+
+ private SplitPanel initLeftSide() {
+ final SplitPanel leftSide = new SplitPanel(ORIENTATION_VERTICAL);
+ leftSide.setHeight("100%");
+
+ final IndexedContainer dataSource = new IndexedContainer();
+ dataSource.addContainerProperty(propId, String.class, null);
+ dataSource.addContainerProperty(propId2, String.class, null);
+ final Object itemId = dataSource.addItem();
+ dataSource.getItem(itemId).getItemProperty(propId).setValue(
+ "Very long value that makes a scrollbar appear for sure");
+ dataSource.getItem(itemId).getItemProperty(propId2).setValue(
+ "Very long value that makes a scrollbar appear for sure");
+
+ for (int i = 0; i < 150; i++) {
+ Object id = dataSource.addItem();
+ dataSource
+ .getItem(id)
+ .getItemProperty(propId)
+ .setValue(
+ (i == 100 ? "Very long value that makes a scrollbar appear for sure"
+ : "Short"));
+ dataSource.getItem(id).getItemProperty(propId2).setValue(
+ "Short");
+ }
+
+ table.setSizeFull();
+ table.setContainerDataSource(dataSource);
+ table.setVisibleColumns(new Object[] { propId });
+
+ leftSide.setSecondComponent(table);
+
+ Button button = new Button("Change col value to short");
+ button.addListener(new Button.ClickListener() {
+ public void buttonClick(Button.ClickEvent event) {
+ // Change the column value to a short one --> Should remove
+ // the scrollbar
+ if (isLong) {
+ dataSource.getItem(itemId).getItemProperty(propId)
+ .setValue("Short value");
+ dataSource.getItem(itemId).getItemProperty(propId2)
+ .setValue("Short value");
+ isLong = false;
+ } else {
+ dataSource
+ .getItem(itemId)
+ .getItemProperty(propId)
+ .setValue(
+ "Very long value that makes a scrollbar appear for sure");
+ dataSource
+ .getItem(itemId)
+ .getItemProperty(propId2)
+ .setValue(
+ "Very long value that makes a scrollbar appear for sure");
+ isLong = true;
+ }
+ // Works the same way with or without repaint request
+ table.requestRepaint();
+ }
+ });
+
+ OrderedLayout ol = new OrderedLayout();
+ ol.addComponent(button);
+ leftSide.setFirstComponent(ol);
+
+ button = new Button("Two col");
+ button.addListener(new Button.ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ Button b = event.getButton();
+ if (((Boolean) b.getValue()).booleanValue()) {
+ table
+ .setVisibleColumns(new Object[] { propId,
+ propId2 });
+ } else {
+ table.setVisibleColumns(new Object[] { propId });
+ }
+
+ }
+
+ });
+ button.setSwitchMode(true);
+ ol.addComponent(button);
+
+ return leftSide;
+ }
+ }
+
+ static class MyTable extends Table {
+ MyTable() {
+ alwaysRecalculateColumnWidths = true;
+ }
+ }
+}