blob: b389727fd3c2a2b3d566ccff2de644b5d8b3e775 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
package com.vaadin.tests.components.table;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Form;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextField;
public class KeyboardNavigationDatasourceChange extends TestBase {
@Override
protected void setup() {
List<MyItem> items = new ArrayList<MyItem>();
for (int i = 0; i < 110; i++) {
items.add(new MyItem("item" + i, i, null));
}
BeanItemContainer<MyItem> c = new BeanItemContainer<MyItem>(
MyItem.class, items);
Table t = new Table("Test", c);
t.setVisibleColumns(new String[] { "nome", "index", "parent" });
t.setSelectable(true);
t.setSizeFull();
t.setImmediate(true);
TextField f = new TextField("Name");
final Form form = new Form();
// Property p = new ObjectProperty<String>("", String.class);
// t.setPropertyDataSource(p); // UNCOMMENT THIS LINE TO SEE BUG
// HAPPENING
// f.setPropertyDataSource(p);
// f.setImmediate(true);
t.setPropertyDataSource(f);
form.addField("table", t);
form.addField("name", f);
addComponent(form);
}
@Override
protected String getDescription() {
return "When calling setPropertyDataSource on a regular table the keyboard navigation becomes unstable";
}
@Override
protected Integer getTicketNumber() {
return 7446;
}
public class MyItem implements Serializable {
private String nome;
private Integer index;
protected List<MyItem> children = new ArrayList<MyItem>();
private MyItem parent;
public MyItem(String nome, Integer index, List<MyItem> children) {
this.nome = nome;
this.index = index;
if (children != null) {
this.children = children;
if (children != null) {
for (MyItem child : children) {
child.setParent(this);
}
}
}
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome
* the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return the idade
*/
public Integer getIndex() {
return index;
}
/**
* @param idade
* the idade to set
*/
public void setIndex(Integer idade) {
index = idade;
}
/**
* @return the children
*/
public List<MyItem> getChildren() {
return children;
}
/**
* @param children
* the children to set
*/
public void setChildren(List<MyItem> children) {
this.children = children;
}
/**
* @return the parent
*/
public MyItem getParent() {
return parent;
}
/**
* @param parent
* the parent to set
*/
public void setParent(MyItem parent) {
this.parent = parent;
}
@Override
public String toString() {
return nome;
}
}
}
|