📄 xpluginsmenu.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 + -