⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwindow.java

📁 这是一个基于java编写的torrent的P2P源码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:

		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 + -