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

📄 xpluginsmenu.java

📁 XBrowser是一个完全免费并且开源的Web浏览器
💻 JAVA
字号:
/****************************************************************
*              XBrowser  -  eXtended web Browser                *
*                                                               *
*           Copyright (c) 2000-2001  Armond Avanes              *
*     Refer to ReadMe & License files for more information      *
*                                                               *
*                                                               *
*                      By: Armond Avanes                        *
*       Armond555@yahoo.com     &    Armond333@yahoo.com        *
*                http://xbrowser.sourceforge.net/               *
*****************************************************************/
package xbrowser.widgets;

import javax.swing.*;

import java.net.*;
import java.util.*;
import java.beans.*;
import java.awt.event.*;

import xbrowser.*;
import xbrowser.util.*;
import xbrowser.screen.*;
import xbrowser.plugin.*;
import xbrowser.plugin.event.*;

public class XPluginsMenu extends JMenu implements XPluginListener
{
	public XPluginsMenu()
	{
		setText( XRepository.getResourceManager().getProperty(this, "Title") );
		setMnemonic( XRepository.getResourceManager().getProperty(this, "Mnemonic").charAt(0) );

		XRepository.getPluginManager().addPluginListener(this);
	}

	public void pluginAdded(XPluginObject plugin)
	{
		if( plugin.getStatus()==XProjectConstants.PLUGIN_NOT_LOADED ||
		    plugin.getStatus()==XProjectConstants.PLUGIN_INVALID )
		    return;

	XPluginMenu menu = new XPluginMenu(plugin);

		add(menu);
		plugin_Menu.put(plugin, menu);
	}

	public void pluginRemoved(XPluginObject plugin)
	{
	XPluginMenu menu = (XPluginMenu)plugin_Menu.remove(plugin);

		if( menu!=null )
		{
			remove(menu);
			menu.setPlugin(null);
		}
	}

	private class XPluginMenu extends JMenu implements PropertyChangeListener
	{
		public XPluginMenu(XPluginObject plugin)
		{
			uninstallPluginAction = new UninstallPluginAction();
			startPluginAction = new StartPluginAction();
			stopPluginAction = new StopPluginAction();
			pluginInfoAction = new PluginInfoAction();
			displayPluginDocumentationAction = new DisplayPluginDocumentationAction();

		    add( XRepository.getComponentBuilder().buildMenuItem(startPluginAction) );
		    add( XRepository.getComponentBuilder().buildMenuItem(stopPluginAction) );
		    addSeparator();
		    add( XRepository.getComponentBuilder().buildMenuItem(pluginInfoAction) );
		    add( XRepository.getComponentBuilder().buildMenuItem(displayPluginDocumentationAction) );
		    addSeparator();
		    add( XRepository.getComponentBuilder().buildMenuItem(uninstallPluginAction) );

			setPlugin(plugin);
		}

		public void setPlugin(XPluginObject new_plugin)
		{
			if( plugin!=null )
				plugin.removePropertyChangeListener(this);

			plugin = new_plugin;

			if( plugin!=null )
			{
				plugin.addPropertyChangeListener(this);
				updateStatus();
			}
		}

		public void propertyChange(PropertyChangeEvent evt)
		{
			if( evt.getPropertyName().equals("Status") )
				updateStatus();
		}

		private void updateStatus()
		{
			if( plugin!=null )
			{
				startPluginAction.setEnabled( plugin.getStatus()==XProjectConstants.PLUGIN_INITIATED || plugin.getStatus()==XProjectConstants.PLUGIN_STOPPED );
				stopPluginAction.setEnabled( plugin.getStatus()==XProjectConstants.PLUGIN_STARTED );
				pluginInfoAction.setEnabled( plugin.getStatus()!=XProjectConstants.PLUGIN_INVALID && plugin.getStatus()!=XProjectConstants.PLUGIN_NOT_LOADED );
				displayPluginDocumentationAction.setEnabled( plugin.getStatus()!=XProjectConstants.PLUGIN_INVALID && plugin.getStatus()!=XProjectConstants.PLUGIN_NOT_LOADED && plugin.getDocumentationURL()!=null );
			}
		}

		public String getText()
		{
			if( plugin!=null )
				return plugin.getTitle();
			else
				return "";
		}

		public Icon getIcon()
		{
			if( plugin!=null )
				return plugin.getIcon();
			else
				return null;
		}

		private class UninstallPluginAction extends XDefaultAction
		{
			public UninstallPluginAction()
			{
				super(XPluginsMenu.this, "UninstallPlugin", null);
			}

			public void actionPerformed(ActionEvent e)
			{
				if( plugin!=null )
					XRepository.getPluginManager().removePlugin(plugin);
			}
		}

		private class StartPluginAction extends XDefaultAction
		{
			public StartPluginAction()
			{
				super(XPluginsMenu.this, "StartPlugin", null);
			}

			public void actionPerformed(ActionEvent e)
			{
				if( plugin!=null )
					plugin.start();
			}
		}

		private class StopPluginAction extends XDefaultAction
		{
			public StopPluginAction()
			{
				super(XPluginsMenu.this, "StopPlugin", null);
			}

			public void actionPerformed(ActionEvent e)
			{
				if( plugin!=null )
					plugin.stop();
			}
		}

		private class PluginInfoAction extends XDefaultAction
		{
			public PluginInfoAction()
			{
				super(XPluginsMenu.this, "PluginInfo", null);
			}

			public void actionPerformed(ActionEvent e)
			{
				if( plugin!=null )
					XRepository.getScreenManager().getPluginPropertiesLayout(plugin).setVisible(true);
			}
		}

		private class DisplayPluginDocumentationAction extends XDefaultAction
		{
			public DisplayPluginDocumentationAction()
			{
				super(XPluginsMenu.this, "DisplayPluginDoc", null);
			}

			public void actionPerformed(ActionEvent e)
			{
				if( plugin!=null )
				{
				URL doc_url = plugin.getDocumentationURL();

					if( doc_url!=null )
						XBrowser.getBrowser().showInNewDocument( doc_url.toString() );
				}
			}
		}

	// Attribute:
		private XPluginObject plugin = null;

		private UninstallPluginAction uninstallPluginAction = null;
		private StartPluginAction startPluginAction = null;
		private StopPluginAction stopPluginAction = null;
		private PluginInfoAction pluginInfoAction = null;
		private DisplayPluginDocumentationAction displayPluginDocumentationAction = null;
	}

// Attributes:
	private Map plugin_Menu = new HashMap();
}

⌨️ 快捷键说明

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