/* * 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.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collection; import org.wikipediacleaner.api.data.Page; import org.wikipediacleaner.api.data.PageAnalysis; import org.wikipediacleaner.api.data.PageElementInternalLink; import org.wikipediacleaner.gui.swing.component.MWPane; /** * An action listener for removing all internal links. */ public class RemoveAllLinksAction implements ActionListener { private MWPane textPane; private Page from; public RemoveAllLinksAction(MWPane textPane, Page from) { this.textPane = textPane; this.from = from; } /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(@SuppressWarnings("unused") ActionEvent e) { String originalText = textPane.getText(); PageAnalysis analysis = textPane.getWikiPage().getAnalysis(originalText, true); StringBuilder buffer = new StringBuilder(); int lastPosition = 0; Collection<PageElementInternalLink> links = analysis.getInternalLinks(); for (PageElementInternalLink link : links) { if (Page.areSameTitle(from.getTitle(), link.getLink())) { buffer.append(originalText.substring(lastPosition, link.getBeginIndex())); lastPosition = link.getBeginIndex(); buffer.append(link.getDisplayedText()); lastPosition = link.getEndIndex(); } } if (lastPosition > 0) { buffer.append(originalText.substring(lastPosition)); textPane.changeText(buffer.toString()); } } }