/* * 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 java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.JList; import org.wikipediacleaner.api.constants.EnumWikipedia; import org.wikipediacleaner.api.data.Page; import org.wikipediacleaner.gui.swing.OnePageAnalysisWindow; import org.wikipediacleaner.gui.swing.OnePageWindow; /** * A analyze listener for MediaWikiPane. */ public class PageListAnalyzeListener extends MouseAdapter { private final EnumWikipedia wikipedia; private final OnePageWindow pageWindow; public PageListAnalyzeListener(EnumWikipedia wikipedia, OnePageWindow pageWindow) { this.wikipedia = wikipedia; this.pageWindow = pageWindow; } /* (non-Javadoc) * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent) */ @Override public void mouseClicked(MouseEvent e) { if (e.getButton() != MouseEvent.BUTTON1) { return; } if (e.getClickCount() != 2) { return; } if (!(e.getComponent() instanceof JList)) { return; } JList list = (JList) e.getComponent(); int position = list.locationToIndex(e.getPoint()); if (position < 0) { return; } Object object = list.getModel().getElementAt(position); if (!(object instanceof Page)) { return; } Page page = (Page) object; ArrayList<Page> knownPages = null; if ((pageWindow != null) && (pageWindow.getPage() != null)) { Page basePage = pageWindow.getPage(); knownPages = new ArrayList<Page>(1); knownPages.add(basePage); for (Page backLink : basePage.getAllLinksToPage()) { if ((backLink != null) && (backLink.isRedirect()) && (Page.areSameTitle(basePage.getTitle(), backLink.getRedirectDestination()))) { knownPages.add(backLink); } } } OnePageAnalysisWindow.createAnalysisWindow(page.getTitle(), knownPages, wikipedia); } }