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 CASCADESamplesJni.*;
16 import SamplesTopologyJni.*;
19 public class SampleTopologyTransformationsPanel extends SamplePanel
20 implements ActionListener,
24 //-----------------------------------------------------------//
26 //-----------------------------------------------------------//
27 static protected ResourceBundle resGui =
28 ResourceBundle.getBundle("SampleTopologyTransformations");
30 static protected ImageIcon imgMirror = new ImageIcon(resGui.getString("Icon-Mirror"));
31 static protected ImageIcon imgMirroraxis = new ImageIcon(resGui.getString("Icon-Mirroraxis"));
32 static protected ImageIcon imgRotate = new ImageIcon(resGui.getString("Icon-Rotate"));
33 static protected ImageIcon imgScale = new ImageIcon(resGui.getString("Icon-Scale"));
34 static protected ImageIcon imgTranslation = new ImageIcon(resGui.getString("Icon-Translation"));
35 static protected ImageIcon imgDisplacement = new ImageIcon(resGui.getString("Icon-Displacement"));
36 static protected ImageIcon imgDeform = new ImageIcon(resGui.getString("Icon-Deform"));
39 //-----------------------------------------------------------//
41 //-----------------------------------------------------------//
42 private ViewPanel myView3d;
44 private static V3d_Viewer myViewer3d = null;
46 private static AIS_InteractiveContext myAISContext = null;
48 private int startX = 0, startY = 0;
49 private boolean Dragged = false;
52 //-----------------------------------------------------------//
54 //-----------------------------------------------------------//
55 public static V3d_Viewer getViewer3d()
60 public static AIS_InteractiveContext getAISContext()
66 //=======================================================================//
68 //=======================================================================//
69 public SampleTopologyTransformationsPanel()
72 //------------------------------------------
73 myViewer3d.SetDefaultLights();
74 myViewer3d.SetLightOn();
76 if (myAISContext == null)
78 myAISContext = new AIS_InteractiveContext(myViewer3d);
79 myAISContext.SetDisplayMode(AIS_DisplayMode.AIS_Shaded, false);
83 //-----------------------------------------------------------------------//
84 public JPanel createViewPanel()
86 JPanel mainPanel = new JPanel();
87 mainPanel.setLayout(new GridBagLayout());
88 mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
91 //------------------------------------------
92 myViewer3d = SamplesTopologyPackage.CreateViewer("TopologyTransformations");
94 myView3d = new ViewPanel() {
95 public ViewCanvas createViewPort()
97 return new CASCADEView3d(SampleTopologyTransformationsPanel.getViewer3d()) {
98 public void setWindow3d(V3d_View view, int hiwin, int lowin) {
99 SamplesTopologyPackage.SetWindow(view, hiwin, lowin);
105 myView3d.addMouseListener(this);
106 myView3d.addMouseMotionListener(this);
110 //------------------------------------------
111 mainPanel.add(myView3d, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
112 GridBagConstraints.CENTER, GridBagConstraints.BOTH,
113 new Insets(0, 0, 0, 0), 0, 0));
118 //-----------------------------------------------------------------------//
119 public Component createToolbar()
121 JToolBar tools = (JToolBar) super.createToolbar();
123 ButtonGroup group = new ButtonGroup();
124 Insets margin = new Insets(1, 1, 1, 1);
125 JToggleButton button;
127 button = new HeavyToggleButton(imgMirror, false);
128 button.setToolTipText(resGui.getString("TT-Mirror"));
129 button.setActionCommand("Mirror");
130 button.addActionListener(this);
131 button.setMargin(margin);
135 button = new HeavyToggleButton(imgMirroraxis, false);
136 button.setToolTipText(resGui.getString("TT-Mirroraxis"));
137 button.setActionCommand("Mirroraxis");
138 button.addActionListener(this);
139 button.setMargin(margin);
143 button = new HeavyToggleButton(imgRotate, false);
144 button.setToolTipText(resGui.getString("TT-Rotate"));
145 button.setActionCommand("Rotate");
146 button.addActionListener(this);
147 button.setMargin(margin);
151 button = new HeavyToggleButton(imgScale, false);
152 button.setToolTipText(resGui.getString("TT-Scale"));
153 button.setActionCommand("Scale");
154 button.addActionListener(this);
155 button.setMargin(margin);
159 button = new HeavyToggleButton(imgTranslation, false);
160 button.setToolTipText(resGui.getString("TT-Translation"));
161 button.setActionCommand("Translation");
162 button.addActionListener(this);
163 button.setMargin(margin);
167 button = new HeavyToggleButton(imgDisplacement, false);
168 button.setToolTipText(resGui.getString("TT-Displacement"));
169 button.setActionCommand("Displacement");
170 button.addActionListener(this);
171 button.setMargin(margin);
175 button = new HeavyToggleButton(imgDeform, false);
176 button.setToolTipText(resGui.getString("TT-Deform"));
177 button.setActionCommand("Deform");
178 button.addActionListener(this);
179 button.setMargin(margin);
187 //=======================================================================//
189 //=======================================================================//
190 public void postProcess(TCollection_AsciiString message, String title)
192 myView3d.getViewPort().FitAll();
194 String text = message.ToCString().GetValue();
195 text += "\n-------------------- END ----------------------\n";
197 traceMessage(text, title);
200 //=======================================================================//
202 //=======================================================================//
203 public void onMirror()
205 TCollection_AsciiString message = new TCollection_AsciiString();
206 SamplesTopologyPackage.Mirror(myAISContext, message);
208 postProcess(message, resGui.getString("Dlg-Mirror"));
211 //=======================================================================//
212 public void onMirroraxis()
214 TCollection_AsciiString message = new TCollection_AsciiString();
215 SamplesTopologyPackage.Mirroraxis(myAISContext, message);
217 postProcess(message, resGui.getString("Dlg-Mirroraxis"));
220 //=======================================================================//
221 public void onRotate()
223 TCollection_AsciiString message = new TCollection_AsciiString();
224 SamplesTopologyPackage.Rotate(myAISContext, message);
226 postProcess(message, resGui.getString("Dlg-Rotate"));
230 //=======================================================================//
231 public void onScale()
233 TCollection_AsciiString message = new TCollection_AsciiString();
234 SamplesTopologyPackage.Scale(myAISContext, message);
236 postProcess(message, resGui.getString("Dlg-Scale"));
240 //=======================================================================//
241 public void onTranslation()
243 TCollection_AsciiString message = new TCollection_AsciiString();
244 SamplesTopologyPackage.Translation(myAISContext, message);
246 postProcess(message, resGui.getString("Dlg-Translation"));
250 //=======================================================================//
251 public void onDisplacement()
253 TCollection_AsciiString message = new TCollection_AsciiString();
254 SamplesTopologyPackage.Displacement(myAISContext, message);
256 postProcess(message, resGui.getString("Dlg-Displacement"));
260 //=======================================================================//
261 public void onDeform()
263 TCollection_AsciiString message = new TCollection_AsciiString();
264 SamplesTopologyPackage.Deform(myAISContext, message);
266 postProcess(message, resGui.getString("Dlg-Deform"));
270 //=======================================================================//
271 // ActionListener interface
272 //=======================================================================//
273 public void actionPerformed(ActionEvent e)
275 String command = e.getActionCommand();
277 if (command.equals("Mirror")) onMirror();
278 else if (command.equals("Mirroraxis")) onMirroraxis();
279 else if (command.equals("Rotate")) onRotate();
280 else if (command.equals("Scale")) onScale();
281 else if (command.equals("Translation")) onTranslation();
282 else if (command.equals("Displacement")) onDisplacement();
283 else if (command.equals("Deform")) onDeform();
286 //=======================================================================//
287 // MouseListener interface
288 //=======================================================================//
289 public void mouseClicked(MouseEvent e)
293 public void mousePressed(MouseEvent e)
295 if (SwingUtilities.isLeftMouseButton(e))
299 Object src = e.getSource();
303 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
305 myAISContext.MoveTo(startX, startY, view3d);
308 else if (SwingUtilities.isRightMouseButton(e))
310 if (e.getSource() == myView3d)
312 PopupMenu defPopup = myView3d.getDefaultPopup();
313 myView3d.add(defPopup);
314 defPopup.show(myView3d, e.getX(), e.getY() + 30);
319 public void mouseReleased(MouseEvent e)
321 if (SwingUtilities.isLeftMouseButton(e))
323 Object src = e.getSource();
329 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
333 myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true);
335 myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true);
344 myAISContext.ShiftSelect(true);
346 myAISContext.Select(true);
353 public void mouseEntered(MouseEvent e)
357 public void mouseExited(MouseEvent e)
361 //=======================================================================//
362 // MouseMotionListener interface
363 //=======================================================================//
364 public void mouseDragged(MouseEvent e)
366 if (SwingUtilities.isLeftMouseButton(e) &&
367 e.getSource() == myView3d)
371 public void mouseMoved(MouseEvent e)
373 Object src = e.getSource();
377 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
378 if (myAISContext != null && view3d != null)
379 myAISContext.MoveTo(e.getX(), e.getY(), view3d);