📄 configsectiontrackerserver.java
字号:
/*
* File : ConfigPanel*.java
* Created : 11 mar. 2004
* By : TuxPaper
*
* 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 org.gudy.azureus2.ui.swt.views.configsections;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import com.aelitis.azureus.core.*;
import org.gudy.azureus2.plugins.ui.config.ConfigSection;
import org.gudy.azureus2.ui.swt.config.*;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.tracker.host.TRHost;
import org.gudy.azureus2.core3.tracker.server.TRTrackerServer;
import org.gudy.azureus2.core3.util.AENetworkClassifier;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.ui.swt.ipchecker.IpCheckerWizard;
import org.gudy.azureus2.ui.swt.ipchecker.IpSetterCallBack;
import org.gudy.azureus2.ui.swt.mainwindow.Colors;
import org.gudy.azureus2.ui.swt.mainwindow.Cursors;
import org.gudy.azureus2.ui.swt.plugins.UISWTConfigSection;
import org.gudy.azureus2.ui.swt.auth.*;
public class
ConfigSectionTrackerServer
implements UISWTConfigSection
{
private static final String CFG_PREFIX = "ConfigView.section.";
protected AzureusCore azureus_core;
private final int REQUIRED_MODE = 1;
public
ConfigSectionTrackerServer(
AzureusCore _azureus_core )
{
azureus_core = _azureus_core;
}
public String configSectionGetParentSection() {
return ConfigSection.SECTION_TRACKER;
}
public String configSectionGetName() {
return "tracker.server";
}
public void configSectionSave() {
}
public void configSectionDelete() {
}
public Composite configSectionCreate(final Composite parent) {
GridData gridData;
GridLayout layout;
Label label;
// main tab set up
Composite gMainTab = new Composite(parent, SWT.NULL);
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
gMainTab.setLayoutData(gridData);
layout = new GridLayout();
layout.numColumns = 4;
gMainTab.setLayout(layout);
int userMode = COConfigurationManager.getIntParameter("User Mode");
if (userMode < REQUIRED_MODE) {
label = new Label(gMainTab, SWT.WRAP);
gridData = new GridData();
label.setLayoutData(gridData);
final String[] modeKeys = { CFG_PREFIX + "mode.beginner",
CFG_PREFIX + "mode.intermediate",
CFG_PREFIX + "mode.advanced" };
String param1, param2;
if (REQUIRED_MODE < modeKeys.length)
param1 = MessageText.getString(modeKeys[REQUIRED_MODE]);
else
param1 = String.valueOf(REQUIRED_MODE);
if (userMode < modeKeys.length)
param2 = MessageText.getString(modeKeys[userMode]);
else
param2 = String.valueOf(userMode);
label.setText(MessageText.getString("ConfigView.notAvailableForMode",
new String[] { param1, param2 } ));
return gMainTab;
}
// MAIN TAB DATA
// row
if(userMode>0) { // XXX
label = new Label(gMainTab, SWT.NULL);
Messages.setLanguageText(label, CFG_PREFIX + "tracker.ip");
final StringParameter tracker_ip = new StringParameter(gMainTab, "Tracker IP", "" );
gridData = new GridData();
gridData.widthHint = 80;
tracker_ip.setLayoutData( gridData );
Button check_button = new Button(gMainTab, SWT.PUSH);
gridData = new GridData();
gridData.horizontalSpan = 2;
check_button.setLayoutData(gridData);
Messages.setLanguageText(check_button, CFG_PREFIX + "tracker.checkip"); //$NON-NLS-1$
final Display display = gMainTab.getDisplay();
check_button.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
IpCheckerWizard wizard = new IpCheckerWizard(azureus_core, display);
wizard.setIpSetterCallBack(new IpSetterCallBack() {
public void setIp(final String ip) {
if(display == null || display.isDisposed())
return;
display.asyncExec(new AERunnable(){
public void runSupport() {
if(tracker_ip != null)
tracker_ip.setValue(ip);
}
});
}
}); // setIPSetterCallback
}
});
// row
final BooleanParameter nonsslEnable =
new BooleanParameter(gMainTab, "Tracker Port Enable", false,
CFG_PREFIX + "tracker.port");
IntParameter tracker_port = new IntParameter(gMainTab, "Tracker Port",
TRHost.DEFAULT_PORT);
gridData = new GridData();
gridData.widthHint = 50;
tracker_port.setLayoutData( gridData );
final StringParameter tracker_port_backup = new StringParameter(gMainTab, "Tracker Port Backups", "" );
gridData = new GridData();
gridData.widthHint = 100;
tracker_port_backup.setLayoutData( gridData );
Label tracker_port_backup_label = new Label(gMainTab, SWT.NULL );
Messages.setLanguageText(tracker_port_backup_label, CFG_PREFIX + "tracker.portbackup");
Control[] non_ssl_controls = new Control[3];
non_ssl_controls[0] = tracker_port.getControl();
non_ssl_controls[1] = tracker_port_backup.getControl();
non_ssl_controls[2] = tracker_port_backup_label;
nonsslEnable.setAdditionalActionPerformer(new ChangeSelectionActionPerformer( non_ssl_controls ));
// row
final BooleanParameter sslEnable =
new BooleanParameter(gMainTab, "Tracker Port SSL Enable", false,
CFG_PREFIX + "tracker.sslport");
IntParameter tracker_port_ssl = new IntParameter(gMainTab,
"Tracker Port SSL", TRHost.DEFAULT_PORT_SSL);
gridData = new GridData();
gridData.widthHint = 50;
tracker_port_ssl.setLayoutData( gridData );
final StringParameter tracker_port_ssl_backup = new StringParameter(gMainTab, "Tracker Port SSL Backups", "" );
gridData = new GridData();
gridData.widthHint = 100;
tracker_port_ssl_backup.setLayoutData( gridData );
Label tracker_port_ssl_backup_label = new Label(gMainTab, SWT.NULL );
Messages.setLanguageText(tracker_port_ssl_backup_label, CFG_PREFIX + "tracker.portbackup");
// create cert row
Label cert_label = new Label(gMainTab, SWT.NULL );
Messages.setLanguageText(cert_label, CFG_PREFIX + "tracker.createcert");
Button cert_button = new Button(gMainTab, SWT.PUSH);
Messages.setLanguageText(cert_button, CFG_PREFIX + "tracker.createbutton");
cert_button.addListener(SWT.Selection,
new Listener()
{
public void
handleEvent(Event event)
{
new CertificateCreatorWindow();
}
});
Label ssl_faq_label = new Label(gMainTab, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan = 2;
ssl_faq_label.setLayoutData(gridData);
Messages.setLanguageText(ssl_faq_label, CFG_PREFIX + "tracker.sslport.info");
final String linkFAQ = "http://azureus.sourceforge.net/faq.php#19";
ssl_faq_label.setCursor(Cursors.handCursor);
ssl_faq_label.setForeground(Colors.blue);
ssl_faq_label.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent arg0) {
Utils.launch(linkFAQ);
}
public void mouseDown(MouseEvent arg0) {
Utils.launch(linkFAQ);
}
});
Control[] ssl_controls = {
tracker_port_ssl.getControl(),
tracker_port_ssl_backup.getControl(),
tracker_port_ssl_backup_label,
ssl_faq_label,
cert_label,
cert_button };
sslEnable.setAdditionalActionPerformer(new ChangeSelectionActionPerformer( ssl_controls ));
// row
gridData = new GridData();
gridData.horizontalSpan = 1;
new BooleanParameter(gMainTab, "Tracker Public Enable", false,
CFG_PREFIX + "tracker.publicenable").setLayoutData( gridData );
label = new Label(gMainTab, SWT.NULL);
Messages.setLanguageText(label, CFG_PREFIX + "tracker.publicenable.info");
gridData = new GridData();
gridData.horizontalSpan = 3;
label.setLayoutData(gridData);
// row
BooleanParameter forcePortDetails =
new BooleanParameter(gMainTab, "Tracker Port Force External", false,
CFG_PREFIX + "tracker.forceport");
label = new Label(gMainTab, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan = 3;
label.setLayoutData(gridData);
Control[] f_controls = new Control[1];
f_controls[0] = forcePortDetails.getControl();
IAdditionalActionPerformer f_enabler =
new GenericActionPerformer(f_controls) {
public void performAction()
{
boolean selected = nonsslEnable.isSelected() ||
sslEnable.isSelected();
controls[0].setEnabled( selected );
}
};
nonsslEnable.setAdditionalActionPerformer(f_enabler);
sslEnable.setAdditionalActionPerformer(f_enabler);
// row
// add announce urls to hosted torrents
BooleanParameter hostAddURLs =
new BooleanParameter(gMainTab, "Tracker Host Add Our Announce URLs", true,
CFG_PREFIX + "tracker.host.addurls");
gridData = new GridData();
gridData.horizontalSpan = 2;
hostAddURLs.setLayoutData( gridData );
label = new Label(gMainTab, SWT.NULL);
gridData = new GridData();
gridData.horizontalSpan = 2;
label.setLayoutData(gridData);
// row
gridData = new GridData();
gridData.horizontalSpan = 1;
final BooleanParameter passwordEnableWeb =
new BooleanParameter(gMainTab, "Tracker Password Enable Web", false,
CFG_PREFIX + "tracker.passwordenableweb");
passwordEnableWeb.setLayoutData( gridData );
gridData = new GridData();
gridData.horizontalSpan = 3;
final BooleanParameter passwordWebHTTPSOnly =
new BooleanParameter(gMainTab, "Tracker Password Web HTTPS Only", false,
CFG_PREFIX + "tracker.passwordwebhttpsonly");
passwordWebHTTPSOnly.setLayoutData( gridData );
IAdditionalActionPerformer web_https_enabler =
new GenericActionPerformer(passwordWebHTTPSOnly.getControls())
{
public void performAction()
{
boolean selected = passwordEnableWeb.isSelected() &&
sslEnable.isSelected();
for (int i=0;i<controls.length;i++){
controls[i].setEnabled( selected );
}
}
};
passwordEnableWeb.setAdditionalActionPerformer(web_https_enabler);
sslEnable.setAdditionalActionPerformer(web_https_enabler);
// row
final BooleanParameter passwordEnableTorrent =
new BooleanParameter(gMainTab, "Tracker Password Enable Torrent", false,
CFG_PREFIX + "tracker.passwordenabletorrent");
label = new Label(gMainTab, SWT.NULL);
Messages.setLanguageText(label, CFG_PREFIX + "tracker.passwordenabletorrent.info");
gridData = new GridData();
gridData.horizontalSpan = 3;
label.setLayoutData( gridData );
// row
label = new Label(gMainTab, SWT.NULL);
Messages.setLanguageText(label, CFG_PREFIX + "tracker.username");
final StringParameter tracker_username = new StringParameter(gMainTab, "Tracker Username", "" );
gridData = new GridData();
gridData.widthHint = 100;
tracker_username.setLayoutData( gridData );
label = new Label(gMainTab, SWT.NULL);
label = new Label(gMainTab, SWT.NULL);
// row
label = new Label(gMainTab, SWT.NULL);
Messages.setLanguageText(label, CFG_PREFIX + "tracker.password");
final PasswordParameter tracker_password = new PasswordParameter(gMainTab, "Tracker Password" );
gridData = new GridData();
gridData.widthHint = 100;
tracker_password.setLayoutData( gridData );
label = new Label(gMainTab, SWT.NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -