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 SampleTopologicalOperationsPanel extends SamplePanel
20 implements ActionListener,
24 //-----------------------------------------------------------//
26 //-----------------------------------------------------------//
27 static protected ResourceBundle resGui =
28 ResourceBundle.getBundle("SampleTopologicalOperations");
30 static protected ImageIcon imgCut = new ImageIcon(resGui.getString("Icon-Cut"));
31 static protected ImageIcon imgFuse = new ImageIcon(resGui.getString("Icon-Fuse"));
32 static protected ImageIcon imgCommon = new ImageIcon(resGui.getString("Icon-Common"));
33 static protected ImageIcon imgSection = new ImageIcon(resGui.getString("Icon-Section"));
34 static protected ImageIcon imgPSection = new ImageIcon(resGui.getString("Icon-PSection"));
35 static protected ImageIcon imgBlend = new ImageIcon(resGui.getString("Icon-Blend"));
36 static protected ImageIcon imgEvolvedBlend = new ImageIcon(resGui.getString("Icon-EvolvedBlend"));
37 static protected ImageIcon imgChamfer = new ImageIcon(resGui.getString("Icon-Chamfer"));
40 //-----------------------------------------------------------//
42 //-----------------------------------------------------------//
43 private ViewPanel myView3d;
45 private static V3d_Viewer myViewer3d = null;
47 private static AIS_InteractiveContext myAISContext = null;
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()
67 //=======================================================================//
69 //=======================================================================//
70 public SampleTopologicalOperationsPanel()
73 //------------------------------------------
74 myViewer3d.SetDefaultLights();
75 myViewer3d.SetLightOn();
77 if (myAISContext == null)
79 myAISContext = new AIS_InteractiveContext(myViewer3d);
80 myAISContext.SetDisplayMode(AIS_DisplayMode.AIS_Shaded, false);
84 //-----------------------------------------------------------------------//
85 public JPanel createViewPanel()
87 JPanel mainPanel = new JPanel();
88 mainPanel.setLayout(new GridBagLayout());
89 mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
92 //------------------------------------------
93 myViewer3d = SamplesTopologyPackage.CreateViewer("TopologicalOperations");
95 myView3d = new ViewPanel() {
96 public ViewCanvas createViewPort()
98 return new CASCADEView3d(SampleTopologicalOperationsPanel.getViewer3d()) {
99 public void setWindow3d(V3d_View view, int hiwin, int lowin) {
100 SamplesTopologyPackage.SetWindow(view, hiwin, lowin);
106 myView3d.addMouseListener(this);
107 myView3d.addMouseMotionListener(this);
111 //------------------------------------------
112 mainPanel.add(myView3d, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
113 GridBagConstraints.CENTER, GridBagConstraints.BOTH,
114 new Insets(0, 0, 0, 0), 0, 0));
119 //-----------------------------------------------------------------------//
120 public Component createToolbar()
122 JToolBar tools = (JToolBar) super.createToolbar();
124 ButtonGroup group = new ButtonGroup();
125 Insets margin = new Insets(1, 1, 1, 1);
126 JToggleButton button;
128 button = new HeavyToggleButton(imgCut, false);
129 button.setToolTipText(resGui.getString("TT-Cut"));
130 button.setActionCommand("Cut");
131 button.addActionListener(this);
132 button.setMargin(margin);
136 button = new HeavyToggleButton(imgFuse, false);
137 button.setToolTipText(resGui.getString("TT-Fuse"));
138 button.setActionCommand("Fuse");
139 button.addActionListener(this);
140 button.setMargin(margin);
144 button = new HeavyToggleButton(imgCommon, false);
145 button.setToolTipText(resGui.getString("TT-Common"));
146 button.setActionCommand("Common");
147 button.addActionListener(this);
148 button.setMargin(margin);
152 button = new HeavyToggleButton(imgSection, false);
153 button.setToolTipText(resGui.getString("TT-Section"));
154 button.setActionCommand("Section");
155 button.addActionListener(this);
156 button.setMargin(margin);
160 button = new HeavyToggleButton(imgPSection, false);
161 button.setToolTipText(resGui.getString("TT-PSection"));
162 button.setActionCommand("PSection");
163 button.addActionListener(this);
164 button.setMargin(margin);
168 tools.addSeparator();;
170 button = new HeavyToggleButton(imgBlend, false);
171 button.setToolTipText(resGui.getString("TT-Blend"));
172 button.setActionCommand("Blend");
173 button.addActionListener(this);
174 button.setMargin(margin);
178 button = new HeavyToggleButton(imgEvolvedBlend, false);
179 button.setToolTipText(resGui.getString("TT-EvolvedBlend"));
180 button.setActionCommand("EvolvedBlend");
181 button.addActionListener(this);
182 button.setMargin(margin);
186 button = new HeavyToggleButton(imgChamfer, false);
187 button.setToolTipText(resGui.getString("TT-Chamfer"));
188 button.setActionCommand("Chamfer");
189 button.addActionListener(this);
190 button.setMargin(margin);
198 //=======================================================================//
200 //=======================================================================//
201 public void postProcess(TCollection_AsciiString message, String title)
203 myView3d.getViewPort().FitAll();
205 String text = message.ToCString().GetValue();
206 text += "\n-------------------- END ----------------------\n";
208 traceMessage(text, title);
211 //=======================================================================//
213 //=======================================================================//
216 TCollection_AsciiString message = new TCollection_AsciiString();
217 SamplesTopologyPackage.Cut(myAISContext, message);
219 postProcess(message, resGui.getString("Dlg-Cut"));
223 //=======================================================================//
226 TCollection_AsciiString message = new TCollection_AsciiString();
227 SamplesTopologyPackage.Fuse(myAISContext, message);
229 postProcess(message, resGui.getString("Dlg-Fuse"));
233 //=======================================================================//
234 public void onCommon()
236 TCollection_AsciiString message = new TCollection_AsciiString();
237 SamplesTopologyPackage.Common(myAISContext, message);
239 postProcess(message, resGui.getString("Dlg-Common"));
243 //=======================================================================//
244 public void onSection()
246 TCollection_AsciiString message = new TCollection_AsciiString();
247 SamplesTopologyPackage.Section(myAISContext, message);
249 postProcess(message, resGui.getString("Dlg-Section"));
253 //=======================================================================//
254 public void onPSection()
256 TCollection_AsciiString message = new TCollection_AsciiString();
257 SamplesTopologyPackage.PSection(myAISContext, message);
259 postProcess(message, resGui.getString("Dlg-PSection"));
263 //=======================================================================//
264 public void onBlend()
266 TCollection_AsciiString message = new TCollection_AsciiString();
267 SamplesTopologyPackage.Blend(myAISContext, message);
269 postProcess(message, resGui.getString("Dlg-Blend"));
273 //=======================================================================//
274 public void onEvolvedBlend()
276 TCollection_AsciiString message = new TCollection_AsciiString();
277 SamplesTopologyPackage.EvolvedBlend(myAISContext, message);
279 postProcess(message, resGui.getString("Dlg-EvolvedBlend"));
283 //=======================================================================//
284 public void onChamfer()
286 TCollection_AsciiString message = new TCollection_AsciiString();
287 SamplesTopologyPackage.Chamfer(myAISContext, message);
289 postProcess(message, resGui.getString("Dlg-Chamfer"));
293 //=======================================================================//
294 // ActionListener interface
295 //=======================================================================//
296 public void actionPerformed(ActionEvent e)
298 String command = e.getActionCommand();
300 if (command.equals("Cut")) onCut();
301 else if (command.equals("Fuse")) onFuse();
302 else if (command.equals("Common")) onCommon();
303 else if (command.equals("Section")) onSection();
304 else if (command.equals("PSection")) onPSection();
305 else if (command.equals("Blend")) onBlend();
306 else if (command.equals("EvolvedBlend")) onEvolvedBlend();
307 else if (command.equals("Chamfer")) onChamfer();
310 //=======================================================================//
311 // MouseListener interface
312 //=======================================================================//
313 public void mouseClicked(MouseEvent e)
317 public void mousePressed(MouseEvent e)
319 if (SwingUtilities.isLeftMouseButton(e))
323 Object src = e.getSource();
327 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
329 myAISContext.MoveTo(startX, startY, view3d);
332 else if (SwingUtilities.isRightMouseButton(e))
334 if (e.getSource() == myView3d)
336 PopupMenu defPopup = myView3d.getDefaultPopup();
337 myView3d.add(defPopup);
338 defPopup.show(myView3d, e.getX(), e.getY() + 30);
343 public void mouseReleased(MouseEvent e)
345 if (SwingUtilities.isLeftMouseButton(e))
347 Object src = e.getSource();
353 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
357 myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true);
359 myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true);
368 myAISContext.ShiftSelect(true);
370 myAISContext.Select(true);
377 public void mouseEntered(MouseEvent e)
381 public void mouseExited(MouseEvent e)
385 //=======================================================================//
386 // MouseMotionListener interface
387 //=======================================================================//
388 public void mouseDragged(MouseEvent e)
390 if (SwingUtilities.isLeftMouseButton(e) &&
391 e.getSource() == myView3d)
395 public void mouseMoved(MouseEvent e)
397 Object src = e.getSource();
401 V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
402 if (myAISContext != null && view3d != null)
403 myAISContext.MoveTo(e.getX(), e.getY(), view3d);