~ubuntu-branches/ubuntu/utopic/eclipse-linuxtools/utopic

« back to all changes in this revision

Viewing changes to profiling/org.eclipse.linuxtools.dataviewers/src/org/eclipse/linuxtools/dataviewers/abstractviewers/AbstractSTTreeViewer.java

  • Committer: Package Import Robot
  • Author(s): Jakub Adam
  • Date: 2014-05-12 18:11:40 UTC
  • mfrom: (3.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20140512181140-w237r3vsah1tmybz
Tags: 2.2.1-1
* New upstream release.
* Refreshed d/patches.
* Removed eclipse-cdt-valgrind-remote package, all its functionality
  is now provided by eclipse-cdt-profiling-framework-remote.
* Added remove-license-feature.patch.
* Bump Standards-Version to 3.9.5.
* Enable eclipse-changelog package.
* Enable eclipse-rpm-editor package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
 *******************************************************************************/
11
11
package org.eclipse.linuxtools.dataviewers.abstractviewers;
12
12
 
13
 
import org.eclipse.jface.viewers.ColumnViewer;
14
13
import org.eclipse.jface.viewers.TableLayout;
15
14
import org.eclipse.jface.viewers.TreeViewer;
16
15
import org.eclipse.jface.viewers.TreeViewerColumn;
28
27
import org.eclipse.swt.widgets.TreeItem;
29
28
 
30
29
/**
31
 
 * This wrapper extends AbstractSTViewer {@link AbstractSTViewer}
32
 
 * It is designed to be instantiated with a TreeViewer JFace control
33
 
 *  
 
30
 * This wrapper extends AbstractSTViewer {@link AbstractSTViewer} It is designed to be instantiated with a TreeViewer
 
31
 * JFace control
 
32
 *
34
33
 */
35
34
public abstract class AbstractSTTreeViewer extends AbstractSTViewer {
36
 
        
37
 
        
38
 
        public AbstractSTTreeViewer(Composite parent) {
39
 
                super(parent, SWT.BORDER |SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI| SWT.FULL_SELECTION);
40
 
        }
41
 
        
42
 
        
43
 
        public AbstractSTTreeViewer(Composite parent,boolean init) {
44
 
                super(parent,SWT.BORDER |SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI| SWT.FULL_SELECTION,init);
45
 
        }
46
 
        
47
 
        public AbstractSTTreeViewer(Composite parent, int style) {
48
 
                super(parent,style,true);
49
 
        }
50
 
        
51
 
        public AbstractSTTreeViewer(Composite parent, int style,boolean init) {
52
 
                super(parent,style,init);
53
 
        }
54
 
 
55
 
 
56
 
        /*
57
 
         * It creates the TreeViewer wrapped
58
 
         * @param parent
59
 
         * @param style
60
 
         * @return ColumnViewer
61
 
         */
62
 
        @Override
63
 
        protected ColumnViewer createViewer(Composite parent, int style) {
64
 
                return new TreeViewer(createTree(parent, style)) {
65
 
                        @Override
66
 
                        // FIXME Temporary fix for eclipse bug #170521
67
 
                        // (bug in the refresh() method)
68
 
                        // Saves the expanded elements in order to correctly restore
69
 
                        // the expanded state of the tree.
70
 
                        public void refresh(Object element) {
71
 
                                getTree().setRedraw(false);
72
 
                                Object[] elements = this.getExpandedElements();
73
 
                                super.refresh(element);
74
 
                                this.setExpandedElements(elements);
75
 
                                getTree().setRedraw(true);
76
 
                        }
77
 
                };
78
 
        }
79
 
        
80
 
        /**
81
 
         * Create the main tree control
82
 
         * 
83
 
         * @param parent
84
 
         * @param style
85
 
         * @return Tree
86
 
         */
87
 
        protected Tree createTree(Composite parent, int style) {
88
 
                Tree tree = new Tree(parent, style);
89
 
                tree.setLinesVisible(true);
90
 
                tree.setHeaderVisible(true);
91
 
        
92
 
                return tree;
93
 
        }
94
 
 
95
 
        @Override
96
 
        /**
97
 
         * Create the columns in the tree.
98
 
         * 
99
 
         */
100
 
        protected void createColumns() {
101
 
                Tree tree = getViewer().getTree();
102
 
                TableLayout layout = new TableLayout();
103
 
                tree.setLayout(layout);
104
 
                tree.setHeaderVisible(true);
105
 
                tree.setLinesVisible(true);
106
 
                
107
 
                for (int i = 0; i < getAllFields().length; i++) {
108
 
                        ISTDataViewersField field = getAllFields()[i];
109
 
                        TreeColumn tc = new TreeColumn(tree, field.getAlignment(), i);
110
 
                        tc.setText(field.getColumnHeaderText());
111
 
                        tc.setToolTipText(field.getColumnHeaderTooltip());
112
 
                        tc.setImage(field.getColumnHeaderImage());
113
 
                        tc.setWidth(field.getPreferredWidth());
114
 
                        tc.setResizable(true);
115
 
                        tc.setMoveable(true);
116
 
                        
117
 
                        tc.addSelectionListener(createHeaderListener());
118
 
                        tc.setData(field);
119
 
                        
120
 
                        // defining the column label provider.
121
 
                        // this has to be done after setting the column's data.
122
 
                        TreeViewerColumn viewerColumn =
123
 
                                new TreeViewerColumn(getViewer(), tc);
124
 
                        viewerColumn.setLabelProvider(createColumnLabelProvider(tc));
125
 
                }
126
 
                
127
 
                tree.addMouseListener(new MouseAdapter(){
128
 
                                        public void mouseDoubleClick(MouseEvent e) {
129
 
                                                Tree tree = (Tree)e.widget;
130
 
                                                TreeItem item = tree.getItem(new Point(e.x,e.y));
131
 
                                                if (item != null){
132
 
                                                        for(int i=0;i<tree.getColumnCount();i++){
133
 
                                                                ISTDataViewersField field = getAllFields()[i];
134
 
                                                                if (field.isHyperLink(item.getData())){
135
 
                                                                        Rectangle bounds = item.getBounds(i);
136
 
                                                                        if (bounds.contains(e.x,e.y)){
137
 
                                                                                handleHyperlink(field,item.getData());
138
 
                                                                        }
139
 
                                                                }
140
 
                                                        }
141
 
                                                }
142
 
                                }
143
 
                        });
144
 
 
145
 
                tree.addMouseMoveListener(new MouseMoveListener(){
146
 
                                        @Override
147
 
                                        public void mouseMove(MouseEvent e) {
148
 
                                                Tree tree = (Tree)e.widget;
149
 
                                                TreeItem item = tree.getItem(new Point(e.x,e.y));
150
 
                                                if (item == null) return;
151
 
                
152
 
                                                for(int i=0;i<tree.getColumnCount();i++){
153
 
                                                        ISTDataViewersField field = getAllFields()[i];
154
 
                                                        Cursor cursor = null ;
155
 
                                                        if (field.isHyperLink(item.getData())){
156
 
                                                                Rectangle bounds = item.getBounds(i);
157
 
                                                        if (bounds.contains(e.x,e.y)){
158
 
                                                                        cursor = new Cursor(e.display,SWT.CURSOR_HAND);
159
 
                                                                        tree.setCursor(cursor);
160
 
                                                                        return;
161
 
                                                                }
162
 
                                                        }
163
 
                                                        cursor = new Cursor(e.display,SWT.CURSOR_ARROW);
164
 
                                                        tree.setCursor(cursor);
165
 
                                                }
166
 
                                        }
167
 
                
168
 
                                });
169
 
        }
170
 
        
171
 
        /*
172
 
         * (non-Javadoc)
173
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#getColumns()
174
 
         */
175
 
        public Item[] getColumns() {
176
 
                return getViewer().getTree().getColumns();
177
 
        }
178
 
        
179
 
        @Override
180
 
        /*
181
 
         * (non-Javadoc)
182
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#updateDirectionIndicator(org.eclipse.swt.widgets.Item)
183
 
         */
184
 
        public void updateDirectionIndicator(Item column) {
185
 
                getViewer().getTree().setSortColumn((TreeColumn)column);
186
 
                if (getTableSorter().getTopPriorityDirection() == STDataViewersComparator.ASCENDING)
187
 
                        getViewer().getTree().setSortDirection(SWT.UP);
188
 
                else
189
 
                        getViewer().getTree().setSortDirection(SWT.DOWN);
190
 
        }
191
 
        
192
 
        /*
193
 
         * (non-Javadoc)
194
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#getColumnOrder()
195
 
         */
196
 
        public int[] getColumnOrder() {
197
 
                return getViewer().getTree().getColumnOrder();
198
 
        }
199
 
        
200
 
        /*
201
 
         * (non-Javadoc)
202
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#setColumnOrder(int[])
203
 
         */
204
 
        protected void setColumnOrder(int[] order) {
205
 
                getViewer().getTree().setColumnOrder(order);
206
 
        }
207
 
        
208
 
        /*
209
 
         * (non-Javadoc)
210
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#getColumnIndex(org.eclipse.swt.widgets.Item)
211
 
         */
212
 
        public int getColumnIndex(Item column) {
213
 
                return getViewer().getTree().indexOf((TreeColumn)column);
214
 
        }
215
 
        
216
 
        /*
217
 
         * (non-Javadoc)
218
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#getColumnWidth(org.eclipse.swt.widgets.Item)
219
 
         */
220
 
        @Override
221
 
        public int getColumnWidth(Item column) {
222
 
                return ((TreeColumn)column).getWidth();
223
 
        }
224
 
 
225
 
        /*
226
 
         * (non-Javadoc)
227
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#setColumnResizable(org.eclipse.swt.widgets.Item, boolean)
228
 
         */
229
 
        @Override
230
 
        public void setColumnResizable(Item column, boolean resizable) {
231
 
                ((TreeColumn)column).setResizable(resizable);
232
 
        }
233
 
 
234
 
        /*
235
 
         * (non-Javadoc)
236
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#setColumnWidth(org.eclipse.swt.widgets.Item, int)
237
 
         */
238
 
        @Override
239
 
        public void setColumnWidth(Item column, int width) {
240
 
                ((TreeColumn)column).setWidth(width);
241
 
        }
242
 
        
243
 
        /*
244
 
         * (non-Javadoc)
245
 
         * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#getViewer()
246
 
         */
247
 
        public TreeViewer getViewer() {
248
 
                return (TreeViewer)super.getViewer();
249
 
        }
250
 
        
251
 
        public void handleHyperlink(ISTDataViewersField field,Object data){}
 
35
 
 
36
    public AbstractSTTreeViewer(Composite parent) {
 
37
        super(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
 
38
    }
 
39
 
 
40
    public AbstractSTTreeViewer(Composite parent, boolean init) {
 
41
        super(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION, init);
 
42
    }
 
43
 
 
44
    public AbstractSTTreeViewer(Composite parent, int style) {
 
45
        super(parent, style, true);
 
46
    }
 
47
 
 
48
    public AbstractSTTreeViewer(Composite parent, int style, boolean init) {
 
49
        super(parent, style, init);
 
50
    }
 
51
 
 
52
    /**
 
53
     * It creates the wrapped TreeViewer
 
54
     *
 
55
     * @param parent
 
56
     *            - the parent Composite
 
57
     * @param style
 
58
     *            - the table style
 
59
     * @return a TreeViewer
 
60
     * @since 5.0
 
61
     */
 
62
    @Override
 
63
    protected TreeViewer createViewer(Composite parent, int style) {
 
64
        Tree t = createTree(parent, style);
 
65
        return new TreeViewer(t);
 
66
    }
 
67
 
 
68
    /**
 
69
     * Create the main tree control
 
70
     *
 
71
     * @param parent
 
72
     * @param style
 
73
     * @return Tree
 
74
     */
 
75
    protected Tree createTree(Composite parent, int style) {
 
76
        Tree tree = new Tree(parent, style);
 
77
        tree.setLinesVisible(true);
 
78
        tree.setHeaderVisible(true);
 
79
 
 
80
        return tree;
 
81
    }
 
82
 
 
83
    @Override
 
84
    /**
 
85
     * Create the columns in the tree.
 
86
     *
 
87
     */
 
88
    protected void createColumns() {
 
89
        Tree tree = getViewer().getTree();
 
90
        TableLayout layout = new TableLayout();
 
91
        tree.setLayout(layout);
 
92
        tree.setHeaderVisible(true);
 
93
        tree.setLinesVisible(true);
 
94
 
 
95
        for (int i = 0; i < getAllFields().length; i++) {
 
96
            ISTDataViewersField field = getAllFields()[i];
 
97
            TreeColumn tc = new TreeColumn(tree, field.getAlignment(), i);
 
98
            tc.setText(field.getColumnHeaderText());
 
99
            tc.setToolTipText(field.getColumnHeaderTooltip());
 
100
            tc.setImage(field.getColumnHeaderImage());
 
101
            tc.setWidth(field.getPreferredWidth());
 
102
            tc.setResizable(true);
 
103
            tc.setMoveable(true);
 
104
 
 
105
            tc.addSelectionListener(createHeaderListener());
 
106
            tc.setData(field);
 
107
 
 
108
            // defining the column label provider.
 
109
            // this has to be done after setting the column's data.
 
110
            TreeViewerColumn viewerColumn = new TreeViewerColumn(getViewer(), tc);
 
111
            viewerColumn.setLabelProvider(createColumnLabelProvider(tc));
 
112
        }
 
113
 
 
114
        tree.addMouseListener(new MouseAdapter() {
 
115
            @Override
 
116
            public void mouseDoubleClick(MouseEvent e) {
 
117
                Tree tree = (Tree) e.widget;
 
118
                TreeItem item = tree.getItem(new Point(e.x, e.y));
 
119
                if (item != null) {
 
120
                    for (int i = 0; i < tree.getColumnCount(); i++) {
 
121
                        ISTDataViewersField field = getAllFields()[i];
 
122
                        if (field.isHyperLink(item.getData())) {
 
123
                            Rectangle bounds = item.getBounds(i);
 
124
                            if (bounds.contains(e.x, e.y)) {
 
125
                                handleHyperlink(field, item.getData());
 
126
                                return;
 
127
                            }
 
128
                        }
 
129
                    }
 
130
                }
 
131
            }
 
132
        });
 
133
 
 
134
        tree.addMouseMoveListener(new MouseMoveListener() {
 
135
            @Override
 
136
            public void mouseMove(MouseEvent e) {
 
137
                Tree tree = (Tree) e.widget;
 
138
                TreeItem item = tree.getItem(new Point(e.x, e.y));
 
139
                if (item == null)
 
140
                    return;
 
141
 
 
142
                for (int i = 0; i < tree.getColumnCount(); i++) {
 
143
                    ISTDataViewersField field = getAllFields()[i];
 
144
                    Cursor cursor = null;
 
145
                    if (field.isHyperLink(item.getData())) {
 
146
                        Rectangle bounds = item.getBounds(i);
 
147
                        if (bounds.contains(e.x, e.y)) {
 
148
                            cursor = e.display.getSystemCursor(SWT.CURSOR_HAND);
 
149
                            tree.setCursor(cursor);
 
150
                            return;
 
151
                        }
 
152
                    }
 
153
                    cursor = e.display.getSystemCursor(SWT.CURSOR_ARROW);
 
154
                    tree.setCursor(cursor);
 
155
                }
 
156
            }
 
157
 
 
158
        });
 
159
    }
 
160
 
 
161
    /**
 
162
     * (non-Javadoc)
 
163
     *
 
164
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer# getColumns()
 
165
     * @since 5.0
 
166
     */
 
167
    @Override
 
168
    public TreeColumn[] getColumns() {
 
169
        return getViewer().getTree().getColumns();
 
170
    }
 
171
 
 
172
    /*
 
173
     * (non-Javadoc)
 
174
     *
 
175
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#
 
176
     * updateDirectionIndicator(org.eclipse.swt.widgets.Item)
 
177
     */
 
178
    @Override
 
179
    public void updateDirectionIndicator(Item column) {
 
180
        getViewer().getTree().setSortColumn((TreeColumn) column);
 
181
        if (getTableSorter().getTopPriorityDirection() == STDataViewersComparator.ASCENDING)
 
182
            getViewer().getTree().setSortDirection(SWT.UP);
 
183
        else
 
184
            getViewer().getTree().setSortDirection(SWT.DOWN);
 
185
    }
 
186
 
 
187
    /*
 
188
     * (non-Javadoc)
 
189
     *
 
190
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer# getColumnOrder()
 
191
     */
 
192
    @Override
 
193
    public int[] getColumnOrder() {
 
194
        return getViewer().getTree().getColumnOrder();
 
195
    }
 
196
 
 
197
    /*
 
198
     * (non-Javadoc)
 
199
     *
 
200
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer# setColumnOrder(int[])
 
201
     */
 
202
    @Override
 
203
    protected void setColumnOrder(int[] order) {
 
204
        getViewer().getTree().setColumnOrder(order);
 
205
    }
 
206
 
 
207
    /*
 
208
     * (non-Javadoc)
 
209
     *
 
210
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#
 
211
     * getColumnIndex(org.eclipse.swt.widgets.Item)
 
212
     */
 
213
    @Override
 
214
    public int getColumnIndex(Item column) {
 
215
        return getViewer().getTree().indexOf((TreeColumn) column);
 
216
    }
 
217
 
 
218
    /*
 
219
     * (non-Javadoc)
 
220
     *
 
221
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#
 
222
     * getColumnWidth(org.eclipse.swt.widgets.Item)
 
223
     */
 
224
    @Override
 
225
    public int getColumnWidth(Item column) {
 
226
        return ((TreeColumn) column).getWidth();
 
227
    }
 
228
 
 
229
    /*
 
230
     * (non-Javadoc)
 
231
     *
 
232
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#
 
233
     * setColumnResizable(org.eclipse.swt.widgets.Item, boolean)
 
234
     */
 
235
    @Override
 
236
    public void setColumnResizable(Item column, boolean resizable) {
 
237
        ((TreeColumn) column).setResizable(resizable);
 
238
    }
 
239
 
 
240
    /*
 
241
     * (non-Javadoc)
 
242
     *
 
243
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#
 
244
     * setColumnWidth(org.eclipse.swt.widgets.Item, int)
 
245
     */
 
246
    @Override
 
247
    public void setColumnWidth(Item column, int width) {
 
248
        ((TreeColumn) column).setWidth(width);
 
249
    }
 
250
 
 
251
    /*
 
252
     * (non-Javadoc)
 
253
     *
 
254
     * @see org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer#getViewer ()
 
255
     */
 
256
    @Override
 
257
    public TreeViewer getViewer() {
 
258
        return (TreeViewer) super.getViewer();
 
259
    }
 
260
 
 
261
    public void handleHyperlink(ISTDataViewersField field, Object data) {
 
262
    }
252
263
}