📄 mainwindow.java
字号:
statusBar.layout();
}
});
dhtStatus = new CLabelPadding(statusBar,borderFlag);
dhtStatus.setText("");
dhtStatus.setToolTipText(MessageText.getString("MainWindow.dht.status.tooltip"));
COConfigurationManager.addAndFireParameterListener(
"Status Area Show DDB",
new ParameterListener()
{
public void parameterChanged(String parameterName)
{
dhtStatus.setVisible( COConfigurationManager.getBooleanParameter(parameterName,true));
statusBar.layout();
}
});
ipBlocked = new CLabelPadding(statusBar, borderFlag);
ipBlocked.setText("{} IPs:"); //$NON-NLS-1$
Messages.setLanguageText(ipBlocked,"MainWindow.IPs.tooltip");
ipBlocked.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent arg0) {
BlockedIpsWindow.showBlockedIps(azureus_core, MainWindow.this.mainWindow);
}
});
statusDown = new CLabelPadding(statusBar, borderFlag);
statusDown.setImage(ImageRepository.getImage("down"));
statusDown.setText(/*MessageText.getString("ConfigView.download.abbreviated") +*/ "n/a");
Messages.setLanguageText(statusDown,"MainWindow.status.updowndetails.tooltip");
Listener lStats = new Listener() {
public void handleEvent(Event e) {
showStats();
}
};
statusUp = new CLabelPadding(statusBar, borderFlag);
statusUp.setImage(ImageRepository.getImage("up"));
statusUp.setText(/*MessageText.getString("ConfigView.upload.abbreviated") +*/ "n/a");
Messages.setLanguageText(statusUp,"MainWindow.status.updowndetails.tooltip");
statusDown.addListener(SWT.MouseDoubleClick,lStats);
statusUp.addListener(SWT.MouseDoubleClick,lStats);
Listener lDHT = new Listener() {
public void handleEvent(Event e) {
showStats();
((StatsView)stats_tab.getView()).showDHT();
}
};
dhtStatus.addListener(SWT.MouseDoubleClick,lDHT);
Listener lSR = new Listener() {
public void handleEvent(Event e) {
showStats();
((StatsView)stats_tab.getView()).showTransfers();
OverallStats stats = StatsFactory.getStats();
long ratio = (1000* stats.getUploadedBytes() / (stats.getDownloadedBytes()+1) );
if ( ratio < 900 ){
Utils.openURL( "http://azureus.aelitis.com/wiki/index.php/Share_Ratio" );
}
}
};
srStatus.addListener(SWT.MouseDoubleClick,lSR);
Listener lNAT = new Listener() {
public void handleEvent(Event e) {
showConfig();
config_view.selectSection( ConfigSectionConnection.class );
if( azureus_core.getPluginManager().getDefaultPluginInterface().getConnectionManager().getNATStatus() != ConnectionManager.NAT_OK ) {
Utils.openURL( "http://azureus.aelitis.com/wiki/index.php/NAT_problem" );
}
}
};
natStatus.addListener(SWT.MouseDoubleClick,lNAT);
// Status Bar Menu construction
final Menu menuUpSpeed = new Menu(mainWindow,SWT.POP_UP);
menuUpSpeed.addListener(SWT.Show,new Listener() {
public void handleEvent(Event e) {
MenuItem[] items = menuUpSpeed.getItems();
for(int i = 0 ; i < items.length ; i++) {
items[i].dispose();
}
final String config_param = TransferSpeedValidator.getActiveUploadParameter(globalManager);
int upLimit = COConfigurationManager.getIntParameter(config_param,0);
MenuItem item = new MenuItem(menuUpSpeed,SWT.RADIO);
item.setText(MessageText.getString("ConfigView.unlimited"));
item.addListener(SWT.Selection,new Listener() {
public void handleEvent(Event e) {
COConfigurationManager.setParameter(config_param,0);
COConfigurationManager.save();
}
});
if(upLimit == 0) item.setSelection(true);
final Listener speedChangeListener = new Listener() {
public void handleEvent(Event e) {
int iSpeed = ((Integer)new TransferSpeedValidator(config_param, ((MenuItem)e.widget).getData("speed")).getValue()).intValue();
COConfigurationManager.setParameter(config_param, iSpeed);
COConfigurationManager.save();
}
};
int iRel = 0;
for (int i = 0; i < 12; i++) {
int[] iAboveBelow;
if (iRel == 0) {
iAboveBelow = new int[] { upLimit };
} else {
iAboveBelow = new int[] { upLimit - iRel, upLimit + iRel };
}
for (int j = 0; j < iAboveBelow.length; j++) {
if (iAboveBelow[j] >= 5) {
item = new MenuItem(menuUpSpeed, SWT.RADIO,
(j == 0) ? 1 : menuUpSpeed.getItemCount());
item.setText(DisplayFormatters.formatByteCountToKiBEtcPerSec(iAboveBelow[j] * 1024, true));
item.setData("speed", new Long(iAboveBelow[j]));
item.addListener(SWT.Selection, speedChangeListener);
if (upLimit == iAboveBelow[j]) item.setSelection(true);
}
}
iRel += (iRel >= 50) ? 50 : (iRel >= 10) ? 10 : (iRel >= 5) ? 5 : (iRel >= 2) ? 3 : 1;
}
}
});
statusUp.setMenu(menuUpSpeed);
final Menu menuDownSpeed = new Menu(mainWindow,SWT.POP_UP);
menuDownSpeed.addListener(SWT.Show,new Listener() {
public void handleEvent(Event e) {
MenuItem[] items = menuDownSpeed.getItems();
for(int i = 0 ; i < items.length ; i++) {
items[i].dispose();
}
int downLimit = COConfigurationManager.getIntParameter("Max Download Speed KBs",0);
final boolean unlim = (downLimit == 0);
if(downLimit == 0)
downLimit = 275;
MenuItem item = new MenuItem(menuDownSpeed,SWT.RADIO);
item.setText(MessageText.getString("ConfigView.unlimited"));
item.addListener(SWT.Selection,new Listener() {
public void handleEvent(Event e) {
COConfigurationManager.setParameter(
"Max Download Speed KBs",
((Integer)new TransferSpeedValidator("Max Download Speed KBs", new Integer(0)).getValue()).intValue()
);
COConfigurationManager.save();
}
});
if(unlim) item.setSelection(true);
final Listener speedChangeListener = new Listener() {
public void handleEvent(Event e) {
int iSpeed = ((Integer)new TransferSpeedValidator("Max Download Speed KBs", ((MenuItem)e.widget).getData("speed")).getValue()).intValue();
COConfigurationManager.setParameter("Max Download Speed KBs", iSpeed);
COConfigurationManager.save();
}
};
int iRel = 0;
for (int i = 0; i < 12; i++) {
int[] iAboveBelow;
if (iRel == 0) {
iAboveBelow = new int[] { downLimit };
} else {
iAboveBelow = new int[] { downLimit - iRel, downLimit + iRel };
}
for (int j = 0; j < iAboveBelow.length; j++) {
if (iAboveBelow[j] >= 5) {
item = new MenuItem(menuDownSpeed, SWT.RADIO,
(j == 0) ? 1 : menuDownSpeed.getItemCount());
item.setText(DisplayFormatters.formatByteCountToKiBEtcPerSec(iAboveBelow[j] * 1024, true));
item.setData("speed", new Long(iAboveBelow[j]));
item.addListener(SWT.Selection, speedChangeListener);
item.setSelection(!unlim && downLimit == iAboveBelow[j]);
}
}
iRel += (iRel >= 50) ? 50 : (iRel >= 10) ? 10 : (iRel >= 5) ? 5 : (iRel >= 2) ? 3 : 1;
}
}
});
statusDown.setMenu(menuDownSpeed);
if (Logger.isEnabled())
Logger.log(new LogEvent(LOGID, "Initializing GUI complete"));
globalManager.addListener(this);
Utils.linkShellMetricsToConfig(mainWindow, "window");
//NICO catch the dispose event from file/quit on osx
mainWindow.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent event) {
if (!isAlreadyDead) {
isDisposeFromListener = true;
if (mainWindow != null) {
mainWindow.removeDisposeListener(this);
dispose(false,false);
}
isAlreadyDead = true;
}
}
});
mainWindow.layout();
mainWindow.addShellListener(new ShellAdapter() {
public void
shellClosed(ShellEvent event)
{
if ( systemTraySWT != null &&
COConfigurationManager.getBooleanParameter("Enable System Tray") &&
COConfigurationManager.getBooleanParameter("Close To Tray", true)){
minimizeToTray(event);
}
else {
event.doit = dispose(false,false);
}
}
public void
shellIconified(ShellEvent event)
{
if ( systemTraySWT != null &&
COConfigurationManager.getBooleanParameter("Enable System Tray") &&
COConfigurationManager.getBooleanParameter("Minimize To Tray", false)) {
minimizeToTray(event);
}
}
});
mainWindow.addListener(SWT.Deiconify, new Listener() {
public void handleEvent(Event e) {
if (Constants.isOSX && COConfigurationManager.getBooleanParameter("Password enabled", false)) {
e.doit = false;
mainWindow.setVisible(false);
PasswordWindow.showPasswordWindow(display);
}
}
});
}catch( Throwable e ){
System.out.println("Initialize Error");
Debug.printStackTrace( e );
}
}
private void
openMainWindow()
{
// attach the UI to plugins
uiSWTInstanceImpl = new UISWTInstanceImpl( azureus_core );
// share progress window
new ProgressWindow();
addUpdateListener();
if ( azureus_core.getTrackerHost().getTorrents().length > 0 ){
showMyTracker();
}
showMyTorrents();
if (COConfigurationManager.getBooleanParameter("Open Console", false)) {
showConsole();
}
events = null;
if (COConfigurationManager.getBooleanParameter("Open Config", false)) {
showConfig();
}
if (COConfigurationManager.getBooleanParameter("Open Stats On Start", false)) {
showStats();
}
mainWindow.open();
if(!Constants.isOSX) {mainWindow.forceActive();}
updater = new GUIUpdater(azureus_core,this);
updater.start();
if ( COConfigurationManager.getBooleanParameter("Enable System Tray")){
try {
systemTraySWT = new SystemTraySWT(this);
} catch (Throwable e) {
Logger.log(new LogEvent(LOGID, LogEvent.LT_ERROR,
"Upgrade to SWT3.0M8 or later for system tray support."));
}
if (COConfigurationManager.getBooleanParameter("Start Minimized", false)) {
minimizeToTray(null);
}
//Only show the password if not started minimized
//Correct bug #878227
else {
if (COConfigurationManager.getBooleanParameter("Password enabled", false)) {
minimizeToTray(null);
PasswordWindow.showPasswordWindow(display);
}
}
}
azureus_core.getPluginManager().firePluginEvent( PluginEvent.PEV_CONFIGURATION_WIZARD_STARTS );
if (!COConfigurationManager.getBooleanParameter("Wizard Completed", false)) {
ConfigureWizard wizard = new ConfigureWizard(getAzureusCore(),display);
wizard.addListener(
new WizardListener()
{
public void
closed()
{
azureus_core.getPluginManager().firePluginEvent( PluginEvent.PEV_CONFIGURATION_WIZARD_COMPLETES );
}
});
}else{
azureus_core.getPluginManager().firePluginEvent( PluginEvent.PEV_CONFIGURATION_WIZARD_COMPLETES );
}
if (COConfigurationManager.getBooleanParameter("Show Download Basket", false)) { //$NON-NLS-1$
if(tray == null)
tray = new TrayWindow(this);
tray.setVisible(true);
}
COConfigurationManager.addParameterListener("Show Download Basket", this);
COConfigurationManager.addParameterListener("GUI_SWT_bFancyTab", this);
checkForWhatsNewWindow();
// globalManager.startChecker();
// check file associations
DonationWindow2.checkForDonationPopup();
}
public void showMyTracker() {
if (my_tracker_tab == null) {
my_tracker_tab = new Tab(new MyTrackerView(azureus_core));
} else {
my_tracker_tab.setFocus();
refreshIconBar();
}
}
public void
showMyShares()
{
if (my_shares_tab == null) {
my_shares_tab = new Tab(new MySharesView(azureus_core));
} else {
my_shares_tab.setFocus();
refreshIconBar();
}
}
public void showMyTorrents() {
if (mytorrents == null) {
mytorrents = new Tab(new MyTorrentsSuperView(azureus_core));
} else
mytorrents.setFocus();
refreshIconBar();
}
private void minimizeToTray(ShellEvent event) {
//Added this test so that we can call this method with null parameter.
if (event != null)
event.doit = false;
if(Constants.isOSX) {
mainWindow.setMinimized(true);
} else {
mainWindow.setVisible(false);
}
if (tray != null)
tray.setVisible(true);
try{
downloadBars_mon.enter();
Iterator iter = downloadBars.values().iterator();
while (iter.hasNext()) {
MinimizedWindow mw = (MinimizedWindow) iter.next();
mw.setVisible(true);
}
}finally{
downloadBars_mon.exit();
}
}
public void setStatusText(String keyedSentence) {
this.statusTextKey = keyedSentence==null?"":keyedSentence;
statusImageKey = null;
if(statusTextKey.length() == 0) { // reset
if( Constants.isCVSVersion() ) {
statusTextKey = "MainWindow.status.unofficialversion (" +Constants.AZUREUS_VERSION+ ")";
statusImageKey = STATUS_ICON_WARN;
}
else if( !Constants.isOSX ) { //don't show official version numbers for OSX L&F
statusTextKey = Constants.AZUREUS_NAME+ " " +Constants.AZUREUS_VERSION;
}
}
updateStatusText();
}
private void updateStatusText() {
if (display == null || display.isDisposed())
return;
final String text;
if(updateWindow != null) {
text = "MainWindow.updateavail";
} else {
text = this.statusTextKey;
}
Utils.execSWTThread(new AERunnable(){
public void runSupport() {
if (statusText != null && !statusText.isDisposed()) {
statusText.setText(MessageText.getStringForSentence(text));
statusText.setImage((statusImageKey == null) ? null : ImageRepository.getImage(statusImageKey));
}
}
});
}
private void
updateComponents()
{
if (statusText != null)
statusText.update();
if (folder != null) {
if(useCustomTab) {
((CTabFolder)folder).update();
} else {
((TabFolder)folder).update();
}
}
}
public void closeDownloadBars() {
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
if (display == null || display.isDisposed())
return;
try{
downloadBars_mon.enter();
Iterator iter = downloadBars.keySet().iterator();
while (iter.hasNext()) {
DownloadManager dm = (DownloadManager) iter.next();
MinimizedWindow mw = (MinimizedWindow) downloadBars.get(dm);
mw.close();
iter.remove();
}
}finally{
downloadBars_mon.exit();
}
}
});
}
private void createDropTarget(final Control control) {
DropTarget dropTarget = new DropTarget(control, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
dropTarget.setTransfer(new Transfer[] {URLTransfer.getInstance(), FileTransfer.getInstance()});
dropTarget.addDropListener(new DropTargetAdapter() {
public void dragOver(DropTargetEvent event) {
if(URLTransfer.getInstance().isSupportedType(event.currentDataType)) {
event.detail = DND.DROP_LINK;
}
}
public void drop(DropTargetEvent event) {
TorrentOpener.openDroppedTorrents(azureus_core,event);
}
});
}
public void
destroyRequest()
{
Logger.log(new LogEvent(LOGID, "MainWindow::destroyRequest"));
if ( COConfigurationManager.getBooleanParameter("Password enabled", false )){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -