/*
* 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.component;
import javax.swing.JPopupMenu;
import javax.swing.text.AttributeSet;
import javax.swing.text.Element;
import org.wikipediacleaner.api.check.CheckErrorResult;
import org.wikipediacleaner.api.constants.EnumWikipedia;
import org.wikipediacleaner.api.data.PageAnalysis;
import org.wikipediacleaner.gui.swing.basic.BasicWindow;
import org.wikipediacleaner.gui.swing.menu.MWPaneCheckWikiMenuCreator;
/**
* A popup menu listener for MediaWikiPane for Check Wiki.
*/
public class MWPaneCheckWikiPopupListener extends MWPanePopupListener {
public MWPaneCheckWikiPopupListener(
EnumWikipedia wikipedia, BasicWindow window) {
super(wikipedia, window);
}
/**
* Construct popup menu.
*
* @param textPane Text pane.
* @param position Position in text.
* @param pageAnalysis Page analysis.
*/
@Override
protected JPopupMenu createPopup(
MWPane textPane, int position,
PageAnalysis pageAnalysis) {
if ((textPane == null) || (pageAnalysis == null)) {
return null;
}
Element element = textPane.getStyledDocument().getCharacterElement(position);
if (element == null) {
return null;
}
// Check if it's for Check Wiki
AttributeSet attributes = element.getAttributes();
Object attrInfo = attributes.getAttribute(MWPaneFormatter.ATTRIBUTE_INFO);
if (!(attrInfo instanceof CheckErrorResult)) {
return null;
}
CheckErrorResult info = (CheckErrorResult) attrInfo;
MWPaneCheckWikiMenuCreator menu = new MWPaneCheckWikiMenuCreator();
JPopupMenu popup = menu.createPopupMenu(null);
menu.addInfo(popup, element, textPane, info);
return popup;
}
}