01: package net.ar.webonswing.tutorial;
02:
03: import java.awt.Container;
04: import java.awt.event.ActionEvent;
05: import java.awt.event.ActionListener;
06:
07: import javax.swing.JButton;
08: import javax.swing.JComboBox;
09: import javax.swing.JDialog;
10: import javax.swing.JLabel;
11: import javax.swing.JTextField;
12:
13: import net.ar.webonswing.WosFramework;
14: import net.ar.webonswing.remote.RemoteListener;
15: import net.ar.webonswing.swing.layouts.TemplateLayout;
16:
17: public class RemoteCalculator extends JDialog implements
18: ActionListener, RemoteListener {
19: protected JLabel resultLabel;
20: protected JTextField firstNumerField;
21: protected JTextField secondNumerField;
22: protected JComboBox operationCombo;
23:
24: public RemoteCalculator() {
25: Container contentPane = getContentPane();
26:
27: resultLabel = new JLabel("result");
28: firstNumerField = new JTextField("");
29: secondNumerField = new JTextField("");
30: operationCombo = new JComboBox(new String[] { "+", "-", "*",
31: "/" });
32: JButton processButton = new JButton("=");
33:
34: processButton.addActionListener(this );
35:
36: contentPane.setLayout(new TemplateLayout(WosFramework
37: .getKeyPositionTemplateForName("CalculatorTemplate")));
38: contentPane.add(firstNumerField, "firstNumber");
39: contentPane.add(operationCombo, "operation");
40: contentPane.add(secondNumerField, "secondNumber");
41: contentPane.add(resultLabel, "result");
42: contentPane.add(processButton, "button");
43:
44: WosFramework.assignContributor(this ,
45: CalculatorContributor.class);
46: }
47:
48: public void actionPerformed(ActionEvent e) {
49: float firstNumber = Float.parseFloat(firstNumerField.getText());
50: float secondNumber = Float.parseFloat(secondNumerField
51: .getText());
52: float result = 0;
53:
54: switch (operationCombo.getSelectedItem().toString().charAt(0)) {
55: case '+':
56: result = firstNumber + secondNumber;
57: break;
58: case '-':
59: result = firstNumber - secondNumber;
60: break;
61: case '*':
62: result = firstNumber * secondNumber;
63: break;
64: case '/':
65: result = firstNumber / secondNumber;
66: break;
67: }
68:
69: resultLabel.setText(Float.toString(result));
70: }
71:
72: public String getRemoteName() {
73: return "CalculatorActionListener";
74: }
75:
76: public Object[] getRemoteParameters() {
77: return new Object[] { resultLabel, firstNumerField,
78: secondNumerField, operationCombo };
79: }
80: }
|