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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }