Ejemplo n.º 1
0
        public bool RegisterTool(string ToolName, string documentType, string iconPath, Type ToolType, RDocumentData.ToolsDockPosition toolDockPosition)
        {
            try
            {
                Type ty;

                if (!DocumentTypesLoaded.TryGetValue(documentType, out ty))
                {
                    List <Tuple <string, string, string, Type, RDocumentData.ToolsDockPosition> > val;

                    if (_dicDocSpecificToolFromPluginData.TryGetValue(documentType, out val))
                    {
                        val.Add(new Tuple <string, string, string, Type, RDocumentData.ToolsDockPosition>(ToolName, documentType, iconPath, ToolType, toolDockPosition));
                    }
                    else
                    {
                        _dicDocSpecificToolFromPluginData.Add(documentType, new List <Tuple <string, string, string, Type, RDocumentData.ToolsDockPosition> >()
                        {
                            new Tuple <string, string, string, Type, RDocumentData.ToolsDockPosition>(ToolName, documentType, iconPath, ToolType, toolDockPosition),
                        });
                    }
                }
                else
                {
                    ITab         tab      = UIManager.GetTab(documentType, "Tools");
                    IButtonGroup groupbox = tab?.GetButtonGroup("DockingTools");

                    if (tab == null)
                    {
                        tab      = UIManager.CreateNewTab(documentType, "Tools");
                        groupbox = tab.CreateButtonGroup("DockingTools");
                    }
                    if (groupbox == null)
                    {
                        groupbox = tab.CreateButtonGroup("DockingTools");
                    }

                    groupbox.CreateToggleButton(ToolName, iconPath, new RelayCommand <RRibbonToggleButton>(
                                                    (togglebtn) =>
                    {
                        try
                        {
                            _eventaggregator.GetEvent <DockableToolToggleButtonClickedEvent>().Publish(new KeyValuePair <IRibbonToggleButton, Type>(togglebtn, ToolType));
                        }
                        catch (Exception ex)
                        {
                        }
                    }));


                    Type doc = this.DocumentTypesLoaded[documentType];
                    //if (doc == null)
                    //    return false;
                    var docdata = this.DocumentTypeData.FirstOrDefault(a => a.DocType == doc);

                    docdata.DicToolDockPosition.Add(ToolType, toolDockPosition);
                }

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }