X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fmain%2FMain.java;h=81636d1a6bfc885a9c59b5d102b4c6a15edea8c0;hb=b966753ed8cca05ab0104a574d73b0ac1ac87648;hp=195e603e887f20e5f8ecc73a963227739b52a5a3;hpb=728fbd0eb74f6b7bd9ae0fdf2a6ab13b98ea45b3;p=jSite.git diff --git a/src/de/todesbaum/jsite/main/Main.java b/src/de/todesbaum/jsite/main/Main.java index 195e603..81636d1 100644 --- a/src/de/todesbaum/jsite/main/Main.java +++ b/src/de/todesbaum/jsite/main/Main.java @@ -1,6 +1,5 @@ /* - * jSite - a tool for uploading websites into Freenet - * Copyright (C) 2006-2009 David Roden + * jSite - Main.java - Copyright © 2006–2011 David Roden * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,6 +62,7 @@ import de.todesbaum.jsite.gui.ProjectInsertPage; import de.todesbaum.jsite.gui.ProjectPage; import de.todesbaum.jsite.i18n.I18n; import de.todesbaum.jsite.i18n.I18nContainer; +import de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation; import de.todesbaum.util.image.IconLoader; import de.todesbaum.util.swing.TWizard; import de.todesbaum.util.swing.TWizardPage; @@ -161,20 +161,18 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen * The name of the configuration file */ private Main(String configFilename) { + /* collect all possible configuration file locations. */ + ConfigurationLocator configurationLocator = new ConfigurationLocator(); if (configFilename != null) { - configuration = new Configuration(configFilename); - } else { - configuration = new Configuration(); + configurationLocator.setCustomLocation(configFilename); } + + ConfigurationLocation preferredLocation = configurationLocator.findPreferredLocation(); + logger.log(Level.CONFIG, "Using configuration from " + preferredLocation + "."); + configuration = new Configuration(configurationLocator, preferredLocation); + Locale.setDefault(configuration.getLocale()); I18n.setLocale(configuration.getLocale()); - if (!configuration.createLockFile()) { - int option = JOptionPane.showOptionDialog(null, I18n.getMessage("jsite.main.already-running"), "", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[] { I18n.getMessage("jsite.main.already-running.override"), I18n.getMessage("jsite.wizard.quit") }, I18n.getMessage("jsite.wizard.quit")); - if (option != 0) { - throw new IllegalStateException("Lockfile override not active, refusing start."); - } - configuration.removeLockfileOnExit(); - } wizard = new TWizard(); createActions(); wizard.setJMenuBar(createMenuBar()); @@ -358,6 +356,17 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen } /** + * Returns whether a configuration file would be overwritten when calling + * {@link #saveConfiguration()}. + * + * @return {@code true} if {@link #saveConfiguration()} would overwrite an + * existing file, {@code false} otherwise + */ + private boolean isOverwritingConfiguration() { + return configuration.getConfigurationLocator().hasFile(configuration.getConfigurationDirectory()); + } + + /** * Saves the configuration. * * @return true if the configuration could be saved, @@ -446,6 +455,9 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen * Shows a dialog with general preferences. */ private void optionsPreferences() { + ((PreferencesPage) pages.get(PageType.PAGE_PREFERENCES)).setConfigurationLocation(configuration.getConfigurationDirectory()); + ((PreferencesPage) pages.get(PageType.PAGE_PREFERENCES)).setHasNextToJarConfiguration(configuration.getConfigurationLocator().isValidLocation(ConfigurationLocation.NEXT_TO_JAR_FILE)); + ((PreferencesPage) pages.get(PageType.PAGE_PREFERENCES)).setHasCustomConfiguration(configuration.getConfigurationLocator().isValidLocation(ConfigurationLocation.CUSTOM)); showPage(PageType.PAGE_PREFERENCES); optionsPreferencesAction.setEnabled(false); wizard.setNextEnabled(true); @@ -551,8 +563,10 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen optionsPreferencesAction.setEnabled(true); } } else if ("page.preferences".equals(pageName)) { + PreferencesPage preferencesPage = (PreferencesPage) pages.get(PageType.PAGE_PREFERENCES); showPage(PageType.PAGE_PROJECTS); optionsPreferencesAction.setEnabled(true); + configuration.setConfigurationLocation(preferencesPage.getConfigurationLocation()); } } @@ -578,9 +592,23 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen if (((ProjectPage) pages.get(PageType.PAGE_PROJECTS)).wasUriCopied() || ((ProjectInsertPage) pages.get(PageType.PAGE_INSERT_PROJECT)).wasUriCopied()) { JOptionPane.showMessageDialog(wizard, I18n.getMessage("jsite.project.warning.use-clipboard-now")); } - if (JOptionPane.showConfirmDialog(wizard, I18n.getMessage("jsite.quit.question"), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) { - if (saveConfiguration()) { - System.exit(0); + if (JOptionPane.showConfirmDialog(wizard, I18n.getMessage("jsite.quit.question"), I18n.getMessage("jsite.quit.question.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) { + if (isOverwritingConfiguration()) { + int overwriteConfigurationAnswer = JOptionPane.showConfirmDialog(wizard, MessageFormat.format(I18n.getMessage("jsite.quite.overwrite-configuration"), configuration.getConfigurationLocator().getFile(configuration.getConfigurationDirectory())), I18n.getMessage("jsite.quit.overwrite-configuration.title"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); + if (overwriteConfigurationAnswer == JOptionPane.YES_OPTION) { + if (saveConfiguration()) { + System.exit(0); + } + } else if (overwriteConfigurationAnswer == JOptionPane.CANCEL_OPTION) { + return; + } + if (overwriteConfigurationAnswer == JOptionPane.NO_OPTION) { + System.exit(0); + } + } else { + if (saveConfiguration()) { + System.exit(0); + } } if (JOptionPane.showConfirmDialog(wizard, I18n.getMessage("jsite.quit.config-not-saved"), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.OK_OPTION) { System.exit(0); @@ -631,6 +659,10 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen selectedNode = node; } + // + // INTERFACE ActionListener + // + /** * {@inheritDoc} */