📄 defaultmyjxtaplugincontainer.java
字号:
/**
* Copyright (c) 2005 Frank Toennies
* Redistributions in source code form must reproduce the above copyright and this condition.
* The contents of this file are subject to the Sun Project JXTA License Version 1.1 (the "License");
* you may not use this file except in compliance with the License.
* A copy of the License is available at http://www.jxta.org/jxta_license.html.
* Please see the license information page for instructions on use of the license in source files.
*
* This software consists of voluntary contributions made by many individuals on behalf of Project JXTA.
* For more information on Project JXTA, please see http://www.jxta.org.
*
*/
package net.jxta.myjxta.plugin;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import net.jxta.myjxta.MyJXTA;
import net.jxta.myjxta.plugins.filetransfer.FileTransferPlugin;
import net.jxta.myjxta.util.Group;
public class DefaultMyJxtaPluginContainer implements PluginContainer, PluginContainer.IPopupGenerator {
private final MyJXTA m_myJxta;
private ArrayList<ISelectionProvider> m_selectionProviders = new ArrayList<ISelectionProvider>();
private ArrayList<IPopupProvider> m_popupProvider = new ArrayList<IPopupProvider>();
private Plugin[] m_plugins;
public MyJXTA getMyJxta() {
return m_myJxta;
}
public DefaultMyJxtaPluginContainer(MyJXTA p_myJxta) {
m_myJxta = p_myJxta;
PluginFetcher.PluginJar[] externalPluginsJars = PluginFetcher.getExternalPluginJars();
PluginFetcher.PluginJar[] internalPluginsJars = PluginFetcher.getInternalPlugins();
Plugin[] plugins = PluginFetcher.getValidPluginInstances(externalPluginsJars);
Plugin[] internalPlugins = PluginFetcher.getValidPluginInstances(internalPluginsJars);
m_plugins = new Plugin[plugins.length + internalPlugins.length];
for (int i = 0; i < m_plugins.length; i++) {
m_plugins[i] = (i < internalPlugins.length) ? internalPlugins[i] : plugins[i - internalPlugins.length];
}
}
public void triggerGlobalMyJxtaPopup(ISelectableNode[] p_selectedNodes, MouseEvent p_e, JComponent p_component) {
System.out.println("###triggerGlobalMyJxtaPopup:"+p_selectedNodes);
}
public void registerPopupProvider(IPopupProvider p_component) {
if (!m_popupProvider.contains(p_component)) {
m_popupProvider.add(p_component);
}
}
public void removePopupProvider(IPopupProvider p_component) {
if (m_popupProvider.contains(p_component)) {
m_popupProvider.remove(p_component);
}
}
public void removeSelectionProvider(ISelectionProvider p_component) {
if (p_component != null) {
m_selectionProviders.remove(p_component);
}
}
public void registerSelectionProvider(ISelectionProvider p_component) {
if (p_component != null && !m_selectionProviders.contains(p_component)) {
m_selectionProviders.add(p_component);
}
}
public void updateGroupState(Group p_group) {
for (int i = 0; i < m_plugins.length; i++) {
Plugin plugin = m_plugins[i];
try {
IPluginNotificationHandler pluginNotificationHander = plugin.getPluginNotificationHander();
if (pluginNotificationHander != null) {
pluginNotificationHander.groupStateChanged(p_group);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void notifyAboutGroupJoin(Group p_group) {
for (int i = 0; i < m_plugins.length; i++) {
Plugin plugin = m_plugins[i];
IPluginNotificationHandler pluginNotificationHander = plugin.getPluginNotificationHander();
if (pluginNotificationHander != null) {
pluginNotificationHander.groupJoined(p_group);
}
}
}
public void notifyAboutGroupResign(Group p_group) {
for (int i = m_plugins.length - 1; i >= 0; i--) { //reverse order
Plugin plugin = m_plugins[i];
IPluginNotificationHandler pluginNotificationHander = plugin.getPluginNotificationHander();
if (pluginNotificationHander != null) {
pluginNotificationHander.groupResigned(p_group);
}
}
}
public Plugin[] getPlugins() {
return m_plugins;
}
public Plugin getPlugin(Class interfaceClass) {
for (int i = 0; i < m_plugins.length; i++) {
Plugin m_plugin = m_plugins[i];
if (interfaceClass.isAssignableFrom(m_plugin.getClass())){
return m_plugin;
}
}
return null;
}
public void destroy() {
for (int i = 0; i < m_plugins.length; i++) {
Plugin plugin = m_plugins[i];
try {
plugin.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* getSelectedMyJxtaNodes from the current active component
*
* @return
*/
public ISelectableNode[] getSelectedNodes() {
ArrayList<ISelectableNode> result = new ArrayList<ISelectableNode>();
for (Iterator iterator = m_selectionProviders.iterator(); iterator.hasNext();) {
ISelectionProvider iSelectionProvider = (ISelectionProvider) iterator.next();
ISelectableNode[] nodes = iSelectionProvider.getSelectedNodes();
if (nodes != null) {
for (int i = 0; i < nodes.length; i++) {
ISelectableNode node = nodes[i];
result.add(node);
}
}
}
return result.toArray(new ISelectableNode[0]);
}
public void addPopup(MenuPath[] path, int section, AbstractAction action) {
System.out.println("###addPopup:"+action);
}
public void init() {
for (int i = 0; i < m_plugins.length; i++) {
Plugin plugin = m_plugins[i];
try {
plugin.init(this);
} catch (Throwable e) {
Logger.getLogger("net.jxta.myjxta.plugin.DefaultMyJxtaPluginContainer").log(Level.SEVERE, "can not init:" + plugin.getClass(), e);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -