2 //Title: OpenCASCADE Samples
4 //Copyright: Copyright (c) 1999
5 //Author: User Interface Group (Nizhny Novgorod)
6 //Company: Matra Datavision
11 import java.awt.event.*;
14 import jcas.Standard_CString;
15 import jcas.Standard_Integer;
16 import CASCADESamplesJni.*;
17 import SampleAISDisplayModeJni.*;
20 public class SampleAISDisplayModePanel extends SamplePanel
21 implements ActionListener,
25 //-----------------------------------------------------------//
27 //-----------------------------------------------------------//
28 static protected ResourceBundle resGui =
29 ResourceBundle.getBundle("SampleAISDisplayMode");
31 static private ImageIcon imgBox = new ImageIcon(resGui.getString("Icon-Box"));
32 static private ImageIcon imgSphere = new ImageIcon(resGui.getString("Icon-Sphere"));
33 static private ImageIcon imgCylinder = new ImageIcon(resGui.getString("Icon-Cylinder"));
34 static private ImageIcon imgWireframe = new ImageIcon(resGui.getString("Icon-Wireframe"));
35 static private ImageIcon imgShading = new ImageIcon(resGui.getString("Icon-Shading"));
36 static private ImageIcon imgIsos = new ImageIcon(resGui.getString("Icon-Isos"));
37 static private ImageIcon imgEraseAll = new ImageIcon(resGui.getString("Icon-EraseAll"));
38 static private ImageIcon imgLight = new ImageIcon(resGui.getString("Icon-Light"));
40 private HTMLFrame myHtmlFrame = null;
42 //-----------------------------------------------------------//
44 //-----------------------------------------------------------//
45 private ViewPanel myView3d;
47 private static V3d_Viewer myViewer3d = null;
49 private static AIS_InteractiveContext myAISContext = null;
51 private int startX = 0, startY = 0;
52 private boolean Dragged = false;
55 //-----------------------------------------------------------//
57 //-----------------------------------------------------------//
58 private static final int CurAction3d_Nothing = 0;
59 private static final int CurAction3d_FirstPointLight = 1;
60 private static final int CurAction3d_SecondPointLight = 2;
62 private int myCurrentMode = CurAction3d_Nothing;
63 private V3d_View myView = null;
66 //-----------------------------------------------------------//
68 //-----------------------------------------------------------//
69 public static V3d_Viewer getViewer3d()
74 public static AIS_InteractiveContext getAISContext()
80 //=======================================================================//
82 //=======================================================================//
83 public SampleAISDisplayModePanel()
86 //------------------------------------------
87 myViewer3d.SetDefaultLights();
88 myViewer3d.SetLightOn();
90 SampleAISDisplayModePackage.InitContext(myAISContext);
93 //-----------------------------------------------------------------------//
94 public JPanel createViewPanel()
96 JPanel mainPanel = new JPanel();
97 mainPanel.setLayout(new GridBagLayout());
98 mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
102 //------------------------------------------
103 myViewer3d = SampleAISDisplayModePackage.CreateViewer("AISDisplayMode");
105 myView3d = new ViewPanel() {
106 public ViewCanvas createViewPort()
108 return new CASCADEView3d(SampleAISDisplayModePanel.getViewer3d()) {
109 public void setWindow3d(V3d_View view, int hiwin, int lowin) {
110 SampleAISDisplayModePackage.SetWindow(view, hiwin, lowin);
116 myView3d.addMouseListener(this);
117 myView3d.addMouseMotionListener(this);
121 //------------------------------------------
122 myAISContext = new AIS_InteractiveContext(myViewer3d);
124 AttributesPanel attrib = new AttributesPanel(this, myAISContext);
128 //------------------------------------------
129 mainPanel.add(attrib, new GridBagConstraints(0, 0, 1, 1, 0.0, 1.0,
130 GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL,
131 new Insets(0, 0, 0, 0), 0, 0));
133 mainPanel.add(myView3d, new GridBagConstraints(1, 0, 1, 1, 1.0, 1.0,
134 GridBagConstraints.CENTER, GridBagConstraints.BOTH,
135 new Insets(0, 0, 0, 0), 0, 0));
140 //-----------------------------------------------------------------------//
141 public Component createToolbar()
143 JToolBar tools = (JToolBar) super.createToolbar();
145 Insets margin = new Insets(1, 1, 1, 1);
148 button = new HeavyButton(imgBox);
149 button.setToolTipText(resGui.getString("Help-Box"));
150 button.setActionCommand("Box");
151 button.addActionListener(this);
152 button.setMargin(margin);
155 button = new HeavyButton(imgSphere);
156 button.setToolTipText(resGui.getString("Help-Sphere"));
157 button.setActionCommand("Sphere");
158 button.addActionListener(this);
159 button.setMargin(margin);
162 button = new HeavyButton(imgCylinder);
163 button.setToolTipText(resGui.getString("Help-Cylinder"));
164 button.setActionCommand("Cylinder");
165 button.addActionListener(this);
166 button.setMargin(margin);
169 tools.addSeparator();;
171 button = new HeavyButton(imgWireframe);
172 button.setToolTipText(resGui.getString("Help-Wireframe"));
173 button.setActionCommand("Wireframe");
174 button.addActionListener(this);
175 button.setMargin(margin);
178 button = new HeavyButton(imgShading);
179 button.setToolTipText(resGui.getString("Help-Shading"));
180 button.setActionCommand("Shading");
181 button.addActionListener(this);
182 button.setMargin(margin);
185 button = new HeavyButton(imgIsos);
186 button.setToolTipText(resGui.getString("Help-Isos"));
187 button.setActionCommand("Isos");
188 button.addActionListener(this);
189 button.setMargin(margin);
192 button = new HeavyButton(imgEraseAll);
193 button.setToolTipText(resGui.getString("Help-EraseAll"));
194 button.setActionCommand("EraseAll");
195 button.addActionListener(this);
196 button.setMargin(margin);
199 tools.addSeparator();;
201 button = new HeavyButton(imgLight);
202 button.setToolTipText(resGui.getString("Help-Light"));
203 button.setActionCommand("Light");
204 button.addActionListener(this);
205 button.setMargin(margin);
212 //=======================================================================//
214 //=======================================================================//
217 TCollection_AsciiString message = new TCollection_AsciiString();
218 SampleAISDisplayModePackage.DisplayBox(myAISContext, message);
220 traceMessage(message.ToCString().GetValue(), resGui.getString("Dlg-Box"));
223 //=======================================================================//
224 public void onSphere()
226 TCollection_AsciiString message = new TCollection_AsciiString();
227 SampleAISDisplayModePackage.DisplaySphere(myAISContext, message);
229 traceMessage(message.ToCString().GetValue(), resGui.getString("Dlg-Sphere"));
232 //=======================================================================//
233 public void onCylinder()
235 TCollection_AsciiString message = new TCollection_AsciiString();
236 SampleAISDisplayModePackage.DisplayCylinder(myAISContext, message);
238 traceMessage(message.ToCString().GetValue(), resGui.getString("Dlg-Cylinder"));
241 //=======================================================================//
242 public void onEraseAll()
244 TCollection_AsciiString message = new TCollection_AsciiString();
245 SampleAISDisplayModePackage.EraseAll(myAISContext, message);
247 traceMessage(message.ToCString().GetValue(), resGui.getString("Dlg-EraseAll"));
250 //=======================================================================//
251 public void onWireframe()
253 TCollection_AsciiString message = new TCollection_AsciiString();
254 SampleAISDisplayModePackage.SetDisplayMode(myAISContext, (short)0, message);
256 traceMessage(message.ToCString().GetValue(), resGui.getString("Dlg-Wireframe"));
259 //=======================================================================//
260 public void onShading()
262 TCollection_AsciiString message = new TCollection_AsciiString();
263 SampleAISDisplayModePackage.SetDisplayMode(myAISContext, (short)1, message);
265 traceMessage(message.ToCString().GetValue(), resGui.getString("Dlg-Shading"));
268 //=======================================================================//
271 Standard_Integer u = new Standard_Integer();
272 Standard_Integer v = new Standard_Integer();
273 SampleAISDisplayModePackage.GetIsosNumber(myAISContext,u,v);
275 IsosDlg aDlg = new IsosDlg(SamplesStarter.getFrame(), u.GetValue(), v.GetValue());
276 Position.centerWindow(aDlg);
281 TCollection_AsciiString message = new TCollection_AsciiString();
282 SampleAISDisplayModePackage.SetIsosNumber(myAISContext,
283 aDlg.getUValue(), aDlg.getVValue(), message);
285 traceMessage(message.ToCString().GetValue(), resGui.getString("Dlg-Shading"));
289 //=======================================================================//
290 public void onLight()
292 myView = ((CASCADEView3d) myView3d.getViewPort()).getView();
294 SampleAISDisplayModePackage.CreateLight(myAISContext);
296 myCurrentMode = CurAction3d_FirstPointLight;
297 SamplesStarter.put_info("Pick a first point");
300 //=======================================================================//
301 // ActionListener interface
302 //=======================================================================//
303 public void actionPerformed(ActionEvent e)
305 String command = e.getActionCommand();
307 if (command.equals("Box")) onBox();
308 else if (command.equals("Sphere")) onSphere();
309 else if (command.equals("Cylinder")) onCylinder();
310 else if (command.equals("Wireframe")) onWireframe();
311 else if (command.equals("Shading")) onShading();
312 else if (command.equals("Isos")) onIsos();
313 else if (command.equals("EraseAll")) onEraseAll();
314 else if (command.equals("Light")) onLight();
317 //=======================================================================//
318 // MouseListener interface
319 //=======================================================================//
320 public void mouseClicked(MouseEvent e)
324 public void mousePressed(MouseEvent e)
326 if (SwingUtilities.isLeftMouseButton(e))
330 Object src = e.getSource();
332 switch (myCurrentMode)
334 case CurAction3d_FirstPointLight:
335 SampleAISDisplayModePackage.SetFirstPointOfLight(myAISContext, myView,
337 myCurrentMode = CurAction3d_SecondPointLight;
338 SamplesStarter.put_info("Pick the second point");
341 case CurAction3d_SecondPointLight:
342 SampleAISDisplayModePackage.SetSecondPointOfLight(myAISContext);
343 myCurrentMode = CurAction3d_Nothing;
344 SamplesStarter.put_info("Ready");
347 case CurAction3d_Nothing:
350 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
352 myAISContext.MoveTo(startX, startY, view3d);
357 else if (SwingUtilities.isRightMouseButton(e))
359 if (e.getSource() == myView3d)
361 PopupMenu defPopup = myView3d.getDefaultPopup();
362 myView3d.add(defPopup);
363 defPopup.show(myView3d, e.getX(), e.getY() + 30);
368 public void mouseReleased(MouseEvent e)
370 if (SwingUtilities.isLeftMouseButton(e) &&
371 (myCurrentMode == CurAction3d_Nothing))
373 Object src = e.getSource();
379 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
383 myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true);
385 myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true);
394 myAISContext.ShiftSelect(true);
396 myAISContext.Select(true);
403 public void mouseEntered(MouseEvent e)
407 public void mouseExited(MouseEvent e)
411 //=======================================================================//
412 // MouseMotionListener interface
413 //=======================================================================//
414 public void mouseDragged(MouseEvent e)
416 if (SwingUtilities.isLeftMouseButton(e) &&
417 (myCurrentMode == CurAction3d_Nothing) &&
418 (e.getSource() == myView3d))
422 public void mouseMoved(MouseEvent e)
424 switch (myCurrentMode)
426 case CurAction3d_SecondPointLight:
427 SampleAISDisplayModePackage.MoveSecondPointOfLight(myAISContext, myView,
431 case CurAction3d_Nothing:
432 if (e.getSource() == myView3d)
434 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
435 if (myAISContext != null && view3d != null)
436 myAISContext.MoveTo(e.getX(), e.getY(), view3d);