2 //Title: Viewer3D Sample
4 //Copyright: Copyright (c) 1999
5 //Author: User Interface group
6 //Company: Matra Datavision
11 import java.awt.event.*;
13 import javax.swing.event.*;
14 import CASCADESamplesJni.*;
15 import SampleViewer3DJni.*;
16 import jcas.Standard_Real;
17 import jcas.Standard_Boolean;
20 public class ModelClippingDlg extends JDialog
21 implements ActionListener,
27 private SamplePanel myDocument;
28 private V3d_View myView;
30 //-----------------------------------------------------------//
32 //-----------------------------------------------------------//
37 private boolean consume = false;
38 private String strZ = new String("");
39 private boolean userZChanged = false;
42 //=======================================================================//
44 //=======================================================================//
45 public ModelClippingDlg(Frame frame, SamplePanel aDoc, V3d_View aView)
47 super(frame, "ModelClipping", false);
63 private void jbInit() throws Exception
65 getContentPane().setLayout(new BorderLayout());
67 JPanel mainPanel = new JPanel(new GridBagLayout());
68 mainPanel.setBorder(BorderFactory.createRaisedBevelBorder());
70 JLabel lblZ = new JLabel("Z");
71 mainPanel.add(lblZ, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
72 GridBagConstraints.WEST, GridBagConstraints.NONE,
73 new Insets(10, 10, 5, 5), 0, 0));
75 sldZ = new JSlider(-750, 750, 0);
76 sldZ.addChangeListener(this);
77 mainPanel.add(sldZ, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
78 GridBagConstraints.CENTER, GridBagConstraints.NONE,
79 new Insets(10, 5, 5, 5), 0, 0));
81 txtZ = new JTextField(6);
82 txtZ.addInputMethodListener(this);
83 txtZ.addKeyListener(this);
84 mainPanel.add(txtZ, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
85 GridBagConstraints.CENTER, GridBagConstraints.NONE,
86 new Insets(10, 5, 5, 10), 0, 0));
88 chkOnOff = new JCheckBox("Model clipping ON/OFF", false);
89 chkOnOff.addItemListener(this);
90 mainPanel.add(chkOnOff, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0,
91 GridBagConstraints.WEST, GridBagConstraints.NONE,
92 new Insets(10, 10, 10, 10), 0, 0));
93 getContentPane().add(mainPanel, BorderLayout.CENTER);
95 JPanel controlPanel = new JPanel();
97 JButton btnOK = new JButton("OK");
98 btnOK.addActionListener(this);
99 btnOK.setActionCommand("OK");
100 controlPanel.add(btnOK);
102 JButton btnCancel = new JButton("Cancel");
103 btnCancel.addActionListener(this);
104 btnCancel.setActionCommand("Cancel");
105 controlPanel.add(btnCancel);
106 getContentPane().add(controlPanel, BorderLayout.SOUTH);
109 private void initValues()
111 Standard_Real Z = new Standard_Real();
112 Standard_Boolean isModelClippingOn = new Standard_Boolean();
113 SampleViewer3DPackage.DisplayClippingPlane(SampleViewer3DPanel.getAISContext(), myView,
114 Z, isModelClippingOn);
116 sldZ.setValue((int) Math.round(Z.GetValue()));
117 txtZ.setText(String.valueOf(Z.GetValue()));
119 chkOnOff.setSelected(isModelClippingOn.GetValue());
122 //=======================================================================//
124 //=======================================================================//
125 private void onModelClippingZChanged()
127 String newValue = txtZ.getText();
128 Double value = new Double((newValue.equals("") || newValue.equals("-"))?
130 if (value.doubleValue() > 750. || value.doubleValue() < -750.)
133 TCollection_AsciiString message = new TCollection_AsciiString();
134 SampleViewer3DPackage.ChangeModelClippingZ(SampleViewer3DPanel.getAISContext(), myView,
135 value.doubleValue(), chkOnOff.isSelected(),
138 myDocument.traceMessage(message.ToCString().GetValue(), "SetPlane");
141 //=======================================================================//
142 private void onModelClippingOnOff()
144 TCollection_AsciiString message = new TCollection_AsciiString();
145 SampleViewer3DPackage.ChangeModelClippingOnOff(SampleViewer3DPanel.getAISContext(), myView,
146 chkOnOff.isSelected(), message);
148 myDocument.traceMessage(message.ToCString().GetValue(), "SetPlaneOn/SetPlaneOff");
151 //=======================================================================//
152 private void close(boolean isOK)
155 SampleViewer3DPackage.ClearClippingPlane(SampleViewer3DPanel.getAISContext(), myView,
156 chkOnOff.isSelected());
158 SampleViewer3DPackage.ClearClippingPlane(SampleViewer3DPanel.getAISContext(), myView,
165 //=======================================================================//
166 // Action listener interface
167 //=======================================================================//
168 public void actionPerformed(ActionEvent event)
170 String nameAction = event.getActionCommand();
171 if (nameAction.equals("OK"))
173 else if (nameAction.equals("Cancel"))
178 //=======================================================================//
179 // Item listener interface
180 //=======================================================================//
181 public void itemStateChanged(ItemEvent event)
183 if (event.getSource().equals(chkOnOff))
184 onModelClippingOnOff();
187 //=======================================================================//
188 // Change listener interface
189 //=======================================================================//
190 public void stateChanged(ChangeEvent event)
192 JSlider slider = (JSlider) event.getSource();
193 if (slider.equals(sldZ))
197 txtZ.setText(String.valueOf(slider.getValue()));
198 onModelClippingZChanged();
205 //=======================================================================//
206 // Key listener interface
207 //=======================================================================//
208 public void keyTyped(KeyEvent event)
212 //=======================================================================//
213 public void keyPressed(KeyEvent event)
215 JTextField field = (JTextField) event.getSource();
217 int aKod = event.getKeyCode();
218 if (aKod == event.VK_MINUS)
220 String aStr = field.getText();
221 int aPos = aStr.indexOf("-");
223 if (aPos == -1) // Minus not present
225 if ((field.getCaretPosition()) != 0)
231 else if ((aKod == event.VK_DECIMAL) || (aKod == event.VK_PERIOD))
233 String aStr = field.getText();
234 int aPos = aStr.indexOf(".");
235 if (aPos != -1) // the point is present in the string
238 else if (!event.isActionKey() && aKod != event.VK_BACK_SPACE &&
239 aKod != event.VK_DELETE)
241 if (!Character.isDigit(event.getKeyChar()))
246 //=======================================================================//
247 public void keyReleased(KeyEvent event)
249 JTextField field = (JTextField) event.getSource();
250 String newValue = field.getText();
251 Double value = new Double((newValue.equals("") || newValue.equals("-"))?
254 if (field.equals(txtZ))
256 if (!newValue.equals(strZ))
259 if (value.doubleValue() < -750. || value.doubleValue() > 750.)
262 JOptionPane.showMessageDialog(this, "Please enter a value between -750 and 750",
263 "Warning!!!", JOptionPane.WARNING_MESSAGE);
268 userZChanged = false;
269 sldZ.setValue((int) Math.round(value.doubleValue()));
270 onModelClippingZChanged();
276 //=======================================================================//
277 // InputMethod listener interface
278 //=======================================================================//
279 public void inputMethodTextChanged(InputMethodEvent event)
288 public void caretPositionChanged(InputMethodEvent event)