//package and imports omitted public class ViewOriginDlgNew extends javax.swing.JDialog { //Constructor public ViewOriginDlgNew( java.awt.Frame parent, boolean modal, DadDocument docIn ) { super(parent, modal); doc = docIn; initComponents(); initVars(); } // private void initComponents() { . . availableVodComboBox = new javax.swing.JComboBox(); . . availableVodComboBox.setFocusable(false); availableVodComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { availableVodComboBoxActionPerformed(evt); } }); . . } private void initVars() { . . availableVodComboBoxMaintenance = true; //Use recommended method for adding items MutableComboBoxModel mbm = (MutableComboBoxModel)availableVodComboBox.getModel(); availableVodComboBox.setModel(mbm); //Fill availableVodComboBox for( int i = 0; i < doc.getNextVodIndex(); i++ ) { VOD tmpVod = doc.getVOD( i ); //Read doc.vodsDefined directly int vodNum = tmpVod.getVodNumber(); String name = makeViewName( vodNum ); //availableVodComboBox.addItem( vodNum + " " + name ); mbm.addElement( vodNum + " " + name ); } availableVodComboBox.setSelectedIndex( -1 ); availableVodComboBoxMaintenance = false; . . } private void availableVodComboBoxActionPerformed(java.awt.event.ActionEvent evt) { //NOTE: debugger breakpoints in this method lock up the entire linux system! if( ! availableVodComboBoxMaintenance ) { //Use recommended method for retrieving items MutableComboBoxModel mbm = (MutableComboBoxModel)availableVodComboBox.getModel(); //String tmpS = (String)availableVodComboBox.getSelectedItem(); String tmpS = (String)mbm.getSelectedItem(); tmpS = tmpS.substring( 0, tmpS.indexOf( ' ' ) ); vodNumber = Integer.valueOf( tmpS ); VOD tmpVod = doc.getVOD( doc.getVodNumberIndex( vodNumber ) ); //Fill dialog text box values vOrg = vRef.plus( tmpVod.getVnrm().unMinus() ); //Req'd later in okButtonActionPerfomed(); vOrgX = vOrg.getX(); vOrgY = vOrg.getY(); vOrgZ = vOrg.getZ(); viewOriginXtext.setText( Double.toString( vOrgX )); viewOriginYtext.setText( Double.toString( vOrgY )); viewOriginZtext.setText( Double.toString( vOrgZ )); vName = makeViewName( vodNumber ); viewNameText.setText( vName ); //Fixes null pointer problem in MDI.newView if( tmpVod.getXdir() == null ) tmpVod.setDirectionVecs( vUp, vRef, vOrg ); //Determine view rotation angle Point3 tP = newPoint3( vOrg ); tP.setY( tP.getY() +1.0 ); //Easier to do than initializing with 3 parameters //System.out.println("vRef = " + vRef.getX() + ", " + vRef.getY() + ", " + vRef.getZ() ); //System.out.println("vOrg = " + vOrg.getX() + ", " + vOrg.getY() + ", " + vOrg.getZ() ); //System.out.println("tP = " + tP.getX() + ", " + tP.getY() + ", " + tP.getZ() ); Plane pln = newPlane( vOrg, vRef, tP ), viewXZ = newPlane( vOrg, tmpVod.getXdir() ); // viewYZ = newPlane( vOrg, tmpVod.getYdir() ); //System.out.println("pln = " + pln.getA() + ", " + pln.getB() + ", " + pln.getC() + ", " + pln.getD()); //System.out.println("viewXZ = " + viewXZ.getA() + ", " + viewXZ.getB() + ", " + viewXZ.getC() + ", " + viewXZ.getD()); //System.out.println("viewYZ = " + viewYZ.getA() + ", " + viewYZ.getB() + ", " + viewYZ.getC() + ", " + viewYZ.getD()); //double dist = Double.NaN, // alpha = Double.NaN; if( pln.getNormalVector().mag() < EPSILON ) { tP.setEq(0, vOrg.getY(), vOrg.getZ() -1); pln.setPlaneThrough3Points(vOrg, vRef, tP); //System.out.println("tP = " + tP.getX() + ", " + tP.getY() + ", " + tP.getZ() ); //System.out.println("pln = " + pln.getA() + ", " + pln.getB() + ", " + pln.getC() + ", " + pln.getD()); //dist = viewXZ.getPerpDistToPlane( tP ); //alpha = acos( tmpVod.getXdir().cos( pln.getNormalVector() )); } //else { // dist = viewXZ.getPerpDistToPlane( tP ); // alpha = acos( tmpVod.getXdir().cos( pln.getNormalVector() )); //} double dist = viewXZ.getPerpDistToPlane( tP ), alpha = acos( tmpVod.getXdir().cos( pln.getNormalVector() )); //Vec3 tvodXdir = tmpVod.getXdir(), // tvodYdir = tmpVod.getYdir(), // plnNrmVec = pln.getNormalVector(); //System.out.println("tvodXdir = " + tvodXdir.getX() + ", " + tvodXdir.getY() + ", " + tvodXdir.getZ() ); //System.out.println("tvodYdir = " + tvodYdir.getX() + ", " + tvodYdir.getY() + ", " + tvodYdir.getZ() ); //System.out.println("plnNrmVec = " + plnNrmVec.getX() + ", " + plnNrmVec.getY() + ", " + plnNrmVec.getZ() ); //System.out.println("dist = " + dist ); //System.out.println("alpha = " + alpha ); if( dist > 0.0 ) alpha = TWOPI -alpha; //Original code just negated alpha //Set textbox value for rotation angle viewRotationText.setText( Double.toString( alpha * 180.0 / PI ) ); //Calc angleAboutX and angleAboutZ then set the textbox values if( calcAngleAboutXandZ() ) { setAngleTextfieldText(); setTestVod( vodNumber ); previewPanel.repaint(); } } } private void handleRadioButtonAction( int vNum ) { availableVodComboBoxMaintenance = true; //Use recommended method for adding items MutableComboBoxModel mbm = (MutableComboBoxModel)availableVodComboBox.getModel(); //availableVodComboBox.setSelectedIndex( -1 ); mbm.setSelectedItem(null); availableVodComboBoxMaintenance = false; vRot = 0.0; vUp.setEq( 0.0, 1.0, 0.0 ); setVorgVname(); if( ! limitRadioButtonAction ) { setVorgXYZandAngleAboutXandZ(); setTestVod( vNum ); previewPanel.repaint(); } } // Variables declaration - do not modify . . private javax.swing.JComboBox availableVodComboBox; . . // End of variables declaration //My Vars . . private boolean availableVodComboBoxMaintenance; . . }