import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class LinkerEditor extends ObjEditor implements ChangeListener, ObjectUI, ItemListener { LinkerEditor(cLinker inBP, GroupEditor callee) { super(inBP,callee); objEditor = callee.GetEditor(); // new ObjEditor(inBP, this, callee); linker = (cLinker) inBP; // parent = p; SetupUI2(callee.objEditor); } // TEMP LinkerEditor(cLinker inClient, Object3D localCopy, GroupEditor callee) { this(inClient, localCopy, null, callee); } LinkerEditor(cLinker inBP, ObjectUI p, GroupEditor callee) { super(inBP,callee); objEditor = callee.GetEditor(); // new ObjEditor(inBP, this, callee); linker = inBP; //parent = p; SetupUI2(callee.objEditor); } LinkerEditor(cLinker inBP, Object3D copy, ObjectUI p, GroupEditor callee) // boolean ends) { //super(inBP, copy, callee); super(inBP, copy, p, callee); objEditor = this; //objEditor = new ObjEditor(inBP, copy, this, callee); // ?? super.parent = p; linker = (cLinker) copy; //parent = p; //objEditor.SetupUI(false); // ? //objEditor.SetupViews(); // ? SetupUI2(objEditor); } void SetupUI2(ObjEditor oe) { super.SetupUI2(oe); oe.aConstraints.gridwidth = 1; oe.aConstraints.fill = 0; oe.aConstraints.gridy += 1; oe.ctrlPanel.add(radiusLabel = new JLabel("Radius"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); oe.aConstraints.fill = GridBagConstraints.HORIZONTAL; // 1; oe.aConstraints.gridx += 1; oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH; oe.ctrlPanel.add(radiusField = new NumberSlider(), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); radiusField.setFloat(Math.abs(linker.height)); radiusField.addChangeListener(this); oe.aConstraints.fill = 0; oe.aConstraints.gridy += 1; oe.aConstraints.gridwidth = 1; oe.aConstraints.gridx = 0; oe.ctrlPanel.add(distortionLabel = new JLabel("Distortion"), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); oe.aConstraints.fill = GridBagConstraints.HORIZONTAL; // 1; oe.aConstraints.gridx += 1; oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH; oe.ctrlPanel.add(distortionField = new NumberSlider(), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); distortionField.setFloat(Math.abs(linker.depth)); distortionField.addChangeListener(this); oe.aConstraints.fill = 0; oe.aConstraints.gridwidth = 1; oe.aConstraints.gridy += 1; oe.aConstraints.gridx = 0; oe.aConstraints.gridwidth = 3; oe.aConstraints.anchor = GridBagConstraints.WEST; oe.ctrlPanel.add(boxMode = new JCheckBox("Box mode", (linker.height<0)), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); boxMode.addItemListener(this); oe.aConstraints.anchor = GridBagConstraints.EAST; oe.aConstraints.gridwidth = 1; } void Clear() { objEditor.Clear(); linker = null; } public void itemStateChanged(ItemEvent e) { //System.out.println(e); //if(e.getStateChange() == ItemEvent.SELECTED) { linker.height = -linker.height; } applySelf(); //super.applySelf(); objEditor.refreshContents(); } public void stateChanged(ChangeEvent e) { //System.out.println("Biparam :: stateChanged"); if (e.getSource() == radiusField || e.getSource() == distortionField) { applySelf(); objEditor.refreshContents(); } else super.stateChanged(e); } /**/ public void applySelf() { if(linker.height < 0) linker.height = -radiusField.getFloat(); else linker.height = radiusField.getFloat(); linker.depth = distortionField.getFloat(); // june 2013 super.applySelf(); } /**/ public void closeUI() { ObjEditor oe = objEditor; radiusField.removeChangeListener(this); distortionField.removeChangeListener(this); oe.ctrlPanel.remove(radiusField); oe.ctrlPanel.remove(radiusLabel); oe.ctrlPanel.remove(distortionField); oe.ctrlPanel.remove(distortionLabel); boxMode.removeItemListener(this); oe.ctrlPanel.remove(boxMode); //oe.ctrlPanel.repaint(); super.closeUI(); } public ObjEditor GetEditor() { return objEditor; } void refreshContents2() { objEditor.refreshContents(); } cLinker linker; JLabel radiusLabel; NumberSlider radiusField; JLabel distortionLabel; NumberSlider distortionField; JCheckBox boxMode; //ObjectUI parent; //ObjEditor objEditor; }