package org.limewire.ui.swing.wizard; import javax.swing.JCheckBox; import org.limewire.core.settings.ApplicationSettings; import org.limewire.core.settings.ContentSettings; import org.limewire.ui.swing.settings.InstallSettings; import org.limewire.ui.swing.settings.StartupSettings; import org.limewire.ui.swing.settings.SwingUiSettings; import org.limewire.ui.swing.shell.LimeAssociationOption; import org.limewire.ui.swing.shell.LimeAssociations; import org.limewire.ui.swing.util.I18n; import org.limewire.ui.swing.util.MacOSXUtils; import org.limewire.ui.swing.util.WindowsUtils; import org.limewire.util.OSUtils; import net.miginfocom.swing.MigLayout; public class SetupPage1 extends WizardPage { private final JCheckBox associationFileTypeCheckBox; private final JCheckBox launchAtStartupCheckBox; private final JCheckBox shareUsageDataCheckBox; private final JCheckBox contentFilterCheckBox; public SetupPage1(SetupComponentDecorator decorator){ super(decorator); setOpaque(false); setLayout(new MigLayout("insets 0 14 0 0, gap 0")); associationFileTypeCheckBox = createAndDecorateCheckBox(true); launchAtStartupCheckBox = createAndDecorateCheckBox(true); shareUsageDataCheckBox = createAndDecorateCheckBox(true); contentFilterCheckBox = createAndDecorateCheckBox(false); //File Associations addFileAssociations(); //Improving LimeWire Opt-out addImproving(); //Content Filters addContentFilters(); initSettings(); } /** * Adds header for file association and any appropriate checkboxes and text */ private void addFileAssociations() { if (LimeAssociations.isMagnetAssociationSupported() || LimeAssociations.isTorrentAssociationSupported() || shouldShowStartOnStartupWindow()) { add(createAndDecorateHeader(I18n.tr("File Associations and Startup")), "gaptop 20, span, wrap"); if (LimeAssociations.isMagnetAssociationSupported() || LimeAssociations.isTorrentAssociationSupported()) { add(associationFileTypeCheckBox, "gaptop 5, gapleft 26"); add(createAndDecorateMultiLine(I18n.tr("Associate .magnet and .torrent files with LimeWire"), associationFileTypeCheckBox), "gaptop 5, gapleft 5, wrap"); } if (shouldShowStartOnStartupWindow()) { add(launchAtStartupCheckBox, "gaptop 5, gapleft 26"); add(createAndDecorateMultiLine(I18n.tr("Launch LimeWire at system startup"), launchAtStartupCheckBox), "gaptop 5, gapleft 5, wrap"); } } } /** * Adds header for Anonymous Data collection, checkbox, and associated text */ private void addImproving() { add(createAndDecorateHeader(I18n.tr("Improve LimeWire")), "gaptop 20, span, wrap"); add(shareUsageDataCheckBox, "gaptop 5, gapleft 26"); add(createAndDecorateMultiLine(I18n.tr("Help improve LimeWire by sending us anonymous usage data"), shareUsageDataCheckBox), "gapleft 5, gaptop 5"); add(createAndDecorateHyperlink("http://www.limewire.com/client_redirect/?page=anonymousDataCollection"), "gapleft 10, wrap"); } /** * Adds header for Copyrighted content filtering, checkbox, and associated text */ private void addContentFilters() { add(createAndDecorateHeader(I18n.tr("Content Filters")), "gaptop 20, span, wrap"); add(contentFilterCheckBox, "gaptop 5, gapleft 26"); add(createAndDecorateMultiLine(I18n.tr("Don't let me download or upload files copyright owners request not be shared"), contentFilterCheckBox), "gapleft 5, gaptop 5"); add(createAndDecorateHyperlink("http://www.limewire.com/client_redirect/?page=contentFiltering"), "gapleft 10, wrap"); } private void initSettings() { associationFileTypeCheckBox.setSelected(SwingUiSettings.HANDLE_MAGNETS.getValue()); launchAtStartupCheckBox.setSelected(StartupSettings.RUN_ON_STARTUP.getValue()); shareUsageDataCheckBox.setSelected(ApplicationSettings.ALLOW_ANONYMOUS_STATISTICS_GATHERING.getValue()); contentFilterCheckBox.setSelected(ContentSettings.USER_WANTS_MANAGEMENTS.getValue()); } @Override public String getLine1() { return I18n.tr("Please take a minute to configure these options before moving on."); } @Override public String getLine2() { return ""; } @Override public String getFooter() { return OSUtils.isMacOSX() ? I18n.tr("All settings can be changed later from LimeWire > Preferences") : I18n.tr("All settings can be changed later in Tools > Options"); } @Override public void applySettings() { // File Associations SwingUiSettings.HANDLE_MAGNETS.setValue(associationFileTypeCheckBox.isSelected()); LimeAssociationOption magnetAssociationOption = LimeAssociations.getMagnetAssociation(); if (magnetAssociationOption != null) { magnetAssociationOption.setEnabled(associationFileTypeCheckBox.isSelected()); } SwingUiSettings.HANDLE_TORRENTS.setValue(associationFileTypeCheckBox.isSelected()); LimeAssociationOption torrentAssociationOption = LimeAssociations.getTorrentAssociation(); if (torrentAssociationOption != null) { torrentAssociationOption.setEnabled(associationFileTypeCheckBox.isSelected()); } InstallSettings.ASSOCIATION_OPTION.setValue(2); // launch at startup if (shouldShowStartOnStartupWindow()) { if (OSUtils.isMacOSX()) MacOSXUtils.setLoginStatus(launchAtStartupCheckBox.isSelected()); else if (WindowsUtils.isLoginStatusAvailable()) WindowsUtils.setLoginStatus(launchAtStartupCheckBox.isSelected()); StartupSettings.RUN_ON_STARTUP.setValue(launchAtStartupCheckBox.isSelected()); } else StartupSettings.RUN_ON_STARTUP.setValue(false); InstallSettings.START_STARTUP.setValue(true); //Anonymous Usage statics ApplicationSettings.ALLOW_ANONYMOUS_STATISTICS_GATHERING.setValue(shareUsageDataCheckBox.isSelected()); InstallSettings.ANONYMOUS_DATA_COLLECTION.setValue(true); //Content Filters ContentSettings.USER_WANTS_MANAGEMENTS.setValue(contentFilterCheckBox.isSelected()); InstallSettings.FILTER_OPTION.setValue(true); } /** * Determines if the Start On Startup option is available. */ private boolean shouldShowStartOnStartupWindow() { return OSUtils.isMacOSX() || OSUtils.isGoodWindows(); } }