Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / java / java / SampleTopologyAnalysisPanel.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 SampleTopologyAnalysisPanel extends SamplePanel
20                                  implements ActionListener,
21                                             MouseListener,
22                                             MouseMotionListener
23 {
24   //-----------------------------------------------------------//
25   // Resources
26   //-----------------------------------------------------------//
27   static protected ResourceBundle resGui =
28          ResourceBundle.getBundle("SampleTopologyAnalysis");
29
30   static protected ImageIcon imgValid = new ImageIcon(resGui.getString("Icon-Valid"));
31   static protected ImageIcon imgLinear = new ImageIcon(resGui.getString("Icon-Linear"));
32   static protected ImageIcon imgSurface = new ImageIcon(resGui.getString("Icon-Surface"));
33   static protected ImageIcon imgVolume = new ImageIcon(resGui.getString("Icon-Volume"));
34
35
36   //-----------------------------------------------------------//
37   // Components
38   //-----------------------------------------------------------//
39   private ViewPanel myView3d;
40
41   private static V3d_Viewer myViewer3d = null;
42
43   private static AIS_InteractiveContext myAISContext = null;
44
45   private int startX = 0, startY = 0;
46   private boolean Dragged = false;
47
48
49   //-----------------------------------------------------------//
50   // External access
51   //-----------------------------------------------------------//
52   public static V3d_Viewer getViewer3d()
53   {
54     return myViewer3d;
55   }
56
57   public static AIS_InteractiveContext getAISContext()
58   {
59     return myAISContext;
60   }
61
62
63 //=======================================================================//
64 //                             Constructor                               //
65 //=======================================================================//
66   public SampleTopologyAnalysisPanel()
67   {
68     // 3D Initialization
69     //------------------------------------------
70     myViewer3d.SetDefaultLights();
71     myViewer3d.SetLightOn();
72
73     if (myAISContext == null)
74     {
75       myAISContext = new AIS_InteractiveContext(myViewer3d);
76       myAISContext.SetDisplayMode(AIS_DisplayMode.AIS_Shaded, false);
77     }
78   }
79
80 //-----------------------------------------------------------------------//
81   public JPanel createViewPanel()
82   {
83     JPanel mainPanel = new JPanel();
84     mainPanel.setLayout(new GridBagLayout());
85     mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
86
87     // Viewer 3D
88     //------------------------------------------
89     myViewer3d = SamplesTopologyPackage.CreateViewer("TopologyAnalysis");
90
91     myView3d = new ViewPanel() {
92         public ViewCanvas createViewPort()
93         {
94           return new CASCADEView3d(SampleTopologyAnalysisPanel.getViewer3d()) {
95               public void setWindow3d(V3d_View view, int hiwin, int lowin) {
96                 SamplesTopologyPackage.SetWindow(view, hiwin, lowin);
97               }
98           };
99         }
100     };
101    
102     myView3d.addMouseListener(this);
103     myView3d.addMouseMotionListener(this);
104
105
106     // Layout
107     //------------------------------------------
108     mainPanel.add(myView3d, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
109             GridBagConstraints.CENTER, GridBagConstraints.BOTH,
110             new Insets(0, 0, 0, 0), 0, 0));
111
112     return mainPanel;
113   }
114
115 //-----------------------------------------------------------------------//
116   public Component createToolbar()
117   {
118     JToolBar tools = (JToolBar) super.createToolbar();
119
120     ButtonGroup group = new ButtonGroup();
121     Insets margin = new Insets(1, 1, 1, 1);
122     JButton button;
123
124     button = new HeavyButton(imgValid);
125     button.setToolTipText(resGui.getString("TT-Valid"));
126     button.setActionCommand("Valid");
127     button.addActionListener(this);
128     button.setMargin(margin);
129     tools.add(button);
130
131     tools.addSeparator();;
132
133     button = new HeavyButton(imgLinear);
134     button.setToolTipText(resGui.getString("TT-Linear"));
135     button.setActionCommand("Linear");
136     button.addActionListener(this);
137     button.setMargin(margin);
138     tools.add(button);
139
140     button = new HeavyButton(imgSurface);
141     button.setToolTipText(resGui.getString("TT-Surface"));
142     button.setActionCommand("Surface");
143     button.addActionListener(this);
144     button.setMargin(margin);
145     tools.add(button);
146
147     button = new HeavyButton(imgVolume);
148     button.setToolTipText(resGui.getString("TT-Volume"));
149     button.setActionCommand("Volume");
150     button.addActionListener(this);
151     button.setMargin(margin);
152     tools.add(button);
153
154     return tools;
155   }
156
157
158 //=======================================================================//
159 //                              Actions                                  //
160 //=======================================================================//
161   public void postProcess(TCollection_AsciiString message, String title)
162   {
163     myView3d.getViewPort().FitAll();
164
165     String text = message.ToCString().GetValue();
166     text += "\n-------------------- END ----------------------\n";
167
168     traceMessage(text, title);
169   }
170
171 //=======================================================================//
172 // Tests
173 //=======================================================================//
174   public void onValid()
175   {
176     TCollection_AsciiString message = new TCollection_AsciiString();
177     TCollection_AsciiString result = new TCollection_AsciiString();
178     SamplesTopologyPackage.Validity(myAISContext, message, result);
179
180     postProcess(message, resGui.getString("Dlg-Valid"));
181
182     JOptionPane.showMessageDialog(this, result.ToCString().GetValue());
183   }
184
185
186 //=======================================================================//
187   public void onLinear()
188   {
189     TCollection_AsciiString message = new TCollection_AsciiString();
190     TCollection_AsciiString result = new TCollection_AsciiString();
191     SamplesTopologyPackage.LinearProp(myAISContext, message, result);
192
193     postProcess(message, resGui.getString("Dlg-Linear"));
194
195     JOptionPane.showMessageDialog(this, result.ToCString().GetValue());
196   }
197
198
199 //=======================================================================//
200   public void onSurface()
201   {
202     TCollection_AsciiString message = new TCollection_AsciiString();
203     TCollection_AsciiString result = new TCollection_AsciiString();
204     SamplesTopologyPackage.SurfaceProp(myAISContext, message, result);
205
206     postProcess(message, resGui.getString("Dlg-Surface"));
207
208     JOptionPane.showMessageDialog(this, result.ToCString().GetValue());
209   }
210
211
212 //=======================================================================//
213   public void onVolume()
214   {
215     TCollection_AsciiString message = new TCollection_AsciiString();
216     TCollection_AsciiString result = new TCollection_AsciiString();
217     SamplesTopologyPackage.VolumeProp(myAISContext, message, result);
218
219     postProcess(message, resGui.getString("Dlg-Volume"));
220
221     JOptionPane.showMessageDialog(this, result.ToCString().GetValue());
222   }
223
224
225 //=======================================================================//
226 // ActionListener interface
227 //=======================================================================//
228   public void actionPerformed(ActionEvent e)
229   {
230     String command = e.getActionCommand();
231
232     if (command.equals("Valid")) onValid();
233     else if (command.equals("Linear")) onLinear();
234     else if (command.equals("Surface")) onSurface();
235     else if (command.equals("Volume")) onVolume();
236   }
237
238 //=======================================================================//
239 // MouseListener interface
240 //=======================================================================//
241   public void mouseClicked(MouseEvent e)
242   {
243   }
244
245   public void mousePressed(MouseEvent e)
246   {
247     if (SwingUtilities.isLeftMouseButton(e))
248     {
249       startX = e.getX();
250       startY = e.getY();
251       Object src = e.getSource();
252
253       if (src == myView3d)
254       {
255         V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
256         if (view3d != null)
257           myAISContext.MoveTo(startX, startY, view3d);
258       }
259     }
260     else if (SwingUtilities.isRightMouseButton(e))
261     {
262       if (e.getSource() == myView3d)
263       {
264         PopupMenu defPopup = myView3d.getDefaultPopup();
265         myView3d.add(defPopup);
266         defPopup.show(myView3d, e.getX(), e.getY() + 30);
267       }
268     }
269   }
270
271   public void mouseReleased(MouseEvent e)
272   {
273     if (SwingUtilities.isLeftMouseButton(e))
274     {
275       Object src = e.getSource();
276
277       if (Dragged)
278       {
279         if (src == myView3d)
280         {
281           V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
282           if (view3d != null)
283           {
284             if (e.isShiftDown())
285               myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true);
286             else
287               myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true);
288           }
289         }
290       }
291       else
292       {
293         if (src == myView3d)
294         {
295           if (e.isShiftDown())
296             myAISContext.ShiftSelect(true);
297           else
298             myAISContext.Select(true);
299         }
300       }
301       Dragged = false;
302     }
303   }
304
305   public void mouseEntered(MouseEvent e)
306   {
307   }
308
309   public void mouseExited(MouseEvent e)
310   {
311   }
312
313 //=======================================================================//
314 // MouseMotionListener interface
315 //=======================================================================//
316   public void mouseDragged(MouseEvent e)
317   {
318     if (SwingUtilities.isLeftMouseButton(e) &&
319         e.getSource() == myView3d)
320       Dragged = true;
321   }
322
323   public void mouseMoved(MouseEvent e)
324   {
325     Object src = e.getSource();
326
327     if (src == myView3d)
328     {
329       V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
330       if (myAISContext != null && view3d != null)
331         myAISContext.MoveTo(e.getX(), e.getY(), view3d);
332     }
333   }
334
335
336 }
337