1 /*
2 * Created on 04.03.2004
3 *
4 * To change the template for this generated file go to
5 * Window>Preferences>Java>Code Generation>Code and Comments
6 */
7 package org.xpcards;
8
9 import java.util.Hashtable;
10 import java.util.Iterator;
11 import java.util.Map;
12 import java.util.Set;
13
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.custom.CTabFolder;
16 import org.eclipse.swt.custom.CTabItem;
17 import org.eclipse.swt.custom.TableTree;
18 import org.eclipse.swt.custom.TableTreeItem;
19 import org.eclipse.swt.events.SelectionListener;
20 import org.eclipse.swt.layout.GridData;
21 import org.eclipse.swt.layout.GridLayout;
22 import org.eclipse.swt.widgets.Composite;
23 import org.eclipse.swt.widgets.Table;
24 import org.eclipse.swt.widgets.TableColumn;
25 import org.xpcards.model.ModelElement;
26
27 /***
28 * @author galu02
29 *
30 */
31 public class PlanningTab {
32
33 private String text = "Planning tab";
34
35 private CTabItem tabItem = null;
36 private Composite tabFolderPage = null;
37 private TableTree tree = null;
38 private final XPCards parent;
39 private Hashtable elementsCache = null;
40
41 public void invalidateModel() {
42 tree.removeAll();
43 elementsCache = null;
44 }
45
46 public PlanningTab(XPCards parent, CTabFolder parentTabFolrder) {
47 this.parent = parent;
48 tabItem = new CTabItem(parentTabFolrder, SWT.NONE);
49 tabItem.setText(getText());
50
51 //item.setData(tabs[i]);
52
53 tabFolderPage = new Composite(parentTabFolrder, SWT.NONE);
54
55 GridLayout gridLayout = new GridLayout();
56 tabFolderPage.setLayout(gridLayout);
57 gridLayout.numColumns = 1;
58
59 tree = new TableTree(tabFolderPage, SWT.BORDER);
60 tree.setLayoutData(new GridData(GridData.FILL_BOTH));
61 // tree.setMenu(createPouupMenu());
62 // tree1.setSize(200,200);
63
64 Table table = tree.getTable();
65 table.setHeaderVisible(true);
66
67 // define columns
68 TableColumn column = new TableColumn(table, SWT.NONE);
69 column.setWidth(100);
70 column.setText("Name");
71
72 column = new TableColumn(table, SWT.NONE);
73 // column.setWidth();
74 column.setText("Description");
75
76 tabItem.setControl(tabFolderPage);
77
78 }
79
80 public CacheElement getCacheElement(ModelElement element) {
81 if (elementsCache != null) {
82 return (CacheElement) elementsCache.get(element);
83 }
84 return null;
85 }
86
87 public void putModelElementToCategory(
88 ModelElement element,
89 ModelElement parent,
90 String categoryName) {
91 if (elementsCache == null) {
92 elementsCache = new Hashtable();
93 } else {
94 if (elementsCache.containsKey(element)) {
95 return;
96 }
97 }
98
99 CacheElement ce = new CacheElement();
100 if (parent != null) {
101 // Parent
102 putModelElement(parent, null);
103 CacheElement cep = (CacheElement) elementsCache.get(parent);
104 if (categoryName != null) {
105 CacheElement cecp =
106 (CacheElement) elementsCache.get(
107 parent + "" + categoryName);
108 if (cecp == null) {
109 // System.err.println("New category: " + parent + "" + categoryName);
110 cecp = new CacheElement();
111 cecp.item = new TableTreeItem(cep.item, SWT.NONE);
112 elementsCache.put(parent + "" + categoryName, cecp);
113 resetCategory(categoryName, cecp.item);
114 }
115 ce.item = new TableTreeItem(cecp.item, SWT.NONE);
116 } else {
117 ce.item = new TableTreeItem(cep.item, SWT.NONE);
118 }
119 elementsCache.put(element, ce);
120 } else {
121 // no parent - tree as parent
122 if (categoryName != null) {
123 CacheElement cecp =
124 (CacheElement) elementsCache.get(categoryName);
125 if (cecp == null) {
126 // System.err.println("New category: " + categoryName);
127 cecp = new CacheElement();
128 cecp.item = new TableTreeItem(tree, SWT.NONE);
129 elementsCache.put(categoryName, cecp);
130 resetCategory(categoryName, cecp.item);
131 }
132 ce.item = new TableTreeItem(cecp.item, SWT.NONE);
133 } else {
134 ce.item = new TableTreeItem(tree, SWT.NONE);
135 }
136 // System.err.println("New Table tree :" + ce.item);
137 elementsCache.put(element, ce);
138 }
139 resetElement(element, ce.item);
140
141 }
142
143 public void putModelElement(ModelElement element, ModelElement parent) {
144 putModelElementToCategory(element, parent, null);
145 }
146
147 public void removeModelElement(ModelElement element) {
148 if (elementsCache != null) {
149 CacheElement old = (CacheElement) elementsCache.remove(element);
150 if (old != null && old.item != null) {
151 old.item.dispose();
152 }
153 }
154 }
155
156 public void updateModelElement(ModelElement element) {
157 if (elementsCache != null) {
158 resetElement(
159 element,
160 ((CacheElement) elementsCache.get(element)).item);
161 }
162 }
163
164 public void addTreeSelectionListener(SelectionListener listener) {
165 if (tree != null) {
166 tree.addSelectionListener(listener);
167 }
168 }
169
170 public void removeTreeSelectionListenet(SelectionListener listener) {
171 if (tree != null) {
172 tree.removeSelectionListener(listener);
173 }
174 }
175
176 public ModelElement getModelElementByTableTreeItem(TableTreeItem element) {
177 // System.err.println("getModelElementByTableTreeItem:" + element);
178 if (elementsCache != null) {
179 Set s = elementsCache.entrySet();
180 if (s != null) {
181 for (Iterator i = s.iterator(); i != null && i.hasNext();) {
182 Map.Entry entry = (Map.Entry) i.next();
183 // System.err.println("entry:" + entry.getValue());
184 if (((CacheElement) entry.getValue()).item == element) {
185 if (entry.getKey() instanceof ModelElement) {
186 return (ModelElement) entry.getKey();
187 } else {
188 // Category selected
189 return null;
190 }
191 }
192 }
193 }
194
195 }
196 return null;
197 }
198
199 public void selectModelElement(ModelElement element) {
200 if (elementsCache != null) {
201 CacheElement ch = (CacheElement) elementsCache.get(element);
202 if (ch != null) {
203 TableTreeItem[] sel = tree.getSelection();
204 // check if already selected
205 for (int i = 0; sel != null && i < sel.length; i++) {
206 if (sel[i] == ch.item) {
207 return;
208 }
209 }
210 // set selection
211 tree.setSelection(new TableTreeItem[] { ch.item });
212 }
213 }
214 }
215
216 private void resetCategory(String categoryName, TableTreeItem item) {
217 item.setText(0, categoryName);
218 item.setText(1, "");
219 }
220
221 private void resetElement(ModelElement element, TableTreeItem item) {
222 // System.err.println("resetElement:" + element+"," + item);
223 item.setText(0, element.getName());
224 item.setText(1, element.getDescription());
225 }
226
227 /***
228 * @return
229 */
230 public String getText() {
231 return text;
232 }
233
234 /***
235 * @param string
236 */
237 public void setText(String string) {
238 text = string;
239 }
240
241 }
242
243 class CacheElement {
244 TableTreeItem item = null;
245 }
This page was automatically generated by Maven