/* * 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.action; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JToolBar; import org.wikipediacleaner.api.API; import org.wikipediacleaner.api.APIException; import org.wikipediacleaner.api.APIFactory; import org.wikipediacleaner.api.constants.EnumWikipedia; import org.wikipediacleaner.api.data.Page; import org.wikipediacleaner.api.dataaccess.PageProvider; import org.wikipediacleaner.gui.swing.basic.Utilities; import org.wikipediacleaner.i18n.GT; import org.wikipediacleaner.images.EnumImageSize; /** * Manage actions for deleting a page. */ public class ActionDeletePage implements ActionListener { /** * @param showIcon True if the button should use an icon. * @return Button. */ private static JButton createInternalButton( boolean showIcon) { String iconName = "gnome-edit-delete.png"; String label = GT._("Delete page"); return Utilities.createJButton( showIcon ? iconName : null, EnumImageSize.NORMAL, label, !showIcon, null); } /** * Create a button for deleting a page. * * @param parent Parent component. * @param pageProvider Page provider. * @param listener Listener. * @param showIcon True if the button should use an icon. * @return Button. */ public static JButton createButton( Component parent, PageProvider pageProvider, ListenerPageDeletion listener, boolean showIcon) { JButton button = createInternalButton(showIcon); button.addActionListener(new ActionDeletePage(parent, pageProvider, listener)); return button; } /** * Add a button for deleting a page. * * @param toolbar Tool bar. * @param parent Parent component. * @param pageProvider Page provider. * @param listener Listener. * @param showIcon True if the button should use an icon. * @return Button. */ public static JButton addButton( JToolBar toolbar, Component parent, PageProvider pageProvider, ListenerPageDeletion listener, boolean showIcon) { JButton button = createButton(parent, pageProvider, listener, showIcon); if ((button != null) && (toolbar != null)) { toolbar.add(button); } return button; } /** Parent component. */ private final Component parent; /** Page provider. */ private final PageProvider pageProvider; /** Listener. */ private final ListenerPageDeletion listener; /** * @param parent Parent component. * @param pageProvider Page provider. * @param listener Listener. */ private ActionDeletePage( Component parent, PageProvider pageProvider, ListenerPageDeletion listener) { this.parent = parent; this.pageProvider = pageProvider; this.listener = listener; } /** * Delete a page. * * @param e Event triggering this call. * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { if (pageProvider == null) { return; } Page page = pageProvider.getPage(); if (page == null) { return; } String reason = Utilities.askForValue( parent, GT._("Do you want to delete this page on Wikipedia ?\nPlease, enter the reason for deleting the page"), "", null); if ((reason == null) || (reason.trim().length() == 0)) { return; } API api = APIFactory.getAPI(); try { EnumWikipedia wiki = page.getWikipedia(); api.deletePage( wiki, page, reason.trim(), false); if (listener != null) { listener.pageDeleted(page.getTitle()); } } catch (APIException ex) { Utilities.displayError(parent, ex); } } }