/* * 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 javax.swing.JTextPane; import javax.swing.text.BadLocationException; import javax.swing.text.Element; /** * An action listener for reverting internal links ([[xx|yy]] -> [[yy|xx]]). */ public class RevertLinkAction implements ActionListener { private final String title; private final String text; private final Element element; private final JTextPane textPane; public RevertLinkAction( String title, String text, Element element, JTextPane textPane) { this.title = title; this.text = text; this.element = element; this.textPane = textPane; } /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(@SuppressWarnings("unused") ActionEvent e) { if ((element == null) || (textPane == null) || (title == null) || (title.length() == 0) || (text == null) || (text.length() == 0)) { return; } // Initialize int startOffset = element.getStartOffset(); int endOffset = element.getEndOffset(); String newText = "[[" + text + "|" + title + "]]"; // Replace try { textPane.getDocument().remove(startOffset, endOffset - startOffset); textPane.getDocument().insertString(startOffset, newText, element.getAttributes()); textPane.setCaretPosition(startOffset); textPane.moveCaretPosition(startOffset + newText.length()); } catch (BadLocationException e1) { // Nothing to be done } } }