1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package net.jbeans.j3d.bean.property.editor;
24
25 /* ------------------ Import classes (packages) ------------------- *//package-summary/html">class="comment"> ------------------ Import classes (packages) ------------------- *//package-summary.html">class="comment">/* ------------------ Import classes (packages) ------------------- *//package-summary.html">class="comment"> ------------------ Import classes (packages) ------------------- */
26 import java.awt.event.*;
27 import javax.swing.*;
28 import javax.media.j3d.*;
29
30 import net.jbeans.bean.property.editor.*;
31 import net.jbeans.util.text.*;
32
33
34
35
36 /***
37 * A property editor for editing Transform3D object.
38 *
39 * @version $Revision: 1.3 $
40 * @author Masahiro Takatsuka (masa@jbeans.net)
41 * @see EditorSupport
42 */
43
44 public final class Transform3DEditor extends EditorSupport {
45 private JTextField m00;
46 private JTextField m01;
47 private JTextField m02;
48 private JTextField m03;
49 private JTextField m10;
50 private JTextField m11;
51 private JTextField m12;
52 private JTextField m13;
53 private JTextField m20;
54 private JTextField m21;
55 private JTextField m22;
56 private JTextField m23;
57 private JTextField m30;
58 private JTextField m31;
59 private JTextField m32;
60 private JTextField m33;
61
62 public Transform3DEditor() {
63 this.m00 = new JTextField();
64 this.m00.setDocument(new NumberDocument());
65 this.m01 = new JTextField();
66 this.m01.setDocument(new NumberDocument());
67 this.m02 = new JTextField();
68 this.m02.setDocument(new NumberDocument());
69 this.m03 = new JTextField();
70 this.m03.setDocument(new NumberDocument());
71
72 this.m10 = new JTextField();
73 this.m10.setDocument(new NumberDocument());
74 this.m11 = new JTextField();
75 this.m11.setDocument(new NumberDocument());
76 this.m12 = new JTextField();
77 this.m12.setDocument(new NumberDocument());
78 this.m13 = new JTextField();
79 this.m13.setDocument(new NumberDocument());
80
81 this.m20 = new JTextField();
82 this.m20.setDocument(new NumberDocument());
83 this.m21 = new JTextField();
84 this.m21.setDocument(new NumberDocument());
85 this.m22 = new JTextField();
86 this.m22.setDocument(new NumberDocument());
87 this.m23 = new JTextField();
88 this.m23.setDocument(new NumberDocument());
89
90 this.m30 = new JTextField();
91 this.m30.setDocument(new NumberDocument());
92 this.m31 = new JTextField();
93 this.m31.setDocument(new NumberDocument());
94 this.m32 = new JTextField();
95 this.m32.setDocument(new NumberDocument());
96 this.m33 = new JTextField();
97 this.m33.setDocument(new NumberDocument());
98
99 JPanel mainpanel = new JPanel();
100 mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS));
101 JPanel panel = new JPanel();
102 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
103 panel.add(new JLabel("m00: "));
104 panel.add(this.m00);
105 panel.add(new JLabel("m01: "));
106 panel.add(this.m01);
107 panel.add(new JLabel("m02: "));
108 panel.add(this.m02);
109 panel.add(new JLabel("m03: "));
110 panel.add(this.m03);
111 mainpanel.add(panel);
112
113 panel = new JPanel();
114 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
115 panel.add(new JLabel("m10: "));
116 panel.add(this.m10);
117 panel.add(new JLabel("m11: "));
118 panel.add(this.m11);
119 panel.add(new JLabel("m12: "));
120 panel.add(this.m12);
121 panel.add(new JLabel("m13: "));
122 panel.add(this.m13);
123 mainpanel.add(panel);
124
125 panel = new JPanel();
126 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
127 panel.add(new JLabel("m20: "));
128 panel.add(this.m20);
129 panel.add(new JLabel("m21: "));
130 panel.add(this.m21);
131 panel.add(new JLabel("m22: "));
132 panel.add(this.m22);
133 panel.add(new JLabel("m23: "));
134 panel.add(this.m23);
135 mainpanel.add(panel);
136
137 panel = new JPanel();
138 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
139 panel.add(new JLabel("m30: "));
140 panel.add(this.m30);
141 panel.add(new JLabel("m31: "));
142 panel.add(this.m31);
143 panel.add(new JLabel("m32: "));
144 panel.add(this.m32);
145 panel.add(new JLabel("m33: "));
146 panel.add(this.m33);
147 mainpanel.add(panel);
148
149 setPanel(mainpanel);
150 }
151
152 public final void setValue(Object value) {
153 super.setValue(value);
154
155 if (value == null) {
156 value = new Transform3D();
157 }
158 Transform3D transform3d = (Transform3D) value;
159 double[] trans = new double[16];
160 transform3d.get(trans);
161 this.m00.setText(Double.toString(trans[0]));
162 this.m01.setText(Double.toString(trans[1]));
163 this.m02.setText(Double.toString(trans[2]));
164 this.m03.setText(Double.toString(trans[3]));
165
166 this.m10.setText(Double.toString(trans[4]));
167 this.m11.setText(Double.toString(trans[5]));
168 this.m12.setText(Double.toString(trans[6]));
169 this.m13.setText(Double.toString(trans[7]));
170
171 this.m20.setText(Double.toString(trans[8]));
172 this.m21.setText(Double.toString(trans[9]));
173 this.m22.setText(Double.toString(trans[10]));
174 this.m23.setText(Double.toString(trans[11]));
175
176 this.m30.setText(Double.toString(trans[12]));
177 this.m31.setText(Double.toString(trans[13]));
178 this.m32.setText(Double.toString(trans[14]));
179 this.m33.setText(Double.toString(trans[15]));
180 }
181
182 private final double[] getTransform3DValue() {
183 double[] trans = new double[16];
184 trans[0] = Double.parseDouble(this.m00.getText());
185 trans[1] = Double.parseDouble(this.m01.getText());
186 trans[2] = Double.parseDouble(this.m02.getText());
187 trans[3] = Double.parseDouble(this.m03.getText());
188
189 trans[4] = Double.parseDouble(this.m10.getText());
190 trans[5] = Double.parseDouble(this.m11.getText());
191 trans[6] = Double.parseDouble(this.m12.getText());
192 trans[7] = Double.parseDouble(this.m13.getText());
193
194 trans[8] = Double.parseDouble(this.m20.getText());
195 trans[9] = Double.parseDouble(this.m21.getText());
196 trans[10] = Double.parseDouble(this.m22.getText());
197 trans[11] = Double.parseDouble(this.m23.getText());
198
199 trans[12] = Double.parseDouble(this.m30.getText());
200 trans[13] = Double.parseDouble(this.m31.getText());
201 trans[14] = Double.parseDouble(this.m32.getText());
202 trans[15] = Double.parseDouble(this.m33.getText());
203
204 return trans;
205 }
206
207 public final Object getValue() {
208 double[] trans = getTransform3DValue();
209 return new Transform3D(trans);
210 }
211
212 public final String getJavaInitializationString() {
213 double[] trans = getTransform3DValue();
214 return "new javax.media.j3d.Transform3D(new double[]{" +
215 trans[0] + ", " + trans[1] + ", " + trans[2] + ", " + trans[3] + ", " +
216 trans[4] + ", " + trans[5] + ", " + trans[6] + ", " + trans[7] + ", " +
217 trans[8] + ", " + trans[9] + ", " + trans[10] + ", " + trans[11] + ", " +
218 trans[12] + ", " + trans[13] + ", " + trans[14] + ", " + trans[15] + ", "
219 + "}";
220 }
221 }