📄 mainwindow.java
字号:
System.out.println("skin widgets init took "
+ (SystemTime.getCurrentTime() - startTime) + "ms");
startTime = SystemTime.getCurrentTime();
final long lfStartTime = startTime;
GlobalManager globalManager = core.getGlobalManager();
if (globalManager != null) {
globalManager.loadExistingTorrentsNow(new GlobalMangerProgressListener() {
public void reportPercent(int percent) {
if (percent >= 100) {
System.out.println("load torrents (async) took "
+ (SystemTime.getCurrentTime() - lfStartTime) + "ms");
}
}
public void reportCurrentTask(String currentTask) {
}
}, true);
}
showMainWindow();
System.out.println("shell.open took "
+ (SystemTime.getCurrentTime() - startTime) + "ms");
startTime = SystemTime.getCurrentTime();
}
public boolean dispose(boolean bForRestart, boolean bCloseAlreadyInProgress) {
if (disposedOrDisposing) {
return true;
}
disposedOrDisposing = true;
if (oldMainWindow != null) {
boolean res = oldMainWindow.dispose(bForRestart, bCloseAlreadyInProgress);
oldMainWindow = null;
if (res == false) {
return false;
}
} else {
if (!UIExitUtilsSWT.canClose(core.getGlobalManager(), bForRestart)) {
return false;
}
UIExitUtilsSWT.uiShutdown();
}
if (systemTraySWT != null) {
systemTraySWT.dispose();
}
if (!SWTThread.getInstance().isTerminated()) {
SWTThread.getInstance().getInitializer().stopIt(bForRestart, false);
}
mapTrackUsage_mon.enter();
try {
if (mapTrackUsage != null) {
SWTSkinTabSet tabSetMain = skin.getTabSet("maintabs");
if (tabSetMain != null) {
updateMapTrackUsage(tabSetMain.getActiveTab().getSkinObjectID());
}
FileUtil.writeResilientFile(new File(SystemProperties.getUserPath(),
"timingstats.dat"), mapTrackUsage);
}
} finally {
mapTrackUsage_mon.exit();
}
return true;
}
/**
*
*/
private void setupUsageTracker() {
mapTrackUsage_mon.enter();
try {
if (COConfigurationManager.getBooleanParameter("Send Version Info")) {
mapTrackUsage = new HashMap();
File f = new File(SystemProperties.getUserPath(), "timingstats.dat");
if (f.exists()) {
final Map oldMapTrackUsage = FileUtil.readResilientFile(f);
PlatformConfigMessenger.sendUsageStats(oldMapTrackUsage,
f.lastModified(), new PlatformMessengerListener() {
public void messageSent(PlatformMessage message) {
}
public void replyReceived(PlatformMessage message,
String replyType, Object jsonReply) {
if (mapTrackUsage == null) {
return;
}
mapTrackUsage_mon.enter();
try {
if (replyType.equals(PlatformMessenger.REPLY_EXCEPTION)) {
for (Iterator iterator = oldMapTrackUsage.keySet().iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
Long value = (Long) oldMapTrackUsage.get(key);
Long oldValue = (Long) mapTrackUsage.get(key);
if (oldValue != null) {
value = new Long(value.longValue()
+ oldValue.longValue());
}
mapTrackUsage.put(key, value);
}
}
} finally {
mapTrackUsage_mon.exit();
}
}
});
}
SimpleTimer.addPeriodicEvent("UsageTracker", 1000,
new TimerEventPerformer() {
long lLastMouseMove = 0;
Point ptLastMousePos = new Point(0, 0);
public void perform(TimerEvent event) {
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
if (shell == null || shell.isDisposed()) {
return;
}
Point pt = shell.getDisplay().getCursorLocation();
if (pt.equals(ptLastMousePos)) {
return;
}
ptLastMousePos = pt;
long now = SystemTime.getCurrentTime();
long diff = now - lLastMouseMove;
if (diff < 10000) {
lCurrentTrackTime += diff;
}
lLastMouseMove = now;
}
});
}
});
} else {
mapTrackUsage = null;
}
} finally {
mapTrackUsage_mon.exit();
}
}
private void showMainWindow() {
boolean isOSX = org.gudy.azureus2.core3.util.Constants.isOSX;
// No tray access on OSX yet
boolean bEnableTray = COConfigurationManager.getBooleanParameter("Enable System Tray")
&& (!isOSX || SWT.getVersion() > 3300);
boolean bPassworded = COConfigurationManager.getBooleanParameter(
"Password enabled", false);
boolean bStartMinimize = bEnableTray
&& (bPassworded || COConfigurationManager.getBooleanParameter(
"Start Minimized", false));
if (!bStartMinimize) {
shell.layout();
shell.open();
if (!isOSX) {
shell.forceActive();
}
} else if (isOSX) {
shell.setMinimized(true);
shell.setVisible(true);
}
shell.layout(true, true);
if (bEnableTray) {
try {
systemTraySWT = new SystemTraySWT();
} catch (Throwable e) {
Logger.log(new LogEvent(LOGID, LogEvent.LT_ERROR,
"Upgrade to SWT3.0M8 or later for system tray support."));
}
if (bStartMinimize) {
minimizeToTray(null);
}
//Only show the password if not started minimized
//Correct bug #878227
else {
if (bPassworded) {
minimizeToTray(null);
setVisible(true); // invokes password
}
}
}
// check file associations
AssociationChecker.checkAssociations();
core.triggerLifeCycleComponentCreated(uiFunctions);
core.getPluginManager().firePluginEvent(
PluginEvent.PEV_INITIALISATION_UI_COMPLETES);
boolean hasInComplete = false;
Object[] dms = core.getGlobalManager().getDownloadManagers().toArray();
for (int i = 0; i < dms.length; i++) {
DownloadManager dm = (DownloadManager) dms[i];
if (!dm.getAssumedComplete()) {
hasInComplete = true;
break;
}
}
String startTab = hasInComplete ? "maintabs.home" : "maintabs.browse";
SWTSkinTabSet tabSet = skin.getTabSet("maintabs");
if (tabSet != null) {
COConfigurationManager.setBooleanDefault("v3.Start Advanced", false);
if (COConfigurationManager.getBooleanParameter("v3.Start Advanced")) {
startTab = "maintabs.advanced";
}
tabSet.setActiveTab(startTab);
}
}
public void setVisible(final boolean visible) {
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
if (visible && !shell.getVisible()) {
if (COConfigurationManager.getBooleanParameter("Password enabled",
false)) {
if (!PasswordWindow.showPasswordWindow(display)) {
shell.setVisible(false);
return;
}
}
}
shell.setVisible(visible);
if (visible) {
shell.forceActive();
shell.setMinimized(false);
}
}
});
}
private void minimizeToTray(ShellEvent event) {
boolean isOSX = org.gudy.azureus2.core3.util.Constants.isOSX;
//Added this test so that we can call this method with null parameter.
if (event != null)
event.doit = false;
if (isOSX) {
shell.setMinimized(true);
} else {
shell.setVisible(false);
}
MinimizedWindow.setAllVisible(true);
}
/**
* Associates every view ID that we use to a class, and creates the class
* on first EVENT_SHOW.
*/
private void initSkinListeners() {
final Map views = new HashMap();
// List of all views ids we use
views.put("minibrowse", MiniBrowse.class);
views.put("minidownload-list", MiniDownloadList.class);
views.put("minirecent-list", MiniRecentList.class);
views.put("browse", Browse.class);
views.put("manage-dl-list", ManageDlList.class);
views.put("manage-cd-list", ManageCdList.class);
views.put("my-media-list", MediaList.class);
views.put("publish", Publish.class);
SWTSkinObjectListener l = new SWTSkinObjectListener() {
public Object eventOccured(SWTSkinObject skinObject, int eventType,
Object params) {
if (eventType == EVENT_SHOW) {
Object key = skinObject.getViewID();
Class cla = (Class) views.get(key);
if (cla != null) {
try {
SkinView skinView = (SkinView) cla.newInstance();
SkinViewManager.add(skinView);
skinObject.addListener(skinView);
skinView.eventOccured(skinObject, eventType, params);
views.remove(key);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
};
for (Iterator iterator = views.keySet().iterator(); iterator.hasNext();) {
String viewID = (String) iterator.next();
skin.addListener(viewID, l);
}
}
/**
*
*/
private void initWidgets() {
SWTSkinObject skinObject;
skinObject = skin.getSkinObject("recommend-list");
if (skinObject != null) {
Composite cData = (Composite) skinObject.getControl();
Composite cHeaders = null;
skinObject = skin.getSkinObject("recommend-list-headers");
if (skinObject != null) {
cHeaders = (Composite) skinObject.getControl();
}
new RecommendationsView(skin.getSkinProperties(), cHeaders, cData);
}
skinObject = skin.getSkinObject("statusbar");
if (skinObject != null) {
final Composite cArea = (Composite) skinObject.getControl();
final MainStatusBar statusBar = new MainStatusBar();
Composite composite = statusBar.initStatusBar(core,
core.getGlobalManager(), display, cArea);
composite.setLayoutData(Utils.getFilledFormData());
UIUpdater uiUpdater = UIUpdaterFactory.getInstance();
// XXX Could just make MainStatusBar implement UIUpdatable
uiUpdater.addUpdater(new UIUpdatable() {
public String getUpdateUIName() {
return "StatusBar";
}
public void updateUI() {
statusBar.refreshStatusBar();
}
});
}
skinObject = skin.getSkinObject("search-text");
if (skinObject != null) {
attachSearchBox(skinObject);
}
shell.layout(true, true);
SWTSkinTabSet tabSet = skin.getTabSet("maintabs");
if (tabSet != null) {
tabSet.addListener(this);
}
}
/**
* @param skinObject
*/
private void attachSearchBox(SWTSkinObject skinObject) {
Composite cArea = (Composite) skinObject.getControl();
final Text text = new Text(cArea, SWT.NONE);
text.setLayoutData(Utils.getFilledFormData());
final String sDefault = MessageText.getString("MainWindow.v3.search.defaultText");
text.setText(sDefault);
text.setForeground(ColorCache.getColor(text.getDisplay(), 127, 127, 127));
text.setBackground(ColorCache.getColor(text.getDisplay(), 255, 255, 255));
text.selectAll();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -