示例#1
0
 public NavigationTreePluginModule(
     IWindowHost windowHost,
     [Import("navigationMenu", typeof(UserControl))] NavigationTree navTree)
 {
     this.windowHost = windowHost;
     this.navTree    = navTree;
 }
示例#2
0
        public MainWindowViewModel()
        {
            Messenger.Register <ColumnNames>(this, p =>
            {
                SelectedColumns = string.Join(",", FileColumns.Where(c => c.IsSelected).Select(c => c.Name));
            });


            NotifyPropertyChanged(nameof(FileColumns));

            SingleTree = new NavigationTree();
        }
示例#3
0
        ///////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////

        private void _AddExtensionWidgets()
        {
            if (_isExtensionWidgetsLoaded)
            {
                return;                 // only once
            }
            Debug.Assert(_app != null); // Initialize first

            try
            {
                // add extension widgets
                NavigationTree navigationTree = _app.MainWindow.NavigationTree;

                ICollection <ExtensionWidget> extWidgets = _app.ExtensionWidgets;
                if ((null != extWidgets) && (0 < extWidgets.Count))
                {
                    // find page
                    INavigationItem item = null;
                    if (navigationTree.FindItem(((object)this).GetType(), out item))
                    {
                        // build page path
                        var pagePath = string.Format(@"{0}\{1}", item.Parent.Name, this.Name);
                        foreach (ExtensionWidget widget in extWidgets)
                        {
                            if (pagePath.Equals(widget.PagePath,
                                                StringComparison.OrdinalIgnoreCase))
                            {
                                // create widget
                                Assembly widgetAssembly =
                                    Assembly.LoadFrom(widget.AssemblyPath);

                                var pageWidget =
                                    (PageWidget)Activator.CreateInstance(widget.ClassType);
                                pageWidget.Initialize(this);
                                _widgets.Add(pageWidget);
                            }
                        }
                    }
                }

                _isExtensionWidgetsLoaded = true;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
        private bool DataIsAccessable(DR_Requester requester, NavigationTree navigationTree)
        {
            if (navigationTree.TableDrivedEntityID != null)
            {
                if (!bizTableDrivedEntity.DataIsAccessable(requester, navigationTree.TableDrivedEntity))
                {
                    return(false);
                }
            }
            var category = (DatabaseObjectCategory)Enum.Parse(typeof(DatabaseObjectCategory), navigationTree.Category);

            if (category == DatabaseObjectCategory.Report)
            {
                if (!bizEntityReport.DataIsAccessable(requester, navigationTree.ItemIdentity))
                {
                    return(false);
                }
            }
            if (category == DatabaseObjectCategory.Letter)
            {
                if (!bizTableDrivedEntity.DataIsAccessable(requester, navigationTree.TableDrivedEntity, new List <SecurityAction>()
                {
                    SecurityAction.LetterView, SecurityAction.LetterEdit
                }))
                {
                    return(false);
                }
            }
            if (category == DatabaseObjectCategory.Archive)
            {
                if (!bizTableDrivedEntity.DataIsAccessable(requester, navigationTree.TableDrivedEntity, new List <SecurityAction>()
                {
                    SecurityAction.ArchiveView, SecurityAction.ArchiveEdit
                }))
                {
                    return(false);
                }
            }
            return(true);
        }
        private void CheckAddItems(List <NavigationItemDTO> items, NavigationItemDTO parentItem, NavigationTree parentDBItem, DataAccess.MyProjectEntities projectContext)
        {
            foreach (var item in items.Where(x => x.ParentItem == parentItem))
            {
                NavigationTree dbItem = null;
                if (item.ID != 0)
                {
                    dbItem = projectContext.NavigationTree.First(x => x.ID == item.ID);
                }
                else
                {
                    dbItem = new NavigationTree();
                    projectContext.NavigationTree.Add(dbItem);
                }
                dbItem.Category     = item.ObjectCategory.ToString();
                dbItem.ItemTitle    = item.Title;
                dbItem.Tooltip      = item.Tooltip;
                dbItem.Name         = item.Name;
                dbItem.ItemIdentity = item.ObjectIdentity;
                if (item.TableDrivedEntityID != 0)
                {
                    dbItem.TableDrivedEntityID = item.TableDrivedEntityID;
                }
                else
                {
                    dbItem.TableDrivedEntityID = null;
                }
                //if (item.EntityReportID != 0)
                //    dbItem.EntityReportID = item.EntityReportID;
                //else
                //    dbItem.EntityReportID = null;
                //if (item.ObjectCategory == DatabaseObjectCategory.Entity)
                //    dbItem.TableDrivedEntityID = Convert.ToInt32(item.ObjectIdentity);
                //else if (item.ObjectCategory == DatabaseObjectCategory.Report)
                //    dbItem.EntityReportID = Convert.ToInt32(item.ObjectIdentity);

                dbItem.NavigationTree2 = parentDBItem;
                CheckAddItems(items, item, dbItem, projectContext);
            }
        }
        private void ToNavigationTreeDTO(DR_Requester requester, List <ModelEntites.NavigationItemDTO> treeItems, NavigationTree item, NavigationItemDTO parentNavigationItem, bool withChilds)
        {
            //if (item.TableDrivedEntityID != null)
            //{
            //    var entityEnabled = bizTableDrivedEntity.IsEntityEnabled(item.TableDrivedEntityID.Value);
            //    if (!entityEnabled)
            //        return;
            //}
            var result = new NavigationItemDTO();

            result.ID                  = item.ID;
            result.ParentID            = item.ParentID;
            result.ObjectIdentity      = item.ItemIdentity;
            result.Title               = item.ItemTitle;
            result.TableDrivedEntityID = item.TableDrivedEntityID ?? 0;
            result.Tooltip             = item.Tooltip;
            result.Name                = item.Name;
            result.ObjectCategory      = (DatabaseObjectCategory)Enum.Parse(typeof(DatabaseObjectCategory), item.Category);
            result.ParentItem          = parentNavigationItem;
            //if (!plainItems.Any(x => x.ObjectIdentity == item.ItemIdentity && x.ObjectCategory.ToString() == item.Category))
            //{
            //    var plainItem = new PlainNavigationDTO();
            //    plainItem.ObjectCategory = (DatabaseObjectCategory)Enum.Parse(typeof(DatabaseObjectCategory), item.Category);
            //    plainItem.ObjectIdentity = item.ItemIdentity;
            //    if (item.TableDrivedEntityID != null)
            //        plainItem.SecurityObjectID = item.TableDrivedEntityID.Value;
            //    else if (item.EntityReportID != null)
            //        plainItem.SecurityObjectID = item.EntityReportID.Value;
            //    plainItems.Add(plainItem);
            //}
            treeItems.Add(result);
            if (withChilds)
            {
                //result.ChildItems = new List<NavigationItemDTO>();
                foreach (var citem in item.NavigationTree1)
                {
                    if (DataIsAccessable(requester, citem))
                    {
                        ToNavigationTreeDTO(requester, treeItems, citem, result, true);
                    }
                }
            }
        }