Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / java / java / ZCueingDlg.java
1
2 //Title:        Viewer3D Sample
3 //Version:      
4 //Copyright:    Copyright (c) 1999
5 //Author:       User Interface group
6 //Company:      Matra Datavision
7 //Description:  
8
9
10 import java.awt.*;
11 import java.awt.event.*;
12 import javax.swing.*;
13 import javax.swing.event.*;
14 import CASCADESamplesJni.*;
15 import SampleViewer3DJni.*;
16 import jcas.Standard_Real;
17
18
19 public class ZCueingDlg extends JDialog
20                         implements ActionListener,
21                                    InputMethodListener,
22                                    ChangeListener,
23                                    KeyListener,
24                                    ItemListener
25 {
26   private SamplePanel myDocument;
27   private V3d_View myView;
28
29   //-----------------------------------------------------------//
30   // GUI components
31   //-----------------------------------------------------------//
32   JCheckBox chkOnOff;
33   JSlider sldDepth;
34   JSlider sldWidth;
35   JTextField txtDepth;
36   JTextField txtWidth;
37
38   private boolean consume = false;
39   private String strDepth = new String("");
40   private String strWidth = new String("");
41   private boolean userDepthChanged = false;
42   private boolean userWidthChanged = false;
43   
44
45 //=======================================================================//
46 // Construction
47 //=======================================================================//
48   public ZCueingDlg(Frame frame, SamplePanel aDoc, V3d_View aView)
49   {
50     super(frame, "ZCueing", false);
51     myDocument = aDoc;
52     myView = aView;
53
54     try
55     {
56       jbInit();
57       initValues();
58       pack();
59     }
60     catch(Exception ex)
61     {
62       ex.printStackTrace();
63     }
64   }
65
66   void jbInit() throws Exception
67   {
68     getContentPane().setLayout(new BorderLayout());
69
70     JPanel mainPanel = new JPanel(new GridBagLayout());
71     mainPanel.setBorder(BorderFactory.createRaisedBevelBorder());
72
73     JLabel lblDepth = new JLabel("Depth");
74     mainPanel.add(lblDepth, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
75             GridBagConstraints.WEST, GridBagConstraints.NONE,
76             new Insets(10, 10, 5, 5), 0, 0));
77
78     sldDepth = new JSlider(-1500, 1500, 0);
79     sldDepth.addChangeListener(this);
80     mainPanel.add(sldDepth, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
81             GridBagConstraints.CENTER, GridBagConstraints.NONE,
82             new Insets(10, 5, 5, 5), 0, 0));
83
84     txtDepth = new JTextField(6);
85     txtDepth.addInputMethodListener(this);
86     txtDepth.addKeyListener(this);
87     mainPanel.add(txtDepth, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
88             GridBagConstraints.CENTER, GridBagConstraints.NONE,
89             new Insets(10, 5, 5, 10), 0, 0));
90
91     JLabel lblWidth = new JLabel("Width");
92     mainPanel.add(lblWidth, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
93             GridBagConstraints.WEST, GridBagConstraints.NONE,
94             new Insets(5, 10, 10, 5), 0, 0));
95
96     sldWidth = new JSlider(0, 1500, 0);
97     sldWidth.addChangeListener(this);
98     mainPanel.add(sldWidth, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
99             GridBagConstraints.CENTER, GridBagConstraints.NONE,
100             new Insets(5, 5, 10, 5), 0, 0));
101
102     txtWidth = new JTextField(6);
103     txtWidth.addInputMethodListener(this);
104     txtWidth.addKeyListener(this);
105     mainPanel.add(txtWidth, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
106             GridBagConstraints.CENTER, GridBagConstraints.NONE,
107             new Insets(5, 5, 10, 10), 0, 0));
108
109     chkOnOff = new JCheckBox("Cueing ON/OFF", false);
110     chkOnOff.addItemListener(this);
111     mainPanel.add(chkOnOff, new GridBagConstraints(0, 2, 2, 1, 0.0, 0.0,
112             GridBagConstraints.WEST, GridBagConstraints.NONE,
113             new Insets(10, 10, 10, 10), 0, 0));
114     getContentPane().add(mainPanel, BorderLayout.CENTER);
115
116     JPanel controlPanel = new JPanel();
117
118     JButton btnOK = new JButton("OK");
119     btnOK.addActionListener(this);
120     btnOK.setActionCommand("OK");
121     controlPanel.add(btnOK);
122
123     JButton btnCancel = new JButton("Cancel");
124     btnCancel.addActionListener(this);
125     btnCancel.setActionCommand("Cancel");
126     controlPanel.add(btnCancel);
127     getContentPane().add(controlPanel, BorderLayout.SOUTH);
128   }
129
130   private void initValues()
131   {
132     Standard_Real depth = new Standard_Real();
133     Standard_Real width = new Standard_Real();
134     boolean isOn = myView.ZCueing(depth, width);
135
136     chkOnOff.setSelected(isOn);
137
138     sldDepth.setValue((int) Math.round(depth.GetValue()));
139     txtDepth.setText(String.valueOf(depth.GetValue()));
140
141     sldWidth.setValue((int) Math.round(width.GetValue()));
142     txtWidth.setText(String.valueOf(width.GetValue()));
143   }
144
145 //=======================================================================//
146 // Commands
147 //=======================================================================//
148   private void onDepthChanged()
149   {
150     String newValue = txtDepth.getText();
151     Double value = new Double((newValue.equals("") || newValue.equals("-"))?
152                               "0." : newValue);
153     if (value.doubleValue() > 1500. || value.doubleValue() < -1500.)
154       return;
155
156     TCollection_AsciiString message = new TCollection_AsciiString();
157     SampleViewer3DPackage.ChangeZCueingDepth(myView, value.doubleValue(), message);
158
159     myDocument.traceMessage(message.ToCString().GetValue(), "SetZCueingDepth");
160   }
161
162 //=======================================================================//
163   private void onWidthChanged()
164   {
165     String newValue = txtWidth.getText();
166     Double value = new Double((newValue.equals("") || newValue.equals("-"))?
167                               "0." : newValue);
168     if (value.doubleValue() > 1500. || value.doubleValue() <= 0.)
169       return;
170
171     TCollection_AsciiString message = new TCollection_AsciiString();
172     SampleViewer3DPackage.ChangeZCueingWidth(myView, value.doubleValue(), message);
173
174     myDocument.traceMessage(message.ToCString().GetValue(), "SetZCueingWidth");
175   }
176
177 //=======================================================================//
178   private void onCueingOnOff()
179   {
180     TCollection_AsciiString message = new TCollection_AsciiString();
181     SampleViewer3DPackage.ChangeZCueingOnOff(myView, chkOnOff.isSelected(), message);
182
183     myDocument.traceMessage(message.ToCString().GetValue(), "SetZCueingOn/SetZCueingOff");
184   }
185
186 //=======================================================================//
187   private void close()
188   {
189     dispose();
190   }
191
192
193 //=======================================================================//
194 // Action listener interface
195 //=======================================================================//
196   public void actionPerformed(ActionEvent event)
197   {
198     String nameAction = event.getActionCommand();
199     if (nameAction.equals("OK"))
200       close();
201     else if (nameAction.equals("Cancel"))
202       close();
203   }
204
205
206 //=======================================================================//
207 // Item listener interface
208 //=======================================================================//
209   public void itemStateChanged(ItemEvent event)
210   {
211     if (event.getSource().equals(chkOnOff))
212       onCueingOnOff();
213   }
214
215 //=======================================================================//
216 // Change listener interface
217 //=======================================================================//
218   public void stateChanged(ChangeEvent event)
219   {
220     JSlider slider = (JSlider) event.getSource();
221     if (slider.equals(sldDepth))
222     {
223       if (userDepthChanged)
224       {
225         txtDepth.setText(String.valueOf(slider.getValue()));
226         onDepthChanged();
227       }
228       else
229         userDepthChanged = true;
230     }
231     else if (slider.equals(sldWidth))
232     {
233       if (userWidthChanged)
234       {
235         txtWidth.setText(String.valueOf(slider.getValue()));
236         onWidthChanged();
237       }
238       else
239         userWidthChanged = true;
240     }
241   }
242
243 //=======================================================================//
244 // Key listener interface
245 //=======================================================================//
246   public void keyTyped(KeyEvent event)
247   {
248   }
249
250 //=======================================================================//
251   public void keyPressed(KeyEvent event)
252   {
253     JTextField field = (JTextField) event.getSource();
254
255     int aKod = event.getKeyCode();
256     if (aKod == event.VK_MINUS)
257     {
258       String aStr = field.getText();
259       int aPos = aStr.indexOf("-");
260
261       if (aPos == -1) // Minus not present
262       {
263         if ((field.getCaretPosition()) != 0)
264           consume = true;
265       }
266       else
267         consume = true;
268     }
269     else if ((aKod == event.VK_DECIMAL) || (aKod == event.VK_PERIOD))
270     {
271       String aStr = field.getText();
272       int aPos = aStr.indexOf(".");
273       if (aPos != -1) // the point is present in the string
274         consume = true;
275     }
276     else if (!event.isActionKey() && aKod != event.VK_BACK_SPACE &&
277                                      aKod != event.VK_DELETE)
278     {
279       if (!Character.isDigit(event.getKeyChar()))
280         consume = true;
281     }
282   }
283
284 //=======================================================================//
285   public void keyReleased(KeyEvent event)
286   {
287     JTextField field = (JTextField) event.getSource();
288     String newValue = field.getText();
289     Double value = new Double((newValue.equals("") || newValue.equals("-"))?
290                                "0." : newValue);
291
292     if (field.equals(txtDepth))
293     {
294       if (!newValue.equals(strDepth))
295       {
296         strDepth = newValue;
297         if (value.doubleValue() < -1500. || value.doubleValue() > 1500.)
298         {
299           txtDepth.selectAll();
300           JOptionPane.showMessageDialog(this, "Please enter a value between -1500 and 1500",
301                                         "Warning!!!", JOptionPane.WARNING_MESSAGE);
302           requestFocus();
303         }
304         else
305         {
306           userDepthChanged = false;
307           sldDepth.setValue((int) Math.round(value.doubleValue()));
308           onDepthChanged();
309         }
310       }
311     }
312     else if (field.equals(txtWidth))
313     {
314       if (!newValue.equals(strWidth))
315       {
316         strWidth = newValue;
317         if (value.doubleValue() <= 0. || value.doubleValue() > 1500.)
318         {
319           txtWidth.selectAll();
320           JOptionPane.showMessageDialog(this, "Please enter a value between 0 and 1500",
321                                         "Warning!!!", JOptionPane.WARNING_MESSAGE);
322           requestFocus();
323         }
324         else
325         {
326           userWidthChanged = false;
327           sldWidth.setValue((int) Math.round(value.doubleValue()));
328           onWidthChanged();
329         }
330       }
331     }
332   }
333
334 //=======================================================================//
335 // InputMethod listener interface
336 //=======================================================================//
337   public void inputMethodTextChanged(InputMethodEvent event)
338   {
339     if (consume)
340     {
341       event.consume();
342       consume = false;
343     }
344   }
345
346   public void caretPositionChanged(InputMethodEvent event)
347   {
348   }
349 }