import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import grafeme.ui.*; class ParticleEditor extends ObjEditor implements //ItemListener, ChangeListener, ObjectUI, ActionListener { ParticleEditor(ParticleSystem inBP, GroupEditor callee) { super(inBP, callee); objEditor = callee.GetEditor(); // new ObjEditor(inBP, this, callee); particlesystem = (ParticleSystem) inBP; // parent = p; //SetupUI2(callee.objEditor); SetupUI2(objEditor); } // TEMP ParticleEditor(ParticleSystem inClient, Object3D localCopy, GroupEditor callee) { this(inClient, localCopy, null, callee); } ParticleEditor(ParticleSystem inBP, ObjectUI p, GroupEditor callee) { super(inBP, callee); objEditor = callee.GetEditor(); // new ObjEditor(inBP, this, callee); particlesystem = (ParticleSystem) inBP; parent = p; SetupUI2(callee.objEditor); } ParticleEditor(ParticleSystem 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; particlesystem = (ParticleSystem) copy; parent = p; //objEditor.SetupUI(false); // ? //objEditor.SetupViews(); // ? SetupUI2(objEditor); } void SetupUI2(ObjEditor oe) { /* oe.aConstraints.fill = GridBagConstraints.HORIZONTAL; oe.aConstraints.gridx = 0; oe.aConstraints.weighty = 0; oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH+1; oe.ctrlPanel.add(nameField = new JTextField(biparam.name), oe.aConstraints); nameField.addActionListener(this); oe.aConstraints.gridy += 1; oe.aConstraints.gridwidth = 1; */ super.SetupUI2(oe); particlesPanel = AddSlider(oe.ctrlPanel, "Particles", 0, 1000, particlesystem.numParticles); // oe.aConstraints.gridx = 0; // oe.aConstraints.gridwidth = 1; // oe.aConstraints.fill = GridBagConstraints.VERTICAL; // oe.ctrlPanel.add(frameLabel = new JLabel("Child: "), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); // oe.aConstraints.fill = GridBagConstraints.HORIZONTAL; // 1; // oe.aConstraints.gridx += 1; // oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH; // oe.ctrlPanel.add(frameField = new NumberSlider(0.0, 100), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); // // frameField.setFloat(particlesystem.initialVelocity); particlesField = (cNumberSlider)particlesPanel.getComponent(1); //, 1); oe.ctrlPanel.Return(); speedPanel = AddSlider(oe.ctrlPanel, "Speed", 0, 10, particlesystem.initialVelocity, 1); speedField = (cNumberSlider)speedPanel.getComponent(1); oe.ctrlPanel.Return(); timestepPanel = AddSlider(oe.ctrlPanel, "Timestep", 0.001f, 1, particlesystem.controller.timestep, 1); timestepField = (cNumberSlider)timestepPanel.getComponent(1); oe.ctrlPanel.Return(); delayPanel = AddSlider(oe.ctrlPanel, "Delay", 0, 10, particlesystem.creationdelay, 1); delayField = (cNumberSlider)delayPanel.getComponent(1); oe.ctrlPanel.Return(); angleminPanel = AddSlider(oe.ctrlPanel, "Angle min", 0, (float)Math.PI, particlesystem.minimumAngle, 1); angleminField = (cNumberSlider)angleminPanel.getComponent(1); oe.ctrlPanel.Return(); anglemaxPanel = AddSlider(oe.ctrlPanel, "Angle max", 0, (float)Math.PI, particlesystem.maximumAngle, 1); anglemaxField = (cNumberSlider)anglemaxPanel.getComponent(1); oe.ctrlPanel.Return(); sizeminPanel = AddSlider(oe.ctrlPanel, "Size min", 0, 10, particlesystem.minimumSize, 1); sizeminField = (cNumberSlider)sizeminPanel.getComponent(1); oe.ctrlPanel.Return(); sizemaxPanel = AddSlider(oe.ctrlPanel, "Size max", 0, 10, particlesystem.maximumSize, 1); sizemaxField = (cNumberSlider)sizemaxPanel.getComponent(1); oe.ctrlPanel.Return(); lifeminPanel = AddSlider(oe.ctrlPanel, "Life min", 0, 100, particlesystem.minimumLifeTime, 1); lifeminField = (cNumberSlider)lifeminPanel.getComponent(1); oe.ctrlPanel.Return(); lifemaxPanel = AddSlider(oe.ctrlPanel, "Life max", 0, 100, particlesystem.maximumLifeTime, 1); lifemaxField = (cNumberSlider)lifemaxPanel.getComponent(1); oe.ctrlPanel.Return(); densityPanel = AddSlider(oe.ctrlPanel, "Density", 0, 1, particlesystem.density, 1); densityField = (cNumberSlider)densityPanel.getComponent(1); oe.ctrlPanel.Return(); gravityPanel = AddSlider(oe.ctrlPanel, "Gravity", 0, 1, -particlesystem.controller.gvector.y, 1); gravityField = (cNumberSlider)gravityPanel.getComponent(1); oe.ctrlPanel.Return(); standbyPanel = AddSlider(oe.ctrlPanel, "Standby", 0, 1, particlesystem.standby, 1); standbyField = (cNumberSlider)standbyPanel.getComponent(1); oe.ctrlPanel.Return(); // oe.aConstraints.gridy += 1; // oe.aConstraints.gridx = 0; // oe.aConstraints.gridwidth = 1; // oe.aConstraints.fill = GridBagConstraints.VERTICAL; // oe.ctrlPanel.add(speedLabel = new JLabel("Damp: "), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); // oe.aConstraints.fill = GridBagConstraints.HORIZONTAL; // 1; // oe.aConstraints.gridx += 1; // oe.aConstraints.gridwidth = ObjEditor.GRIDWIDTH; // oe.ctrlPanel.add(speedField = new NumberSlider(0, 500), oe.aConstraints, oe.ctrlPanel.getComponentCount()-2); // // speedField.setInteger(particlesystem.speed); // oe.aConstraints.gridy += 1; // oe.aConstraints.gridwidth = 1; // oe.aConstraints.fill = 0; // oe.aConstraints.gridx -= 1; // oe.aConstraints.fill = GridBagConstraints.VERTICAL; // oe.aConstraints.gridy += 1; // oe.aConstraints.gridx = 0; // velocityField.addChangeListener(this); // speedField.addChangeListener(this); } void Clear() { objEditor.Clear(); particlesystem = null; } // public void itemStateChanged(ItemEvent e) // { // if (//e.getSource() == nameField || // e.getSource() == endcaps) // { // //System.out.println(e); // frameselect.endcaps = (e.getStateChange() == ItemEvent.SELECTED); // //Refresh(); // frameselect.retile(); // applySelf(); // //super.applySelf(); // objEditor.refreshContents(); // } // else // { // super.itemStateChanged(e); // } // } // public void actionPerformed(ActionEvent e) // { // if (//e.getSource() == nameField || // e.getSource() == endcaps) // { // //System.out.println(e); // applySelf(); // //super.applySelf(); // refreshContents(); // //Refresh(); // } // else // { // super.actionPerformed(e); // } // } public void stateChanged(ChangeEvent e) { //System.out.println("Biparam :: stateChanged"); if (e.getSource() == particlesField || e.getSource() == speedField || e.getSource() == delayField || e.getSource() == timestepField || e.getSource() == angleminField || e.getSource() == anglemaxField || e.getSource() == sizeminField || e.getSource() == sizemaxField || e.getSource() == lifeminField || e.getSource() == lifemaxField || e.getSource() == densityField || e.getSource() == standbyField || e.getSource() == gravityField) { applySelf(); //super.applySelf(); objEditor.refreshContents(); //Refresh(); } else { super.stateChanged(e); } } void Refresh() { // System.out.println("Biparam :: Refresh"); new Exception().printStackTrace(); particlesystem.initialVelocity = (float) speedField.getFloat(); // biparam.minUDivs, 99); particlesystem.controller.timestep = (float) timestepField.getFloat(); refreshContents(); } /* public void doLayout() { super.doLayout(); labelAndField(uDivsLabel, uDivsField); labelAndField(vDivsLabel, vDivsField); if (endcaps != null) { int h = endcaps.getPreferredSize().height; int w = endcaps.getPreferredSize().width; endcaps.setBounds(5, widgetPos, w, h); widgetPos += h; } widgetPos += 5; } */ /**/ public void applySelf() { //System.out.println("Biparam :: applySelf"); //super.applySelf(); particlesystem.numParticles = particlesField.getInteger(); // biparam.minUDivs, 99); particlesystem.initialVelocity = (float) speedField.getFloat(); // biparam.minUDivs, 99); particlesystem.controller.timestep = (float) timestepField.getFloat(); particlesystem.creationdelay = (float) delayField.getFloat(); particlesystem.minimumSize = (float) sizeminField.getFloat(); particlesystem.maximumSize = (float) sizemaxField.getFloat(); particlesystem.minimumAngle = (float) angleminField.getFloat(); particlesystem.maximumAngle = (float) anglemaxField.getFloat(); particlesystem.minimumLifeTime = (float) lifeminField.getFloat(); particlesystem.maximumLifeTime = (float) lifemaxField.getFloat(); particlesystem.density = (float) densityField.getFloat(); particlesystem.controller.gvector.y = (float) -gravityField.getFloat(); particlesystem.standby = (float) standbyField.getFloat(); // particlesystem.speed = speedField.getInteger(); // biparam.minUDivs, 99); //biparam.name = nameField.getText(); // super.applySelf(); } /**/ public void closeUI() { // Remove(particlesField); // Remove(speedField); // Remove(timestepField); // Remove(delayField); // Remove(sizeminField); // Remove(sizemaxField); // Remove(angleminField); // Remove(anglemaxField); // Remove(lifeminField); // Remove(lifemaxField); // Remove(densityField); // Remove(gravityField); // Remove(standbyField); objEditor.ctrlPanel.remove(particlesPanel); objEditor.ctrlPanel.remove(speedPanel); objEditor.ctrlPanel.remove(timestepPanel); objEditor.ctrlPanel.remove(delayPanel); objEditor.ctrlPanel.remove(sizeminPanel); objEditor.ctrlPanel.remove(sizemaxPanel); objEditor.ctrlPanel.remove(angleminPanel); objEditor.ctrlPanel.remove(anglemaxPanel); objEditor.ctrlPanel.remove(lifeminPanel); objEditor.ctrlPanel.remove(lifemaxPanel); objEditor.ctrlPanel.remove(densityPanel); objEditor.ctrlPanel.remove(gravityPanel); objEditor.ctrlPanel.remove(standbyPanel); // ObjEditor oe = objEditor; // frameField.removeChangeListener(this); // oe.ctrlPanel.remove(frameField); // oe.ctrlPanel.remove(frameLabel); // oe.ctrlPanel.remove(speedField); // oe.ctrlPanel.remove(speedLabel); //oe.ctrlPanel.repaint(); super.closeUI(); } public ObjEditor GetEditor() { return objEditor; } void refreshContents2() { objEditor.refreshContents(); } ParticleSystem particlesystem; cNumberSlider particlesField; cNumberSlider speedField; cNumberSlider timestepField; cNumberSlider delayField; cNumberSlider sizeminField; cNumberSlider sizemaxField; cNumberSlider angleminField; cNumberSlider anglemaxField; cNumberSlider lifeminField; cNumberSlider lifemaxField; cNumberSlider densityField; cNumberSlider gravityField; cNumberSlider standbyField; cGridBag particlesPanel; cGridBag speedPanel; cGridBag timestepPanel; cGridBag delayPanel; cGridBag sizeminPanel; cGridBag sizemaxPanel; cGridBag angleminPanel; cGridBag anglemaxPanel; cGridBag lifeminPanel; cGridBag lifemaxPanel; cGridBag densityPanel; cGridBag gravityPanel; cGridBag standbyPanel; ObjectUI parent; //ObjEditor objEditor; }