7fd59977 |
1 | |
2 | //Title: OpenCASCADE Samples |
3 | //Version: |
4 | //Copyright: Copyright (c) 1999 |
5 | //Author: User Interface Group (Nizhny Novgorod) |
6 | //Company: Matra Datavision |
7 | //Description: |
8 | |
9 | |
10 | import java.awt.*; |
11 | import java.awt.event.*; |
12 | import javax.swing.*; |
13 | import java.util.*; |
14 | import jcas.Standard_CString; |
15 | import CASCADESamplesJni.*; |
16 | import SamplesTopologyJni.*; |
17 | import util.*; |
18 | |
19 | public class SampleLocalOperationsPanel extends SamplePanel |
20 | implements ActionListener, |
21 | MouseListener, |
22 | MouseMotionListener |
23 | { |
24 | //-----------------------------------------------------------// |
25 | // Resources |
26 | //-----------------------------------------------------------// |
27 | static protected ResourceBundle resGui = |
28 | ResourceBundle.getBundle("SampleLocalOperations"); |
29 | |
30 | static protected ImageIcon imgPrism = new ImageIcon(resGui.getString("Icon-Prism")); |
31 | static protected ImageIcon imgDPrism = new ImageIcon(resGui.getString("Icon-DPrism")); |
32 | static protected ImageIcon imgRevol = new ImageIcon(resGui.getString("Icon-Revol")); |
33 | static protected ImageIcon imgPipe = new ImageIcon(resGui.getString("Icon-Pipe")); |
34 | static protected ImageIcon imgRib = new ImageIcon(resGui.getString("Icon-Rib")); |
35 | static protected ImageIcon imgGlue = new ImageIcon(resGui.getString("Icon-Glue")); |
36 | static protected ImageIcon imgSplit = new ImageIcon(resGui.getString("Icon-Split")); |
37 | static protected ImageIcon imgThick = new ImageIcon(resGui.getString("Icon-Thick")); |
38 | static protected ImageIcon imgOffset = new ImageIcon(resGui.getString("Icon-Offset")); |
39 | |
40 | |
41 | //-----------------------------------------------------------// |
42 | // Components |
43 | //-----------------------------------------------------------// |
44 | private ViewPanel myView3d; |
45 | |
46 | private static V3d_Viewer myViewer3d = null; |
47 | |
48 | private static AIS_InteractiveContext myAISContext = null; |
49 | |
50 | private int startX = 0, startY = 0; |
51 | private boolean Dragged = false; |
52 | |
53 | |
54 | //-----------------------------------------------------------// |
55 | // External access |
56 | //-----------------------------------------------------------// |
57 | public static V3d_Viewer getViewer3d() |
58 | { |
59 | return myViewer3d; |
60 | } |
61 | |
62 | public static AIS_InteractiveContext getAISContext() |
63 | { |
64 | return myAISContext; |
65 | } |
66 | |
67 | |
68 | //=======================================================================// |
69 | // Constructor // |
70 | //=======================================================================// |
71 | public SampleLocalOperationsPanel() |
72 | { |
73 | // 3D Initialization |
74 | //------------------------------------------ |
75 | myViewer3d.SetDefaultLights(); |
76 | myViewer3d.SetLightOn(); |
77 | |
78 | if (myAISContext == null) |
79 | { |
80 | myAISContext = new AIS_InteractiveContext(myViewer3d); |
81 | myAISContext.SetDisplayMode(AIS_DisplayMode.AIS_Shaded, false); |
82 | } |
83 | } |
84 | |
85 | //-----------------------------------------------------------------------// |
86 | public JPanel createViewPanel() |
87 | { |
88 | JPanel mainPanel = new JPanel(); |
89 | mainPanel.setLayout(new GridBagLayout()); |
90 | mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0)); |
91 | |
92 | // Viewer 3D |
93 | //------------------------------------------ |
94 | myViewer3d = SamplesTopologyPackage.CreateViewer("LocalOperations"); |
95 | |
96 | myView3d = new ViewPanel() { |
97 | public ViewCanvas createViewPort() |
98 | { |
99 | return new CASCADEView3d(SampleLocalOperationsPanel.getViewer3d()) { |
100 | public void setWindow3d(V3d_View view, int hiwin, int lowin) { |
101 | SamplesTopologyPackage.SetWindow(view, hiwin, lowin); |
102 | } |
103 | }; |
104 | } |
105 | }; |
106 | |
107 | myView3d.addMouseListener(this); |
108 | myView3d.addMouseMotionListener(this); |
109 | |
110 | |
111 | // Layout |
112 | //------------------------------------------ |
113 | mainPanel.add(myView3d, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, |
114 | GridBagConstraints.CENTER, GridBagConstraints.BOTH, |
115 | new Insets(0, 0, 0, 0), 0, 0)); |
116 | |
117 | return mainPanel; |
118 | } |
119 | |
120 | //-----------------------------------------------------------------------// |
121 | public Component createToolbar() |
122 | { |
123 | JToolBar tools = (JToolBar) super.createToolbar(); |
124 | |
125 | ButtonGroup group = new ButtonGroup(); |
126 | Insets margin = new Insets(1, 1, 1, 1); |
127 | JToggleButton button; |
128 | |
129 | button = new HeavyToggleButton(imgPrism, false); |
130 | button.setToolTipText(resGui.getString("TT-Prism")); |
131 | button.setActionCommand("Prism"); |
132 | button.addActionListener(this); |
133 | button.setMargin(margin); |
134 | group.add(button); |
135 | tools.add(button); |
136 | |
137 | button = new HeavyToggleButton(imgDPrism, false); |
138 | button.setToolTipText(resGui.getString("TT-DPrism")); |
139 | button.setActionCommand("DPrism"); |
140 | button.addActionListener(this); |
141 | button.setMargin(margin); |
142 | group.add(button); |
143 | tools.add(button); |
144 | |
145 | button = new HeavyToggleButton(imgRevol, false); |
146 | button.setToolTipText(resGui.getString("TT-Revol")); |
147 | button.setActionCommand("Revol"); |
148 | button.addActionListener(this); |
149 | button.setMargin(margin); |
150 | group.add(button); |
151 | tools.add(button); |
152 | |
153 | button = new HeavyToggleButton(imgPipe, false); |
154 | button.setToolTipText(resGui.getString("TT-Pipe")); |
155 | button.setActionCommand("Pipe"); |
156 | button.addActionListener(this); |
157 | button.setMargin(margin); |
158 | group.add(button); |
159 | tools.add(button); |
160 | |
161 | button = new HeavyToggleButton(imgRib, false); |
162 | button.setToolTipText(resGui.getString("TT-Rib")); |
163 | button.setActionCommand("Rib"); |
164 | button.addActionListener(this); |
165 | button.setMargin(margin); |
166 | group.add(button); |
167 | tools.add(button); |
168 | |
169 | button = new HeavyToggleButton(imgGlue, false); |
170 | button.setToolTipText(resGui.getString("TT-Glue")); |
171 | button.setActionCommand("Glue"); |
172 | button.addActionListener(this); |
173 | button.setMargin(margin); |
174 | group.add(button); |
175 | tools.add(button); |
176 | |
177 | button = new HeavyToggleButton(imgSplit, false); |
178 | button.setToolTipText(resGui.getString("TT-Split")); |
179 | button.setActionCommand("Split"); |
180 | button.addActionListener(this); |
181 | button.setMargin(margin); |
182 | group.add(button); |
183 | tools.add(button); |
184 | |
185 | button = new HeavyToggleButton(imgThick, false); |
186 | button.setToolTipText(resGui.getString("TT-Thick")); |
187 | button.setActionCommand("Thick"); |
188 | button.addActionListener(this); |
189 | button.setMargin(margin); |
190 | group.add(button); |
191 | tools.add(button); |
192 | |
193 | button = new HeavyToggleButton(imgOffset, false); |
194 | button.setToolTipText(resGui.getString("TT-Offset")); |
195 | button.setActionCommand("Offset"); |
196 | button.addActionListener(this); |
197 | button.setMargin(margin); |
198 | group.add(button); |
199 | tools.add(button); |
200 | |
201 | return tools; |
202 | } |
203 | |
204 | |
205 | //=======================================================================// |
206 | // Actions // |
207 | //=======================================================================// |
208 | public void postProcess(TCollection_AsciiString message, String title) |
209 | { |
210 | myView3d.getViewPort().FitAll(); |
211 | |
212 | String text = message.ToCString().GetValue(); |
213 | text += "\n-------------------- END ----------------------\n"; |
214 | |
215 | traceMessage(text, title); |
216 | } |
217 | |
218 | //=======================================================================// |
219 | // Tests |
220 | //=======================================================================// |
221 | public void onPrism() |
222 | { |
223 | TCollection_AsciiString message = new TCollection_AsciiString(); |
224 | SamplesTopologyPackage.LocalPrism(myAISContext, message); |
225 | |
226 | postProcess(message, resGui.getString("Dlg-Prism")); |
227 | } |
228 | |
229 | |
230 | //=======================================================================// |
231 | public void onDPrism() |
232 | { |
233 | TCollection_AsciiString message = new TCollection_AsciiString(); |
234 | SamplesTopologyPackage.LocalDPrism(myAISContext, message); |
235 | |
236 | postProcess(message, resGui.getString("Dlg-DPrism")); |
237 | } |
238 | |
239 | |
240 | //=======================================================================// |
241 | public void onRevol() |
242 | { |
243 | TCollection_AsciiString message = new TCollection_AsciiString(); |
244 | SamplesTopologyPackage.LocalRevol(myAISContext, message); |
245 | |
246 | postProcess(message, resGui.getString("Dlg-Revol")); |
247 | } |
248 | |
249 | |
250 | //=======================================================================// |
251 | public void onPipe() |
252 | { |
253 | TCollection_AsciiString message = new TCollection_AsciiString(); |
254 | SamplesTopologyPackage.LocalPipe(myAISContext, message); |
255 | |
256 | postProcess(message, resGui.getString("Dlg-Pipe")); |
257 | } |
258 | |
259 | |
260 | //=======================================================================// |
261 | public void onRib() |
262 | { |
263 | TCollection_AsciiString message = new TCollection_AsciiString(); |
264 | SamplesTopologyPackage.Rib(myAISContext, message); |
265 | |
266 | postProcess(message, resGui.getString("Dlg-Rib")); |
267 | } |
268 | |
269 | |
270 | //=======================================================================// |
271 | public void onGlue() |
272 | { |
273 | TCollection_AsciiString message = new TCollection_AsciiString(); |
274 | SamplesTopologyPackage.Glue(myAISContext, message); |
275 | |
276 | postProcess(message, resGui.getString("Dlg-Glue")); |
277 | } |
278 | |
279 | |
280 | //=======================================================================// |
281 | public void onSplit() |
282 | { |
283 | TCollection_AsciiString message = new TCollection_AsciiString(); |
284 | SamplesTopologyPackage.Split(myAISContext, message); |
285 | |
286 | postProcess(message, resGui.getString("Dlg-Split")); |
287 | } |
288 | |
289 | |
290 | //=======================================================================// |
291 | public void onThick() |
292 | { |
293 | TCollection_AsciiString message = new TCollection_AsciiString(); |
294 | SamplesTopologyPackage.Thick(myAISContext, message); |
295 | |
296 | postProcess(message, resGui.getString("Dlg-Thick")); |
297 | } |
298 | |
299 | |
300 | //=======================================================================// |
301 | public void onOffset() |
302 | { |
303 | TCollection_AsciiString message = new TCollection_AsciiString(); |
304 | SamplesTopologyPackage.Offset(myAISContext, message); |
305 | |
306 | postProcess(message, resGui.getString("Dlg-Offset")); |
307 | } |
308 | |
309 | |
310 | //=======================================================================// |
311 | // ActionListener interface |
312 | //=======================================================================// |
313 | public void actionPerformed(ActionEvent e) |
314 | { |
315 | String command = e.getActionCommand(); |
316 | |
317 | if (command.equals("Prism")) onPrism(); |
318 | else if (command.equals("DPrism")) onDPrism(); |
319 | else if (command.equals("Revol")) onRevol(); |
320 | else if (command.equals("Pipe")) onPipe(); |
321 | else if (command.equals("Rib")) onRib(); |
322 | else if (command.equals("Glue")) onGlue(); |
323 | else if (command.equals("Split")) onSplit(); |
324 | else if (command.equals("Thick")) onThick(); |
325 | else if (command.equals("Offset")) onOffset(); |
326 | } |
327 | |
328 | //=======================================================================// |
329 | // MouseListener interface |
330 | //=======================================================================// |
331 | public void mouseClicked(MouseEvent e) |
332 | { |
333 | } |
334 | |
335 | public void mousePressed(MouseEvent e) |
336 | { |
337 | if (SwingUtilities.isLeftMouseButton(e)) |
338 | { |
339 | startX = e.getX(); |
340 | startY = e.getY(); |
341 | Object src = e.getSource(); |
342 | |
343 | if (src == myView3d) |
344 | { |
345 | V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView(); |
346 | if (view3d != null) |
347 | myAISContext.MoveTo(startX, startY, view3d); |
348 | } |
349 | } |
350 | else if (SwingUtilities.isRightMouseButton(e)) |
351 | { |
352 | if (e.getSource() == myView3d) |
353 | { |
354 | PopupMenu defPopup = myView3d.getDefaultPopup(); |
355 | myView3d.add(defPopup); |
356 | defPopup.show(myView3d, e.getX(), e.getY() + 30); |
357 | } |
358 | } |
359 | } |
360 | |
361 | public void mouseReleased(MouseEvent e) |
362 | { |
363 | if (SwingUtilities.isLeftMouseButton(e)) |
364 | { |
365 | Object src = e.getSource(); |
366 | |
367 | if (Dragged) |
368 | { |
369 | if (src == myView3d) |
370 | { |
371 | V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView(); |
372 | if (view3d != null) |
373 | { |
374 | if (e.isShiftDown()) |
375 | myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true); |
376 | else |
377 | myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true); |
378 | } |
379 | } |
380 | } |
381 | else |
382 | { |
383 | if (src == myView3d) |
384 | { |
385 | if (e.isShiftDown()) |
386 | myAISContext.ShiftSelect(true); |
387 | else |
388 | myAISContext.Select(true); |
389 | } |
390 | } |
391 | Dragged = false; |
392 | } |
393 | } |
394 | |
395 | public void mouseEntered(MouseEvent e) |
396 | { |
397 | } |
398 | |
399 | public void mouseExited(MouseEvent e) |
400 | { |
401 | } |
402 | |
403 | //=======================================================================// |
404 | // MouseMotionListener interface |
405 | //=======================================================================// |
406 | public void mouseDragged(MouseEvent e) |
407 | { |
408 | if (SwingUtilities.isLeftMouseButton(e) && |
409 | e.getSource() == myView3d) |
410 | Dragged = true; |
411 | } |
412 | |
413 | public void mouseMoved(MouseEvent e) |
414 | { |
415 | Object src = e.getSource(); |
416 | |
417 | if (src == myView3d) |
418 | { |
419 | V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView(); |
420 | if (myAISContext != null && view3d != null) |
421 | myAISContext.MoveTo(e.getX(), e.getY(), view3d); |
422 | } |
423 | } |
424 | |
425 | |
426 | } |
427 | |