org.columba.mail.gui.config.account.PopAttributPanel.java Source code

Java tutorial

Introduction

Here is the source code for org.columba.mail.gui.config.account.PopAttributPanel.java

Source

//The contents of this file are subject to the Mozilla Public License Version 1.1
//(the "License"); you may not use this file except in compliance with the 
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
//
//Software distributed under the License is distributed on an "AS IS" basis,
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
//for the specific language governing rights and
//limitations under the License.
//
//The Original Code is "The Columba Project"
//
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003. 
//
//All Rights Reserved.
package org.columba.mail.gui.config.account;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;

import org.columba.core.gui.base.CheckBoxWithMnemonic;
import org.columba.mail.config.PopItem;
import org.columba.mail.util.MailResourceLoader;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;

/**
 * 
 * @author freddy
 * @version
 */
public class PopAttributPanel implements ActionListener {
    private PopItem item;

    private JCheckBox leaveOnServerCheckBox;

    private JCheckBox excludeCheckBox;

    private JCheckBox removeOldMessagesCheckBox;

    private JSpinner olderThanSpinner;

    private JLabel daysLabel;

    private JCheckBox limitMessageDownloadCheckBox;

    private JTextField limitMessageDownloadTextField;

    public PopAttributPanel(PopItem item) {
        super();
        this.item = item;

        initComponents();
    }

    public void updateComponents(boolean b) {

        if (b) {
            leaveOnServerCheckBox.setSelected(item.getBoolean(PopItem.LEAVE_MESSAGES_ON_SERVER));
            removeOldMessagesCheckBox
                    .setSelected(item.getBooleanWithDefault(PopItem.REMOVE_OLD_FROM_SERVER, false));

            updateRemoveOldMessagesEnabled();

            olderThanSpinner.getModel().setValue(new Integer(item.getIntegerWithDefault(PopItem.OLDER_THAN, 30)));

            excludeCheckBox.setSelected(item.getBooleanWithDefault(PopItem.EXCLUDE_FROM_CHECKALL, false));

            limitMessageDownloadCheckBox.setSelected(item.getBoolean(PopItem.ENABLE_DOWNLOAD_LIMIT));

            limitMessageDownloadTextField.setText(item.get(PopItem.DOWNLOAD_LIMIT));

        } else {
            item.setBoolean(PopItem.REMOVE_OLD_FROM_SERVER, removeOldMessagesCheckBox.isSelected());

            item.setInteger(PopItem.OLDER_THAN,
                    ((SpinnerNumberModel) olderThanSpinner.getModel()).getNumber().intValue());

            item.setBoolean(PopItem.LEAVE_MESSAGES_ON_SERVER, leaveOnServerCheckBox.isSelected()); //$NON-NLS-1$

            item.setBoolean(PopItem.EXCLUDE_FROM_CHECKALL, excludeCheckBox.isSelected()); //$NON-NLS-1$

            item.setString(PopItem.DOWNLOAD_LIMIT, limitMessageDownloadTextField.getText());

            item.setBoolean(PopItem.ENABLE_DOWNLOAD_LIMIT, limitMessageDownloadCheckBox.isSelected());

        }
    }

    /**
     * 
     */
    private void updateRemoveOldMessagesEnabled() {
        removeOldMessagesCheckBox.setEnabled(leaveOnServerCheckBox.isSelected());
        olderThanSpinner.setEnabled(leaveOnServerCheckBox.isSelected());
        daysLabel.setEnabled(leaveOnServerCheckBox.isSelected());
    }

    public void createPanel(DefaultFormBuilder builder) {
        JPanel panel;
        FormLayout l;
        DefaultFormBuilder b;

        builder.appendSeparator(MailResourceLoader.getString("dialog", "account", "options"));

        builder.append(leaveOnServerCheckBox, 4);
        builder.nextLine();

        builder.setLeadingColumnOffset(2);

        panel = new JPanel();
        l = new FormLayout("default, 3dlu, min(50;default), 3dlu, default",
                // 2 columns
                ""); // rows are added dynamically (no need to define them
        // here)

        // create a form builder
        b = new DefaultFormBuilder(l, panel);
        b.append(removeOldMessagesCheckBox);
        b.append(olderThanSpinner);
        b.append(daysLabel);
        builder.append(panel, 3);
        builder.nextLine();

        builder.setLeadingColumnOffset(1);
        builder.append(excludeCheckBox, 4);
        builder.nextLine();

        panel = new JPanel();
        l = new FormLayout("max(100;default), 3dlu, left:max(50dlu;default)",

                // 2 columns
                ""); // rows are added dynamically (no need to define them
        // here)

        // create a form builder
        b = new DefaultFormBuilder(l, panel);
        b.append(limitMessageDownloadCheckBox, limitMessageDownloadTextField);

        builder.append(panel, 4);

    }

    protected void initComponents() {
        leaveOnServerCheckBox = new CheckBoxWithMnemonic(
                MailResourceLoader.getString("dialog", "account", PopItem.LEAVE_MESSAGES_ON_SERVER));
        leaveOnServerCheckBox.setActionCommand("LEAVE_ON_SERVER");
        leaveOnServerCheckBox.addActionListener(this);

        limitMessageDownloadCheckBox = new CheckBoxWithMnemonic(
                MailResourceLoader.getString("dialog", "account", "limit_message_download_to"));

        limitMessageDownloadCheckBox.setActionCommand("LIMIT_MESSAGE_DOWNLOAD");
        limitMessageDownloadCheckBox.addActionListener(this);

        limitMessageDownloadTextField = new JTextField();

        excludeCheckBox = new CheckBoxWithMnemonic(
                MailResourceLoader.getString("dialog", "account", "exclude_from_fetch_all"));

        removeOldMessagesCheckBox = new CheckBoxWithMnemonic(
                MailResourceLoader.getString("dialog", "account", PopItem.REMOVE_OLD_FROM_SERVER));

        olderThanSpinner = new JSpinner(new SpinnerNumberModel(1, 1, Integer.MAX_VALUE, 1));

        daysLabel = new JLabel(MailResourceLoader.getString("dialog", "account", "days"));

    }

    public void actionPerformed(ActionEvent e) {
        String action = e.getActionCommand();

        if (action.equals("LIMIT_MESSAGE_DOWNLOAD")) {
            limitMessageDownloadTextField.setEnabled(limitMessageDownloadCheckBox.isSelected());
        } else if (action.equals("LEAVE_ON_SERVER")) {
            updateRemoveOldMessagesEnabled();
        }
    }
}