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

📄 defaultmyjxtaplugincontainer.java

📁 mywork是rcp开发的很好的例子
💻 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 + -