/*
* 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());
}
}
}