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

📄 menubuildutils.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   MenuBuildUtils.java

package org.gudy.azureus2.ui.swt;

import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.MenuListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Widget;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.Constants;
import org.gudy.azureus2.pluginsimpl.local.ui.menus.MenuItemImpl;
import org.gudy.azureus2.ui.swt.plugins.UISWTGraphic;

// Referenced classes of package org.gudy.azureus2.ui.swt:
//			Utils

public class MenuBuildUtils
{
	public static interface MenuBuilder
	{

		public abstract void buildMenu(Menu menu);
	}

	public static class MenuItemPluginMenuControllerImpl
		implements PluginMenuController
	{

		private Object objects[];

		public Listener makeSelectionListener(org.gudy.azureus2.plugins.ui.menus.MenuItem menu_item)
		{
			final MenuItemImpl mii = (MenuItemImpl)menu_item;
			return new Listener() {

				final MenuItemImpl val$mii;
				final MenuItemPluginMenuControllerImpl this$0;

				public void handleEvent(Event e)
				{
					mii.invokeListenersMulti(objects);
				}

				
				{
					this$0 = MenuItemPluginMenuControllerImpl.this;
					mii = menuitemimpl;
					super();
				}
			};
		}

		public void notifyFillListeners(org.gudy.azureus2.plugins.ui.menus.MenuItem menu_item)
		{
			((MenuItemImpl)menu_item).invokeMenuWillBeShownListeners(((Object) (objects)));
		}


		public MenuItemPluginMenuControllerImpl(Object o[])
		{
			objects = o;
		}
	}

	public static interface PluginMenuController
	{

		public abstract Listener makeSelectionListener(org.gudy.azureus2.plugins.ui.menus.MenuItem menuitem);

		public abstract void notifyFillListeners(org.gudy.azureus2.plugins.ui.menus.MenuItem menuitem);
	}


	public static final PluginMenuController BASIC_MENU_ITEM_CONTROLLER = new MenuItemPluginMenuControllerImpl(null);

	public MenuBuildUtils()
	{
	}

	public static void addMaintenanceListenerForMenu(Menu menu, MenuBuilder builder)
	{
		menu.addMenuListener(new MenuListener(menu, builder) {

			boolean bShown;
			final Menu val$menu;
			final MenuBuilder val$builder;

			public void menuHidden(MenuEvent e)
			{
				bShown = false;
				if (Constants.isOSX)
				{
					return;
				} else
				{
					e.widget.getDisplay().asyncExec(new AERunnable() {

						final 1 this$0;

						public void runSupport()
						{
							if (bShown || menu.isDisposed())
								return;
							MenuItem items[] = menu.getItems();
							for (int i = 0; i < items.length; i++)
								items[i].dispose();

						}

					
					{
						this$0 = 1.this;
						super();
					}
					});
					return;
				}
			}

			public void menuShown(MenuEvent e)
			{
				MenuItem items[] = menu.getItems();
				for (int i = 0; i < items.length; i++)
					items[i].dispose();

				bShown = true;
				builder.buildMenu(menu);
			}

			
			{
				menu = menu1;
				builder = menubuilder;
				super();
				bShown = false;
			}
		});
	}

	public static void addPluginMenuItems(Composite composite, org.gudy.azureus2.plugins.ui.menus.MenuItem items[], Menu parent, boolean prev_was_separator, boolean enable_items, PluginMenuController controller)
	{
		for (int i = 0; i < items.length; i++)
		{
			MenuItemImpl az_menuitem = (MenuItemImpl)items[i];
			controller.notifyFillListeners(az_menuitem);
			if (!az_menuitem.isVisible())
				continue;
			int style = az_menuitem.getStyle();
			boolean this_is_separator = false;
			boolean is_container = false;
			int swt_style;
			if (style == 5)
			{
				swt_style = 64;
				is_container = true;
			} else
			if (style == 1)
				swt_style = 8;
			else
			if (style == 2)
				swt_style = 32;
			else
			if (style == 3)
				swt_style = 16;
			else
			if (style == 4)
			{
				this_is_separator = true;
				swt_style = 2;
			} else
			{
				swt_style = 8;
			}
			MenuItem menuItem = new MenuItem(parent, swt_style);
			if (swt_style == 2 || prev_was_separator && this_is_separator || this_is_separator && i == items.length - 1)
				continue;
			prev_was_separator = this_is_separator;
			if (enable_items && (style == 2 || style == 3))
			{
				Boolean selection_value = (Boolean)az_menuitem.getData();
				if (selection_value == null)
					throw new RuntimeException((new StringBuilder()).append("MenuItem with resource name \"").append(az_menuitem.getResourceKey()).append("\" needs to have a boolean value entered via setData before being used!").toString());
				menuItem.setSelection(selection_value.booleanValue());
			}
			Listener main_listener = controller.makeSelectionListener(az_menuitem);
			menuItem.addListener(13, new Listener(az_menuitem, menuItem, main_listener) {

				final MenuItemImpl val$az_menuitem;
				final MenuItem val$menuItem;
				final Listener val$main_listener;

				public void handleEvent(Event e)
				{
					if ((az_menuitem.getStyle() == 2 || az_menuitem.getStyle() == 3) && !menuItem.isDisposed())
						az_menuitem.setData(new Boolean(menuItem.getSelection()));
					main_listener.handleEvent(e);
				}

			
			{
				az_menuitem = menuitemimpl;
				menuItem = menuitem;
				main_listener = listener;
				super();
			}
			});
			if (is_container)
			{
				Menu this_menu = new Menu(composite.getShell(), 4);
				menuItem.setMenu(this_menu);
				addPluginMenuItems(composite, az_menuitem.getItems(), this_menu, false, enable_items, controller);
			}
			String custom_title = az_menuitem.getText();
			menuItem.setText(custom_title);
			org.gudy.azureus2.plugins.ui.Graphic g = az_menuitem.getGraphic();
			if (g instanceof UISWTGraphic)
				Utils.setMenuItemImage(menuItem, ((UISWTGraphic)g).getImage());
			menuItem.setEnabled(enable_items && az_menuitem.isEnabled());
		}

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -