/* * Copyright (C) 2004, 2005, 2006 Aelitis SAS, All rights Reserved * * This program 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; either version 2 of the License. * * This program 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 ( see the LICENSE file ). * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * AELITIS, SAS au capital de 46,603.30 euros, * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. */ package com.aelitis.azureus.plugins.startstoprules.defaultplugin.ui.swt; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.gudy.azureus2.core3.config.COConfigurationManager; import org.gudy.azureus2.core3.internat.MessageText; import org.gudy.azureus2.ui.swt.Messages; import org.gudy.azureus2.ui.swt.Utils; import org.gudy.azureus2.ui.swt.config.*; import org.gudy.azureus2.ui.swt.plugins.UISWTConfigSection; import com.aelitis.azureus.plugins.startstoprules.defaultplugin.StartStopRulesDefaultPlugin; /** Auto Starting specific options * @author TuxPaper * @created Jan 12, 2004 */ public class ConfigSectionSeedingAutoStarting implements UISWTConfigSection { public String configSectionGetParentSection() { return "queue.seeding"; } public String configSectionGetName() { return "queue.seeding.autoStarting"; } public void configSectionSave() { } public void configSectionDelete() { } public int maxUserMode() { return 0; } public Composite configSectionCreate(Composite parent) { // Seeding Automation Setup GridData gridData; GridLayout layout; Label label; Composite gQR = new Composite(parent, SWT.NULL); gQR.addControlListener(new Utils.LabelWrapControlListener()); layout = new GridLayout(); layout.numColumns = 1; layout.marginHeight = 0; gQR.setLayout(layout); gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL); gQR.setLayoutData(gridData); // ** Begin Rank Type area // Rank Type area. Encompases the 4 (or more) options groups Composite cRankType = new Group(gQR, SWT.NULL); layout = new GridLayout(); layout.numColumns = 2; layout.verticalSpacing = 2; cRankType.setLayout(layout); gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); cRankType.setLayoutData(gridData); Messages.setLanguageText(cRankType, "ConfigView.label.seeding.rankType"); // Seeds:Peer options RadioParameter rparamPeerSeed = new RadioParameter(cRankType, "StartStopManager_iRankType", StartStopRulesDefaultPlugin.RANK_SPRATIO); Messages.setLanguageText(rparamPeerSeed.getControl(), "ConfigView.label.seeding.rankType.peerSeed"); gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); rparamPeerSeed.setLayoutData(gridData); new Label(cRankType, SWT.NULL); // Seed Count options RadioParameter rparamSeedCount = new RadioParameter(cRankType, "StartStopManager_iRankType", StartStopRulesDefaultPlugin.RANK_SEEDCOUNT); Messages.setLanguageText(rparamSeedCount.getControl(), "ConfigView.label.seeding.rankType.seed"); gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); rparamSeedCount.setLayoutData(gridData); Group gSeedCount = new Group(cRankType, SWT.NULL); layout = new GridLayout(); layout.marginHeight = 2; layout.marginWidth = 2; layout.numColumns = 3; gSeedCount.setLayout(layout); gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); gridData.verticalSpan = 1; gSeedCount.setLayoutData(gridData); Messages.setLanguageText(gSeedCount, "ConfigView.label.seeding.rankType.seed.options"); label = new Label(gSeedCount, SWT.NULL); Messages.setLanguageText(label, "ConfigView.label.seeding.rankType.seed.fallback"); gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); gridData.widthHint = 20; IntParameter intParamFallBack = new IntParameter(gSeedCount, "StartStopManager_iRankTypeSeedFallback"); intParamFallBack.setLayoutData(gridData); Label labelFallBackSeeds = new Label(gSeedCount, SWT.NULL); label.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); Messages.setLanguageText(labelFallBackSeeds, "ConfigView.label.seeds"); Control[] controlsSeedCount = { gSeedCount }; rparamSeedCount.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(controlsSeedCount)); // timed rotation ranking type RadioParameter rparamTimed = new RadioParameter(cRankType, "StartStopManager_iRankType", StartStopRulesDefaultPlugin.RANK_TIMED); Messages.setLanguageText(rparamTimed.getControl(), "ConfigView.label.seeding.rankType.timedRotation"); gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); rparamTimed.setLayoutData(gridData); new Label(cRankType, SWT.NULL); // No Ranking RadioParameter rparamNone = new RadioParameter(cRankType, "StartStopManager_iRankType", StartStopRulesDefaultPlugin.RANK_NONE); Messages.setLanguageText(rparamNone.getControl(), "ConfigView.label.seeding.rankType.none"); gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); rparamNone.setLayoutData(gridData); new Label(cRankType, SWT.NULL); // ** End Rank Type area Composite cNoTimeNone = new Composite(gQR, SWT.NULL); layout = new GridLayout(); layout.numColumns = 2; cNoTimeNone.setLayout(layout); gridData = new GridData(); layout.marginHeight = 0; layout.marginWidth = 0; cNoTimeNone.setLayoutData(gridData); gridData = new GridData(); gridData.horizontalSpan = 2; new BooleanParameter(cNoTimeNone, "StartStopManager_bPreferLargerSwarms", "ConfigView.label.seeding.preferLargerSwarms").setLayoutData(gridData); label = new Label(cNoTimeNone, SWT.NULL); Messages.setLanguageText(label, "ConfigView.label.minPeersToBoostNoSeeds"); //$NON-NLS-1$ final String boostQRPeersLabels[] = new String[9]; final int boostQRPeersValues[] = new int[9]; String peers = MessageText.getString("ConfigView.text.peers"); for (int i = 0; i < boostQRPeersValues.length; i++) { boostQRPeersLabels[i] = (i+1) + " " + peers; //$NON-NLS-1$ boostQRPeersValues[i] = (i+1); } gridData = new GridData(); new IntListParameter(cNoTimeNone, "StartStopManager_iMinPeersToBoostNoSeeds", boostQRPeersLabels, boostQRPeersValues); Control[] controlsNoTimeNone = { cNoTimeNone }; rparamPeerSeed.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(controlsNoTimeNone)); rparamSeedCount.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(controlsNoTimeNone)); int iRankType = COConfigurationManager.getIntParameter("StartStopManager_iRankType"); boolean enable = (iRankType == StartStopRulesDefaultPlugin.RANK_SPRATIO || iRankType == StartStopRulesDefaultPlugin.RANK_SEEDCOUNT); controlsSetEnabled(controlsNoTimeNone, enable); new BooleanParameter(gQR, "StartStopManager_bAutoStart0Peers", "ConfigView.label.seeding.autoStart0Peers"); return gQR; } private void controlsSetEnabled(Control[] controls, boolean bEnabled) { for(int i = 0 ; i < controls.length ; i++) { if (controls[i] instanceof Composite) controlsSetEnabled(((Composite)controls[i]).getChildren(), bEnabled); controls[i].setEnabled(bEnabled); } } }