Package com.salas.bb.remixfeeds.editor

Source Code of com.salas.bb.remixfeeds.editor.InsertUserLinkAction$LinkDialog$TextFieldListener

// 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: InsertUserLinkAction.java,v 1.3 2008/04/07 16:35:23 spyromus Exp $
//

package com.salas.bb.remixfeeds.editor;

import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.uif.AbstractDialog;
import com.salas.bb.utils.StringUtils;
import com.salas.bb.utils.i18n.Strings;
import com.salas.bb.utils.uif.BBFormBuilder;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

/**
* Asks a user for a link and a title and inserts.
*/
class InsertUserLinkAction extends AbstractInsertLinkAction
{
    private final JDialog parent;

    /**
     * Creates the action.
     *
     * @param parent    parent dialog.
     * @param editor    text editor.
     * @param itemTitle item title.
     */
    public InsertUserLinkAction(JDialog parent, JEditorPane editor, String itemTitle)
    {
        super(editor, itemTitle);
        this.parent = parent;
    }

    /**
     * Invoked when a user calls the command.
     *
     * @param e action.
     */
    public void actionPerformed(ActionEvent e)
    {
        LinkDialog dialog = new LinkDialog(parent);
        dialog.open(getSelectedText());
        if (!dialog.hasBeenCanceled())
        {
            insertLink(dialog.getLink(), dialog.getText());
        }
    }

    /**
     * The dialog for asking a link and a piece of text to surround with it.
     */
    private static class LinkDialog extends AbstractDialog
    {
        private final JTextField tfLink;
        private final JTextField tfText;
        private JButton btnOK;

        /**
         * Creates the dialog.
         *
         * @param parent dialog.
         */
        public LinkDialog(JDialog parent)
        {
            super(parent, Strings.message("ptb.editor.insert.link"));

            tfLink = new JTextField();
            tfText = new JTextField();

            LinkDialog.TextFieldListener listener = new TextFieldListener();
            tfText.addKeyListener(listener);
            tfLink.addKeyListener(listener);
        }

        /**
         * Builds the content area.
         *
         * @return content.
         */
        protected JComponent buildContent()
        {
            JPanel content = new JPanel(new BorderLayout());
            content.add(buildMainPanel(), BorderLayout.CENTER);
            content.add(buildButtonBar(), BorderLayout.SOUTH);
            return content;
        }

        /**
         * Creates button bar.
         *
         * @return bar.
         */
        private JComponent buildButtonBar()
        {
            btnOK = createOKButton(true);
            updateOKButtonState();
            return ButtonBarFactory.buildOKCancelBar(btnOK, createCancelButton());
        }

        private void updateOKButtonState()
        {
            String text = tfText.getText();
            String link = tfLink.getText();
            btnOK.setEnabled(StringUtils.isNotEmpty(text) && StringUtils.isNotEmpty(link));
        }

        /**
         * Builds the main panel.
         *
         * @return main panel.
         */
        private Component buildMainPanel()
        {
            BBFormBuilder builder = new BBFormBuilder("p, 2dlu, 150dlu");
            builder.setDefaultDialogBorder();

            builder.append("&Link:", tfLink);
            builder.append("&Text:", tfText);

            return builder.getPanel();
        }

        /**
         * Opens the dialog and initialize the text field.
         *
         * @param text text to put.
         */
        public void open(String text)
        {
            tfText.setText(text);
            super.open();
        }

        /**
         * Returns the link.
         *
         * @return link.
         */
        public String getLink()
        {
            return tfLink.getText();
        }

        /**
         * Returns the text.
         *
         * @return text.
         */
        public String getText()
        {
            return tfText.getText();
        }

        /**
         * Listens to the changes in the text field and updates the OK button state.
         */
        private class TextFieldListener extends KeyAdapter
        {
            @Override
            public void keyReleased(KeyEvent e)
            {
                if (!e.isActionKey()) updateOKButtonState();
            }
        }
    }
}
TOP

Related Classes of com.salas.bb.remixfeeds.editor.InsertUserLinkAction$LinkDialog$TextFieldListener

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.