//解析插件集合中所有对象
        //将其分别装入ICommand、ITool、IToolBarDef、IMenuDef和IDockableWindows5个集合
        public static void  GetPluginArray(PluginCollection pluginCol)
        {
            foreach (NBGIS.PluginEngine.IPlugin plugin in pluginCol)
            {
                /////////////////
                NBGIS.PluginEngine.ICommand cmd = plugin as NBGIS.PluginEngine.ICommand;
                if (cmd != null)
                {
                    m_Commands.Add(cmd.ToString(), cmd);
                    //找出该Command的Category,如果它没有添加到Category中则添加
                    if (cmd.Category != null && (!m_CommandCategory.Contains(cmd.Category)))
                    {
                        m_CommandCategory.Add(cmd.Category);
                    }
                    continue;
                }
                ////////////////
                NBGIS.PluginEngine.ITool tool = plugin as NBGIS.PluginEngine.ITool;
                if (tool != null)
                {
                    m_Tools.Add(tool.ToString(), tool);
                    if (tool.Category != null && (!m_CommandCategory.Contains(tool.Category)))
                    {
                        m_CommandCategory.Add(tool.Category);
                    }
                    continue;
                }

                ////////////////
                NBGIS.PluginEngine.IToolBarDef toolbar = plugin as NBGIS.PluginEngine.IToolBarDef;
                if (toolbar != null)
                {
                    m_ToolBars.Add(toolbar.ToString(), toolbar);
                    continue;
                }
                ////////////////
                NBGIS.PluginEngine.IMenuDef menu = plugin as NBGIS.PluginEngine.IMenuDef;
                if (menu != null)
                {
                    m_Menus.Add(menu.ToString(), menu);
                    continue;
                }
                ////////////////
                NBGIS.PluginEngine.IDockableWindowDef dockableWindow = plugin as NBGIS.PluginEngine.IDockableWindowDef;
                if (dockableWindow != null)
                {
                    m_DockableWindows.Add(dockableWindow.ToString(), dockableWindow);
                    continue;
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// 解析插件集合中所有的对象
 /// 将其分别装入ICommand,ITool,IToolBarDef,IMenuDefI和DockableWindowDef 5个集合
 /// </summary>
 /// <param name="pluginCol">插件集合</param>
 public void GetPluginArray(PluginCollection pluginCol)
 {
     //遍历插件集合
     foreach (NBGIS.PluginEngine.IPlugin plugin in pluginCol)
     {
         //获得Command接口并添加到Command集合中
         NBGIS.PluginEngine.ICommand cmd = plugin as NBGIS.PluginEngine.ICommand;
         if (cmd != null)
         {
             this._Commands.Add(cmd.ToString(), cmd);
             //找出该Command的Category,如果它还没有添加到Category则添加
             if (cmd.Category != null && _CommandCategory.Contains(cmd.Category) == false)
             {
                 _CommandCategory.Add(cmd.Category);
             }
             continue;
         }
         //获得ITool接口并添加到ITool集合中
         NBGIS.PluginEngine.ITool tool = plugin as NBGIS.PluginEngine.ITool;
         if (tool != null)
         {
             this._Tools.Add(tool.ToString(), tool);
             if (tool.Category != null && _CommandCategory.Contains(tool.Category) == false)
             {
                 _CommandCategory.Add(tool.Category);
             }
             continue;
         }
         //获得IToolBarDef接口并添加到IToolBarDef集合中
         NBGIS.PluginEngine.IToolBarDef toolbardef = plugin as NBGIS.PluginEngine.IToolBarDef;
         if (toolbardef != null)
         {
             this._ToolBars.Add(toolbardef.ToString(), toolbardef);
             continue;
         }
         //获得IMenuDef接口并添加到IMenuDef集合中
         NBGIS.PluginEngine.IMenuDef menudef = plugin as NBGIS.PluginEngine.IMenuDef;
         if (menudef != null)
         {
             this._Menus.Add(menudef.ToString(), menudef);
             continue;
         }
         //获得IDockableWindowDef接口并添加到IDockableWindowDef集合中
         NBGIS.PluginEngine.IDockableWindowDef dockablewindowdef = plugin as NBGIS.PluginEngine.IDockableWindowDef;
         if (dockablewindowdef != null)
         {
             this._DockableWindows.Add(dockablewindowdef.ToString(), dockablewindowdef);
             continue;
         }
     }
 }
Beispiel #3
0
        public static void CreateUIDockableWindow(NBGIS.PluginEngine.IDockableWindowDef nbDockWindowItem)
        {
            nbDockWindowItem.OnCreate(m_Application);

            Janus.Windows.UI.Dock.UIPanel panel = new Janus.Windows.UI.Dock.UIPanel();

            panel.FloatingLocation = new System.Drawing.Point(120, 180);
            panel.FloatingSize     = new System.Drawing.Size(188, 188);
            panel.Name             = nbDockWindowItem.Name;
            panel.Text             = nbDockWindowItem.Caption;
            panel.DockState        = Janus.Windows.UI.Dock.PanelDockState.Floating;

            ((System.ComponentModel.ISupportInitialize)(panel)).BeginInit();
            panel.SuspendLayout();
            panel.Id = Guid.NewGuid();
            m_UIPanelManager.Panels.Add(panel);

            Janus.Windows.UI.Dock.UIPanelInnerContainer panelContainer = new Janus.Windows.UI.Dock.UIPanelInnerContainer();
            panel.InnerContainer = panelContainer;

            try
            {
                //这个地方易发生异常,插件必须保证ChildHWND完全正确
                panelContainer.Controls.Add(nbDockWindowItem.ChildHWND);
                panelContainer.Location = new System.Drawing.Point(1, 27);
                panelContainer.Name     = nbDockWindowItem.Name + "Container";
                panelContainer.Size     = new System.Drawing.Size(188, 188);
                panelContainer.TabIndex = 0;
            }
            catch (Exception ex)
            {
                if (Applog.log.IsErrorEnabled)
                {
                    Applog.log.Error("浮动窗体插件的子控件没有正确加载:" + ex.Message);
                }
            }
        }