1 | //////////////////////////////////////////////////////////////////////// |
---|
2 | // |
---|
3 | // This file SolitaryPointsAdmin.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.Vector; |
---|
41 | |
---|
42 | import javax.swing.JPanel; |
---|
43 | import javax.swing.SwingUtilities; |
---|
44 | |
---|
45 | ////////////////////////////////////////////////////////////// |
---|
46 | // |
---|
47 | // class SolitaryPointsAdmin |
---|
48 | // |
---|
49 | ////////////////////////////////////////////////////////////// |
---|
50 | |
---|
51 | public class SolitaryPointsAdmin extends JPanel implements ActionListener { |
---|
52 | |
---|
53 | JPanel solPtsPanel; |
---|
54 | |
---|
55 | public Vector solPtsList = new Vector(); |
---|
56 | |
---|
57 | Project project; |
---|
58 | |
---|
59 | surfex surfex_; |
---|
60 | |
---|
61 | SolitaryPointsAdmin(surfex su, Project pro) { |
---|
62 | surfex_ = su; |
---|
63 | project = pro; |
---|
64 | |
---|
65 | setLayout(new BorderLayout()); |
---|
66 | solPtsPanel = new JPanel(new GridLayout(20, 0)); |
---|
67 | add(solPtsPanel, BorderLayout.WEST); |
---|
68 | } |
---|
69 | |
---|
70 | public void actionPerformed(ActionEvent e) { |
---|
71 | } |
---|
72 | |
---|
73 | public void clear() { |
---|
74 | solPtsList.clear(); |
---|
75 | solPtsPanel.removeAll(); |
---|
76 | } |
---|
77 | |
---|
78 | |
---|
79 | public void newSolitaryPoint() { |
---|
80 | // System.out.println("newSolitaryPoint"); |
---|
81 | SolitaryPoint par = new SolitaryPoint(project); |
---|
82 | |
---|
83 | // find a non-used parameter number: |
---|
84 | int n = solPtsList.size() + 1; |
---|
85 | ListIterator li = solPtsList.listIterator(); |
---|
86 | while (li.hasNext()) { |
---|
87 | if (n == ((SolitaryPoint) (li.next())).solPtNo) { |
---|
88 | // if the parameter number n is already in use |
---|
89 | n = n + 1; // try the next number |
---|
90 | // reset the list iterator to the first element in the list: |
---|
91 | while (li.hasPrevious()) { |
---|
92 | li.previous(); |
---|
93 | } |
---|
94 | } |
---|
95 | } |
---|
96 | par.setSolPtNo(n); |
---|
97 | // System.out.println("solPtNo:"+n); |
---|
98 | |
---|
99 | // add this parameter to the list: |
---|
100 | solPtsList.add(par); |
---|
101 | // System.out.println("solPtsList:"+solPtsList.size()); |
---|
102 | solPtsPanel.add(par); |
---|
103 | SwingUtilities.updateComponentTreeUI(this); |
---|
104 | } |
---|
105 | |
---|
106 | public void equationListChanged_add(String EqName) { |
---|
107 | ListIterator li = solPtsList.listIterator(); |
---|
108 | SolitaryPoint pt; |
---|
109 | int i; |
---|
110 | while (li.hasNext()) { |
---|
111 | // System.out.println("update pla oe" ); |
---|
112 | pt = (SolitaryPoint) li.next(); |
---|
113 | pt.surfaces.addItem(EqName); |
---|
114 | } |
---|
115 | } |
---|
116 | |
---|
117 | public String save() { |
---|
118 | String str = ""; |
---|
119 | ListIterator li = solPtsList.listIterator(); |
---|
120 | str += "////////////////// SOLITARY POINTS: /////////////////////////" |
---|
121 | + "\n"; |
---|
122 | str += solPtsList.size() + "\n"; |
---|
123 | while (li.hasNext()) { |
---|
124 | str += ((SolitaryPoint) li.next()).saveYourself(); |
---|
125 | } |
---|
126 | return (str); |
---|
127 | } |
---|
128 | |
---|
129 | public void copyRadiusToAll(double from, double to, double rad) { |
---|
130 | int i; |
---|
131 | SolitaryPoint tmp; |
---|
132 | for (i = 0; i < solPtsList.size(); i++) { |
---|
133 | try { |
---|
134 | // System.out.println("i:"+i); |
---|
135 | tmp = ((SolitaryPoint) (solPtsList.elementAt(i))); |
---|
136 | ((SolitaryPoint) (solPtsList.elementAt(i))).newFrom = from; |
---|
137 | ((SolitaryPoint) (solPtsList.elementAt(i))).oldFrom = from; |
---|
138 | ((SolitaryPoint) (solPtsList.elementAt(i))).newTo = to; |
---|
139 | ((SolitaryPoint) (solPtsList.elementAt(i))).oldTo = to; |
---|
140 | ((SolitaryPoint) (solPtsList.elementAt(i))).radiusSlider |
---|
141 | .setValue((int) (rad / (to - from) * 1000.0)); |
---|
142 | ((SolitaryPoint) (solPtsList.elementAt(i))).radiusSlider |
---|
143 | .repaint(); |
---|
144 | String str = "" + rad; |
---|
145 | int end = 6; |
---|
146 | if (str.length() <= 6) { |
---|
147 | end = str.length(); |
---|
148 | } |
---|
149 | ((SolitaryPoint) (solPtsList.elementAt(i))).radiusLabel |
---|
150 | .setText(str.substring(0, end)); |
---|
151 | } catch (Exception ex) { |
---|
152 | System.out.println("error:" + ex.toString()); |
---|
153 | } |
---|
154 | } |
---|
155 | } |
---|
156 | |
---|
157 | public void loadSolitaryPoints(BufferedReader bs, String datatype, |
---|
158 | int iVersion) { |
---|
159 | int k; |
---|
160 | try { |
---|
161 | String nix = bs.readLine(); |
---|
162 | String zeile1; |
---|
163 | boolean first = true; |
---|
164 | |
---|
165 | for (k = Integer.parseInt(bs.readLine()); k > 0; k--) { |
---|
166 | zeile1 = bs.readLine();//) != null) { |
---|
167 | newSolitaryPoint(); |
---|
168 | if (datatype.equals("specify")) { |
---|
169 | String strline; |
---|
170 | String tmpline; |
---|
171 | try { |
---|
172 | bs.mark(255); |
---|
173 | strline = bs.readLine(); |
---|
174 | while ((strline.equals("solPtNo:")) |
---|
175 | || (strline.equals("fromtoval:")) |
---|
176 | || (strline.equals("surface:")) |
---|
177 | || (strline.equals("coords:"))) { |
---|
178 | // System.out.println("strline:"+strline); |
---|
179 | if (strline.equals("solPtNo:")) { |
---|
180 | ((SolitaryPoint) solPtsList.lastElement()) |
---|
181 | .setSolPtNo(Integer.parseInt(bs |
---|
182 | .readLine())); |
---|
183 | } |
---|
184 | if (strline.equals("surface:")) { |
---|
185 | // System.out.println("set surface..."); |
---|
186 | tmpline = bs.readLine(); |
---|
187 | if (tmpline.equals("-")) { |
---|
188 | ((SolitaryPoint) solPtsList.lastElement()) |
---|
189 | .setSurfNo(0); |
---|
190 | } else { |
---|
191 | // System.out.println("set surface:"+(Integer.parseInt(tmpline))); |
---|
192 | ((SolitaryPoint) solPtsList.lastElement()) |
---|
193 | .setSurfNo(Integer |
---|
194 | .parseInt(tmpline)); |
---|
195 | } |
---|
196 | } |
---|
197 | if (strline.equals("coords:")) { |
---|
198 | ((SolitaryPoint) solPtsList.lastElement()).x |
---|
199 | .setText(bs.readLine()); |
---|
200 | ((SolitaryPoint) solPtsList.lastElement()).newX = Double |
---|
201 | .parseDouble(((SolitaryPoint) solPtsList |
---|
202 | .lastElement()).x.getText()); |
---|
203 | ((SolitaryPoint) solPtsList.lastElement()).oldX = Double |
---|
204 | .parseDouble(((SolitaryPoint) solPtsList |
---|
205 | .lastElement()).x.getText()); |
---|
206 | ((SolitaryPoint) solPtsList.lastElement()).y |
---|
207 | .setText(bs.readLine()); |
---|
208 | ((SolitaryPoint) solPtsList.lastElement()).newY = Double |
---|
209 | .parseDouble(((SolitaryPoint) solPtsList |
---|
210 | .lastElement()).y.getText()); |
---|
211 | ((SolitaryPoint) solPtsList.lastElement()).oldY = Double |
---|
212 | .parseDouble(((SolitaryPoint) solPtsList |
---|
213 | .lastElement()).y.getText()); |
---|
214 | ((SolitaryPoint) solPtsList.lastElement()).z |
---|
215 | .setText(bs.readLine()); |
---|
216 | ((SolitaryPoint) solPtsList.lastElement()).newZ = Double |
---|
217 | .parseDouble(((SolitaryPoint) solPtsList |
---|
218 | .lastElement()).z.getText()); |
---|
219 | ((SolitaryPoint) solPtsList.lastElement()).oldZ = Double |
---|
220 | .parseDouble(((SolitaryPoint) solPtsList |
---|
221 | .lastElement()).z.getText()); |
---|
222 | } |
---|
223 | if (strline.equals("fromtoval:")) { |
---|
224 | ((SolitaryPoint) solPtsList.lastElement()).oldFrom = Double |
---|
225 | .parseDouble(bs.readLine()); |
---|
226 | ((SolitaryPoint) solPtsList.lastElement()).newFrom = ((SolitaryPoint) solPtsList |
---|
227 | .lastElement()).oldFrom; |
---|
228 | |
---|
229 | ((SolitaryPoint) solPtsList.lastElement()).oldTo = Double |
---|
230 | .parseDouble(bs.readLine()); |
---|
231 | ((SolitaryPoint) solPtsList.lastElement()).newTo = ((SolitaryPoint) solPtsList |
---|
232 | .lastElement()).oldTo; |
---|
233 | |
---|
234 | ((SolitaryPoint) solPtsList.lastElement()).radiusSlider |
---|
235 | .setValue(Integer.parseInt(bs |
---|
236 | .readLine())); |
---|
237 | ((SolitaryPoint) solPtsList.lastElement()) |
---|
238 | .updateradiusSliderLabel(); |
---|
239 | } |
---|
240 | bs.mark(255); |
---|
241 | strline = bs.readLine(); |
---|
242 | } // end while() |
---|
243 | bs.reset(); |
---|
244 | } catch (Exception nex) { |
---|
245 | bs.reset(); |
---|
246 | } |
---|
247 | } |
---|
248 | if (datatype.equals("complete") || datatype.equals("onlyeqns") |
---|
249 | || datatype.equals("eqnsvis")) { |
---|
250 | ((SolitaryPoint) solPtsList.lastElement()) |
---|
251 | .setSolPtNo(Integer.parseInt(bs.readLine())); |
---|
252 | ((SolitaryPoint) solPtsList.lastElement()) |
---|
253 | .setSurfNo(Integer.parseInt(bs.readLine())); |
---|
254 | ((SolitaryPoint) solPtsList.lastElement()).x.setText(bs |
---|
255 | .readLine()); |
---|
256 | ((SolitaryPoint) solPtsList.lastElement()).newX = Double |
---|
257 | .parseDouble(((SolitaryPoint) solPtsList |
---|
258 | .lastElement()).x.getText()); |
---|
259 | ((SolitaryPoint) solPtsList.lastElement()).oldX = Double |
---|
260 | .parseDouble(((SolitaryPoint) solPtsList |
---|
261 | .lastElement()).x.getText()); |
---|
262 | ((SolitaryPoint) solPtsList.lastElement()).y.setText(bs |
---|
263 | .readLine()); |
---|
264 | ((SolitaryPoint) solPtsList.lastElement()).newY = Double |
---|
265 | .parseDouble(((SolitaryPoint) solPtsList |
---|
266 | .lastElement()).y.getText()); |
---|
267 | ((SolitaryPoint) solPtsList.lastElement()).oldY = Double |
---|
268 | .parseDouble(((SolitaryPoint) solPtsList |
---|
269 | .lastElement()).y.getText()); |
---|
270 | ((SolitaryPoint) solPtsList.lastElement()).z.setText(bs |
---|
271 | .readLine()); |
---|
272 | ((SolitaryPoint) solPtsList.lastElement()).newZ = Double |
---|
273 | .parseDouble(((SolitaryPoint) solPtsList |
---|
274 | .lastElement()).z.getText()); |
---|
275 | ((SolitaryPoint) solPtsList.lastElement()).oldZ = Double |
---|
276 | .parseDouble(((SolitaryPoint) solPtsList |
---|
277 | .lastElement()).z.getText()); |
---|
278 | ((SolitaryPoint) solPtsList.lastElement()).oldFrom = Double |
---|
279 | .parseDouble(bs.readLine()); |
---|
280 | ((SolitaryPoint) solPtsList.lastElement()).newFrom = ((SolitaryPoint) solPtsList |
---|
281 | .lastElement()).oldFrom; |
---|
282 | ((SolitaryPoint) solPtsList.lastElement()).oldTo = Double |
---|
283 | .parseDouble(bs.readLine()); |
---|
284 | ((SolitaryPoint) solPtsList.lastElement()).newTo = ((SolitaryPoint) solPtsList |
---|
285 | .lastElement()).oldTo; |
---|
286 | ((SolitaryPoint) solPtsList.lastElement()).radiusSlider |
---|
287 | .setValue(Integer.parseInt(bs.readLine())); |
---|
288 | ((SolitaryPoint) solPtsList.lastElement()) |
---|
289 | .updateradiusSliderLabel(); |
---|
290 | ((SolitaryPoint) solPtsList.lastElement()).repaint(); |
---|
291 | } |
---|
292 | if (datatype.equals("complete") || datatype.equals("onlystyle")) { |
---|
293 | // ((SolitaryPoint) solPtsList.lastElement()).cbox.setSelected((Boolean.valueOf(bs.readLine())).booleanValue()); |
---|
294 | } |
---|
295 | } |
---|
296 | } catch (IOException e) { |
---|
297 | System.out.println(e); |
---|
298 | } |
---|
299 | } |
---|
300 | |
---|
301 | } // end class SolitaryPointsAdmin |
---|