1 | //////////////////////////////////////////////////////////////////////// |
---|
2 | // |
---|
3 | // This file ParameterAdmin.java is part of SURFEX. |
---|
4 | // |
---|
5 | //////////////////////////////////////////////////////////////////////// |
---|
6 | |
---|
7 | //////////////////////////////////////////////////////////////////////// |
---|
8 | // |
---|
9 | // SURFEX version 0.90.00 |
---|
10 | // ================= |
---|
11 | // |
---|
12 | // Saarland University at Saarbruecken, Germany |
---|
13 | // Department of Mathematics and Computer Science |
---|
14 | // |
---|
15 | // SURFEX on the web: www.surfex.AlgebraicSurface.net |
---|
16 | // |
---|
17 | // Authors: Oliver Labs (2001-2008), Stephan Holzer (2004-2005) |
---|
18 | // |
---|
19 | // Copyright (C) 2001-2008 |
---|
20 | // |
---|
21 | // |
---|
22 | // *NOTICE* |
---|
23 | // ======== |
---|
24 | // |
---|
25 | // This program is free software; you can redistribute it and/or modify it |
---|
26 | // under the terms of the GNU General Public License as published by the |
---|
27 | // Free Software Foundation ( version 3 or later of the License ). |
---|
28 | // |
---|
29 | // See LICENCE.TXT for details. |
---|
30 | // |
---|
31 | ///////////////////////////////////////////////////////////////////////// |
---|
32 | |
---|
33 | import java.awt.BorderLayout; |
---|
34 | import java.awt.GridLayout; |
---|
35 | import java.awt.event.ActionEvent; |
---|
36 | import java.awt.event.ActionListener; |
---|
37 | import java.io.BufferedReader; |
---|
38 | import java.io.IOException; |
---|
39 | import java.util.ListIterator; |
---|
40 | import java.util.*; |
---|
41 | |
---|
42 | import javax.swing.*; |
---|
43 | import javax.swing.SwingUtilities; |
---|
44 | |
---|
45 | ////////////////////////////////////////////////////////////// |
---|
46 | // |
---|
47 | // class ParameterAdmin |
---|
48 | // |
---|
49 | ////////////////////////////////////////////////////////////// |
---|
50 | |
---|
51 | public class ParameterAdmin extends JPanel implements ActionListener { |
---|
52 | |
---|
53 | JPanel parPanel; |
---|
54 | |
---|
55 | JComboBox paramComboBox; // wird fuer den SaveMovieDialog gebraucht |
---|
56 | |
---|
57 | public Vector parList = new Vector(); |
---|
58 | |
---|
59 | Project project; |
---|
60 | |
---|
61 | surfex surfex_; |
---|
62 | |
---|
63 | ParameterAdmin(surfex su, Project pro) { |
---|
64 | surfex_ = su; |
---|
65 | project = pro; |
---|
66 | |
---|
67 | paramComboBox=new JComboBox(); |
---|
68 | |
---|
69 | setLayout(new BorderLayout()); |
---|
70 | parPanel = new JPanel(new GridLayout(20, 0)); |
---|
71 | add(parPanel, BorderLayout.CENTER); |
---|
72 | } |
---|
73 | |
---|
74 | public void actionPerformed(ActionEvent e) { |
---|
75 | } |
---|
76 | |
---|
77 | public void clear() { |
---|
78 | parList.clear(); |
---|
79 | parPanel.removeAll(); |
---|
80 | // parcounter = 0; |
---|
81 | } |
---|
82 | |
---|
83 | public String[] getAllParams(){ |
---|
84 | String[] s=new String[this.parList.size()]; |
---|
85 | ListIterator li = parList.listIterator(); |
---|
86 | OneParameter tmpParameter; |
---|
87 | int i=0; |
---|
88 | |
---|
89 | while (li.hasNext()) { |
---|
90 | tmpParameter=((OneParameter)li.next()); |
---|
91 | s[i]=tmpParameter.nameLabel.getText(); |
---|
92 | |
---|
93 | |
---|
94 | i++; |
---|
95 | } |
---|
96 | return s; |
---|
97 | } |
---|
98 | |
---|
99 | public double[] getAllParamValues(){ |
---|
100 | double[] s=new double[this.parList.size()]; |
---|
101 | ListIterator li = parList.listIterator(); |
---|
102 | OneParameter tmpParameter; |
---|
103 | int i=0; |
---|
104 | |
---|
105 | while (li.hasNext()) { |
---|
106 | tmpParameter=((OneParameter)li.next()); |
---|
107 | s[i]=tmpParameter.getValue()/1000.0; |
---|
108 | |
---|
109 | i++; |
---|
110 | } |
---|
111 | return s; |
---|
112 | } |
---|
113 | |
---|
114 | |
---|
115 | |
---|
116 | |
---|
117 | public void newParameter() { |
---|
118 | // System.out.println("newParameter"); |
---|
119 | OneParameter par = new OneParameter(project); |
---|
120 | |
---|
121 | // find a non-used parameter number: |
---|
122 | int n = parList.size() + 1; |
---|
123 | ListIterator li = parList.listIterator(); |
---|
124 | while (li.hasNext()) { |
---|
125 | if (n == ((OneParameter) (li.next())).parNo) { |
---|
126 | // if the parameter number n is already in use |
---|
127 | n = n + 1; // try the next number |
---|
128 | // reset the list iterator to the first element in the list: |
---|
129 | while (li.hasPrevious()) { |
---|
130 | li.previous(); |
---|
131 | } |
---|
132 | } |
---|
133 | } |
---|
134 | par.setParNo(n); |
---|
135 | // System.out.println("parNo:"+n); |
---|
136 | |
---|
137 | // add this parameter to the list: |
---|
138 | parList.add(par); |
---|
139 | // System.out.println("parList:"+parList.size()); |
---|
140 | parPanel.add(par); |
---|
141 | |
---|
142 | |
---|
143 | // rausfinden, wo man den Parameter in ComboBox einfuegen kann: |
---|
144 | int i=0; |
---|
145 | //System.out.; |
---|
146 | for(i=0;i<paramComboBox.getItemCount();i++){ |
---|
147 | if(((String)paramComboBox.getItemAt(i)).compareTo(par.nameLabel.getText())>=0){ |
---|
148 | // i--; |
---|
149 | break; |
---|
150 | } |
---|
151 | } |
---|
152 | //i--; |
---|
153 | // System.out.println("index:"+i); |
---|
154 | paramComboBox.insertItemAt(par.nameLabel.getText(),i); |
---|
155 | |
---|
156 | if(project.saveMovieDialog!=null){ |
---|
157 | //nur updaten, falls es ihn ueberhaupt gibt... |
---|
158 | SwingUtilities.updateComponentTreeUI(project.saveMovieDialog); |
---|
159 | } |
---|
160 | SwingUtilities.updateComponentTreeUI(this); |
---|
161 | } |
---|
162 | |
---|
163 | public String save() { |
---|
164 | String str = ""; |
---|
165 | ListIterator li = parList.listIterator(); |
---|
166 | str += "////////////////// PARAMETERS: /////////////////////////" |
---|
167 | + "\n"; |
---|
168 | str += parList.size() + "\n"; |
---|
169 | while (li.hasNext()) { |
---|
170 | str += ((OneParameter) li.next()).saveYourself(); |
---|
171 | } |
---|
172 | return (str); |
---|
173 | } |
---|
174 | |
---|
175 | public void loadParameters(BufferedReader bs, String datatype, |
---|
176 | int iVersion) { |
---|
177 | int k; |
---|
178 | try { |
---|
179 | String nix = bs.readLine(); |
---|
180 | String zeile1; |
---|
181 | boolean first = true; |
---|
182 | |
---|
183 | for (k = Integer.parseInt(bs.readLine()); k > 0; k--) { |
---|
184 | zeile1 = bs.readLine();//) != null) { |
---|
185 | newParameter(); |
---|
186 | if (datatype.equals("specify")) { |
---|
187 | String strline; |
---|
188 | try { |
---|
189 | bs.mark(255); |
---|
190 | strline = bs.readLine(); |
---|
191 | while ((strline.equals("parno:")) |
---|
192 | || (strline.equals("fromtoval:")) |
---|
193 | || (strline.equals("function:"))) { |
---|
194 | // System.out.println("strline:"+strline); |
---|
195 | if (strline.equals("parno:")) { |
---|
196 | ((OneParameter) parList.lastElement()) |
---|
197 | .setParNo(Integer.parseInt(bs |
---|
198 | .readLine())); |
---|
199 | } |
---|
200 | if (strline.equals("function:")) { |
---|
201 | ((OneParameter) parList.lastElement()) |
---|
202 | .fct.setText(bs.readLine()); |
---|
203 | } |
---|
204 | if (strline.equals("fromtoval:")) { |
---|
205 | ((OneParameter) parList.lastElement()).oldFrom = Double |
---|
206 | .parseDouble(bs.readLine()); |
---|
207 | ((OneParameter) parList.lastElement()).newFrom = ((OneParameter) parList |
---|
208 | .lastElement()).oldFrom; |
---|
209 | |
---|
210 | ((OneParameter) parList.lastElement()).oldTo = Double |
---|
211 | .parseDouble(bs.readLine()); |
---|
212 | ((OneParameter) parList.lastElement()).newTo = ((OneParameter) parList |
---|
213 | .lastElement()).oldTo; |
---|
214 | |
---|
215 | ((OneParameter) parList.lastElement()).parSlider |
---|
216 | .setMinimum((int)(((OneParameter) parList.lastElement()).newFrom*1000.0)); |
---|
217 | ((OneParameter) parList.lastElement()).parSlider |
---|
218 | .setMaximum((int)(((OneParameter) parList.lastElement()).newTo*1000.0)); |
---|
219 | |
---|
220 | ((OneParameter) parList.lastElement()).parSlider |
---|
221 | .setValue(Integer.parseInt(bs |
---|
222 | .readLine())); |
---|
223 | ((OneParameter) parList.lastElement()) |
---|
224 | .updateparSliderAndLabel(); |
---|
225 | } |
---|
226 | bs.mark(255); |
---|
227 | strline = bs.readLine(); |
---|
228 | } // end while() |
---|
229 | bs.reset(); |
---|
230 | } catch (Exception nex) { |
---|
231 | bs.reset(); |
---|
232 | } |
---|
233 | } |
---|
234 | if (datatype.equals("complete") || datatype.equals("onlyeqns") |
---|
235 | || datatype.equals("eqnsvis")) { |
---|
236 | ((OneParameter) parList.lastElement()) |
---|
237 | .setParNo(Integer.parseInt(bs.readLine())); |
---|
238 | ((OneParameter) parList.lastElement()).oldFrom = Double |
---|
239 | .parseDouble(bs.readLine()); |
---|
240 | ((OneParameter) parList.lastElement()) |
---|
241 | .newFrom = ((OneParameter) parList.lastElement()).oldFrom; |
---|
242 | ((OneParameter) parList.lastElement()).oldTo = Double |
---|
243 | .parseDouble(bs.readLine()); |
---|
244 | ((OneParameter) parList.lastElement()).newTo = |
---|
245 | ((OneParameter) parList.lastElement()).oldTo; |
---|
246 | ((OneParameter) parList.lastElement()).parSlider |
---|
247 | .setMinimum((int)(((OneParameter) parList |
---|
248 | .lastElement()).newFrom*1000.0)); |
---|
249 | ((OneParameter) parList.lastElement()).parSlider |
---|
250 | .setMaximum((int)(((OneParameter) parList |
---|
251 | .lastElement()).newTo*1000.0)); |
---|
252 | ((OneParameter) parList.lastElement()).parSlider |
---|
253 | .setValue(Integer.parseInt(bs.readLine())); |
---|
254 | ((OneParameter) parList.lastElement()).from |
---|
255 | .setText("" + ((OneParameter) |
---|
256 | parList.lastElement()).newFrom); |
---|
257 | ((OneParameter) parList.lastElement()).to |
---|
258 | .setText("" + ((OneParameter) parList.lastElement()).newTo); |
---|
259 | ((OneParameter) parList.lastElement()) |
---|
260 | .updateparSliderAndLabel(); |
---|
261 | |
---|
262 | if(iVersion>=8906) { |
---|
263 | ((OneParameter) parList.lastElement()).fct |
---|
264 | .setText(bs.readLine()); |
---|
265 | } |
---|
266 | |
---|
267 | ((OneParameter) parList.lastElement()).repaint(); |
---|
268 | } |
---|
269 | if (datatype.equals("complete") || datatype.equals("onlystyle")) { |
---|
270 | // ((OneParameter) parList.lastElement()).cbox.setSelected((Boolean.valueOf(bs.readLine())).booleanValue()); |
---|
271 | } |
---|
272 | } |
---|
273 | } catch (IOException e) { |
---|
274 | System.out.println(e); |
---|
275 | } |
---|
276 | } |
---|
277 | |
---|
278 | /*public Vector getParameterNames(){ |
---|
279 | Vector l = new Vector();//new String[parList.size()]; |
---|
280 | |
---|
281 | ListIterator li = parList.listIterator(); |
---|
282 | while (li.hasNext()) { |
---|
283 | l.add(((OneParameter)li.next()).nameLabel.getText()) ; |
---|
284 | //i++; |
---|
285 | } |
---|
286 | return l; |
---|
287 | }*/ |
---|
288 | |
---|
289 | public JComboBox getParamComboBox(){ |
---|
290 | return paramComboBox; |
---|
291 | |
---|
292 | } |
---|
293 | |
---|
294 | public OneParameter getParameter(String s){ |
---|
295 | ListIterator li = parList.listIterator(); |
---|
296 | OneParameter tmpParameter; |
---|
297 | while (li.hasNext()) { |
---|
298 | tmpParameter=((OneParameter)li.next()); |
---|
299 | if(tmpParameter.nameLabel.getText().compareTo(s)==0){ |
---|
300 | return tmpParameter; |
---|
301 | } |
---|
302 | |
---|
303 | |
---|
304 | //i++; |
---|
305 | } |
---|
306 | return null; |
---|
307 | } |
---|
308 | |
---|
309 | |
---|
310 | |
---|
311 | } // end class ParameterAdmin |
---|
312 | |
---|
313 | |
---|