/** * Created on May 3, 2010 * * Copyright 2008 Vuze, Inc. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License only. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.gudy.azureus2.ui.swt.views.table.impl; import java.util.Map; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; import org.gudy.azureus2.core3.util.LightHashMap; import org.gudy.azureus2.ui.swt.views.table.TableItemOrTreeItem; import org.gudy.azureus2.ui.swt.views.table.TableOrTreeSWT; /** * @author TuxPaper * @created May 3, 2010 * */ public class TreeItemDelegate implements TableItemOrTreeItem { TreeItem item; Map data = new LightHashMap(2); int index = -1; protected TreeItemDelegate(TreeItem treeItem) { this.item = treeItem; } protected TreeItemDelegate(TableOrTreeSWT tree, int style) { item = new TreeItem((Tree) tree.getComposite(), style); } public void addListener(int eventType, Listener listener) { item.addListener(eventType, listener); } public void addDisposeListener(DisposeListener listener) { item.addDisposeListener(listener); } public void clear(int index, boolean all) { item.clear(index, all); } public void clearAll(boolean all) { item.clearAll(all); } public void dispose() { item.dispose(); } public boolean equals(Object obj) { if (obj instanceof TableItemOrTreeItem) { return item.equals(((TableItemOrTreeItem) obj).getItem()); } return item.equals(obj); } public Color getBackground() { return item.getBackground(); } public Color getBackground(int index) { return item.getBackground(index); } public Rectangle getBounds() { return item.getBounds(); } public Rectangle getBounds(int index) { return item.getBounds(index); } public Object getData() { return getData(null); } public Object getData(String key) { synchronized (data) { return data.get(key); } } public Display getDisplay() { return item.getDisplay(); } public boolean getChecked() { return item.getChecked(); } public Listener[] getListeners(int eventType) { return item.getListeners(eventType); } public boolean getExpanded() { return item.getExpanded(); } public int getStyle() { return item.getStyle(); } public Font getFont() { return item.getFont(); } public Font getFont(int index) { return item.getFont(index); } public Color getForeground() { return item.getForeground(); } public Color getForeground(int index) { return item.getForeground(index); } public boolean getGrayed() { return item.getGrayed(); } public void notifyListeners(int eventType, Event event) { item.notifyListeners(eventType, event); } public TableItemOrTreeItem getItem(int index) { TreeItem treeItem = item.getItem(index); return TableOrTreeUtils.getEventItem(treeItem); } public int getItemCount() { return item.getItemCount(); } public TableItemOrTreeItem[] getItems() { TreeItem[] items = item.getItems(); TableItemOrTreeItem[] returnItems = new TableItemOrTreeItem[items.length]; for (int i = 0; i < returnItems.length; i++) { returnItems[i] = TableOrTreeUtils.getEventItem(items[i]); } return returnItems; } public Image getImage() { return item.getImage(); } public Image getImage(int index) { return item.getImage(index); } public Rectangle getImageBounds(int index) { return item.getImageBounds(index); } public void removeListener(int eventType, Listener listener) { item.removeListener(eventType, listener); } public TableOrTreeSWT getParent() { return TableOrTreeUtils.getTableOrTreeSWT(item.getParent()); } public TableItemOrTreeItem getParentItem() { TreeItem treeItem = item.getParentItem(); return TableOrTreeUtils.getEventItem(treeItem); } public String getText() { return item.getText(); } public String getText(int index) { return item.getText(index); } public void removeDisposeListener(DisposeListener listener) { item.removeDisposeListener(listener); } public Rectangle getTextBounds(int index) { return item.getTextBounds(index); } public int hashCode() { return item.hashCode(); } public boolean isDisposed() { return item.isDisposed(); } public boolean isListening(int eventType) { return item.isListening(eventType); } public int indexOf(TableItemOrTreeItem item2) { return item.indexOf((TreeItem) item2.getItem()); } public void removeAll() { item.removeAll(); } public void setBackground(Color color) { item.setBackground(color); } public void setBackground(int index, Color color) { item.setBackground(index, color); } public void setData(Object data) { setData(null, data); } public void setData(String key, Object value) { synchronized (data) { data.put(key, value); } } public void setChecked(boolean checked) { item.setChecked(checked); } private Boolean settingExpandTo = null; public void setExpanded(boolean expanded) { boolean wasExpanded = item.getExpanded(); item.setExpanded(expanded); if (expanded != wasExpanded && (settingExpandTo == null || settingExpandTo != expanded)) { try { settingExpandTo = expanded; Event event = new Event(); event.widget = item.getParent(); event.item = item; event.type = expanded ? SWT.Expand : SWT.Collapse; item.getParent().notifyListeners(event.type, event); } finally { settingExpandTo = null; } } } public void setFont(Font font) { item.setFont(font); } public String toString() { return item.toString(); } public void setFont(int index, Font font) { item.setFont(index, font); } public void setForeground(Color color) { item.setForeground(color); } public void setForeground(int index, Color color) { item.setForeground(index, color); } public void setGrayed(boolean grayed) { item.setGrayed(grayed); } public void setImage(Image[] images) { item.setImage(images); } public void setImage(int index, Image image) { item.setImage(index, image); } public void setImage(Image image) { item.setImage(image); } public void setItemCount(int count) { item.setItemCount(count); } public void setText(String[] strings) { item.setText(strings); } public void setText(int index, String string) { item.setText(index, string); } public void setText(String string) { item.setText(string); } ////// public Item getItem() { return item; } protected int getStoredIndex() { return index; } protected void setStoredIndex(int i) { index = i; } }