ConfigSectionTransferAutoSpeedSelectpublic class ConfigSectionTransferAutoSpeedSelect extends Object implements org.gudy.azureus2.ui.swt.plugins.UISWTConfigSectionCreated on Jun 13, 2007
Created by Alan Snyder
Copyright (C) 2007 Aelitis, 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, or (at your option) any later version.
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.
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 63.529,40 euros
8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. |
Fields Summary |
---|
private final String | CFG_PREFIX | StringListParameter | versionList | BooleanParameter | enableAutoSpeed | BooleanParameter | enableAutoSpeedWhileSeeding |
Methods Summary |
---|
public org.eclipse.swt.widgets.Composite | configSectionCreate(org.eclipse.swt.widgets.Composite parent)Create your own configuration panel here. It can be anything that inherits
from SWT's Composite class.
Please be mindfull of small screen resolutions
GridData gridData;
Composite cSection = new Composite(parent, SWT.NULL);
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL|GridData.HORIZONTAL_ALIGN_FILL);
cSection.setLayoutData(gridData);
GridLayout subPanel = new GridLayout();
subPanel.numColumns = 3;
cSection.setLayout(subPanel);
//V1, V2 ... drop down.
//enable auto-speed beta
///////////////////////////////////
// AutoSpeed Beta mode group
///////////////////////////////////
//Beta-mode grouping.
Group modeGroup = new Group(cSection, SWT.NULL);
Messages.setLanguageText(modeGroup,"ConfigTransferAutoSpeed.algorithm.selector");
GridLayout modeLayout = new GridLayout();
modeLayout.numColumns = 3;
modeGroup.setLayout(modeLayout);
gridData = new GridData(GridData.FILL_HORIZONTAL);
modeGroup.setLayoutData(gridData);
//Need a drop down to select which method will be used.
Label label = new Label(modeGroup, SWT.NULL);
Messages.setLanguageText(label,"ConfigTransferAutoSpeed.algorithm");
gridData = new GridData();
gridData.widthHint = 50;
label.setLayoutData(gridData);
String AutoSpeedClassic = MessageText.getString("ConfigTransferAutoSpeed.auto.speed.classic");
String AutoSpeedBeta = MessageText.getString("ConfigTransferAutoSpeed.auto.speed.beta");
String[] modeNames = {
AutoSpeedClassic,
AutoSpeedBeta
};
String[] modes = {
"1",
"2",
};
//versionList = new StringListParameter(modeGroup,
// SpeedManagerImpl.CONFIG_VERSION_STR,
// "1",
// modeNames,modes,true);
versionList = new StringListParameter(modeGroup,SpeedManagerImpl.CONFIG_VERSION_STR, modeNames, modes);
long verNum = COConfigurationManager.getLongParameter( SpeedManagerImpl.CONFIG_VERSION );
if( verNum==1 ){
//SpeedManagerAlgorithmProviderV1
versionList.setValue(modes[0]);
}else if( verNum==2 ){
//SpeedManagerAlgorithmProviderV2
versionList.setValue(modes[1]);
}else{
//Default is currently version ...V1.
versionList.setValue(modes[0]);
//ToDo: log this condition.
}
versionList.addChangeListener( new ConvertToLongChangeListener() );
//spacer
Label spacer = new Label(modeGroup, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan=3;
spacer.setLayoutData(gridData);
//To enable the beta.
gridData = new GridData();
gridData.horizontalIndent = 20;
gridData.horizontalSpan = 2;
enableAutoSpeed = new BooleanParameter(modeGroup,
TransferSpeedValidator.AUTO_UPLOAD_ENABLED_CONFIGKEY,CFG_PREFIX+"enableauto");
enableAutoSpeed.setLayoutData(gridData);
//enableAutoSpeed.addChangeListener( new GroupModeChangeListener() );
spacer = new Label(modeGroup, SWT.NULL);
//AutoSpeed while seeding enabled.
enableAutoSpeedWhileSeeding = new BooleanParameter(modeGroup,
"Auto Upload Speed Seeding Enabled",CFG_PREFIX+"enableautoseeding");
gridData = new GridData();
gridData.horizontalIndent = 20;
gridData.horizontalSpan = 2;
enableAutoSpeedWhileSeeding.setLayoutData(gridData);
enableAutoSpeed.setAdditionalActionPerformer(
new ChangeSelectionActionPerformer( enableAutoSpeedWhileSeeding.getControls(), true ));
spacer = new Label(modeGroup, SWT.NULL);
spacer = new Label(cSection, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan=3;
spacer.setLayoutData(gridData);
// NETWORK GROUP
Group networkGroup = new Group(cSection, SWT.NULL);
//networkGroup.addControlListener(new Utils.LabelWrapControlListener());
Messages.setLanguageText(networkGroup,CFG_PREFIX+"networks");
GridLayout networksLayout = new GridLayout();
networksLayout.numColumns = 5;
networkGroup.setLayout(networksLayout);
gridData = new GridData(GridData.FILL_HORIZONTAL);
networkGroup.setLayoutData(gridData);
// asn
label = new Label(networkGroup, SWT.NULL);
Messages.setLanguageText(label,"SpeedView.stats.asn");
final Label asn_label = new Label(networkGroup, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan = 4;
gridData.grabExcessHorizontalSpace = true;
asn_label.setLayoutData(gridData);
// up cap
label = new Label(networkGroup, SWT.NULL);
Messages.setLanguageText(label,"SpeedView.stats.estupcap");
gridData = new GridData();
gridData.horizontalIndent = 20;
label.setLayoutData(gridData);
final Label up_cap = new Label(networkGroup, SWT.NULL);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 4;
up_cap.setLayoutData(gridData);
// down cap
label = new Label(networkGroup, SWT.NULL);
Messages.setLanguageText(label,"SpeedView.stats.estdowncap");
gridData = new GridData();
gridData.horizontalIndent = 20;
label.setLayoutData(gridData);
final Label down_cap = new Label(networkGroup, SWT.NULL);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 4;
down_cap.setLayoutData(gridData);
final SpeedManager sm = AzureusCoreFactory.getSingleton().getSpeedManager();
final TransferStatsView.limitToTextHelper limit_to_text = new TransferStatsView.limitToTextHelper();
asn_label.setText( sm.getASN());
up_cap.setText( limit_to_text.getLimitText( sm.getEstimatedUploadCapacityBytesPerSec()));
down_cap.setText( limit_to_text.getLimitText( sm.getEstimatedDownloadCapacityBytesPerSec()));
// space
spacer = new Label(networkGroup, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan=5;
spacer.setLayoutData(gridData);
// info
Label info_label = new Label(networkGroup, SWT.WRAP );
Messages.setLanguageText(
info_label, CFG_PREFIX + "network.info",
new String[]{ DisplayFormatters.getRateUnit( DisplayFormatters.UNIT_KB )});
info_label.setLayoutData(Utils.getWrappableLabelGridData(5, 0));
// up set
label = new Label(networkGroup, SWT.NULL);
Messages.setLanguageText(label,"SpeedView.stats.estupcap");
gridData = new GridData();
gridData.horizontalIndent = 20;
label.setLayoutData(gridData);
String co_up = "AutoSpeed Network Upload Speed (temp)";
String co_up_type = "AutoSpeed Network Upload Speed Type (temp)";
SpeedManagerLimitEstimate up_lim = sm.getEstimatedUploadCapacityBytesPerSec();
COConfigurationManager.setParameter( co_up, up_lim.getBytesPerSec()/1024 );
COConfigurationManager.setParameter( co_up_type, limit_to_text.getSettableType( up_lim ));
final IntParameter max_upload = new IntParameter(networkGroup, co_up );
final Label upload_bits = new Label(networkGroup, SWT.NULL);
gridData = new GridData();
gridData.widthHint = 80;
upload_bits.setLayoutData(gridData);
upload_bits.setText(getMBitLimit(limit_to_text,(up_lim.getBytesPerSec()/1024)*1024));
final StringListParameter max_upload_type =
new StringListParameter(networkGroup, co_up_type, limit_to_text.getSettableTypes(),limit_to_text.getSettableTypes() );
max_upload_type.addChangeListener(
new ParameterChangeAdapter()
{
public void
parameterChanged(
Parameter p,
boolean caused_internally )
{
if ( max_upload_type.isDisposed()){
return;
}
float type = limit_to_text.textToType( max_upload_type.getValue());
SpeedManagerLimitEstimate existing = sm.getEstimatedUploadCapacityBytesPerSec();
if ( existing.getEstimateType() != type ){
sm.setEstimatedUploadCapacityBytesPerSec( existing.getBytesPerSec(), type );
}
}
});
max_upload.addChangeListener(
new ParameterChangeAdapter()
{
public void
parameterChanged(
Parameter p,
boolean caused_internally )
{
if ( max_upload.isDisposed()){
return;
}
int value = max_upload.getValue() * 1024;
SpeedManagerLimitEstimate existing = sm.getEstimatedUploadCapacityBytesPerSec();
if ( existing.getBytesPerSec() != value ){
sm.setEstimatedUploadCapacityBytesPerSec( value, existing.getEstimateType());
}
}
});
label = new Label(networkGroup, SWT.NULL);
// down set
label = new Label(networkGroup, SWT.NULL);
Messages.setLanguageText(label,"SpeedView.stats.estdowncap");
gridData = new GridData();
gridData.horizontalIndent = 20;
label.setLayoutData(gridData);
SpeedManagerLimitEstimate down_lim = sm.getEstimatedDownloadCapacityBytesPerSec();
String co_down = "AutoSpeed Network Download Speed (temp)";
String co_down_type = "AutoSpeed Network Download Speed Type (temp)";
COConfigurationManager.setParameter( co_down, down_lim.getBytesPerSec()/1024 );
COConfigurationManager.setParameter( co_down_type, limit_to_text.getSettableType( down_lim ));
final IntParameter max_download = new IntParameter(networkGroup, co_down );
final Label download_bits = new Label(networkGroup, SWT.NULL);
gridData = new GridData();
gridData.widthHint = 80;
download_bits.setLayoutData(gridData);
download_bits.setText(getMBitLimit(limit_to_text,(down_lim.getBytesPerSec()/1024)*1024));
final StringListParameter max_download_type =
new StringListParameter(networkGroup, co_down_type, limit_to_text.getSettableTypes(),limit_to_text.getSettableTypes() );
max_download_type.addChangeListener(
new ParameterChangeAdapter()
{
public void
parameterChanged(
Parameter p,
boolean caused_internally )
{
if ( max_download_type.isDisposed()){
return;
}
float type = limit_to_text.textToType( max_download_type.getValue());
SpeedManagerLimitEstimate existing = sm.getEstimatedDownloadCapacityBytesPerSec();
if ( existing.getEstimateType() != type ){
sm.setEstimatedDownloadCapacityBytesPerSec( existing.getBytesPerSec(), type );
}
}
});
max_download.addChangeListener(
new ParameterChangeAdapter()
{
public void
parameterChanged(
Parameter p,
boolean caused_internally )
{
if ( max_download.isDisposed()){
return;
}
int value = max_download.getValue() * 1024;
SpeedManagerLimitEstimate existing = sm.getEstimatedDownloadCapacityBytesPerSec();
if ( existing.getBytesPerSec() != value ){
sm.setEstimatedDownloadCapacityBytesPerSec( value, existing.getEstimateType());
}
}
});
label = new Label(networkGroup, SWT.NULL);
// reset
Label reset_label = new Label(networkGroup, SWT.NULL );
Messages.setLanguageText(reset_label, CFG_PREFIX + "resetnetwork");
Button reset_button = new Button(networkGroup, SWT.PUSH);
Messages.setLanguageText(reset_button, CFG_PREFIX + "reset.button" );
reset_button.addListener(SWT.Selection,
new Listener()
{
public void
handleEvent(Event event)
{
sm.reset();
}
});
sm.addListener(
new SpeedManagerListener()
{
private final SpeedManagerListener listener = this;
public void
propertyChanged(
final int property )
{
Utils.execSWTThread(
new Runnable()
{
public void
run()
{
if ( asn_label.isDisposed()){
sm.removeListener( listener );
}else{
if ( property == SpeedManagerListener.PR_ASN ){
asn_label.setText( sm.getASN());
}else if ( property == SpeedManagerListener.PR_UP_CAPACITY ){
SpeedManagerLimitEstimate limit = sm.getEstimatedUploadCapacityBytesPerSec();
up_cap.setText( limit_to_text.getLimitText( limit ));
upload_bits.setText(getMBitLimit(limit_to_text, limit.getBytesPerSec()));
max_upload.setValue( limit.getBytesPerSec()/1024 );
max_upload_type.setValue( limit_to_text.getSettableType( limit ));
}else if ( property == SpeedManagerListener.PR_DOWN_CAPACITY ){
SpeedManagerLimitEstimate limit = sm.getEstimatedDownloadCapacityBytesPerSec();
down_cap.setText( limit_to_text.getLimitText( limit ));
download_bits.setText(getMBitLimit(limit_to_text, limit.getBytesPerSec()));
max_download.setValue( limit.getBytesPerSec()/1024 );
max_download_type.setValue( limit_to_text.getSettableType( limit ));
}
}
}
});
}
});
//Add listeners to disable setting when needed.
//spacer
spacer = new Label(cSection, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan=3;
spacer.setLayoutData(gridData);
/////////////////////////////////////////
//Add group to link to Azureus Wiki page.
/////////////////////////////////////////
Group azWiki = new Group(cSection, SWT.WRAP);
gridData = new GridData();
gridData.widthHint = 350;
azWiki.setLayoutData(gridData);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.marginHeight = 1;
azWiki.setLayout(layout);
azWiki.setText(MessageText.getString("Utils.link.visit"));
final Label linkLabel = new Label(azWiki, SWT.NULL);
linkLabel.setText( "Azureus Wiki AutoSpeed (beta)" );
linkLabel.setData("http://azureus.aelitis.com/wiki/index.php/Auto_Speed");
linkLabel.setCursor(Cursors.handCursor);
linkLabel.setForeground(Colors.blue);
gridData = new GridData();
gridData.horizontalIndent = 10;
linkLabel.setLayoutData( gridData );
linkLabel.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent arg0) {
Utils.launch((String) ((Label) arg0.widget).getData());
}
public void mouseUp(MouseEvent arg0) {
Utils.launch((String) ((Label) arg0.widget).getData());
}
});
return cSection;
| public void | configSectionDelete()Config view is closing
| public java.lang.String | configSectionGetName()In order for the plugin to display its section correctly, a key in the
Plugin language file will need to contain
ConfigView.section.<configSectionGetName() result>=The Section name.
return "transfer.select";
| public java.lang.String | configSectionGetParentSection()Returns section you want your configuration panel to be under.
See SECTION_* constants. To add a subsection to your own ConfigSection,
return the configSectionGetName result of your parent.
return ConfigSection.SECTION_TRANSFER;
| public void | configSectionSave()User selected Save.
All saving of non-plugin tabs have been completed, as well as
saving of plugins that implement org.gudy.azureus2.plugins.ui.config
parameters.
| protected java.lang.String | getMBitLimit(TransferStatsView.limitToTextHelper helper, long value)
return("("+(value==0?helper.getUnlimited():DisplayFormatters.formatByteCountToBitsPerSec( value ))+")" );
|
|