Java tutorial
/* * 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"); } }