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 package info.magnolia.ui.workbench.tree;
35
36 import com.vaadin.annotations.JavaScript;
37 import com.vaadin.server.AbstractJavaScriptExtension;
38 import com.vaadin.server.ClientConnector;
39 import com.vaadin.v7.data.Container;
40 import com.vaadin.v7.ui.Table;
41
42
43
44
45 @JavaScript("rowscroller_connector.js")
46 public class RowScroller extends AbstractJavaScriptExtension {
47
48 public static final String MGNL_TABLE = "mgnlTable";
49
50 public RowScroller(Table table) {
51 extend(table);
52 }
53
54 public void bringRowIntoView(Object rowId) {
55 scrollRowIntoView(rowId);
56 }
57
58 @Override
59 protected Class<? extends ClientConnector> getSupportedParentType() {
60 return Table.class;
61 }
62
63 private void scrollRowIntoView(Object itemId) {
64 int itemIndex = getItemIndex(itemId);
65 if (itemIndex >= 0) {
66 callFunction("scrollRowIntoView", itemIndex);
67 }
68 }
69
70 @Override
71 public Table getParent() {
72 return (Table) super.getParent();
73 }
74
75 protected int getItemIndex(Object itemId) {
76 Container container = getParent().getContainerDataSource();
77 return ((Container.Indexed)container).indexOfId(itemId);
78 }
79
80 @Override
81 public void attach() {
82 super.attach();
83 getParent().addStyleName(MGNL_TABLE + getParent().getConnectorId());
84 }
85 }