I try to clear a Table selection. Here is the test case:
- fill a Table widget with 3 items : a, b, c.
- select a.
- clear selection (with different methods, see code below).
- select c.
- print selection : selected items is c, a and not just c.
Am I using the right method to clear selection or is it a bug?
I work with IT Mill 5.2.14. I cannot update to new versions to try, because my project is in production…
import com.itmill.toolkit.Application;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.Button.ClickEvent;
import com.itmill.toolkit.ui.Table;
import com.itmill.toolkit.ui.TextField;
import com.itmill.toolkit.ui.Window;
import java.util.Collection;
import java.util.HashSet;
public class TableSelectionBugTestCase extends Application {
Table table;
TextField result;
@Override
public void init() {
Window mainWindow = new Window("Test");
table = new Table();
table.addContainerProperty("Items", String.class, null);
table.addItem( new String[] { "a" }, "a");
table.addItem( new String[] { "b" }, "b");
table.addItem( new String[] { "c" }, "c");
table.setMultiSelect(true);
table.setSelectable(true);
table.setHeight("200px");
table.setWidth("200px");
mainWindow.addComponent(table);
Button clearButton = new Button("Clear selection", new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
clearSelection();
}
} );
mainWindow.addComponent(clearButton);
Button clearButton2 = new Button("Clear selection 2", new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
clearSelection2();
}
} );
mainWindow.addComponent(clearButton2);
Button clearButton3 = new Button("Clear selection 3", new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
clearSelection3();
}
} );
mainWindow.addComponent(clearButton3);
Button printButton = new Button("Print selection", new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
printSelection();
}
} );
mainWindow.addComponent(printButton);
result = new TextField();
result.setHeight("200px");
result.setWidth("200px");
mainWindow.addComponent(result);
setMainWindow(mainWindow);
}
void clearSelection() {
table.setValue(null);
}
void clearSelection2() {
table.setValue(new HashSet());
}
void clearSelection3() {
table.unselect( "a" );
table.unselect( "b" );
table.unselect( "c" );
}
void printSelection() {
String selection = "";
for( Object item : (Collection)table.getValue() ) {
selection = selection + item + ' ';
}
result.setValue(selection);
}
}