Mercurial > projects > dwt-samples
annotate jface/snippets/Snippet005TreeCustomMenu.d @ 89:cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
author | Bill Baxter <bill@billbaxter.com> |
---|---|
date | Mon, 19 May 2008 23:42:48 +0900 |
parents | |
children |
rev | line source |
---|---|
89
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
1 /******************************************************************************* |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
2 * Copyright (c) 2006 Tom Schindl and others. |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
7 * |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
8 * Contributors: |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
9 * Tom Schindl - initial API and implementation |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
10 * Port to the D programming language: |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
11 * wbaxter at gmail dot com |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
12 *******************************************************************************/ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
13 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
14 module jface.snippets.Snippet005TreeCustomMenu; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
15 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
16 import dwtx.jface.action.Action; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
17 import dwtx.jface.action.IMenuListener; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
18 import dwtx.jface.action.IMenuManager; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
19 import dwtx.jface.action.MenuManager; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
20 import dwtx.jface.viewers.IStructuredSelection; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
21 import dwtx.jface.viewers.ITreeContentProvider; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
22 import dwtx.jface.viewers.LabelProvider; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
23 import dwtx.jface.viewers.TreeViewer; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
24 import dwtx.jface.viewers.Viewer; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
25 import dwt.layout.FillLayout; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
26 import dwt.widgets.Display; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
27 import dwt.widgets.Shell; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
28 import dwt.DWT; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
29 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
30 import dwt.dwthelper.utils; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
31 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
32 import tango.util.Convert; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
33 import tango.io.Stdout; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
34 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
35 /** |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
36 * Customized context menu based on TreeItem-Selection |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
37 * |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
38 * @author Tom Schindl <tom.schindl@bestsolution.at> |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
39 * |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
40 */ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
41 public class Snippet005TreeCustomMenu { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
42 private class MyContentProvider : ITreeContentProvider { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
43 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
44 public Object[] getElements(Object inputElement) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
45 return (cast(MyModel) inputElement).child; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
46 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
47 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
48 /* (non-Javadoc) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
49 * @see org.eclipse.jface.viewers.IContentProvider#dispose() |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
50 */ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
51 public void dispose() { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
52 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
53 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
54 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
55 /* (non-Javadoc) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
56 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
57 */ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
58 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
59 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
60 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
61 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
62 /* (non-Javadoc) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
63 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
64 */ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
65 public Object[] getChildren(Object parentElement) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
66 return getElements(parentElement); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
67 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
68 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
69 /* (non-Javadoc) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
70 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
71 */ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
72 public Object getParent(Object element) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
73 if (element is null) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
74 return null; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
75 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
76 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
77 return (cast(MyModel) element).parent; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
78 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
79 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
80 /* (non-Javadoc) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
81 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
82 */ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
83 public bool hasChildren(Object element) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
84 return (cast(MyModel) element).child.length > 0; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
85 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
86 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
87 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
88 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
89 public class MyModel { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
90 public MyModel parent; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
91 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
92 public MyModel[] child; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
93 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
94 public int counter; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
95 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
96 public this(int counter, MyModel parent) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
97 this.parent = parent; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
98 this.counter = counter; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
99 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
100 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
101 public String toString() { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
102 String rv = "Item "; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
103 if (parent !is null) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
104 rv = parent.toString() ~ "."; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
105 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
106 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
107 rv ~= to!(char[])(counter); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
108 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
109 return rv; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
110 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
111 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
112 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
113 public this(Shell shell) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
114 final TreeViewer v = new TreeViewer(shell); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
115 v.setLabelProvider(new LabelProvider()); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
116 v.setContentProvider(new MyContentProvider()); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
117 v.setInput(createModel()); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
118 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
119 final Action a = new class Action {}; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
120 final MenuManager mgr = new MenuManager(); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
121 mgr.setRemoveAllWhenShown(true); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
122 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
123 class MyMenuListener : IMenuListener { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
124 TreeViewer v; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
125 Action a; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
126 MenuManager mgr; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
127 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
128 this(TreeViewer v_, Action a_, MenuManager mgr_) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
129 this.v = v_; this.a = a_; this.mgr = mgr_; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
130 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
131 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
132 /* (non-Javadoc) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
133 * @see org.eclipse.jface.action.IMenuListener#menuAboutToShow(org.eclipse.jface.action.IMenuManager) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
134 */ |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
135 public void menuAboutToShow(IMenuManager manager) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
136 IStructuredSelection selection = cast(IStructuredSelection) v |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
137 .getSelection(); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
138 if (!selection.isEmpty()) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
139 a.setText("Action for " |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
140 ~ (cast(MyModel) selection.getFirstElement()) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
141 .toString()); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
142 mgr.add(a); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
143 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
144 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
145 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
146 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
147 mgr.addMenuListener(new MyMenuListener(v,a,mgr)); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
148 v.getControl().setMenu(mgr.createContextMenu(v.getControl())); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
149 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
150 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
151 private MyModel createModel() { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
152 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
153 MyModel root = new MyModel(0, null); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
154 root.counter = 0; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
155 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
156 MyModel tmp; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
157 for (int i = 1; i < 10; i++) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
158 tmp = new MyModel(i, root); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
159 root.child ~= tmp; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
160 for (int j = 1; j < i; j++) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
161 tmp.child ~= new MyModel(j, tmp); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
162 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
163 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
164 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
165 return root; |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
166 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
167 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
168 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
169 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
170 void main() { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
171 Display display = new Display(); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
172 Shell shell = new Shell(display); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
173 shell.setLayout(new FillLayout()); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
174 new Snippet005TreeCustomMenu(shell); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
175 shell.open(); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
176 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
177 while (!shell.isDisposed()) { |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
178 if (!display.readAndDispatch()) |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
179 display.sleep(); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
180 } |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
181 |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
182 display.dispose(); |
cbba80cceb7a
Port of jface Snippets 1,2,4,5,7
Bill Baxter <bill@billbaxter.com>
parents:
diff
changeset
|
183 } |