de.dal33t.powerfolder.ui.wizard.ConfirmDiskLocationPanel.java Source code

Java tutorial

Introduction

Here is the source code for de.dal33t.powerfolder.ui.wizard.ConfirmDiskLocationPanel.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: ConfirmDiskLocationPanel.java 19840 2012-09-22 04:32:53Z glasgow $
 */
package de.dal33t.powerfolder.ui.wizard;

import static de.dal33t.powerfolder.ui.wizard.WizardContextAttributes.BACKUP_ONLINE_STOARGE;
import static de.dal33t.powerfolder.ui.wizard.WizardContextAttributes.FOLDERINFO_ATTRIBUTE;
import static de.dal33t.powerfolder.ui.wizard.WizardContextAttributes.FOLDER_LOCAL_BASE;
import static de.dal33t.powerfolder.ui.wizard.WizardContextAttributes.INITIAL_FOLDER_NAME;
import static de.dal33t.powerfolder.ui.wizard.WizardContextAttributes.PROMPT_TEXT_ATTRIBUTE;
import static de.dal33t.powerfolder.ui.wizard.WizardContextAttributes.SEND_INVIATION_AFTER_ATTRIBUTE;
import static de.dal33t.powerfolder.ui.wizard.WizardContextAttributes.SYNC_PROFILE_ATTRIBUTE;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.nio.file.Path;

import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;

import jwf.WizardPanel;

import com.jgoodies.forms.builder.PanelBuilder;
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.disk.SyncProfile;
import de.dal33t.powerfolder.light.FolderInfo;
import de.dal33t.powerfolder.ui.util.SimpleComponentFactory;
import de.dal33t.powerfolder.util.IdGenerator;
import de.dal33t.powerfolder.util.PathUtils;
import de.dal33t.powerfolder.util.Translation;

/**
 * A generally used wizard panel for choosing a disk location for a folder.
 *
 * @author <a href="mailto:totmacher@powerfolder.com">Christian Sprajc </a>
 * @version $Revision: 1.9 $
 */
public class ConfirmDiskLocationPanel extends PFWizardPanel {

    private Path localBase;

    private JCheckBox backupByOnlineStorageBox;
    private JCheckBox sendInviteAfterCB;

    private JLabel folderSizeLabel;

    public ConfirmDiskLocationPanel(Controller controller, Path localBase) {
        super(controller);
        this.localBase = localBase;
    }

    public WizardPanel next() {
        getWizardContext().setAttribute(FOLDER_LOCAL_BASE, localBase);
        String initialFolderName = PathUtils.getSuggestedFolderName(localBase);
        getWizardContext().setAttribute(INITIAL_FOLDER_NAME, initialFolderName);
        if (PreferencesEntry.EXPERT_MODE.getValueBoolean(getController())) {
            return new FolderSetupPanel(getController());
        } else {
            // Set FolderInfo
            // NOTE: this is more or less a copy of FolderSetupPanel next(), for
            // non experts.
            // Changes may need to be applied to both.
            FolderInfo folderInfo = new FolderInfo(initialFolderName, IdGenerator.makeFolderId());
            getWizardContext().setAttribute(FOLDERINFO_ATTRIBUTE, folderInfo);

            // Set sync profile
            getWizardContext().setAttribute(SYNC_PROFILE_ATTRIBUTE, SyncProfile.AUTOMATIC_SYNCHRONIZATION);

            // Setup choose disk location panel
            getWizardContext().setAttribute(PROMPT_TEXT_ATTRIBUTE,
                    Translation.getTranslation("wizard.what_to_do.invite.select_local"));

            // Setup sucess panel of this wizard path
            TextPanelPanel successPanel = new TextPanelPanel(getController(),
                    Translation.getTranslation("wizard.setup_success"),
                    Translation.getTranslation("wizard.success_join"));
            getWizardContext().setAttribute(PFWizard.SUCCESS_PANEL, successPanel);

            return new FolderCreatePanel(getController());
        }
    }

    public boolean hasNext() {
        return true;
    }

    public boolean validateNext() {
        getWizardContext().setAttribute(SEND_INVIATION_AFTER_ATTRIBUTE, sendInviteAfterCB.isSelected());
        getWizardContext().setAttribute(BACKUP_ONLINE_STOARGE, backupByOnlineStorageBox.isSelected());
        return true;
    }

    protected JPanel buildContent() {

        FormLayout layout = new FormLayout("pref, 3dlu, pref, 3dlu, max(pref;100dlu), 0",
                "pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref");

        PanelBuilder builder = new PanelBuilder(layout);
        CellConstraints cc = new CellConstraints();

        JComponent locationField = new JLabel(Translation.getTranslation("general.directory"));

        int row = 1;

        builder.add(locationField, cc.xy(1, row));
        builder.add(new JLabel(localBase.toAbsolutePath().toString()), cc.xy(3, row));

        row += 2;
        builder.add(folderSizeLabel, cc.xyw(1, row, 5));

        if (getController().getOSClient().isBackupByDefault()
                && PreferencesEntry.EXPERT_MODE.getValueBoolean(getController())) {
            row += 2;
            builder.add(backupByOnlineStorageBox, cc.xyw(1, row, 5));
        }

        // Send Invite
        if (getController().isBackupOnly()
                || !ConfigurationEntry.SERVER_INVITE_ENABLED.getValueBoolean(getController())) {
            sendInviteAfterCB.setSelected(false);
        } else {
            row += 2;
            builder.add(sendInviteAfterCB, cc.xyw(1, row, 5));
        }

        return builder.getPanel();
    }

    /**
     * Initalizes all nessesary components
     */
    protected void initComponents() {

        folderSizeLabel = new JLabel();

        // Online Storage integration
        boolean backupByOS = getController().getOSClient().isBackupByDefault()
                && Boolean.TRUE.equals(getWizardContext().getAttribute(BACKUP_ONLINE_STOARGE));
        backupByOnlineStorageBox = new JCheckBox(
                Translation.getTranslation("exp.wizard.choose_disk_location.backup_by_online_storage"));
        // Is backup suggested?
        if (backupByOS) {
            backupByOnlineStorageBox.setSelected(true);
        }
        backupByOnlineStorageBox.getModel().addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (backupByOnlineStorageBox.isSelected()) {
                    getController().getUIController().getApplicationModel().getServerClientModel()
                            .checkAndSetupAccount();
                }
            }
        });
        backupByOnlineStorageBox.setOpaque(false);

        // Send Invite
        boolean sendInvite = Boolean.TRUE.equals(getWizardContext().getAttribute(SEND_INVIATION_AFTER_ATTRIBUTE));
        sendInviteAfterCB = SimpleComponentFactory
                .createCheckBox(Translation.getTranslation("exp.wizard.choose_disk_location.send_invitation"));
        sendInviteAfterCB.setOpaque(false);
        sendInviteAfterCB.setSelected(sendInvite);

    }

    protected String getTitle() {
        return Translation.getTranslation("exp.wizard.choose_disk_location.options");
    }
}