KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > rcp > composite > groupedcontent > GroupedContentSwitcherTable


1 /*
2  * Created on Jun 17, 2005
3  * by alex
4  *
5  */

6 package com.nightlabs.rcp.composite.groupedcontent;
7
8 import java.util.Collection JavaDoc;
9
10 import org.eclipse.jface.viewers.ISelectionChangedListener;
11 import org.eclipse.jface.viewers.SelectionChangedEvent;
12 import org.eclipse.jface.viewers.TableViewer;
13 import org.eclipse.swt.SWT;
14 import org.eclipse.swt.events.MouseEvent;
15 import org.eclipse.swt.events.MouseMoveListener;
16 import org.eclipse.swt.graphics.Color;
17 import org.eclipse.swt.graphics.Image;
18 import org.eclipse.swt.graphics.Point;
19 import org.eclipse.swt.widgets.Composite;
20 import org.eclipse.swt.widgets.Table;
21 import org.eclipse.swt.widgets.TableColumn;
22 import org.eclipse.swt.widgets.TableItem;
23
24 import com.nightlabs.rcp.table.AbstractTableComposite;
25 import com.nightlabs.rcp.table.TableContentProvider;
26 import com.nightlabs.rcp.table.TableLabelProvider;
27
28 /**
29  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
30  *
31  */

32 public class GroupedContentSwitcherTable extends AbstractTableComposite {
33     
34     private String JavaDoc groupTitle;
35     private TableColumn column;
36     
37     // TODO: dispose sometime
38
private static final Color COLOR_HIGHLIGHT = new Color(null, 200, 200, 200);
39     private static final Color COLOR_SELECTED = new Color(null, 11, 5, 180);
40     private static final Color COLOR_BACKGROUND = new Color(null, 111, 111, 111);
41
42     private MouseMoveListener mouseMoveListener = new MouseMoveListener() {
43         public void mouseMove(MouseEvent event) {
44             TableItem item = getTableItem(event);
45             highLightItem(item);
46         }
47         protected TableItem getTableItem(MouseEvent event)
48         {
49             Point pt = new Point(event.x, event.y);
50             TableItem tableItem = getTable().getItem(pt);
51             return tableItem;
52         }
53     };
54     
55     private ISelectionChangedListener selectionListener = new ISelectionChangedListener() {
56         public void selectionChanged(SelectionChangedEvent event) {
57             int idx = getTable().getSelectionIndex();
58             if (idx >= 0)
59                 selectItem(getTable().getItem(idx));
60         }
61     };
62     
63     private class ContentProvider extends TableContentProvider {
64         /**
65          * @see com.nightlabs.rcp.table.TableContentProvider#getElements(java.lang.Object)
66          */

67         public Object JavaDoc[] getElements(Object JavaDoc inputElement) {
68             if (inputElement instanceof Collection JavaDoc)
69                 return ((Collection JavaDoc)inputElement).toArray();
70             return super.getElements(inputElement);
71         }
72     }
73     
74     private class LabelProvider extends TableLabelProvider {
75         public Image getColumnImage(Object JavaDoc element, int columnIndex) {
76             if (element instanceof GroupedContentProvider)
77                 return ((GroupedContentProvider)element).getGroupIcon();
78             return super.getColumnImage(element, columnIndex);
79         }
80         public String JavaDoc getColumnText(Object JavaDoc element, int columnIndex) {
81             if (element instanceof GroupedContentProvider)
82                 return ((GroupedContentProvider)element).getGroupTitle();
83             return super.getColumnText(element, columnIndex);
84         }
85     }
86     
87     public GroupedContentSwitcherTable(Composite parent, int style) {
88         super(parent, style, true, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL);
89         getTable().setLinesVisible(false);
90         getTable().setHeaderVisible(false);
91         getTable().setBackground(COLOR_BACKGROUND);
92         getTable().addMouseMoveListener(mouseMoveListener);
93         getTableViewer().addSelectionChangedListener(selectionListener);
94 // getTable().setForeground(parent.getForeground());
95
}
96
97     protected void createTableColumns(Table table) {
98 // column = new TableColumn(table, SWT.LEFT);
99
// if (groupTitle != null)
100
// column.setText(groupTitle);
101
// table.setLayout(new WeightedTableLayout(new int[] {1}));
102
}
103
104     protected void setTableProvider(TableViewer tableViewer) {
105         tableViewer.setContentProvider(new ContentProvider());
106         tableViewer.setLabelProvider(new LabelProvider());
107     }
108
109     /**
110      * @return Returns the groupTitle.
111      */

112     public String JavaDoc getGroupTitle() {
113         return groupTitle;
114     }
115
116     /**
117      * @param groupTitle The groupTitle to set.
118      */

119     public void setGroupTitle(String JavaDoc groupTitle) {
120         this.groupTitle = groupTitle;
121 // if (groupTitle != null){
122
// column.setText(groupTitle);
123
// layout();
124
// }
125
}
126     
127     protected void selectItem(TableItem item) {
128         TableItem[] items = getTable().getItems();
129         for (int i = 0; i < items.length; i++) {
130             items[i].setBackground(COLOR_BACKGROUND);
131         }
132         if (item != null)
133             item.setBackground(COLOR_SELECTED);
134     }
135     
136     protected void highLightItem(TableItem item) {
137         TableItem[] items = getTable().getItems();
138         for (int i = 0; i < items.length; i++) {
139             if (items[i].getBackground() != COLOR_SELECTED)
140                 items[i].setBackground(COLOR_BACKGROUND);
141         }
142         if (item != null)
143             item.setBackground(COLOR_HIGHLIGHT);
144     }
145 }
146
Popular Tags