Inheritance diagram for MatrixChoice::
Public Methods | |
MatrixChoice (org.omg.CORBA.TypeCode tc) | |
JComponent | inputArg () |
Dialog component where the user specifies the result. More... | |
java.lang.Object | asObject (String name) throws InvalidChoiceException |
Returns the object introduced as that text. More... | |
Static Public Methods | |
HxCorba.Matrix | getMatrix (String type, String values) throws InvalidChoiceException |
|
00025 { 00026 super(tc); 00027 _objectName = null; 00028 } |
|
Dialog component where the user specifies the result.
Reimplemented from InterfaceChoice.
00031 { 00032 if(_input == null) { 00033 _input = (JComboBox)super.inputArg(); 00034 _input.addItem("rotate: 1.0"); 00035 _input.addItem("trans: 1.0 1.0"); 00036 _input.addItem("scale: 1.0 1.0"); 00037 00038 _input.setEditable(true); 00039 _input.getEditor().getEditorComponent().addFocusListener(new HxJava.Util.SelectOnFocus()); 00040 00041 _input.setSelectedIndex(0); 00042 } 00043 return _input; 00044 } |
|
00048 { 00049 HxCorba.MatrixFactory factory; 00050 try { 00051 org.omg.CORBA.Object obj = 00052 CorbaMediator.instance().getInitialObject("Constructor"); 00053 factory = HxCorba.MatrixFactoryHelper.narrow(obj); 00054 }catch(Exception e) { 00055 throw new InvalidChoiceException("Cannot find HORUS server"); 00056 } 00057 00058 try { 00059 StringTokenizer tok = new StringTokenizer(values); 00060 double[] dValues = new double[3]; 00061 int nDValues = 0; 00062 while(tok.hasMoreTokens() && nDValues < 3) { 00063 dValues[nDValues] = Double.parseDouble(tok.nextToken()); 00064 nDValues++; 00065 }; 00066 00067 if(type.equals("rotate:")) { 00068 if(nDValues < 1) 00069 throw new InvalidChoiceException("Rotate requires 1 double"); 00070 return factory.rotate2d(dValues[0]); 00071 } 00072 00073 if(type.equals("trans:")) { 00074 if(nDValues < 2) 00075 throw new InvalidChoiceException("Translation requires 2 doubles"); 00076 return factory.translate2d(dValues[0], dValues[1]); 00077 } 00078 00079 if(type.equals("scale:")) { 00080 if(nDValues < 2) 00081 throw new InvalidChoiceException("Scaling requires 2 doubles"); 00082 return factory.scale2d(dValues[0], dValues[1]); 00083 } 00084 00085 }catch(NumberFormatException e) { 00086 } 00087 00088 throw new InvalidChoiceException("Wrong number"); 00089 } |
|
Returns the object introduced as that text. Useful method to implement setArgument. Reimplemented from InterfaceChoice.
00092 { 00093 if(name.equals(_objectName)) return _object; //already computed 00094 00095 String type = null; 00096 if(name.startsWith("rotate:")) type = "rotate:"; 00097 else if(name.startsWith("trans:")) type = "trans:"; 00098 else if(name.startsWith("scale:")) type = "scale:"; 00099 00100 if(type == null) _object = super.asObject(name); 00101 else { 00102 try { 00103 String values = name.substring(type.length()).trim(); 00104 _object = getMatrix(type, values); 00105 }catch(InvalidChoiceException e) { 00106 _input.requestFocus(); 00107 _objectName = null; 00108 throw e; 00109 } 00110 } 00111 00112 _objectName = name; 00113 return _object; 00114 } |