package org.openslx.dozmod.gui.window; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import org.apache.log4j.Logger; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.helper.UiFeedback; import org.openslx.dozmod.gui.window.layout.DisclaimerWindowLayout; /** * Window for showing the disclaimer. */ @SuppressWarnings("serial") public class DisclaimerWindow extends DisclaimerWindowLayout implements UiFeedback { /** * Use a version number for the disclaimer. Whenever we add/change * something, this will be increased */ public static final int DISCLAIMER_VERSION = 1; final DisclaimerWindow me = this; private final static Logger LOGGER = Logger.getLogger(DisclaimerWindow.class); public DisclaimerWindow(Frame modalParent) { super(modalParent); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // agree box toggles the "Continue" button chkAgreeBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { btnContinue.setEnabled(chkAgreeBox.isSelected()); } }); // function for continue button btnContinue.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // save the agreement to config Config.setDisclaimerAgreement(DISCLAIMER_VERSION); me.dispose(); } }); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { closeWindow(); } }); if (!shouldBeShown()) { chkAgreeBox.setVisible(false); btnContinue.setText("Schließen"); btnContinue.setEnabled(true); } } public static boolean shouldBeShown() { return Config.getDisclaimerAgreement() < DISCLAIMER_VERSION; } public static void open(Frame modalParent) { new DisclaimerWindow(modalParent).setVisible(true); } @Override public boolean wantConfirmQuit() { return true; } @Override public void escapePressed() { closeWindow(); } /** * Check, whether to ask for confirmation, when disclaimer hasn't been * accepted or just close. */ private void closeWindow() { if (shouldBeShown()) { if (Gui.showMessageBox(me, "Wenn diesen rechtlichen Hinweis nicht akzeptieren, können Sie die Software nicht verwenden! " + "Sind Sie sicher, dass sie abbrechen wollen?", MessageType.QUESTION_YESNO, LOGGER, null)) { System.exit(ABORT); } } else { me.dispose(); } } }