author | viric@mandarina |
Sun, 14 Jan 2007 18:27:47 +0100 | |
changeset 9 | 9f8e342f193e |
parent 8 | 88f4defbb1db |
child 10 | 757b42639637 |
permissions | -rw-r--r-- |
0 | 1 |
package horaris; |
2 |
||
3 |
import ogdl.*; |
|
4 |
||
5 |
import javax.microedition.lcdui.*; |
|
6 |
import java.util.Vector; |
|
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
7 |
import java.util.Hashtable; |
0 | 8 |
import java.lang.Exception; |
9 |
||
5 | 10 |
public class HoraroTransporta |
11 |
implements CommandListener, ItemStateListener, Ekrano |
|
0 | 12 |
{ |
13 |
private Graph radiko; |
|
14 |
private Graph tagoj; |
|
15 |
private Graph direktoj; |
|
16 |
private Graph lokoj; |
|
17 |
private Graph sencoj; |
|
18 |
||
19 |
private Form myform; |
|
20 |
private ChoiceGroup ftagoj; |
|
21 |
private ChoiceGroup fsenco; |
|
22 |
private ChoiceGroup fkomenco; |
|
23 |
private ChoiceGroup ffino; |
|
24 |
private Command cmd_sercxi; |
|
25 |
private Command cmd_malantauxen; |
|
5 | 26 |
|
27 |
private Ekrano last; |
|
0 | 28 |
|
29 |
private TimeList mytimelist; |
|
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
30 |
|
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
31 |
private Vector temporezulto; |
8 | 32 |
private Vector tmpTempoj; |
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
33 |
private Hashtable inforezulto; |
0 | 34 |
|
35 |
||
5 | 36 |
public HoraroTransporta(Graph _radiko, Ekrano _last) throws Exception |
0 | 37 |
{ |
38 |
radiko = _radiko; |
|
5 | 39 |
last = _last; |
0 | 40 |
|
41 |
tagoj = radiko.getNode("Dies"); |
|
42 |
lokoj = radiko.getNode("Llocs"); |
|
43 |
sencoj = radiko.getNode("Sentits"); |
|
44 |
||
45 |
try { |
|
46 |
show(); |
|
47 |
} catch (Exception e) |
|
48 |
{ |
|
49 |
System.err.println("Cannot create form: " + e); |
|
50 |
e.printStackTrace(); |
|
51 |
} |
|
52 |
} |
|
53 |
||
54 |
public void show() |
|
55 |
{ |
|
56 |
myform = new Form("Cerca"); |
|
57 |
||
58 |
/* Items */ |
|
59 |
ftagoj = new ChoiceGroup("Dia", ChoiceGroup.MULTIPLE); |
|
60 |
addTagoj(ftagoj); |
|
61 |
myform.append(ftagoj); |
|
4
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
62 |
defaultTagoj(); |
0 | 63 |
|
64 |
fsenco = new ChoiceGroup("Sentit", ChoiceGroup.EXCLUSIVE); |
|
65 |
addSencoj(fsenco); |
|
66 |
myform.append(fsenco); |
|
67 |
||
9
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
68 |
fkomenco = new ChoiceGroup("Origen", ChoiceGroup.EXCLUSIVE); |
0 | 69 |
addLokoj(fkomenco); |
70 |
myform.append(fkomenco); |
|
71 |
||
9
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
72 |
ffino = new ChoiceGroup("DestÃ", ChoiceGroup.EXCLUSIVE); |
0 | 73 |
addLokoj(ffino); |
74 |
myform.append(ffino); |
|
75 |
||
2 | 76 |
defaultKomencoFino(); |
77 |
||
0 | 78 |
/* Commands */ |
79 |
cmd_sercxi = new Command("Buscar", Command.OK, 0); |
|
80 |
cmd_malantauxen = new Command("Enrera", Command.BACK, 0); |
|
81 |
myform.addCommand(cmd_sercxi); |
|
82 |
myform.addCommand(cmd_malantauxen); |
|
83 |
myform.setCommandListener(this); |
|
84 |
myform.setItemStateListener(this); |
|
5 | 85 |
Main.display.setCurrent(myform); |
0 | 86 |
} |
87 |
||
88 |
private void addTagoj(ChoiceGroup g) |
|
89 |
{ |
|
90 |
for (int i=0; i < tagoj.size(); i++) |
|
91 |
g.append(tagoj.get(i).getName(), null); |
|
92 |
} |
|
93 |
||
94 |
private void addSencoj(ChoiceGroup g) { |
|
95 |
||
96 |
for (int i=0; i < sencoj.size(); i++) |
|
97 |
g.append(sencoj.get(i).getName(), null); |
|
98 |
} |
|
99 |
||
100 |
private void addLokoj(ChoiceGroup g) { |
|
101 |
||
102 |
for (int i=0; i < lokoj.size(); i++) |
|
103 |
g.append(lokoj.get(i).getName(), null); |
|
104 |
} |
|
105 |
||
106 |
private boolean inVector(Vector v, String s) |
|
107 |
{ |
|
108 |
for (int i=0; i < v.size(); i++) |
|
109 |
if(s.equals((String)v.elementAt(i))) |
|
110 |
return true; |
|
111 |
return false; |
|
112 |
} |
|
113 |
||
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
114 |
private void sercxiTempojn(Vector tagoj, String senco, |
0 | 115 |
String komenco, String fino) |
116 |
{ |
|
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
117 |
temporezulto = new Vector(); |
8 | 118 |
tmpTempoj = new Vector(); |
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
119 |
inforezulto = new Hashtable(); |
0 | 120 |
|
121 |
for (int i=0; i < radiko.size(); i++) |
|
122 |
{ |
|
123 |
if (! radiko.get(i).getName().equals("Comboi")) |
|
124 |
continue; |
|
125 |
||
126 |
Graph veturo = radiko.get(i); |
|
127 |
Graph gtmp; |
|
128 |
boolean bona; |
|
129 |
||
130 |
String elirtempo = null, alventempo = null; |
|
131 |
||
132 |
/* Dies */ |
|
133 |
gtmp = veturo.getNode("Dies"); |
|
134 |
bona = false; |
|
135 |
for(int j=0; j < gtmp.size(); j++) |
|
136 |
{ |
|
137 |
if (inVector(tagoj, gtmp.get(j).getName()) ) |
|
138 |
bona = true; |
|
139 |
} |
|
140 |
if (bona != true) |
|
141 |
continue; |
|
142 |
||
143 |
/* Sentits */ |
|
144 |
gtmp = veturo.getNode("Sentit"); |
|
145 |
bona = false; |
|
146 |
for(int j=0; j < gtmp.size(); j++) |
|
147 |
{ |
|
148 |
if (senco.equals(gtmp.get(j).getName())) |
|
149 |
bona = true; |
|
150 |
} |
|
151 |
if (bona != true) |
|
152 |
continue; |
|
153 |
||
154 |
/* Komenco kaj Fino */ |
|
155 |
gtmp = veturo.getNode("Hores"); |
|
156 |
for(int j=0; j < gtmp.size(); j++) |
|
157 |
{ |
|
158 |
String stacio = gtmp.get(j).get(0).getName(); |
|
159 |
||
160 |
if (stacio.equals(komenco)) |
|
161 |
{ |
|
162 |
elirtempo = gtmp.get(j).getName(); |
|
163 |
} |
|
164 |
else if (stacio.equals(fino)) |
|
165 |
{ |
|
166 |
alventempo = gtmp.get(j).getName(); |
|
167 |
} |
|
168 |
} |
|
169 |
if (elirtempo == null || alventempo == null) |
|
170 |
continue; |
|
171 |
||
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
172 |
/* Krei la informon aldonan */ |
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
173 |
gtmp = veturo.getNode("Comentari"); |
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
174 |
Vector comments = new Vector(); |
9
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
175 |
if (gtmp != null) |
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
176 |
{ |
9
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
177 |
for (int j = 0; j < gtmp.size(); j++) |
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
178 |
{ |
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
179 |
comments.addElement(gtmp.get(j).getName()); |
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
180 |
} |
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
181 |
} |
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
182 |
|
0 | 183 |
/* Trovita! */ |
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
184 |
addSortedTime(elirtempo, alventempo, comments); |
0 | 185 |
} |
9
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
186 |
|
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
187 |
/* Free memory */ |
9f8e342f193e
Moving from MIDP2/CLDC1.1 to MIDP1/CLDC1.0. Added About windows.
viric@mandarina
parents:
8
diff
changeset
|
188 |
tmpTempoj = null; |
0 | 189 |
} |
2 | 190 |
|
191 |
private Tempo str2Tempo(String s) |
|
192 |
{ |
|
193 |
int i = s.indexOf('-'); |
|
194 |
return new Tempo(s.substring(0,i)); |
|
195 |
} |
|
196 |
||
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
197 |
private void addSortedTime(String eliro, String alveno, Vector comments) |
2 | 198 |
{ |
199 |
Tempo teliro = new Tempo(eliro); |
|
200 |
boolean set = false; |
|
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
201 |
|
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
202 |
String montro = eliro + "-" + alveno; |
2 | 203 |
|
8 | 204 |
for(int i=0; i< tmpTempoj.size(); i++) |
2 | 205 |
{ |
206 |
Tempo tmp; |
|
8 | 207 |
tmp = (Tempo) tmpTempoj.elementAt(i); |
2 | 208 |
if (tmp.compareTo(teliro) > 0) |
209 |
{ |
|
210 |
set = true; |
|
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
211 |
temporezulto.insertElementAt(montro, i); |
8 | 212 |
tmpTempoj.insertElementAt(teliro, i); |
2 | 213 |
break; |
214 |
} |
|
215 |
} |
|
216 |
if (set == false) |
|
217 |
{ |
|
8 | 218 |
temporezulto.addElement(montro); |
219 |
tmpTempoj.addElement(teliro); |
|
2 | 220 |
} |
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
221 |
inforezulto.put(montro, comments); |
2 | 222 |
} |
0 | 223 |
|
224 |
public void commandAction(Command c, Displayable d) |
|
225 |
{ |
|
226 |
||
227 |
if (c == cmd_sercxi) |
|
228 |
{ |
|
229 |
Vector tagoj = new Vector(); |
|
230 |
for (int i = 0; i < ftagoj.size(); i++) |
|
231 |
{ |
|
232 |
if (ftagoj.isSelected(i)) |
|
233 |
tagoj.addElement(ftagoj.getString(i)); |
|
234 |
} |
|
235 |
String senco = |
|
236 |
fsenco.getString(fsenco.getSelectedIndex()); |
|
237 |
String komenco = |
|
238 |
fkomenco.getString(fkomenco.getSelectedIndex()); |
|
239 |
String fino = |
|
240 |
ffino.getString(ffino.getSelectedIndex()); |
|
241 |
||
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
242 |
/* Donos rezulton en temporezulto kaj inforezulto */ |
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
243 |
sercxiTempojn(tagoj, senco, komenco, fino); |
0 | 244 |
|
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
245 |
if (temporezulto.size() > 0) |
0 | 246 |
{ |
7
19f4a2b1a4b9
Added option for showing comments for each Convoy.
viric@mandarina
parents:
5
diff
changeset
|
247 |
mytimelist = new TimeList(temporezulto, inforezulto, this); |
0 | 248 |
mytimelist.show(); |
249 |
} |
|
250 |
} else if (c == cmd_malantauxen) |
|
251 |
{ |
|
5 | 252 |
last.show(); |
0 | 253 |
} |
254 |
} |
|
255 |
||
4
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
256 |
private void defaultTagoj() |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
257 |
{ |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
258 |
for (int i = 0; i < ftagoj.size(); i++) |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
259 |
{ |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
260 |
if (tagoj.getNode(ftagoj.getString(i)).get(0) != null) |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
261 |
ftagoj.setSelectedIndex(i, true); |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
262 |
else |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
263 |
ftagoj.setSelectedIndex(i, false); |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
264 |
} |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
265 |
} |
f92e04d4bfe5
Default Tagoj. Implicit Main List. Less println.
viric@llimona
parents:
2
diff
changeset
|
266 |
|
2 | 267 |
private void defaultKomencoFino() |
268 |
{ |
|
269 |
String elektita; |
|
270 |
elektita = fsenco.getString(fsenco.getSelectedIndex()); |
|
271 |
||
272 |
Graph komenco; |
|
273 |
komenco = sencoj.getNode(elektita).get(0); |
|
274 |
if (komenco == null) |
|
275 |
return; |
|
276 |
||
277 |
for (int i = 0; i < fkomenco.size(); i++) |
|
278 |
if (fkomenco.getString(i).equals(komenco.getName())) |
|
279 |
fkomenco.setSelectedIndex(i, true); |
|
280 |
||
281 |
Graph fino; |
|
282 |
fino = sencoj.getNode(elektita).get(1); |
|
283 |
if (fino == null) |
|
284 |
return; |
|
285 |
||
286 |
for (int i = 0; i < ffino.size(); i++) |
|
287 |
if (ffino.getString(i).equals(fino.getName())) |
|
288 |
ffino.setSelectedIndex(i, true); |
|
289 |
} |
|
290 |
||
0 | 291 |
public void itemStateChanged(Item item) |
292 |
{ |
|
2 | 293 |
if (item == fsenco) |
294 |
{ |
|
295 |
defaultKomencoFino(); |
|
296 |
} |
|
0 | 297 |
} |
298 |
} |