📄 mainmenu.java
字号:
item.dispose();
mainWindow.closePluginView( view );
}else{
others = true;
}
}
menu_plugin.setEnabled(others);
}
});
}
/**
* Appends the list of opened interactive windows to the bottom of the specified parent menu
* @param windowMenu The parent menu
*/
private void appendWindowMenuItems(final Menu windowMenu)
{
final int numTopItems = windowMenu.getItemCount();
Listener rebuild = new Listener() {
public void handleEvent(Event event) {
try {
if(windowMenu.isDisposed() || attachedShell.isDisposed())
return;
final int size = ShellManager.sharedManager().getSize();
if(size == windowMenu.getItemCount() - numTopItems)
{
for(int i = numTopItems; i < windowMenu.getItemCount(); i++)
{
final MenuItem item = windowMenu.getItem(i);
item.setSelection(item.getData() == attachedShell);
}
return;
}
for(int i = numTopItems; i < windowMenu.getItemCount();)
windowMenu.getItem(i).dispose();
Iterator iter = ShellManager.sharedManager().getWindows();
for(int i = 0; i < size; i++)
{
final Shell sh = (Shell)iter.next();
if(sh.isDisposed() || sh.getText().length() == 0)
continue;
final MenuItem item = new MenuItem(windowMenu, SWT.CHECK);
item.setText(sh.getText());
item.setSelection(attachedShell == sh);
item.setData(sh);
item.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent event)
{
if(event.widget.isDisposed() || sh.isDisposed())
return;
if(sh.getMinimized())
sh.setMinimized(false);
sh.open();
}
});
}
} catch (Exception e) {
Logger.log(new LogEvent(LogIDs.GUI, "rebuild menu error", e));
}
}
};
ShellManager.sharedManager().addWindowAddedListener(rebuild);
ShellManager.sharedManager().addWindowRemovedListener(rebuild);
attachedShell.addListener(SWT.FocusIn, rebuild);
windowMenu.addListener(SWT.Show, rebuild);
}
// individual menu items
private static final MenuItem addMenuItem(Menu menu, String localizationKey, Listener selListener) {
MenuItem item = new MenuItem(menu, SWT.NULL);
Messages.setLanguageText(item, localizationKey);
KeyBindings.setAccelerator(item, localizationKey);
item.addListener(SWT.Selection, selListener);
return item;
}
private static final void indent(MenuItem item) {
item.setData("IndentItem", "YES");
item.setText(" " + item.getText());
}
private static final MenuItem addMenuItemLabel(Menu menu, String localizationKey) {
MenuItem item = new MenuItem(menu, SWT.NULL);
Messages.setLanguageText(item, localizationKey);
item.setEnabled(false);
return item;
}
private MenuItem addMyTorrentsMenuItem(Menu menu) {
return addMenuItem(menu, "MainWindow.menu.view.mytorrents", new Listener() {
public void handleEvent(Event e) {
mainWindow.showMyTorrents();
}
});
}
private MenuItem addMyTrackerMenuItem(Menu menu)
{
return addMenuItem(menu, "MainWindow.menu.view.mytracker", new Listener() {
public void handleEvent(Event e) {
mainWindow.showMyTracker();
}
});
}
private MenuItem addMySharesMenuItem(Menu menu)
{
return addMenuItem(menu, "MainWindow.menu.view.myshares", new Listener() {
public void handleEvent(Event e) {
mainWindow.showMyShares();
}
});
}
private MenuItem addConsoleMenuItem(Menu menu) {
return addMenuItem(menu, "MainWindow.menu.view.console", new Listener() {
public void handleEvent(Event e) {
mainWindow.showConsole();
}
});
}
private MenuItem addStatisticsMenuItem(Menu menu) {
return addMenuItem(menu, "MainWindow.menu.view.stats", new Listener() {
public void handleEvent(Event e) {
mainWindow.showStats();
}
});
}
private MenuItem addConfigWizardMenuItem(Menu menu) {
return addMenuItem(menu, "MainWindow.menu.file.configure", new Listener() {
public void handleEvent(Event e) {
new ConfigureWizard(mainWindow.getAzureusCore(), display);
}
});
}
private MenuItem addCloseDetailsMenuItem(Menu menu) {
final MenuItem item = addMenuItem(menu, "MainWindow.menu.closealldetails", new Listener() {
public void handleEvent(Event e) {
Tab.closeAllDetails();
}
});
Listener enableHandler = new Listener() {
public void handleEvent(Event event) {
if(!item.isDisposed() && !event.widget.isDisposed())
item.setEnabled(mainWindow.getShell() == attachedShell && Tab.hasDetails());
}
};
menu.addListener(SWT.Show, enableHandler);
attachedShell.addListener(SWT.FocusIn, enableHandler);
Tab.addTabAddedListener(enableHandler);
Tab.addTabRemovedListener(enableHandler);
return item;
}
private MenuItem addCloseWindowMenuItem(Menu menu) {
final boolean isMainWindow = (mainWindow.getShell() == attachedShell);
MenuItem item = addMenuItem(menu, "MainWindow.menu.file.closewindow", new Listener() {
public void handleEvent(Event event) {
if(isMainWindow)
{
if(MainWindow.isAlreadyDead) {return;}
mainWindow.close();
}
else if(attachedShell != null && !attachedShell.isDisposed())
{
attachedShell.close();
}
}
});
if(!isMainWindow)
{
String oldText = item.getText();
KeyBindings.setAccelerator(item, "MainWindow.menu.file.closetab");
item.setText(oldText);
}
return item;
}
private MenuItem addCloseTabMenuItem(Menu menu) {
return addMenuItem(menu, "MainWindow.menu.file.closetab", new Listener() {
public void handleEvent(Event event) {
if(MainWindow.isAlreadyDead) {return;}
mainWindow.closeViewOrWindow();
}
});
}
private MenuItem addMinimizeWindowMenuItem(Menu menu) {
final Predicable pred = new AllPredicate(new Predicable[]{new ShellCanMinimizePredicate(), new NotPredicate(new ShellIsMinimizedPredicate())});
final MenuItem item = addMenuItem(menu, "MainWindow.menu.window.minimize", new Listener() {
public void handleEvent(Event event) {
if(attachedShell.isDisposed()) {event.doit = false; return;}
attachedShell.setMinimized(true);
}
});
Listener enableHandler = getEnableHandler(item, pred, attachedShell);
menu.addListener(SWT.Show, enableHandler);
attachedShell.addListener(SWT.FocusIn, enableHandler);
attachedShell.addListener(SWT.Iconify, enableHandler);
attachedShell.addListener(SWT.Deiconify, enableHandler);
return item;
}
private MenuItem addZoomWindowMenuItem(Menu menu) {
final Predicable pred = new AllPredicate(new Predicable[]{new ShellCanMaximizePredicate(), new NotPredicate(new ShellIsMinimizedPredicate())});
final MenuItem item = addMenuItem(menu, "MainWindow.menu.window.zoom", new Listener() {
public void handleEvent(Event event) {
if(attachedShell.isDisposed()) {event.doit = false; return;}
attachedShell.setMaximized(!attachedShell.getMaximized());
}
});
Listener enableHandler = getEnableHandler(item, pred, attachedShell);
menu.addListener(SWT.Show, enableHandler);
attachedShell.addListener(SWT.FocusIn, enableHandler);
attachedShell.addListener(SWT.Iconify, enableHandler);
attachedShell.addListener(SWT.Deiconify, enableHandler);
return item;
}
private MenuItem addBringAllToFrontMenuItem(Menu menu) {
final Predicable pred = new NotPredicate(new AllManagedShellsAreMinimizedPredicate());
final MenuItem item = addMenuItem(menu, "MainWindow.menu.window.alltofront", new Listener() {
public void handleEvent(Event event) {
Iterator iter = ShellManager.sharedManager().getWindows();
while (iter.hasNext())
{
Shell shell = (Shell) iter.next();
if(!shell.isDisposed() && !shell.getMinimized())
shell.open();
}
}
});
Listener enableHandler = getEnableHandler(item, pred, ShellManager.sharedManager());
menu.addListener(SWT.Show, enableHandler);
attachedShell.addListener(SWT.FocusIn, enableHandler);
setHandlerForShellManager(item, ShellManager.sharedManager(), enableHandler);
return item;
}
private MenuItem addBlockedIPsMenuItem(Menu menu) {
return addMenuItem(menu, "ConfigView.section.ipfilter.list.title", new Listener() {
public void handleEvent(Event event) {
if(MainWindow.isAlreadyDead) {return;}
BlockedIpsWindow.showBlockedIps(mainWindow.getAzureusCore(), mainWindow.getShell());
}
});
}
public MenuItem addCloseDownloadBarsToMenu(Menu menu) {
final MenuItem item = addMenuItem(menu, "MainWindow.menu.closealldownloadbars", new Listener() {
public void handleEvent(Event e) {
mainWindow.closeDownloadBars();
}
});
final NotPredicate pred = new NotPredicate(new ShellManagerIsEmptyPredicate());
final Listener enableHandler = getEnableHandler(item, pred, MinimizedWindow.getShellManager());
menu.addListener(SWT.Show, enableHandler);
attachedShell.addListener(SWT.FocusIn, enableHandler);
setHandlerForShellManager(item, MinimizedWindow.getShellManager(), enableHandler);
return item;
}
// utility methods
public void updateMenuText(Object menu) {
if (menu == null)
return;
if (menu instanceof Menu) {
MenuItem[] menus = ((Menu) menu).getItems();
for (int i = 0; i < menus.length; i++) {
updateMenuText(menus[i]);
}
}
else if (menu instanceof MenuItem) {
MenuItem item = (MenuItem) menu;
if (item.getData() != null) {
if (item.getData() instanceof String) {
item.setText(MessageText.getString((String) item.getData()));
updateMenuText(item.getMenu());
}
}
}
}
public void refreshLanguage() {
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
if (display == null || display.isDisposed())
return;
updateMenuText(menuBar);
mainWindow.setSelectedLanguageItem();
}
});
}
private static void setHandlerForShellManager(MenuItem item, final ShellManager mgr, final Listener evtHandler)
{
mgr.addWindowAddedListener(evtHandler);
mgr.addWindowRemovedListener(evtHandler);
item.addDisposeListener(new DisposeListener()
{
public void widgetDisposed(DisposeEvent event) {
mgr.removeWindowAddedListener(evtHandler);
mgr.removeWindowRemovedListener(evtHandler);
}
});
}
private static Listener getEnableHandler(final MenuItem item, final Predicable pred, final Object evalObj)
{
Listener enableHandler = new Listener() {
public void handleEvent(Event event) {
if(!item.isDisposed() && !event.widget.isDisposed())
item.setEnabled(pred.evaluate(evalObj));
}
};
return enableHandler;
}
private void performOneTimeDisable(MenuItem item, boolean affectsChildMenuItems)
{
item.setEnabled(false);
if(affectsChildMenuItems)
{
Menu childMenu = item.getMenu();
if(childMenu == null)
return;
for(int i = 0; i < childMenu.getItemCount(); i++)
{
childMenu.getItem(i).setEnabled(false);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -