X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fmain%2FMain.java;h=38a234791ec96c80b72f04d3571590e266fa40f7;hb=45153cb94d13f27f9ffc1e3cc9eff870054c201b;hp=71dc8a39400ad8e05ba258bb74d0e8cd46112fc6;hpb=b0ddf6db725f7229233bef052dec67c4f19bf677;p=jSite.git diff --git a/src/de/todesbaum/jsite/main/Main.java b/src/de/todesbaum/jsite/main/Main.java index 71dc8a3..38a2347 100644 --- a/src/de/todesbaum/jsite/main/Main.java +++ b/src/de/todesbaum/jsite/main/Main.java @@ -1,6 +1,6 @@ /* * jSite - a tool for uploading websites into Freenet - * Copyright (C) 2006 David Roden + * Copyright (C) 2006-2009 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 @@ -24,8 +24,10 @@ import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import java.text.MessageFormat; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; @@ -56,6 +58,7 @@ import de.todesbaum.jsite.application.UpdateChecker; import de.todesbaum.jsite.application.UpdateListener; import de.todesbaum.jsite.gui.NodeManagerListener; import de.todesbaum.jsite.gui.NodeManagerPage; +import de.todesbaum.jsite.gui.PreferencesPage; import de.todesbaum.jsite.gui.ProjectFilesPage; import de.todesbaum.jsite.gui.ProjectInsertPage; import de.todesbaum.jsite.gui.ProjectPage; @@ -73,8 +76,11 @@ import de.todesbaum.util.swing.WizardListener; */ public class Main implements ActionListener, ListSelectionListener, WizardListener, NodeManagerListener, UpdateListener { + /** The logger. */ + private static final Logger logger = Logger.getLogger(Main.class.getName()); + /** The version. */ - private static final Version VERSION = new Version(0, 7, 1); + private static final Version VERSION = new Version(0, 8); /** The configuration. */ private Configuration configuration; @@ -105,7 +111,10 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen PAGE_PROJECT_FILES, /** The project insert page. */ - PAGE_INSERT_PROJECT + PAGE_INSERT_PROJECT, + + /** The preferences page. */ + PAGE_PREFERENCES } @@ -118,6 +127,9 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen /** The “manage nodes” action. */ private Action manageNodeAction; + /** The “preferences” action. */ + private Action optionsPreferencesAction; + /** The “check for updates” action. */ private Action checkForUpdatesAction; @@ -204,6 +216,16 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen wizard.setNextName(I18n.getMessage("jsite.wizard.next")); } }; + optionsPreferencesAction = new AbstractAction(I18n.getMessage("jsite.menu.options.preferences")) { + + /** + * {@inheritDoc} + */ + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + optionsPreferences(); + } + }; checkForUpdatesAction = new AbstractAction(I18n.getMessage("jsite.menu.help.check-for-updates")) { /** @@ -227,6 +249,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen @SuppressWarnings("synthetic-access") public void run() { manageNodeAction.putValue(Action.NAME, I18n.getMessage("jsite.menu.nodes.manage-nodes")); + optionsPreferencesAction.putValue(Action.NAME, I18n.getMessage("jsite.menu.options.preferences")); checkForUpdatesAction.putValue(Action.NAME, I18n.getMessage("jsite.menu.help.check-for-updates")); aboutAction.putValue(Action.NAME, I18n.getMessage("jsite.menu.help.about")); } @@ -258,6 +281,10 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen selectedNode = configuration.getSelectedNode(); nodesUpdated(configuration.getNodes()); + final JMenu optionsMenu = new JMenu(I18n.getMessage("jsite.menu.options")); + menuBar.add(optionsMenu); + optionsMenu.add(optionsPreferencesAction); + /* evil hack to right-align the help menu */ JPanel panel = new JPanel(); panel.setOpaque(false); @@ -274,6 +301,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen public void run() { languageMenu.setText(I18n.getMessage("jsite.menu.languages")); nodeMenu.setText(I18n.getMessage("jsite.menu.nodes")); + optionsMenu.setText(I18n.getMessage("jsite.menu.options")); helpMenu.setText(I18n.getMessage("jsite.menu.help")); for (Map.Entry languageActionEntry : languageActions.entrySet()) { languageActionEntry.getValue().putValue(Action.NAME, I18n.getMessage("jsite.menu.language." + languageActionEntry.getKey().getLanguage())); @@ -309,6 +337,11 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen projectInsertPage.setName("page.project.insert"); projectInsertPage.setFreenetInterface(freenetInterface); pages.put(PageType.PAGE_INSERT_PROJECT, projectInsertPage); + + PreferencesPage preferencesPage = new PreferencesPage(wizard); + preferencesPage.setName("page.preferences"); + preferencesPage.setTempDirectory(configuration.getTempDirectory()); + pages.put(PageType.PAGE_PREFERENCES, preferencesPage); } /** @@ -340,6 +373,9 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen ProjectPage projectPage = (ProjectPage) pages.get(PageType.PAGE_PROJECTS); configuration.setProjects(projectPage.getProjects()); + PreferencesPage preferencesPage = (PreferencesPage) pages.get(PageType.PAGE_PREFERENCES); + configuration.setTempDirectory(preferencesPage.getTempDirectory()); + return configuration.save(); } @@ -407,6 +443,16 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen } /** + * Shows a dialog with general preferences. + */ + private void optionsPreferences() { + showPage(PageType.PAGE_PREFERENCES); + optionsPreferencesAction.setEnabled(false); + wizard.setNextEnabled(true); + wizard.setNextName(I18n.getMessage("jsite.wizard.next")); + } + + /** * Shows a dialog box that shows the last version that was found by the * {@link UpdateChecker}. */ @@ -485,7 +531,8 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen return; } } - if (hasIndexFile && !project.getFileOption(indexFile).getMimeType().equals("text/html")) { + List allowedIndexContentTypes = Arrays.asList("text/html", "application/xhtml+xml"); + if (hasIndexFile && !allowedIndexContentTypes.contains(project.getFileOption(indexFile).getMimeType())) { if (JOptionPane.showConfirmDialog(wizard, I18n.getMessage("jsite.project-files.index-not-html"), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE) != JOptionPane.OK_OPTION) { return; } @@ -511,11 +558,19 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen } configuration.save(); showPage(PageType.PAGE_INSERT_PROJECT); - ((ProjectInsertPage) pages.get(PageType.PAGE_INSERT_PROJECT)).startInsert(); + ProjectInsertPage projectInsertPage = (ProjectInsertPage) pages.get(PageType.PAGE_INSERT_PROJECT); + String tempDirectory = ((PreferencesPage) pages.get(PageType.PAGE_PREFERENCES)).getTempDirectory(); + projectInsertPage.setTempDirectory(tempDirectory); + projectInsertPage.startInsert(); nodeMenu.setEnabled(false); + optionsPreferencesAction.setEnabled(false); } else if ("page.project.insert".equals(pageName)) { showPage(PageType.PAGE_PROJECTS); nodeMenu.setEnabled(true); + optionsPreferencesAction.setEnabled(true); + } else if ("page.preferences".equals(pageName)) { + showPage(PageType.PAGE_PROJECTS); + optionsPreferencesAction.setEnabled(true); } } @@ -537,6 +592,9 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen * {@inheritDoc} */ public void wizardQuitPressed(TWizard wizard) { + 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); @@ -596,6 +654,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen * {@inheritDoc} */ public void foundUpdateData(Version foundVersion, long versionTimestamp) { + logger.log(Level.FINEST, "Found version {0} from {1,date}.", new Object[] { foundVersion, versionTimestamp }); if (foundVersion.compareTo(VERSION) > 0) { JOptionPane.showMessageDialog(wizard, MessageFormat.format(I18n.getMessage("jsite.update-checker.found-version.message"), foundVersion.toString(), new Date(versionTimestamp)), I18n.getMessage("jsite.update-checker.found-version.title"), JOptionPane.INFORMATION_MESSAGE); }