/* Copywrite 2016 Will Winder This file is part of Universal Gcode Sender (UGS). UGS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. UGS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with UGS. If not, see <http://www.gnu.org/licenses/>. */ package com.willwinder.universalgcodesender.uielements.components; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonParser; import com.willwinder.universalgcodesender.i18n.Localization; import com.willwinder.universalgcodesender.utils.ControllerSettings.ProcessorConfig; import com.willwinder.universalgcodesender.utils.GUIHelpers; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import net.miginfocom.swing.MigLayout; /** * * @author wwinder */ public class ProcessorConfigCheckbox extends JPanel { final public JCheckBox box; final private ProcessorConfig pc; private final static Gson GSON; private final static JsonParser PARSER = new JsonParser(); static { GSON = new GsonBuilder().setPrettyPrinting().create(); } public ProcessorConfigCheckbox(ProcessorConfig pc, String helpMessage) { this.pc = pc; if (helpMessage == null) throw new RuntimeException("Help message was not provided."); JButton help = new JButton("?"); help.addActionListener((ActionEvent e) -> { GUIHelpers.displayHelpDialog(helpMessage); }); add(help, "w 25"); box = new JCheckBox(Localization.getString(pc.name)); box.setSelected(pc.enabled); box.addActionListener((ActionEvent e) -> { pc.enabled = box.isSelected(); }); if (!pc.optional) { box.setEnabled(false); } JButton edit = new JButton("edit"); edit.addActionListener(evt -> editArgs()); setLayout(new MigLayout("insets 0 50 0 0", "[][grow]20[]25")); add(box, "growx"); if (pc.args != null) { add(edit, "w 45"); } } public void editArgs() { JTextArea ta = new JTextArea(20, 20); ta.setText(GSON.toJson(pc.args)); switch (JOptionPane.showConfirmDialog(null, new JScrollPane(ta))) { case JOptionPane.OK_OPTION: pc.args = PARSER.parse(ta.getText()).getAsJsonObject(); System.out.println(ta.getText()); break; } } public void setSelected(Boolean s) {box.setSelected(s); } public boolean getValue() { return box.isSelected(); } }