de.dal33t.powerfolder.ui.dialog.PauseDialog.java Source code

Java tutorial

Introduction

Here is the source code for de.dal33t.powerfolder.ui.dialog.PauseDialog.java

Source

/*
 * Copyright 2004 - 2008 Christian Sprajc. All rights reserved.
 *
 * This file is part of PowerFolder.
 *
 * PowerFolder 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.
 *
 * PowerFolder 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 PowerFolder. If not, see <http://www.gnu.org/licenses/>.
 *
 * $Id: PauseDialog.java 17944 2012-01-31 12:10:03Z harry $
 */
package de.dal33t.powerfolder.ui.dialog;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import java.util.TreeMap;

import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

import de.dal33t.powerfolder.ConfigurationEntry;
import de.dal33t.powerfolder.Controller;
import de.dal33t.powerfolder.PreferencesEntry;
import de.dal33t.powerfolder.util.Translation;

/**
 * Dialog to let the user decide how long to pause for.
 */
public class PauseDialog extends BaseDialog {

    private static final Map<Integer, String> PAUSE_RESUME_VALUES;

    static {
        PAUSE_RESUME_VALUES = new TreeMap<Integer, String>();
        PAUSE_RESUME_VALUES.put(0, Translation.getTranslation("pause_dialog.pause.user_inactive"));
        PAUSE_RESUME_VALUES.put(5 * 60, Translation.getTranslation("pause_dialog.pause.5minutes"));
        PAUSE_RESUME_VALUES.put(3600, Translation.getTranslation("pause_dialog.pause.1hour"));
        PAUSE_RESUME_VALUES.put(8 * 3660, Translation.getTranslation("pause_dialog.pause.8hours"));
        PAUSE_RESUME_VALUES.put(Integer.MAX_VALUE, Translation.getTranslation("pause_dialog.pause.permanent"));
    }

    private JButton pauseButton;
    private JCheckBox neverAskAgainCB;
    private JComboBox<String> pauseValuesCombo;

    public PauseDialog(Controller controller) {
        super(Senior.NONE, controller, true);
    }

    public String getTitle() {
        return Translation.getTranslation("pause_dialog.title");
    }

    protected Icon getIcon() {
        return null;
    }

    protected JComponent getContent() {
        pauseButton = new JButton(Translation.getTranslation("pause_dialog.button.text"));
        pauseButton.setMnemonic(Translation.getTranslation("pause_dialog.button.text").trim().charAt(0));
        pauseButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                pause();
            }
        });

        neverAskAgainCB = new JCheckBox(Translation.getTranslation("general.neverAskAgain"));
        neverAskAgainCB.setMnemonic(Translation.getTranslation("general.neverAskAgain").charAt(0));

        int pauseResumeSeconds = ConfigurationEntry.PAUSE_RESUME_SECONDS.getValueInt(getController());
        pauseValuesCombo = new JComboBox<>();
        int i = 0;
        for (Map.Entry<Integer, String> entry : PAUSE_RESUME_VALUES.entrySet()) {
            pauseValuesCombo.addItem(entry.getValue());
            if (pauseResumeSeconds == entry.getKey()) {
                pauseValuesCombo.setSelectedIndex(i);
            }
            i++;
        }

        FormLayout layout = new FormLayout("pref, 3dlu, pref:grow", "pref, 3dlu, pref");
        PanelBuilder builder = new PanelBuilder(layout);
        CellConstraints cc = new CellConstraints();

        builder.add(new JLabel(Translation.getTranslation("pause_dialog.pause_label.text")), cc.xy(1, 1));
        builder.add(pauseValuesCombo, cc.xy(3, 1));

        builder.add(neverAskAgainCB, cc.xyw(1, 3, 3));
        return builder.getPanel();
    }

    private void pause() {
        if (neverAskAgainCB.isSelected()) {
            PreferencesEntry.SHOW_ASK_FOR_PAUSE.setValue(getController(), false);
        }

        int i = 0;
        for (Integer pauseTime : PAUSE_RESUME_VALUES.keySet()) {
            if (i == pauseValuesCombo.getSelectedIndex()) {
                ConfigurationEntry.PAUSE_RESUME_SECONDS.setValue(getController(), pauseTime);
                getController().saveConfig();
                break;
            }
            i++;
        }

        getController().setPaused(!getController().isPaused());

        dialog.dispose();
    }

    protected JButton getDefaultButton() {
        return pauseButton;
    }

    protected Component getButtonBar() {
        JButton cancelButton = createCancelButton(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dialog.dispose();
            }
        });

        return ButtonBarFactory.buildCenteredBar(pauseButton, cancelButton);
    }

}