-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTreeViewerExample.txt
219 lines (178 loc) · 6.3 KB
/
TreeViewerExample.txt
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
http://www.vogella.com/blog/2010/01/13/treetableviewer/
package com.sowas.javawiki.treetabledemo;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
public class View extends ViewPart{
public static final String ID = "TreeTableDemo.view";
private TreeViewer m_treeViewer;
class ViewLabelProvider extends LabelProvider implements ILabelProvider{
public String getColumnText(Object obj, int index){
return getText(obj);
}
public Image getColumnImage(Object obj, int index){
return getImage(obj);
}
public Image getImage(Object obj){
return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
}
}
public void createPartControl(Composite parent){
Tree addressTree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
addressTree.setHeaderVisible(true);
m_treeViewer = new TreeViewer(addressTree);
TreeColumn column1 = new TreeColumn(addressTree, SWT.LEFT);
addressTree.setLinesVisible(true);
column1.setAlignment(SWT.LEFT);
column1.setText("Land/Stadt");
column1.setWidth(160);
TreeColumn column2 = new TreeColumn(addressTree, SWT.RIGHT);
column2.setAlignment(SWT.LEFT);
column2.setText("Person");
column2.setWidth(100);
TreeColumn column3 = new TreeColumn(addressTree, SWT.RIGHT);
column3.setAlignment(SWT.LEFT);
column3.setText("m/w");
column3.setWidth(35);
m_treeViewer.setContentProvider(new AddressContentProvider());
m_treeViewer.setLabelProvider(new TableLabelProvider());
List<City> cities = new ArrayList<City>();
cities.add(new City());
m_treeViewer.setInput(cities);
m_treeViewer.expandAll();
}
public void setFocus(){
m_treeViewer.getControl().setFocus();
}
class City{
Street[] streets = new Street[2];
public City(){
for (int i = 0; i < streets.length; i++)
streets[i] = new Street(this, i);
}
public Street[] getStreets(){
return streets;
}
public String toString(){
return "Küchenhausen";
}
}
class Street{
City city;
House[] houses = new House[2];
int indx;
public Street(City city, int index){
this.city = city;
indx = index + 1;
for (int i = 0; i < houses.length; i++)
houses[i] = new House(this, i);
}
public House[] getHouses(){
return houses;
}
public String toString(){
return "Topfdeckelstraße " + indx;
}
}
class House{
Street street;
int indx;
public House(Street street, int i){
this.street = street;
indx = i + 1;
}
public String toString(){
return "Haus " + indx;
}
public String getPerson(){
if (street.toString().equals("Topfdeckelstraße 1")){
if (indx == 1)
return "Hugo Hüpfer";
return "Sabine Springer";
}
if (indx == 1)
return "Leo Löffel";
return "Marta Messer";
}
public String getSex(){
if (indx == 1)
return "m";
return "w";
}
}
class AddressContentProvider implements ITreeContentProvider{
public Object[] getChildren(Object parentElement){
if (parentElement instanceof List)
return ((List<?>) parentElement).toArray();
if (parentElement instanceof City)
return ((City) parentElement).getStreets();
if (parentElement instanceof Street)
return ((Street) parentElement).getHouses();
return new Object[0];
}
public Object getParent(Object element){
if (element instanceof Street)
return ((Street) element).city;
if (element instanceof House)
return ((House) element).street;
return null;
}
public boolean hasChildren(Object element){
if (element instanceof List)
return ((List<?>) element).size() > 0;
if (element instanceof City)
return ((City) element).getStreets().length > 0;
if (element instanceof Street)
return ((Street) element).getHouses().length > 0;
return false;
}
public Object[] getElements(Object cities){
// cities ist das, was oben in setInput(..) gesetzt wurde.
return getChildren(cities);
}
public void dispose(){
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput){
}
}
class TableLabelProvider implements ITableLabelProvider{
public Image getColumnImage(Object element, int columnIndex){
return null;
}
public String getColumnText(Object element, int columnIndex){
switch (columnIndex){
case 0: return element.toString();
case 1:
if (element instanceof House)
return ((House)element).getPerson();
case 2:
if (element instanceof House)
return ((House)element).getSex();
}
return null;
}
public void addListener(ILabelProviderListener listener){
}
public void dispose(){
}
public boolean isLabelProperty(Object element, String property){
return false;
}
public void removeListener(ILabelProviderListener listener){
}
}
}