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.*;
13 import java.util.ResourceBundle;
14 import jcas.Standard_CString;
15 import jcas.Standard_Integer;
16 import jcas.Standard_Real;
17 import CASCADESamplesJni.*;
18 import SampleDisplayAnimationJni.*;
21 public class SampleDisplayAnimationPanel extends SamplePanel
22 implements ActionListener,
26 //-----------------------------------------------------------//
28 //-----------------------------------------------------------//
29 static protected ResourceBundle resGui =
30 ResourceBundle.getBundle("SampleDisplayAnimation");
32 static private ImageIcon imgRestart = new ImageIcon(resGui.getString("Icon-Restart"));
33 static private ImageIcon imgStop = new ImageIcon(resGui.getString("Icon-Stop"));
34 static private ImageIcon imgThread = new ImageIcon(resGui.getString("Icon-Thread"));
35 static private ImageIcon imgDeviation = new ImageIcon(resGui.getString("Icon-Deviation"));
38 //-----------------------------------------------------------//
40 //-----------------------------------------------------------//
41 private ViewPanel myView3d;
43 private static V3d_Viewer myViewer3d = null;
45 private static AIS_InteractiveContext myAISContext = null;
46 private static boolean isDataLoaded = false;
47 private Timer myTimer;
49 private int startX = 0, startY = 0;
50 private boolean Dragged = false;
53 //-----------------------------------------------------------//
55 //-----------------------------------------------------------//
56 public static V3d_Viewer getViewer3d()
61 public static AIS_InteractiveContext getAISContext()
66 public static void setDataLoaded(boolean b)
73 //=======================================================================//
75 //=======================================================================//
76 public SampleDisplayAnimationPanel()
81 //------------------------------------------
82 myViewer3d.SetDefaultLights();
83 myViewer3d.SetLightOn();
85 // Moved to the createViewPanel() function
87 if (myAISContext == null)
88 myAISContext = new AIS_InteractiveContext(myViewer3d);
90 String path = System.getProperty("user.dir") +
91 System.getProperty("file.separator") +
92 "data" + System.getProperty("file.separator");
93 isDataLoaded = SampleDisplayAnimationPackage.LoadData(myAISContext,
94 new Standard_CString(path));
97 myTimer = new Timer(1, this);
98 myTimer.setRepeats(true);
101 //-----------------------------------------------------------------------//
102 public JPanel createViewPanel()
104 JPanel mainPanel = new JPanel();
105 mainPanel.setLayout(new GridBagLayout());
106 mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
110 //------------------------------------------
111 myViewer3d = SampleDisplayAnimationPackage.CreateViewer("DisplayAnimation");
112 myAISContext = new AIS_InteractiveContext(myViewer3d);
114 myView3d = new ViewPanel() {
115 public ViewCanvas createViewPort() {
116 return new CASCADEView3d(SampleDisplayAnimationPanel.getViewer3d()) {
117 public void setWindow3d(V3d_View view, int hiwin, int lowin) {
118 // set the native window
119 SampleDisplayAnimationPackage.SetWindow(view, hiwin, lowin);
121 // loading BRep data...
122 SamplesStarter.getFrame().setCursor(
123 Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
124 String path = System.getProperty("user.dir") +
125 System.getProperty("file.separator") +
126 "data" + System.getProperty("file.separator");
127 SampleDisplayAnimationPanel.setDataLoaded(
128 SampleDisplayAnimationPackage.LoadData(
129 SampleDisplayAnimationPanel.getAISContext(),
130 new Standard_CString(path)));
131 SamplesStarter.getFrame().setCursor(
132 Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
139 myView3d.addMouseListener(this);
140 myView3d.addMouseMotionListener(this);
144 //------------------------------------------
145 mainPanel.add(myView3d, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
146 GridBagConstraints.CENTER, GridBagConstraints.BOTH,
147 new Insets(0, 0, 0, 0), 0, 0));
152 //-----------------------------------------------------------------------//
153 public Component createToolbar()
155 JToolBar tools = (JToolBar) super.createToolbar();
157 Insets margin = new Insets(1, 1, 1, 1);
160 button = new HeavyButton(imgRestart);
161 button.setToolTipText(resGui.getString("Help-Restart"));
162 button.setActionCommand("Restart");
163 button.addActionListener(this);
164 button.setMargin(margin);
167 button = new HeavyButton(imgStop);
168 button.setToolTipText(resGui.getString("Help-Stop"));
169 button.setActionCommand("Stop");
170 button.addActionListener(this);
171 button.setMargin(margin);
174 button = new HeavyButton(imgThread);
175 button.setToolTipText(resGui.getString("Help-Thread"));
176 button.setActionCommand("Thread");
177 button.addActionListener(this);
178 button.setMargin(margin);
181 button = new HeavyButton(imgDeviation);
182 button.setToolTipText(resGui.getString("Help-Deviation"));
183 button.setActionCommand("Deviation");
184 button.addActionListener(this);
185 button.setMargin(margin);
192 //=======================================================================//
194 //=======================================================================//
195 public void onRestart()
199 JOptionPane.showMessageDialog(this,
200 "Shape(s) not found.\n" +
201 "Check the data directory path!",
202 "Warning!!!", JOptionPane.WARNING_MESSAGE);
208 //=======================================================================//
214 //=======================================================================//
215 public void onThread()
218 ThreadDlg aDlg = new ThreadDlg(SamplesStarter.getFrame(),
219 SampleDisplayAnimationPackage.GetAngleIncrement());
220 Position.centerWindow(aDlg);
224 SampleDisplayAnimationPackage.SetAngleIncrement(aDlg.getValue());
229 //=======================================================================//
230 public void onDeviation()
234 double value = SampleDisplayAnimationPackage.GetDeviationCoefficient();
236 DeviationDlg aDlg = new DeviationDlg(SamplesStarter.getFrame(),
237 (int) ((value-0.00003)/0.00003));
239 Position.centerWindow(aDlg);
242 if (aDlg.isOK() && isDataLoaded)
244 int newValue = aDlg.getValue();
245 SampleDisplayAnimationPackage.SetDeviationCoefficient(myAISContext,
246 (newValue*0.00003)+0.00003);
252 //=======================================================================//
253 public void onTimer()
256 SampleDisplayAnimationPackage.ChangePosition(myAISContext);
260 //=======================================================================//
261 public void setVisible(boolean b)
268 //=======================================================================//
269 // ActionListener interface
270 //=======================================================================//
271 public void actionPerformed(ActionEvent e)
273 if (e.getSource().equals(myTimer))
277 String command = e.getActionCommand();
279 if (command.equals("Restart")) onRestart();
280 else if (command.equals("Stop")) onStop();
281 else if (command.equals("Thread")) onThread();
282 else if (command.equals("Deviation")) onDeviation();
287 //=======================================================================//
288 // MouseListener interface
289 //=======================================================================//
290 public void mouseClicked(MouseEvent e)
294 //-----------------------------------------------------------------------//
295 public void mousePressed(MouseEvent e)
297 if (SwingUtilities.isLeftMouseButton(e))
301 Object src = e.getSource();
305 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
307 myAISContext.MoveTo(startX, startY, view3d);
310 else if (SwingUtilities.isRightMouseButton(e))
312 if (e.getSource() == myView3d)
314 PopupMenu defPopup = myView3d.getDefaultPopup();
315 myView3d.add(defPopup);
316 defPopup.show(myView3d, e.getX(), e.getY() + 30);
321 //-----------------------------------------------------------------------//
322 public void mouseReleased(MouseEvent e)
324 if (SwingUtilities.isLeftMouseButton(e))
326 Object src = e.getSource();
332 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
336 myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true);
338 myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true);
347 myAISContext.ShiftSelect(true);
349 myAISContext.Select(true);
356 //-----------------------------------------------------------------------//
357 public void mouseEntered(MouseEvent e)
361 //-----------------------------------------------------------------------//
362 public void mouseExited(MouseEvent e)
366 //=======================================================================//
367 // MouseMotionListener interface
368 //=======================================================================//
369 public void mouseDragged(MouseEvent e)
371 if (SwingUtilities.isLeftMouseButton(e) &&
372 e.getSource() == myView3d)
376 //-----------------------------------------------------------------------//
377 public void mouseMoved(MouseEvent e)
379 Object src = e.getSource();
383 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
384 if (myAISContext != null && view3d != null)
385 myAISContext.MoveTo(e.getX(), e.getY(), view3d);