Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / java / java / SampleTopologyBuildingPanel.java
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 SampleTopologyBuildingPanel extends SamplePanel
20                                  implements ActionListener,
21                                             MouseListener,
22                                             MouseMotionListener
23 {
24   //-----------------------------------------------------------//
25   // Resources
26   //-----------------------------------------------------------//
27   static protected ResourceBundle resGui =
28          ResourceBundle.getBundle("SampleTopologyBuilding");
29
30   static protected ImageIcon imgVertex = new ImageIcon(resGui.getString("Icon-Vertex"));
31   static protected ImageIcon imgEdge = new ImageIcon(resGui.getString("Icon-Edge"));
32   static protected ImageIcon imgWire = new ImageIcon(resGui.getString("Icon-Wire"));
33   static protected ImageIcon imgFace = new ImageIcon(resGui.getString("Icon-Face"));
34   static protected ImageIcon imgShell = new ImageIcon(resGui.getString("Icon-Shell"));
35   static protected ImageIcon imgCompound = new ImageIcon(resGui.getString("Icon-Compound"));
36   static protected ImageIcon imgSewing = new ImageIcon(resGui.getString("Icon-Sewing"));
37   static protected ImageIcon imgBuilder = new ImageIcon(resGui.getString("Icon-Builder"));
38   static protected ImageIcon imgGeometry = new ImageIcon(resGui.getString("Icon-Geometry"));
39   static protected ImageIcon imgExplorer = new ImageIcon(resGui.getString("Icon-Explorer"));
40
41
42   //-----------------------------------------------------------//
43   // Components
44   //-----------------------------------------------------------//
45   private ViewPanel myView3d;
46
47   private static V3d_Viewer myViewer3d = null;
48
49   private static AIS_InteractiveContext myAISContext = null;
50
51   private int startX = 0, startY = 0;
52   private boolean Dragged = false;
53
54
55   //-----------------------------------------------------------//
56   // External access
57   //-----------------------------------------------------------//
58   public static V3d_Viewer getViewer3d()
59   {
60     return myViewer3d;
61   }
62
63   public static AIS_InteractiveContext getAISContext()
64   {
65     return myAISContext;
66   }
67
68
69 //=======================================================================//
70 //                             Constructor                               //
71 //=======================================================================//
72   public SampleTopologyBuildingPanel()
73   {
74     // 3D Initialization
75     //------------------------------------------
76     myViewer3d.SetDefaultLights();
77     myViewer3d.SetLightOn();
78
79     if (myAISContext == null)
80     {
81       myAISContext = new AIS_InteractiveContext(myViewer3d);
82       myAISContext.SetDisplayMode(AIS_DisplayMode.AIS_Shaded, false);
83     }
84   }
85
86 //-----------------------------------------------------------------------//
87   public JPanel createViewPanel()
88   {
89     JPanel mainPanel = new JPanel();
90     mainPanel.setLayout(new GridBagLayout());
91     mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
92
93     // Viewer 3D
94     //------------------------------------------
95     myViewer3d = SamplesTopologyPackage.CreateViewer("TopologyBuilding");
96
97     myView3d = new ViewPanel() {
98         public ViewCanvas createViewPort()
99         {
100           return new CASCADEView3d(SampleTopologyBuildingPanel.getViewer3d()) {
101               public void setWindow3d(V3d_View view, int hiwin, int lowin) {
102                 SamplesTopologyPackage.SetWindow(view, hiwin, lowin);
103               }
104           };
105         }
106     };
107    
108     myView3d.addMouseListener(this);
109     myView3d.addMouseMotionListener(this);
110
111
112     // Layout
113     //------------------------------------------
114     mainPanel.add(myView3d, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
115             GridBagConstraints.CENTER, GridBagConstraints.BOTH,
116             new Insets(0, 0, 0, 0), 0, 0));
117
118     return mainPanel;
119   }
120
121 //-----------------------------------------------------------------------//
122   public Component createToolbar()
123   {
124     JToolBar tools = (JToolBar) super.createToolbar();
125
126     ButtonGroup group = new ButtonGroup();
127     Insets margin = new Insets(1, 1, 1, 1);
128     JToggleButton button;
129
130     button = new HeavyToggleButton(imgVertex, false);
131     button.setToolTipText(resGui.getString("TT-Vertex"));
132     button.setActionCommand("Vertex");
133     button.addActionListener(this);
134     button.setMargin(margin);
135     group.add(button);
136     tools.add(button);
137
138     button = new HeavyToggleButton(imgEdge, false);
139     button.setToolTipText(resGui.getString("TT-Edge"));
140     button.setActionCommand("Edge");
141     button.addActionListener(this);
142     button.setMargin(margin);
143     group.add(button);
144     tools.add(button);
145
146     button = new HeavyToggleButton(imgWire, false);
147     button.setToolTipText(resGui.getString("TT-Wire"));
148     button.setActionCommand("Wire");
149     button.addActionListener(this);
150     button.setMargin(margin);
151     group.add(button);
152     tools.add(button);
153
154     button = new HeavyToggleButton(imgFace, false);
155     button.setToolTipText(resGui.getString("TT-Face"));
156     button.setActionCommand("Face");
157     button.addActionListener(this);
158     button.setMargin(margin);
159     group.add(button);
160     tools.add(button);
161
162     button = new HeavyToggleButton(imgShell, false);
163     button.setToolTipText(resGui.getString("TT-Shell"));
164     button.setActionCommand("Shell");
165     button.addActionListener(this);
166     button.setMargin(margin);
167     group.add(button);
168     tools.add(button);
169
170     button = new HeavyToggleButton(imgCompound, false);
171     button.setToolTipText(resGui.getString("TT-Compound"));
172     button.setActionCommand("Compound");
173     button.addActionListener(this);
174     button.setMargin(margin);
175     group.add(button);
176     tools.add(button);
177
178     tools.addSeparator();;
179
180     button = new HeavyToggleButton(imgSewing, false);
181     button.setToolTipText(resGui.getString("TT-Sewing"));
182     button.setActionCommand("Sewing");
183     button.addActionListener(this);
184     button.setMargin(margin);
185     group.add(button);
186     tools.add(button);
187
188     button = new HeavyToggleButton(imgBuilder, false);
189     button.setToolTipText(resGui.getString("TT-Builder"));
190     button.setActionCommand("Builder");
191     button.addActionListener(this);
192     button.setMargin(margin);
193     group.add(button);
194     tools.add(button);
195
196     button = new HeavyToggleButton(imgGeometry, false);
197     button.setToolTipText(resGui.getString("TT-Geometry"));
198     button.setActionCommand("Geometry");
199     button.addActionListener(this);
200     button.setMargin(margin);
201     group.add(button);
202     tools.add(button);
203
204     button = new HeavyToggleButton(imgExplorer, false);
205     button.setToolTipText(resGui.getString("TT-Explorer"));
206     button.setActionCommand("Explorer");
207     button.addActionListener(this);
208     button.setMargin(margin);
209     group.add(button);
210     tools.add(button);
211
212     return tools;
213   }
214
215
216 //=======================================================================//
217 //                              Actions                                  //
218 //=======================================================================//
219   public void postProcess(TCollection_AsciiString message, String title)
220   {
221     myView3d.getViewPort().FitAll();
222
223     String text = message.ToCString().GetValue();
224     text += "\n-------------------- END ----------------------\n";
225
226     traceMessage(text, title);
227   }
228
229 //=======================================================================//
230 // Tests
231 //=======================================================================//
232   public void onVertex()
233   {
234     TCollection_AsciiString message = new TCollection_AsciiString();
235     SamplesTopologyPackage.Vertex(myAISContext, message);
236
237     postProcess(message, resGui.getString("Dlg-Vertex"));
238   }
239
240
241 //=======================================================================//
242   public void onEdge()
243   {
244     TCollection_AsciiString message = new TCollection_AsciiString();
245     SamplesTopologyPackage.Edge(myAISContext, message);
246
247     postProcess(message, resGui.getString("Dlg-Edge"));
248   }
249
250
251 //=======================================================================//
252   public void onWire()
253   {
254     TCollection_AsciiString message = new TCollection_AsciiString();
255     SamplesTopologyPackage.Wire(myAISContext, message);
256
257     postProcess(message, resGui.getString("Dlg-Wire"));
258   }
259
260
261 //=======================================================================//
262   public void onFace()
263   {
264     TCollection_AsciiString message = new TCollection_AsciiString();
265     SamplesTopologyPackage.Face(myAISContext, message);
266
267     postProcess(message, resGui.getString("Dlg-Face"));
268   }
269
270
271 //=======================================================================//
272   public void onShell()
273   {
274     TCollection_AsciiString message = new TCollection_AsciiString();
275     SamplesTopologyPackage.Shell(myAISContext, message);
276
277     postProcess(message, resGui.getString("Dlg-Shell"));
278   }
279
280
281 //=======================================================================//
282   public void onCompound()
283   {
284     TCollection_AsciiString message = new TCollection_AsciiString();
285     SamplesTopologyPackage.Compound(myAISContext, message);
286
287     postProcess(message, resGui.getString("Dlg-Compound"));
288   }
289
290
291 //=======================================================================//
292   public void onSewing()
293   {
294     TCollection_AsciiString message = new TCollection_AsciiString();
295     SamplesTopologyPackage.Sewing(myAISContext, message);
296
297     postProcess(message, resGui.getString("Dlg-Sewing"));
298   }
299
300
301 //=======================================================================//
302   public void onBuilder()
303   {
304     TCollection_AsciiString message = new TCollection_AsciiString();
305     SamplesTopologyPackage.Builder(myAISContext, message);
306
307     postProcess(message, resGui.getString("Dlg-Builder"));
308   }
309
310
311 //=======================================================================//
312   public void onGeometry()
313   {
314     TCollection_AsciiString message = new TCollection_AsciiString();
315     SamplesTopologyPackage.Geometry(myAISContext, message);
316
317     postProcess(message, resGui.getString("Dlg-Geometry"));
318   }
319
320
321 //=======================================================================//
322   public void onExplorer()
323   {
324     TCollection_AsciiString message = new TCollection_AsciiString();
325     SamplesTopologyPackage.Explorer(myAISContext, message);
326
327     postProcess(message, resGui.getString("Dlg-Explorer"));
328   }
329
330
331 //=======================================================================//
332 // ActionListener interface
333 //=======================================================================//
334   public void actionPerformed(ActionEvent e)
335   {
336     String command = e.getActionCommand();
337
338     if (command.equals("Vertex")) onVertex();
339     else if (command.equals("Edge")) onEdge();
340     else if (command.equals("Wire")) onWire();
341     else if (command.equals("Face")) onFace();
342     else if (command.equals("Shell")) onShell();
343     else if (command.equals("Compound")) onCompound();
344     else if (command.equals("Sewing")) onSewing();
345     else if (command.equals("Builder")) onBuilder();
346     else if (command.equals("Geometry")) onGeometry();
347     else if (command.equals("Explorer")) onExplorer();
348   }
349
350 //=======================================================================//
351 // MouseListener interface
352 //=======================================================================//
353   public void mouseClicked(MouseEvent e)
354   {
355   }
356
357   public void mousePressed(MouseEvent e)
358   {
359     if (SwingUtilities.isLeftMouseButton(e))
360     {
361       startX = e.getX();
362       startY = e.getY();
363       Object src = e.getSource();
364
365       if (src == myView3d)
366       {
367         V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
368         if (view3d != null)
369           myAISContext.MoveTo(startX, startY, view3d);
370       }
371     }
372     else if (SwingUtilities.isRightMouseButton(e))
373     {
374       if (e.getSource() == myView3d)
375       {
376         PopupMenu defPopup = myView3d.getDefaultPopup();
377         myView3d.add(defPopup);
378         defPopup.show(myView3d, e.getX(), e.getY() + 30);
379       }
380     }
381   }
382
383   public void mouseReleased(MouseEvent e)
384   {
385     if (SwingUtilities.isLeftMouseButton(e))
386     {
387       Object src = e.getSource();
388
389       if (Dragged)
390       {
391         if (src == myView3d)
392         {
393           V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
394           if (view3d != null)
395           {
396             if (e.isShiftDown())
397               myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true);
398             else
399               myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true);
400           }
401         }
402       }
403       else
404       {
405         if (src == myView3d)
406         {
407           if (e.isShiftDown())
408             myAISContext.ShiftSelect(true);
409           else
410             myAISContext.Select(true);
411         }
412       }
413       Dragged = false;
414     }
415   }
416
417   public void mouseEntered(MouseEvent e)
418   {
419   }
420
421   public void mouseExited(MouseEvent e)
422   {
423   }
424
425 //=======================================================================//
426 // MouseMotionListener interface
427 //=======================================================================//
428   public void mouseDragged(MouseEvent e)
429   {
430     if (SwingUtilities.isLeftMouseButton(e) &&
431         e.getSource() == myView3d)
432       Dragged = true;
433   }
434
435   public void mouseMoved(MouseEvent e)
436   {
437     Object src = e.getSource();
438
439     if (src == myView3d)
440     {
441       V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
442       if (myAISContext != null && view3d != null)
443         myAISContext.MoveTo(e.getX(), e.getY(), view3d);
444     }
445   }
446
447
448 }
449