Package com.salas.bb.dialogs

Source Code of com.salas.bb.dialogs.DisplayPropertiesTabPanel

// 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: DisplayPropertiesTabPanel.java,v 1.5 2007/04/30 11:12:56 spyromus Exp $
//

package com.salas.bb.dialogs;

import com.salas.bb.core.GlobalModel;
import com.salas.bb.domain.FeedType;
import com.salas.bb.domain.IFeed;
import com.salas.bb.utils.i18n.Strings;
import com.salas.bb.utils.uif.BBFormBuilder;
import com.salas.bb.utils.uif.ComponentsFactory;
import com.salas.bb.utils.uif.StateUpdatingToggleListener;
import com.salas.bb.views.settings.FeedRenderingSettings;

import javax.swing.*;

/**
* Reusable display tab panel with display properties of the feed.
*/
public class DisplayPropertiesTabPanel extends JPanel
{
    private final IFeed feed;
    private final FeedType initialFeedType;

    private final JComboBox cbFeedType;
    private final JCheckBox chCustomViewModeEnabled;
    private final JComboBox cbViewMode;
    private final JComboBox cbAscendingSorting;

    /**
     * Creates the tab panel for a feed.
     *
     * @param feed feed.
     */
    public DisplayPropertiesTabPanel(IFeed feed)
    {
        this.feed = feed;
        initialFeedType = feed == null ? FeedType.TEXT : feed.getType();

        cbFeedType = new JComboBox(FeedType.getAllTypes());
        cbFeedType.setSelectedItem(initialFeedType);

        // Custom view mode
        chCustomViewModeEnabled = ComponentsFactory.createCheckBox(
            Strings.message("show.feed.properties.tab.display.custom.view.mode"));
        chCustomViewModeEnabled.setSelected(feed != null && feed.isCustomViewModeEnabled());

        int selectedViewMode = feed == null ? -1 : feed.getCustomViewMode();
        if (selectedViewMode == -1)
        {
            FeedRenderingSettings frs = GlobalModel.SINGLETON.getGlobalRenderingSettings();
            selectedViewMode = frs.getArticleViewMode();
        }

        cbViewMode = new JComboBox(new String[] {
            Strings.message("viewmode.minimal"),
            Strings.message("viewmode.brief"),
            Strings.message("viewmode.full") });
        cbViewMode.setSelectedIndex(selectedViewMode);

        int ascendingSortingInd = sort2index(feed == null ? null : feed.getAscendingSorting());
        cbAscendingSorting = new JComboBox(new String[] {
            "Global", "Ascending", "Descending"});
        cbAscendingSorting.setSelectedIndex(ascendingSortingInd);

        BBFormBuilder builder = new BBFormBuilder("7dlu, p, 4dlu, p, 0:grow", this);
        builder.setDefaultDialogBorder();

        builder.append(Strings.message("show.feed.properties.tab.display.type"), 2, cbFeedType, 1);
        builder.appendUnrelatedComponentsGapRow(2);
        builder.append(chCustomViewModeEnabled, 5);
        builder.setLeadingColumnOffset(1);
        JLabel lbViewMode = builder.append(Strings.message("show.feed.properties.tab.display.mode"), 1);
        builder.append(cbViewMode);
        lbViewMode.setLabelFor(cbViewMode);

        builder.setLeadingColumnOffset(0);
        builder.nextLine();
        builder.append("Sorting order: ", 2, cbAscendingSorting, 1);

        StateUpdatingToggleListener.install(chCustomViewModeEnabled, lbViewMode, cbViewMode);
    }

    /**
     * Returns initial feeds type we saw during initialization.
     *
     * @return feed type.
     */
    public FeedType getInitialFeedType()
    {
        return initialFeedType;
    }

    /**
     * Returns selected feed type.
     *
     * @return feed type.
     */
    public FeedType getFeedType()
    {
        return (FeedType)cbFeedType.getSelectedItem();
    }

    /**
     * Selects the feed type.
     *
     * @param type new type.
     */
    public void setFeedType(FeedType type)
    {
        cbFeedType.setSelectedItem(type);
    }

    /**
     * Returns selected view mode.
     *
     * @return view mode.
     */
    public int getViewMode()
    {
        return cbViewMode.getSelectedIndex();
    }

    /**
     * Sets the selected view mode.
     *
     * @param mode mode.
     */
    public void setViewMode(int mode)
    {
        cbViewMode.setSelectedIndex(mode);
    }

    /**
     * Returns <code>TRUE</code> if custom view mode is selected.
     *
     * @return <code>TRUE</code> if custom view mode is selected.
     */
    public boolean isCustomViewModeEnabled()
    {
        return chCustomViewModeEnabled.isSelected();
    }

    /**
     * Commits all the changes to feed.
     */
    public void commitChanges()
    {
        if (feed == null) return;

        FeedType feedType = getFeedType();
        if (getInitialFeedType() != feedType) feed.setType(feedType);

        // Custom view mode
        int mode = getViewMode();
        feed.setCustomViewModeEnabled(isCustomViewModeEnabled());
        if (isCustomViewModeEnabled())
        {
            GlobalModel.SINGLETON.getViewModeValueModel().setValue(mode);
        } else feed.setCustomViewMode(mode);

        // Sorting override
        feed.setAscendingSorting(index2sort(cbAscendingSorting.getSelectedIndex()));
    }

    /**
     * Converts ascending sorting override property value into the sorting box index.
     *
     * @param asc   property value.
     *
     * @return index.
     */
    private static int sort2index(Boolean asc)
    {
        return asc == null ? 0 : asc ? 1 : 2;
    }

    /**
     * Converts index of the selected item in the sorting override box to the property value.
     *
     * @param ind   index.
     *
     * @return ascending sorting override value.
     */
    private static Boolean index2sort(int ind)
    {
        return ind == 0 ? null : ind == 1;
    }
}
TOP

Related Classes of com.salas.bb.dialogs.DisplayPropertiesTabPanel

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.