/* * WPCleaner: A tool to help on Wikipedia maintenance tasks. * Copyright (C) 2013 Nicolas Vervelle * * See README.txt file for licensing information. */ package org.wikipediacleaner.gui.swing.bot; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionListener; import java.beans.EventHandler; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JPanel; import org.wikipediacleaner.api.constants.EnumWikipedia; import org.wikipediacleaner.api.constants.WPCConfiguration; import org.wikipediacleaner.api.constants.WPCConfigurationString; import org.wikipediacleaner.gui.swing.Controller; import org.wikipediacleaner.gui.swing.basic.BasicWindow; import org.wikipediacleaner.gui.swing.basic.Utilities; import org.wikipediacleaner.gui.swing.worker.UpdateDabWarningWorker; import org.wikipediacleaner.gui.swing.worker.UpdateDuplicateArgsWarningWorker; import org.wikipediacleaner.gui.swing.worker.UpdateISBNWarningWorker; import org.wikipediacleaner.gui.swing.worker.UpdateISSNWarningWorker; import org.wikipediacleaner.i18n.GT; import org.wikipediacleaner.images.EnumImageSize; import org.wikipediacleaner.utils.Configuration; import org.wikipediacleaner.utils.ConfigurationValueString; /** * A panel for general bot tools. */ public class GeneralToolsPanel extends BotToolsPanel { /** * Serialization. */ private static final long serialVersionUID = 211233278326264003L; /** * Button for automatic fixing. */ private JButton buttonAutomaticFixing; /** * Button for monitoring recent changes. */ private JButton buttonMonitorRC; /** * Button for updating disambiguation warnings on all wiki. */ private JButton buttonUpdateDabWarning; /** * Button for updating ISBN warnings on all wiki. */ private JButton buttonUpdateISBNWarning; /** * Button for updating ISSN warnings on all wiki. */ private JButton buttonUpdateISSNWarning; /** * Button for updating duplicate arguments warnings on all wiki. */ private JButton buttonUpdateDuplicateArgsWarning; /** * Button for listing ISBN warnings on all wiki. */ private JButton buttonListISBNError; /** * Button for listing ISSN warnings on all wiki. */ private JButton buttonListISSNError; /** * Construct a general bot tools panel. * * @param window Parent window. */ public GeneralToolsPanel(BasicWindow window) { super(window, new GridBagLayout()); initialize(); } /** * Initialize the panel. */ private void initialize() { // Initialize constraints GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridheight = 1; constraints.gridwidth = 1; constraints.gridx = 0; constraints.gridy = 0; constraints.insets = new Insets(0, 0, 0, 0); constraints.ipadx = 0; constraints.ipady = 0; constraints.weightx = 1; constraints.weighty = 0; // Automatic disambiguation fixing buttonAutomaticFixing = Utilities.createJButton( "commons-disambig-colour.png", EnumImageSize.NORMAL, GT._("Semi-automatic disambiguation fixing"), true, null); buttonAutomaticFixing.addActionListener(EventHandler.create( ActionListener.class, this, "actionAutomaticFixing")); add(buttonAutomaticFixing, constraints); constraints.gridy++; // Update disambiguation warning buttonUpdateDabWarning = Utilities.createJButton( "commons-disambig-colour.png", EnumImageSize.NORMAL, GT._("Update existing disambiguation warning messages"), true, null); buttonUpdateDabWarning.addActionListener(EventHandler.create( ActionListener.class, this, "actionUpdateDabWarning")); add(buttonUpdateDabWarning, constraints); constraints.gridy++; // Update ISBN warning buttonUpdateISBNWarning = Utilities.createJButton( "commons-nuvola-web-broom.png", EnumImageSize.NORMAL, GT._("Update {0} warning messages", "ISBN"), true, null); buttonUpdateISBNWarning.addActionListener(EventHandler.create( ActionListener.class, this, "actionUpdateISBNWarning")); add(buttonUpdateISBNWarning, constraints); constraints.gridy++; // List ISBN errors buttonListISBNError = Utilities.createJButton( "commons-nuvola-web-broom.png", EnumImageSize.NORMAL, GT._("List {0} errors", "ISBN"), true, null); buttonListISBNError.addActionListener(EventHandler.create( ActionListener.class, this, "actionListISBNErrors")); add(buttonListISBNError, constraints); constraints.gridy++; // Update ISSN warning buttonUpdateISSNWarning = Utilities.createJButton( "commons-nuvola-web-broom.png", EnumImageSize.NORMAL, GT._("Update {0} warning messages", "ISSN"), true, null); buttonUpdateISSNWarning.addActionListener(EventHandler.create( ActionListener.class, this, "actionUpdateISSNWarning")); add(buttonUpdateISSNWarning, constraints); constraints.gridy++; // List ISSN errors buttonListISSNError = Utilities.createJButton( "commons-nuvola-web-broom.png", EnumImageSize.NORMAL, GT._("List {0} errors", "ISSN"), true, null); buttonListISSNError.addActionListener(EventHandler.create( ActionListener.class, this, "actionListISSNErrors")); add(buttonListISSNError, constraints); constraints.gridy++; // Update duplicate arguments warning buttonUpdateDuplicateArgsWarning = Utilities.createJButton( "commons-nuvola-web-broom.png", EnumImageSize.NORMAL, GT._("Update duplicate argument warning messages"), true, null); buttonUpdateDuplicateArgsWarning.addActionListener(EventHandler.create( ActionListener.class, this, "actionUpdateDuplicateArgsWarning")); add(buttonUpdateDuplicateArgsWarning, constraints); constraints.gridy++; // Monitor recent changes buttonMonitorRC = Utilities.createJButton( "commons-nuvola-apps-kcmsystem.png", EnumImageSize.NORMAL, GT._("Monitor recent changes"), true, null); buttonMonitorRC.addActionListener(EventHandler.create( ActionListener.class, this, "actionMonitorRC")); add(buttonMonitorRC, constraints); constraints.gridy++; // Empty panel JPanel panel = new JPanel(); constraints.weighty = 1; add(panel, constraints); constraints.gridy++; } /** * Update components state. */ @Override protected void updateComponentState() { buttonAutomaticFixing.setEnabled(false); buttonMonitorRC.setEnabled(true); buttonUpdateDabWarning.setEnabled(true); } /** * Action called when Automatic Fixing button is pressed. */ public void actionAutomaticFixing() { // TODO } /** * Action called when Update Disambiguation Warning button is pressed. */ public void actionUpdateDabWarning() { EnumWikipedia wiki = window.getWikipedia(); Configuration config = Configuration.getConfiguration(); WPCConfiguration wpcConfig = wiki.getConfiguration(); String template = wpcConfig.getString(WPCConfigurationString.DAB_WARNING_TEMPLATE); if ((template == null) || (template.trim().length() == 0)) { Utilities.displayMessageForMissingConfiguration( window.getParentComponent(), WPCConfigurationString.DAB_WARNING_TEMPLATE.getAttributeName()); return; } String start = window.askForValue( GT._("At what page do you wish to start updating the warnings ?"), config.getString(null, ConfigurationValueString.LAST_DAB_WARNING), null); if (start == null) { return; } UpdateDabWarningWorker worker = new UpdateDabWarningWorker( wiki, window, start); worker.start(); } /** * Action called when Update ISBN Warning button is pressed. */ public void actionUpdateISBNWarning() { actionISBNWarning(false); } /** * Action called when List ISBN Errors button is pressed. */ public void actionListISBNErrors() { actionISBNWarning(true); } /** * Analyze ISBN errors. * * @param simulation True if this is a simulation. */ private void actionISBNWarning(boolean simulation) { EnumWikipedia wiki = window.getWikipedia(); if (!simulation) { WPCConfiguration wpcConfig = wiki.getConfiguration(); String template = wpcConfig.getString(WPCConfigurationString.ISBN_WARNING_TEMPLATE); if ((template == null) || (template.trim().length() == 0)) { Utilities.displayMessageForMissingConfiguration( window.getParentComponent(), WPCConfigurationString.ISBN_WARNING_TEMPLATE.getAttributeName()); return; } } UpdateISBNWarningWorker worker = new UpdateISBNWarningWorker( wiki, window, simulation); worker.start(); } /** * Action called when Update ISSN Warning button is pressed. */ public void actionUpdateISSNWarning() { actionISSNWarning(false); } /** * Action called when List ISSN Errors button is pressed. */ public void actionListISSNErrors() { actionISSNWarning(true); } /** * Analyze ISSN errors. * * @param simulation True if this is a simulation. */ private void actionISSNWarning(boolean simulation) { EnumWikipedia wiki = window.getWikipedia(); if (!simulation) { WPCConfiguration wpcConfig = wiki.getConfiguration(); String template = wpcConfig.getString(WPCConfigurationString.ISSN_WARNING_TEMPLATE); if ((template == null) || (template.trim().length() == 0)) { Utilities.displayMessageForMissingConfiguration( window.getParentComponent(), WPCConfigurationString.ISSN_WARNING_TEMPLATE.getAttributeName()); return; } } UpdateISSNWarningWorker worker = new UpdateISSNWarningWorker( wiki, window, simulation); worker.start(); } /** * Action called when Update Duplicate Arguments Warning button is pressed. */ public void actionUpdateDuplicateArgsWarning() { EnumWikipedia wiki = window.getWikipedia(); WPCConfiguration wpcConfig = wiki.getConfiguration(); String template = wpcConfig.getString(WPCConfigurationString.DUPLICATE_ARGS_WARNING_TEMPLATE); if ((template == null) || (template.trim().length() == 0)) { Utilities.displayMessageForMissingConfiguration( window.getParentComponent(), WPCConfigurationString.DUPLICATE_ARGS_WARNING_TEMPLATE.getAttributeName()); return; } UpdateDuplicateArgsWarningWorker worker = new UpdateDuplicateArgsWarningWorker( wiki, window, false); worker.start(); } /** * Action called when Monitor Recent Changes button is pressed. */ public void actionMonitorRC() { int answer = window.displayYesNoWarning(BasicWindow.experimentalMessage); if (answer != JOptionPane.YES_OPTION) { return; } Controller.runMonitorRC(window.getWikipedia()); } }