/* * 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.menu; import java.util.Iterator; import java.util.List; import javax.swing.JMenu; import javax.swing.JPopupMenu; import javax.swing.JTextPane; import org.wikipediacleaner.api.constants.EnumWikipedia; import org.wikipediacleaner.api.data.LinkReplacement; import org.wikipediacleaner.api.data.Page; import org.wikipediacleaner.gui.swing.action.FindTextAction; import org.wikipediacleaner.gui.swing.action.RemoveAllLinksAction; import org.wikipediacleaner.gui.swing.action.ReplaceAllLinksAction; import org.wikipediacleaner.gui.swing.action.TemplatesAnalysisAction; import org.wikipediacleaner.gui.swing.component.MWPane; import org.wikipediacleaner.i18n.GT; /** * A helper class to manage contextual menu. */ public class AnalysisPageListMenuCreator extends BasicMenuCreator { /** * Add item for finding text. * * @param popup Popup menu. * @param page Page. * @param textPane Text pane. */ public void addItemFindText( JPopupMenu popup, Page page, JTextPane textPane) { if ((page != null) && (textPane != null)) { addItem( popup, null, GT._("Find text"), true, new FindTextAction(page.getTitle(), textPane)); } } /** * Add item for analyzing templates. * * @param wiki Wiki. * @param popup Popup menu. * @param page Initial page. * @param link Link. */ public void addItemAnalyzeTemplates( EnumWikipedia wiki, JPopupMenu popup, Page page, Page link) { if ((page != null) && (wiki != null)) { addItem( popup, null, GT._("Search in templates"), true, new TemplatesAnalysisAction(page, link, wiki)); } } /** * Add item for removing links. * * @param popup Popup menu. * @param page Page. * @param textPane Text pane. */ public void addItemRemoveAllLinks( JPopupMenu popup, Page page, MWPane textPane) { addItem( popup, null, GT._("Remove all links"), true, new RemoveAllLinksAction(textPane, page)); } /** * Add submenus for replacing links. * * @param popup Popup menu. * @param page Page. * @param textPane Text pane. */ public void addReplaceAllLinks( JPopupMenu popup, Page page, MWPane textPane) { List<Page> links = page.getLinksWithRedirect(); if ((links != null) && (links.size() > 0)) { JMenu submenuLink = new JMenu(GT._("Link to")); int fixedBeginLink = 0; int fixedEndLink = 0; String title = LinkReplacement.getLastReplacement(page.getTitle()); if (title != null) { fixedBeginLink += addItem( submenuLink, null, title, true, new ReplaceAllLinksAction(textPane, page, title, null)); fixedBeginLink += addSeparator(submenuLink); } for (Page p : links) { if (p.isRedirect()) { JMenu submenu1 = new JMenu(p.getTitle()); Iterator<Page> iter = p.getRedirectIteratorWithPage(); while (iter.hasNext()) { Page pageTmp = iter.next(); addItem( submenu1, pageTmp, null, true, new ReplaceAllLinksAction(textPane, page, pageTmp.getTitle(), null)); } submenuLink.add(submenu1); } else { addItem( submenuLink, p, null, true, new ReplaceAllLinksAction(textPane, page, p.getTitle(), null)); } } title = LinkReplacement.getLastReplacement(page.getTitle()); if (title != null) { fixedEndLink += addSeparator(submenuLink); fixedEndLink += addItem( submenuLink, null, title, true, new ReplaceAllLinksAction(textPane, page, title, null)); } addSubmenu(popup, submenuLink, fixedBeginLink, fixedEndLink); } } }