Package com.salas.bb.sentiments

Source Code of com.salas.bb.sentiments.SettingsDialog$AdvancedAction

// 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: SettingsDialog.java,v 1.6 2008/02/28 10:50:24 spyromus Exp $
//

package com.salas.bb.sentiments;

import com.jgoodies.binding.value.ValueModel;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.uif.AbstractDialog;
import com.jgoodies.uif.util.Resizer;
import com.jgoodies.uif.util.ResourceUtils;
import com.salas.bb.core.GlobalController;
import com.salas.bb.utils.ResourceID;
import com.salas.bb.utils.i18n.Strings;
import com.salas.bb.utils.uif.*;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.text.MessageFormat;

/**
* Settings dialog.
*/
public class SettingsDialog extends AbstractDialog
{
    private JCheckBox               chEnabled;
    private AdvancedSettingsDialog  advancedDialog;
    private JButton                 btnAdvanced;
    private boolean                 featureAvailable;

    /**
     * Creates a settings dialog.
     *
     * @param frame frame.
     * @param config configuration to work with.
     */
    public SettingsDialog(Frame frame, SentimentsConfig config)
    {
        super(frame, Strings.message("sentiment.analysis"));

        ValueModel trigger = getTriggerChannel();
        advancedDialog = new AdvancedSettingsDialog(SettingsDialog.this, config, trigger);

        chEnabled = ComponentsFactory.createCheckBox(Strings.message("sentiment.analysis.enable"),
            config, SentimentsConfig.PROP_ENABLED, trigger);
        btnAdvanced = new JButton(new AdvancedAction());

        featureAvailable = SentimentsFeature.isAvailable();
        chEnabled.setEnabled(featureAvailable);
        btnAdvanced.setEnabled(featureAvailable);
    }

    /**
     * Builds and answers the preference's header.
     *
     * @return JComponent header of dialog box
     */
    protected JComponent buildHeader()
    {
        return new HeaderPanelExt(
            Strings.message("sentiment.analysis"),
            Strings.message("sentiment.analysis.basic.header"),
            IconSource.getIcon(ResourceID.ICON_PREFERENCES));
    }

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

    /**
     * Creates a button bar.
     *
     * @return bar.
     */
    private JComponent buildButtonBar()
    {
        JPanel bar;

        if (featureAvailable)
        {
            bar = ButtonBarFactory.buildHelpOKCancelBar(btnAdvanced, createOKButton(true), createCancelButton());
        } else
        {
            bar = ButtonBarFactory.buildHelpCloseBar(btnAdvanced, createCloseButton(true));
        }
       
        return bar;
    }

    /**
     * Returns the main panel.
     *
     * @return panel.
     */
    private Component buildMainPanel()
    {
        BBFormBuilder builder = new BBFormBuilder("7dlu, p:grow");

        if (featureAvailable)
        {
            String message = Strings.message("sentiment.analysis.available");
            builder.append(ComponentsFactory.createWrappedMultilineLabel(message), 2);
        } else
        {
            // Feature description link
            LinkLabel lnkFeature = new LinkLabel(
                Strings.message("sentiment.analysis"),
                ResourceUtils.getString("sentiment.analysis.url"));
            lnkFeature.setForeground(LinkLabel.HIGHLIGHT_COLOR);

            // Service link
            LinkLabel lnkService = new LinkLabel(
                Strings.message("spw.learn.more"),
                ResourceUtils.getString("server.plans.url"));
            lnkService.setForeground(LinkLabel.HIGHLIGHT_COLOR);

            String plan = GlobalController.SINGLETON.getFeatureManager().getPlanName();
            String message = MessageFormat.format(Strings.message("sentiment.analysis.unavailable.1"), plan);
            builder.append(ComponentsFactory.createWrappedMultilineLabel(message), 2);

            builder.appendUnrelatedComponentsGapRow(2);
            builder.append(new JLabel(Strings.message("sentiment.analysis.unavailable.2")), 2);

            builder.setLeadingColumnOffset(1);
            builder.append(lnkFeature);
            builder.append(lnkService);

            builder.setLeadingColumnOffset(0);
            builder.appendUnrelatedComponentsGapRow(2);
            builder.append(ComponentsFactory.createWrappedMultilineLabel(
                Strings.message("sentiment.analysis.unavailable.3")), 2);

            chEnabled.setSelected(false);
        }

        builder.appendUnrelatedComponentsGapRow(2);
        builder.append(chEnabled, 2);

        return builder.getPanel();
    }

    protected void resizeHook(JComponent component)
    {
        component.setPreferredSize(Resizer.DEFAULT.fromWidth(600));
    }

    /**
     * The action that shows the advanced settings dialog.
     */
    private class AdvancedAction extends AbstractAction
    {
        private AdvancedAction()
        {
            super(Strings.message("sentiment.analysis.advanced"));
        }

        public void actionPerformed(ActionEvent e)
        {
            advancedDialog.open();
        }
    }
}
TOP

Related Classes of com.salas.bb.sentiments.SettingsDialog$AdvancedAction

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.