From dcb6c2159446135a142cad41eec185bb24c45bfb Mon Sep 17 00:00:00 2001 From: bjculkin Date: Wed, 11 Apr 2018 15:29:25 -0400 Subject: Split #9 into one class/file --- CSMath/src/bezier/CurveEditor.java | 112 +++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 CSMath/src/bezier/CurveEditor.java (limited to 'CSMath/src/bezier/CurveEditor.java') diff --git a/CSMath/src/bezier/CurveEditor.java b/CSMath/src/bezier/CurveEditor.java new file mode 100644 index 0000000..27a10d4 --- /dev/null +++ b/CSMath/src/bezier/CurveEditor.java @@ -0,0 +1,112 @@ +package bezier; + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.Dialog.ModalityType; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.border.BevelBorder; +import javax.swing.border.TitledBorder; + +/* + * Do editing of curve properties. + */ +public class CurveEditor implements ActionListener { + private Bezier curve; + private JFrame fram; + private BezierPanel canvas; + + public CurveEditor(JFrame fram, Holder currentCurve, BezierPanel canvas) { + this.fram = fram; + this.canvas = canvas; + + curve = currentCurve.getVal(); + + /* + * Set the curve to the right one. + */ + currentCurve.addHolderListener((val) -> { + curve = val; + }); + } + + @Override + public void actionPerformed(ActionEvent ev) { + JDialog dia = new JDialog(fram, "Curve Editor", ModalityType.MODELESS); + dia.setLayout(new BorderLayout()); + + JPanel fields = new JPanel(); + fields.setLayout(new BorderLayout()); + + LabeledInputPanel partsPanel = new LabeledInputPanel("# of Points to Graph", curve.data.parts); + + JTabbedPane colorPanel = new JTabbedPane(); + colorPanel.setBorder(new TitledBorder(new BevelBorder(BevelBorder.RAISED), "Colors")); + + ColorInputPanel curveColor = new ColorInputPanel(curve.data.curveColor, "Curve Color"); + ColorInputPanel pointColor = new ColorInputPanel(curve.data.pointColor, "Point Color"); + ColorInputPanel boxColor = new ColorInputPanel(curve.data.boxColor, "Bounding Box Color"); + + colorPanel.addTab("Curve Color", curveColor); + colorPanel.addTab("Point Color", pointColor); + colorPanel.addTab("Bounding Box Color", boxColor); + + LabeledInputPanel scalePanel = new LabeledInputPanel("Curve Scaling Multiplier", curve.data.scale); + + fields.add(partsPanel, BorderLayout.PAGE_START); + fields.add(colorPanel, BorderLayout.CENTER); + fields.add(scalePanel, BorderLayout.PAGE_END); + + JPanel buttons = new JPanel(); + buttons.setLayout(new GridLayout(1, 3)); + + /* + * Persist changes to curve. + */ + JButton saveButton = new JButton("Save Changes"); + saveButton.addActionListener((aev) -> { + curve.data.parts = (Integer) partsPanel.field.getValue(); + curve.data.scale = (Double) scalePanel.field.getValue(); + + curve.data.curveColor = curveColor.picker.getColor(); + curve.data.pointColor = pointColor.picker.getColor(); + curve.data.boxColor = boxColor.picker.getColor(); + + canvas.repaint(); + }); + + /* + * Reset fields to match curve. + */ + JButton resetButton = new JButton("Reset Changes"); + resetButton.addActionListener((aev) -> { + partsPanel.field.setValue(curve.data.parts); + scalePanel.field.setValue(curve.data.scale); + + curveColor.picker.setColor(curve.data.curveColor); + pointColor.picker.setColor(curve.data.pointColor); + boxColor.picker.setColor(curve.data.boxColor); + }); + + JButton cancelButton = new JButton("Cancel Changes"); + cancelButton.addActionListener((aev) -> { + dia.dispose(); + }); + + buttons.add(saveButton); + buttons.add(resetButton); + buttons.add(cancelButton); + + dia.add(fields, BorderLayout.CENTER); + dia.add(buttons, BorderLayout.PAGE_END); + + dia.pack(); + dia.setVisible(true); + } +} \ No newline at end of file -- cgit v1.2.3