View Javadoc
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