Package com.salas.bb.remixfeeds.editor

Source Code of com.salas.bb.remixfeeds.editor.AbstractInsertLinkAction

// BlogBridge -- RSS feed reader, manager, and web based service
// Copyright (C) 2002-2006 by R. Pito Salas
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software Foundation;
// either version 2 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with this program;
// if not, write to the Free Software Foundation, Inc., 59 Temple Place,
// Suite 330, Boston, MA 02111-1307 USA
//
// Contact: R. Pito Salas
// mailto:pitosalas@users.sourceforge.net
// More information: about BlogBridge
// http://www.blogbridge.com
// http://sourceforge.net/projects/blogbridge
//
// $Id: AbstractInsertLinkAction.java,v 1.3 2007/02/21 13:12:25 spyromus Exp $
//

package com.salas.bb.remixfeeds.editor;

import javax.swing.*;
import javax.swing.text.Document;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
import java.text.MessageFormat;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Abstract implementation of insert link action taking care of inserting the link.
*/
abstract class AbstractInsertLinkAction extends AbstractAction
{
    private static final Logger LOG = Logger.getLogger(AbstractInsertLinkAction.class.getName());

    private final JEditorPane editor;
    private final String itemTitle;

    /**
     * Creates action.
     *
     * @param editor editor.
     * @param itemTitle title.
     */
    public AbstractInsertLinkAction(JEditorPane editor, String itemTitle)
    {
        super(itemTitle);
        this.editor = editor;
        this.itemTitle = itemTitle;
    }

    /**
     * Inserts the link from the selected into the text at current position.
     *
     * @param link  link to insert.
     * @param title title of the link.
     */
    protected void insertLink(String link, String title)
    {
        String txt = MessageFormat.format("<a href=\"{0}\">{1}</a>", link, title);

        Document document = editor.getDocument();
        if (document instanceof HTMLDocument)
        {
            HTMLDocument htmlDocument = (HTMLDocument)document;
            int offset = editor.getSelectionStart();

            HTMLEditorKit kit = (HTMLEditorKit)editor.getEditorKit();
            try
            {
                htmlDocument.remove(offset, editor.getSelectionEnd() - offset);
                kit.insertHTML(htmlDocument, offset, txt, 0, 0, HTML.Tag.A);
            } catch (Throwable e)
            {
                LOG.log(Level.WARNING, "Failed to insert link", e);
            }
        } else
        {
            editor.replaceSelection(txt);
        }
    }

    /**
     * Returns the text which is currently selected.
     *
     * @return text.
     */
    protected String getSelectedText()
    {
        return editor.getSelectedText();
    }

    /**
     * Returns a string representation of the object.
     *
     * @return a string representation of the object.
     */
    public String toString()
    {
        return itemTitle;
    }
}
TOP

Related Classes of com.salas.bb.remixfeeds.editor.AbstractInsertLinkAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.