/* * Simple dialog for configuring Sender settings. */ /* Copywrite 2013-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; import com.willwinder.universalgcodesender.i18n.Localization; import com.willwinder.universalgcodesender.uielements.helpers.AbstractUGSSettings; import com.willwinder.universalgcodesender.utils.GUIHelpers; import com.willwinder.universalgcodesender.utils.Settings; import java.awt.Frame; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; import net.miginfocom.swing.MigLayout; /** * * @author wwinder */ public class UGSSettingsDialog extends JDialog { private static Logger logger = Logger.getLogger(UGSSettingsDialog.class.getName()); private boolean saveChanges; private final Settings settings; private final AbstractUGSSettings settingsPanel; private final JButton restore = new JButton(Localization.getString("restore")); private final JButton closeWithSave = new JButton(Localization.getString("save.close")); private final JButton closeWithoutSave = new JButton(Localization.getString("close")); private final JButton helpButton = new JButton(Localization.getString("help")); /** * Creates new form GrblSettingsDialog */ public UGSSettingsDialog(String settingsTitle, Settings settings, AbstractUGSSettings panel, Frame parent, boolean modal) { super(parent, modal); this.setTitle(settingsTitle); this.settings = settings; this.settingsPanel = panel; // Register callbacks restore.addActionListener(this::restoreDefaultSettings); closeWithSave.addActionListener(this::closeWithSaveActionPerformed); closeWithoutSave.addActionListener(this::closeWithoutSaveActionPerformed); helpButton.addActionListener(this::helpButtonActionPerformed); initComponents(); setLocationRelativeTo(parent); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); saveChanges = false; } /** * Return status. */ public boolean saveChanges() { return saveChanges; } private void initComponents() { JScrollPane scrollPane = new JScrollPane(settingsPanel); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setLayout(new MigLayout("fillx")); add(scrollPane, "wrap, growx, span 4"); add(helpButton); add(restore); add(closeWithoutSave); add(closeWithSave); pack(); } private void closeWithoutSaveActionPerformed(java.awt.event.ActionEvent evt) { this.saveChanges = false; setVisible(false); } private void restoreDefaultSettings(java.awt.event.ActionEvent evt) { try { settingsPanel.restoreDefaults(); //FirmwareUtils.restoreDefaults(); //settingsPanel.updateComponents(new Settings()); } catch (Exception e) { String message = "An error occurred while restoring defaults:" + e.getLocalizedMessage(); logger.log(Level.SEVERE, message, e); GUIHelpers.displayErrorDialog(message); } } private void closeWithSaveActionPerformed(java.awt.event.ActionEvent evt) { this.settingsPanel.save(); this.saveChanges = true; setVisible(false); } private void helpButtonActionPerformed(java.awt.event.ActionEvent evt) { String message = settingsPanel.getHelpMessage(); JOptionPane.showMessageDialog(new JFrame(), message, Localization.getString("sender.help.dialog.title"), JOptionPane.INFORMATION_MESSAGE); } }