annotate dwtx/jface/fieldassist/SimpleContentProposalProvider.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 46a6e0e6ccd4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 29
diff changeset
2 * Copyright (c) 2005, 2007 IBM Corporation and others.
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 29
diff changeset
10 * Amir Kouchekinia <amir@pyrus.us> - bug 200762
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Port to the D programming language:
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 * Frank Benoit <benoit@tionex.de>
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 *******************************************************************************/
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 module dwtx.jface.fieldassist.SimpleContentProposalProvider;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.jface.fieldassist.IContentProposalProvider;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwtx.jface.fieldassist.IContentProposal;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 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: 70
diff changeset
21 import dwtx.dwtxhelper.Collection;
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 /**
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 * SimpleContentProposalProvider is a class designed to map a static list of
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 * Strings to content proposals.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 *
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 * @see IContentProposalProvider
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 * @since 3.2
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 *
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 public class SimpleContentProposalProvider : IContentProposalProvider {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 /*
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * The proposals provided.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 private String[] proposals;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 /*
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * The proposals mapped to IContentProposal. Cached for speed in the case
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * where filtering is not used.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 private IContentProposal[] contentProposals;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 /*
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 29
diff changeset
45 * Boolean that tracks whether filtering is used.
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 private bool filterProposals = false;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 /**
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * Construct a SimpleContentProposalProvider whose content proposals are
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * always the specified array of Objects.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 *
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * @param proposals
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 * the array of Strings to be returned whenever proposals are
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 * requested.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 public this(String[] proposals) {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 //super();
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 this.proposals = proposals;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 /**
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * Return an array of Objects representing the valid content proposals for a
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: 70
diff changeset
64 * field.
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 *
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * @param contents
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * the current contents of the field (only consulted if filtering
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * is set to <code>true</code>)
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * @param position
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * the current cursor position within the field (ignored)
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * @return the array of Objects that represent valid proposals for the field
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * given its current content.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 public IContentProposal[] getProposals(String contents, int position) {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 if (filterProposals) {
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: 70
diff changeset
76 ArrayList list = new ArrayList();
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 for (int i = 0; i < proposals.length; i++) {
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 29
diff changeset
78 if (proposals[i].length >= contents.length
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 && proposals[i].substring(0, contents.length)
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 .equalsIgnoreCase(contents)) {
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: 70
diff changeset
81 list.add(cast(Object)makeContentProposal(proposals[i]));
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 }
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: 70
diff changeset
84 return arraycast!(IContentProposal)(list.toArray());
29
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 if (contentProposals is null) {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 contentProposals = new IContentProposal[proposals.length];
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 for (int i = 0; i < proposals.length; i++) {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 contentProposals[i] = makeContentProposal(proposals[i]);
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 return contentProposals;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 /**
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 * Set the Strings to be used as content proposals.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 *
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 * @param items
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 * the array of Strings to be used as proposals.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 public void setProposals(String[] items) {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 this.proposals = items;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 contentProposals = null;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 /**
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 * Set the bool that controls whether proposals are filtered according to
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * the current field content.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 *
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * @param filterProposals
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * <code>true</code> if the proposals should be filtered to
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 * show only those that match the current contents of the field,
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * and <code>false</code> if the proposals should remain the
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 * same, ignoring the field content.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * @since 3.3
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 public void setFiltering(bool filterProposals) {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 this.filterProposals = filterProposals;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 // Clear any cached proposals.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 contentProposals = null;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 /*
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 * Make an IContentProposal for showing the specified String.
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 */
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 private IContentProposal makeContentProposal( String proposal) {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 return new class IContentProposal {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 String proposal_;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 this(){proposal_=proposal;}
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 public String getContent() {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 return proposal_;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 public String getDescription() {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 return null;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 public String getLabel() {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 return null;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 public int getCursorPosition() {
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 return proposal_.length;
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 };
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 }
f12d40e7da8f fieldassist
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 }