annotate dwtx/jface/wizard/WizardSelectionPage.d @ 104:04b47443bb01

Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections. These new wrappers now use the tango.util.containers instead of the tango.util.collections.
author Frank Benoit <benoit@tionex.de>
date Thu, 07 Aug 2008 15:01:33 +0200
parents ea8ff534f622
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2006 IBM Corporation and others.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.wizard.WizardSelectionPage;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwtx.jface.wizard.IWizardPage;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.jface.wizard.IWizard;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwtx.jface.wizard.WizardPage;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwtx.jface.wizard.IWizardNode;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.dwthelper.utils;
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
22 import dwtx.dwtxhelper.Collection;
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 * An abstract implementation of a wizard page that manages a
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 * set of embedded wizards.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 * <p>
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 * A wizard selection page should present a list of wizard nodes
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 * corresponding to other wizards. When the end user selects one of
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * them from the list, the first page of the selected wizard becomes
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * the next page. The only new methods introduced by this class are
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * <code>getSelectedNode</code> and <code>setSelectedNode</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * Otherwise, the subclass contract is the same as <code>WizardPage</code>.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * </p>
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 public abstract class WizardSelectionPage : WizardPage {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * The selected node; <code>null</code> if none.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 private IWizardNode selectedNode = null;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * List of wizard nodes that have cropped up in the past
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * (element type: <code>IWizardNode</code>).
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 */
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
47 private List selectedWizardNodes;
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * Creates a new wizard selection page with the given name, and
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * with no title or image.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 *
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * @param pageName the name of the page
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 protected this(String pageName) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 super(pageName);
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
57 selectedWizardNodes = new ArrayList();
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 // Cannot finish from this page
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 setPageComplete(false);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * Adds the given wizard node to the list of selected nodes if
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * it is not already in the list.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 *
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * @param node the wizard node, or <code>null</code>
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 private void addSelectedNode(IWizardNode node) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 if (node is null) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 return;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 if (selectedWizardNodes.contains(cast(Object)node)) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 return;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
77 selectedWizardNodes.add(cast(Object)node);
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * The <code>WizardSelectionPage</code> implementation of
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * this <code>IWizardPage</code> method returns <code>true</code>
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * if there is a selected node.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 35
diff changeset
85 public override bool canFlipToNextPage() {
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 return selectedNode !is null;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * The <code>WizardSelectionPage</code> implementation of an <code>IDialogPage</code>
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * method disposes of all nested wizards. Subclasses may extend.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 35
diff changeset
93 public override void dispose() {
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 super.dispose();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 // notify nested wizards
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 for (int i = 0; i < selectedWizardNodes.size(); i++) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 (cast(IWizardNode) selectedWizardNodes.get(i)).dispose();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 * The <code>WizardSelectionPage</code> implementation of
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 * this <code>IWizardPage</code> method returns the first page
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 * of the currently selected wizard if there is one.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 */
43
ea8ff534f622 Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents: 35
diff changeset
106 public override IWizardPage getNextPage() {
35
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 if (selectedNode is null) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 return null;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 bool isCreated = selectedNode.isContentCreated();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 IWizard wizard = selectedNode.getWizard();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 if (wizard is null) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 setSelectedNode(null);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 return null;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 if (!isCreated) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 // Allow the wizard to create its pages
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 wizard.addPages();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 return wizard.getStartingPage();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * Returns the currently selected wizard node within this page.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 *
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * @return the wizard node, or <code>null</code> if no node is selected
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 public IWizardNode getSelectedNode() {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 return selectedNode;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 /**
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 * Sets or clears the currently selected wizard node within this page.
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 *
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 * @param node the wizard node, or <code>null</code> to clear
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 */
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 protected void setSelectedNode(IWizardNode node) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 addSelectedNode(node);
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 selectedNode = node;
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 if (isCurrentPage()) {
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 getContainer().updateButtons();
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 }
ef4534de0cf9 remaining files
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 }