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;
19 public class ZClippingDlg extends JDialog
20 implements ActionListener,
25 private SamplePanel myDocument;
26 private V3d_View myView;
28 //-----------------------------------------------------------//
30 //-----------------------------------------------------------//
37 private boolean consume = false;
38 private String strDepth = new String("");
39 private String strWidth = new String("");
40 private boolean userDepthChanged = false;
41 private boolean userWidthChanged = false;
44 //=======================================================================//
46 //=======================================================================//
47 public ZClippingDlg(Frame frame, SamplePanel aDoc, V3d_View aView)
49 super(frame, "ZClipping", false);
65 void jbInit() throws Exception
67 getContentPane().setLayout(new BorderLayout());
69 JPanel mainPanel = new JPanel(new GridBagLayout());
70 mainPanel.setBorder(BorderFactory.createRaisedBevelBorder());
72 JLabel lblDepth = new JLabel("Depth");
73 mainPanel.add(lblDepth, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
74 GridBagConstraints.WEST, GridBagConstraints.NONE,
75 new Insets(10, 10, 5, 5), 0, 0));
77 sldDepth = new JSlider(-1500, 1500, 0);
78 sldDepth.addChangeListener(this);
79 mainPanel.add(sldDepth, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
80 GridBagConstraints.CENTER, GridBagConstraints.NONE,
81 new Insets(10, 5, 5, 5), 0, 0));
83 txtDepth = new JTextField(6);
84 txtDepth.addInputMethodListener(this);
85 txtDepth.addKeyListener(this);
86 mainPanel.add(txtDepth, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
87 GridBagConstraints.CENTER, GridBagConstraints.NONE,
88 new Insets(10, 5, 5, 10), 0, 0));
90 JLabel lblWidth = new JLabel("Width");
91 mainPanel.add(lblWidth, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
92 GridBagConstraints.WEST, GridBagConstraints.NONE,
93 new Insets(5, 10, 10, 5), 0, 0));
95 sldWidth = new JSlider(0, 1500, 0);
96 sldWidth.addChangeListener(this);
97 mainPanel.add(sldWidth, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
98 GridBagConstraints.CENTER, GridBagConstraints.NONE,
99 new Insets(5, 5, 10, 5), 0, 0));
101 txtWidth = new JTextField(6);
102 txtWidth.addInputMethodListener(this);
103 txtWidth.addKeyListener(this);
104 mainPanel.add(txtWidth, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
105 GridBagConstraints.CENTER, GridBagConstraints.NONE,
106 new Insets(5, 5, 10, 10), 0, 0));
108 JLabel lblType = new JLabel("Type");
109 mainPanel.add(lblType, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,
110 GridBagConstraints.WEST, GridBagConstraints.NONE,
111 new Insets(10, 10, 10, 5), 0, 0));
113 String[] items = {"OFF", "BACK", "FRONT", "SLICE"};
114 cmbType = new JComboBox(items);
115 cmbType.setSelectedIndex(0);
116 cmbType.setEditable(false);
117 cmbType.addActionListener(this);
118 cmbType.setActionCommand("Type");
119 mainPanel.add(cmbType, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0,
120 GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
121 new Insets(10, 10, 10, 10), 0, 0));
122 getContentPane().add(mainPanel, BorderLayout.CENTER);
124 JPanel controlPanel = new JPanel();
126 JButton btnOK = new JButton("OK");
127 btnOK.addActionListener(this);
128 btnOK.setActionCommand("OK");
129 controlPanel.add(btnOK);
131 JButton btnCancel = new JButton("Cancel");
132 btnCancel.addActionListener(this);
133 btnCancel.setActionCommand("Cancel");
134 controlPanel.add(btnCancel);
135 getContentPane().add(controlPanel, BorderLayout.SOUTH);
138 private void initValues()
140 Standard_Real depth = new Standard_Real();
141 Standard_Real width = new Standard_Real();
142 int type = myView.ZClipping(depth, width);
145 if (type == V3d_TypeOfZclipping.V3d_OFF)
146 cmbType.setSelectedIndex(0);
147 else if (type == V3d_TypeOfZclipping.V3d_BACK)
148 cmbType.setSelectedIndex(1);
149 else if (type == V3d_TypeOfZclipping.V3d_FRONT)
150 cmbType.setSelectedIndex(2);
151 else if (type == V3d_TypeOfZclipping.V3d_SLICE)
152 cmbType.setSelectedIndex(3);
154 cmbType.setSelectedIndex(type);
156 sldDepth.setValue((int) Math.round(depth.GetValue()));
157 txtDepth.setText(String.valueOf(depth.GetValue()));
159 sldWidth.setValue((int) Math.round(width.GetValue()));
160 txtWidth.setText(String.valueOf(width.GetValue()));
163 //=======================================================================//
165 //=======================================================================//
166 private void onDepthChanged()
168 String newValue = txtDepth.getText();
169 Double value = new Double((newValue.equals("") || newValue.equals("-"))?
171 if (value.doubleValue() > 1500. || value.doubleValue() < -1500.)
174 TCollection_AsciiString message = new TCollection_AsciiString();
175 SampleViewer3DPackage.ChangeZClippingDepth(myView, value.doubleValue(), message);
177 myDocument.traceMessage(message.ToCString().GetValue(), "SetZClippingDepth");
180 //=======================================================================//
181 private void onWidthChanged()
183 String newValue = txtWidth.getText();
184 Double value = new Double((newValue.equals("") || newValue.equals("-"))?
186 if (value.doubleValue() > 1500. || value.doubleValue() <= 0.)
189 TCollection_AsciiString message = new TCollection_AsciiString();
190 SampleViewer3DPackage.ChangeZClippingWidth(myView, value.doubleValue(), message);
192 myDocument.traceMessage(message.ToCString().GetValue(), "SetZClippingWidth");
195 //=======================================================================//
196 private void onTypeChanged()
198 TCollection_AsciiString message = new TCollection_AsciiString();
199 SampleViewer3DPackage.ChangeZClippingType(myView, (short)cmbType.getSelectedIndex(), message);
201 myDocument.traceMessage(message.ToCString().GetValue(), "SetZClippingType");
204 //=======================================================================//
211 //=======================================================================//
212 // Action listener interface
213 //=======================================================================//
214 public void actionPerformed(ActionEvent event)
216 String nameAction = event.getActionCommand();
217 if (nameAction.equals("Type"))
219 else if (nameAction.equals("OK"))
221 else if (nameAction.equals("Cancel"))
226 //=======================================================================//
227 // Change listener interface
228 //=======================================================================//
229 public void stateChanged(ChangeEvent event)
231 JSlider slider = (JSlider) event.getSource();
232 if (slider.equals(sldDepth))
234 if (userDepthChanged)
236 txtDepth.setText(String.valueOf(slider.getValue()));
240 userDepthChanged = true;
242 else if (slider.equals(sldWidth))
244 if (userWidthChanged)
246 txtWidth.setText(String.valueOf(slider.getValue()));
250 userWidthChanged = true;
254 //=======================================================================//
255 // Key listener interface
256 //=======================================================================//
257 public void keyTyped(KeyEvent event)
261 //=======================================================================//
262 public void keyPressed(KeyEvent event)
264 JTextField field = (JTextField) event.getSource();
266 int aKod = event.getKeyCode();
267 if (aKod == event.VK_MINUS)
269 String aStr = field.getText();
270 int aPos = aStr.indexOf("-");
272 if (aPos == -1) // Minus not present
274 if ((field.getCaretPosition()) != 0)
280 else if ((aKod == event.VK_DECIMAL) || (aKod == event.VK_PERIOD))
282 String aStr = field.getText();
283 int aPos = aStr.indexOf(".");
284 if (aPos != -1) // the point is present in the string
287 else if (!event.isActionKey() && aKod != event.VK_BACK_SPACE &&
288 aKod != event.VK_DELETE)
290 if (!Character.isDigit(event.getKeyChar()))
295 //=======================================================================//
296 public void keyReleased(KeyEvent event)
298 JTextField field = (JTextField) event.getSource();
299 String newValue = field.getText();
300 Double value = new Double((newValue.equals("") || newValue.equals("-"))?
303 if (field.equals(txtDepth))
305 if (!newValue.equals(strDepth))
308 if (value.doubleValue() < -1500. || value.doubleValue() > 1500.)
310 txtDepth.selectAll();
311 JOptionPane.showMessageDialog(this, "Please enter a value between -1500 and 1500",
312 "Warning!!!", JOptionPane.WARNING_MESSAGE);
317 userDepthChanged = false;
318 sldDepth.setValue((int) Math.round(value.doubleValue()));
323 else if (field.equals(txtWidth))
325 if (!newValue.equals(strWidth))
328 if (value.doubleValue() <= 0. || value.doubleValue() > 1500.)
330 txtWidth.selectAll();
331 JOptionPane.showMessageDialog(this, "Please enter a value between 0 and 1500",
332 "Warning!!!", JOptionPane.WARNING_MESSAGE);
337 userWidthChanged = false;
338 sldWidth.setValue((int) Math.round(value.doubleValue()));
345 //=======================================================================//
346 // InputMethod listener interface
347 //=======================================================================//
348 public void inputMethodTextChanged(InputMethodEvent event)
357 public void caretPositionChanged(InputMethodEvent event)