package info.u250.c2d.box2deditor.ui.controls;
import info.u250.c2d.box2deditor.adapter.DistanceJointDefModel;
import info.u250.c2d.box2deditor.gdx.support.Geometry;
import info.u250.c2d.box2deditor.ui.Binder;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
public class DistanceJointDefPropertiesPanel extends JointDefPropertiesPanel{
public DistanceJointDefPropertiesPanel() {
JLabel lblLocalanchorax = new JLabel("localAnchorA-x:");
GridBagConstraints gbc_lblLocalanchorax = new GridBagConstraints();
gbc_lblLocalanchorax.insets = new Insets(0, 0, 5, 5);
gbc_lblLocalanchorax.gridx = 0;
gbc_lblLocalanchorax.gridy = 6;
getPanel().add(lblLocalanchorax, gbc_lblLocalanchorax);
spinnerLocalAnchorAX = new JSpinner();
spinnerLocalAnchorAX.setModel(new SpinnerNumberModel(new Float(0), null, null, new Float(1)));
GridBagConstraints gbc_spinnerLocalAnchorAX = new GridBagConstraints();
gbc_spinnerLocalAnchorAX.insets = new Insets(0, 0, 5, 0);
gbc_spinnerLocalAnchorAX.fill = GridBagConstraints.HORIZONTAL;
gbc_spinnerLocalAnchorAX.gridx = 1;
gbc_spinnerLocalAnchorAX.gridy = 6;
getPanel().add(spinnerLocalAnchorAX, gbc_spinnerLocalAnchorAX);
JLabel lblLocalanchoray = new JLabel("localAnchorA-y:");
GridBagConstraints gbc_lblLocalanchoray = new GridBagConstraints();
gbc_lblLocalanchoray.insets = new Insets(0, 0, 5, 5);
gbc_lblLocalanchoray.gridx = 0;
gbc_lblLocalanchoray.gridy = 7;
getPanel().add(lblLocalanchoray, gbc_lblLocalanchoray);
spinnerLocalAnchorAY = new JSpinner();
spinnerLocalAnchorAY.setModel(new SpinnerNumberModel(new Float(0), null, null, new Float(1)));
GridBagConstraints gbc_spinnerLocalAnchorAY = new GridBagConstraints();
gbc_spinnerLocalAnchorAY.fill = GridBagConstraints.HORIZONTAL;
gbc_spinnerLocalAnchorAY.insets = new Insets(0, 0, 5, 0);
gbc_spinnerLocalAnchorAY.gridx = 1;
gbc_spinnerLocalAnchorAY.gridy = 7;
getPanel().add(spinnerLocalAnchorAY, gbc_spinnerLocalAnchorAY);
chckbxSetToZero = new JCheckBox("Set To Zero");
GridBagConstraints gbc_chckbxSetToZero = new GridBagConstraints();
gbc_chckbxSetToZero.anchor = GridBagConstraints.WEST;
gbc_chckbxSetToZero.insets = new Insets(0, 0, 5, 0);
gbc_chckbxSetToZero.gridx = 1;
gbc_chckbxSetToZero.gridy = 8;
getPanel().add(chckbxSetToZero, gbc_chckbxSetToZero);
JLabel lblLocalanchorbx = new JLabel("localAnchorB-x:");
GridBagConstraints gbc_lblLocalanchorbx = new GridBagConstraints();
gbc_lblLocalanchorbx.insets = new Insets(0, 0, 5, 5);
gbc_lblLocalanchorbx.gridx = 0;
gbc_lblLocalanchorbx.gridy = 9;
getPanel().add(lblLocalanchorbx, gbc_lblLocalanchorbx);
spinnerLocalAnchorBx = new JSpinner();
spinnerLocalAnchorBx.setModel(new SpinnerNumberModel(new Float(0), null, null, new Float(1)));
GridBagConstraints gbc_spinnerLocalAnchorBx = new GridBagConstraints();
gbc_spinnerLocalAnchorBx.fill = GridBagConstraints.HORIZONTAL;
gbc_spinnerLocalAnchorBx.insets = new Insets(0, 0, 5, 0);
gbc_spinnerLocalAnchorBx.gridx = 1;
gbc_spinnerLocalAnchorBx.gridy = 9;
getPanel().add(spinnerLocalAnchorBx, gbc_spinnerLocalAnchorBx);
JLabel lblLocalanchorby = new JLabel("localAnchorB-y:");
GridBagConstraints gbc_lblLocalanchorby = new GridBagConstraints();
gbc_lblLocalanchorby.insets = new Insets(0, 0, 5, 5);
gbc_lblLocalanchorby.gridx = 0;
gbc_lblLocalanchorby.gridy = 10;
getPanel().add(lblLocalanchorby, gbc_lblLocalanchorby);
spinnerLocalAnchorBy = new JSpinner();
spinnerLocalAnchorBy.setModel(new SpinnerNumberModel(new Float(0), null, null, new Float(1)));
GridBagConstraints gbc_spinnerLocalAnchorBy = new GridBagConstraints();
gbc_spinnerLocalAnchorBy.fill = GridBagConstraints.HORIZONTAL;
gbc_spinnerLocalAnchorBy.insets = new Insets(0, 0, 5, 0);
gbc_spinnerLocalAnchorBy.gridx = 1;
gbc_spinnerLocalAnchorBy.gridy = 10;
getPanel().add(spinnerLocalAnchorBy, gbc_spinnerLocalAnchorBy);
chckbxSetToZero_1 = new JCheckBox("Set To Zero");
GridBagConstraints gbc_chckbxSetToZero_1 = new GridBagConstraints();
gbc_chckbxSetToZero_1.anchor = GridBagConstraints.WEST;
gbc_chckbxSetToZero_1.insets = new Insets(0, 0, 5, 0);
gbc_chckbxSetToZero_1.gridx = 1;
gbc_chckbxSetToZero_1.gridy = 11;
getPanel().add(chckbxSetToZero_1, gbc_chckbxSetToZero_1);
JLabel lblLength = new JLabel("length:");
GridBagConstraints gbc_lblLength = new GridBagConstraints();
gbc_lblLength.insets = new Insets(0, 0, 5, 5);
gbc_lblLength.gridx = 0;
gbc_lblLength.gridy = 12;
getPanel().add(lblLength, gbc_lblLength);
spinnerLength = new JSpinner();
spinnerLength.setModel(new SpinnerNumberModel(new Float(0), null, null, new Float(1)));
GridBagConstraints gbc_spinnerLength = new GridBagConstraints();
gbc_spinnerLength.fill = GridBagConstraints.HORIZONTAL;
gbc_spinnerLength.insets = new Insets(0, 0, 5, 0);
gbc_spinnerLength.gridx = 1;
gbc_spinnerLength.gridy = 12;
getPanel().add(spinnerLength, gbc_spinnerLength);
chckbxAutoCalculateLength = new JCheckBox("auto calculate length");
GridBagConstraints gbc_chckbxAutoCalculateLength = new GridBagConstraints();
gbc_chckbxAutoCalculateLength.anchor = GridBagConstraints.WEST;
gbc_chckbxAutoCalculateLength.insets = new Insets(0, 0, 5, 0);
gbc_chckbxAutoCalculateLength.gridx = 1;
gbc_chckbxAutoCalculateLength.gridy = 13;
getPanel().add(chckbxAutoCalculateLength, gbc_chckbxAutoCalculateLength);
JLabel lblFrequencyhz = new JLabel("frequencyHz:");
GridBagConstraints gbc_lblFrequencyhz = new GridBagConstraints();
gbc_lblFrequencyhz.insets = new Insets(0, 0, 5, 5);
gbc_lblFrequencyhz.gridx = 0;
gbc_lblFrequencyhz.gridy = 14;
getPanel().add(lblFrequencyhz, gbc_lblFrequencyhz);
spinnerFrequencyHz = new JSpinner();
spinnerFrequencyHz.setModel(new SpinnerNumberModel(new Float(0), null, null, new Float(1)));
GridBagConstraints gbc_spinnerFrequencyHz = new GridBagConstraints();
gbc_spinnerFrequencyHz.fill = GridBagConstraints.HORIZONTAL;
gbc_spinnerFrequencyHz.insets = new Insets(0, 0, 5, 0);
gbc_spinnerFrequencyHz.gridx = 1;
gbc_spinnerFrequencyHz.gridy = 14;
getPanel().add(spinnerFrequencyHz, gbc_spinnerFrequencyHz);
JLabel lblDampingratio = new JLabel("dampingRatio:");
GridBagConstraints gbc_lblDampingratio = new GridBagConstraints();
gbc_lblDampingratio.insets = new Insets(0, 0, 5, 5);
gbc_lblDampingratio.gridx = 0;
gbc_lblDampingratio.gridy = 15;
getPanel().add(lblDampingratio, gbc_lblDampingratio);
spinnerDampingRatio = new JSpinner();
spinnerDampingRatio.setModel(new SpinnerNumberModel(new Float(0), new Float(0), new Float(1), new Float(0.1)));
GridBagConstraints gbc_spinnerDampingRatio = new GridBagConstraints();
gbc_spinnerDampingRatio.fill = GridBagConstraints.HORIZONTAL;
gbc_spinnerDampingRatio.insets = new Insets(0, 0, 5, 0);
gbc_spinnerDampingRatio.gridx = 1;
gbc_spinnerDampingRatio.gridy = 15;
getPanel().add(spinnerDampingRatio, gbc_spinnerDampingRatio);
}
private static final long serialVersionUID = -2033825670615410634L;
private JSpinner spinnerLocalAnchorAX;
private JSpinner spinnerFrequencyHz;
private JSpinner spinnerLength;
private JSpinner spinnerLocalAnchorBy;
private JSpinner spinnerLocalAnchorBx;
private JSpinner spinnerLocalAnchorAY;
private JSpinner spinnerDampingRatio;
private JCheckBox chckbxAutoCalculateLength;
private JCheckBox chckbxSetToZero;
private JCheckBox chckbxSetToZero_1;
@Override
public Class<DistanceJointDefModel> getType() {
return DistanceJointDefModel.class;
}
@Override
public void doBinder() {
super.doBinder();
DistanceJointDefModel model = DistanceJointDefModel.class.cast(object);
bind(model.localAnchorA,"x",spinnerLocalAnchorAX);
bind(model.localAnchorA,"y",spinnerLocalAnchorAY);
bind(model.localAnchorB,"x",spinnerLocalAnchorBx);
bind(model.localAnchorB,"y",spinnerLocalAnchorBy);
bind(model,"length",spinnerLength);
bind(model,"frequencyHz",spinnerFrequencyHz);
bind(model,"dampingRatio",spinnerDampingRatio);
bind(model,"autoCalculateLength",chckbxAutoCalculateLength);
bind(model,"setBodyAZero",chckbxSetToZero);
bind(model,"setBodyBZero",chckbxSetToZero_1);
}
@Override
public Binder getBinder(Object obj, String name, JComponent widget) {
return new Binder(obj,name,widget) {
@Override
protected void postSolve() {
DistanceJointDefModel model = DistanceJointDefModel.class.cast(object);
Geometry.ajustJoint(model);
//set the UI values
spinnerLength.setValue(model.length);
spinnerLocalAnchorAX.setValue(model.localAnchorA.x);
spinnerLocalAnchorAY.setValue(model.localAnchorA.y);
spinnerLocalAnchorBx.setValue(model.localAnchorB.x);
spinnerLocalAnchorBy.setValue(model.localAnchorB.y);
}
};
}
}