/// <summary> /// Adds the item. /// </summary> /// <param name="item">The item.</param> /// <param name="processView">The process view.</param> /// <param name="sequence">The sequence.</param> public void AddItem(object item, ProcessViewInfo processView, double sequence) { EventHandler<AddedNewEventArgs<NavigationItemEdit>> eh = null; eh = (o, args) => { if (item is PublishedProcessInfo) { var process = item as PublishedProcessInfo; args.NewObject.Sequence = sequence; args.NewObject.Name = processView == null ? process.Name : PublishedProcessViewModel.GetNavigationViewName(process.Name, processView.Name); args.NewObject.SystemName = process.SystemName; args.NewObject.PublishedProcessId = process.Id; args.NewObject.ProcessViewGuid = processView == null ? (Guid?)null : processView.Guid; args.NewObject.IconId = process.IconId; } else if (item is TitledCommandEx) { var systemFunction = item as TitledCommandEx; args.NewObject.Sequence = sequence; args.NewObject.Name = systemFunction.Title; args.NewObject.IconURL = systemFunction.IconURL; } else if (item is NavigationItemViewModel) { var navigationItem = item as NavigationItemViewModel; if (NavigationItems.Any(x => x.Model.Guid == navigationItem.Model.Guid)) { RemoveItem(navigationItem); } args.NewObject.Sequence = sequence; args.NewObject.Name = navigationItem.Model.Name; args.NewObject.SystemName = navigationItem.Model.SystemName; args.NewObject.PublishedProcessId = navigationItem.Model.PublishedProcessId; args.NewObject.IconId = navigationItem.Model.IconId; args.NewObject.IconURL = navigationItem.Model.IconURL; args.NewObject.Guid = navigationItem.Model.Guid; foreach (var configuration in navigationItem.Model.SecurityConfigurations) { args.NewObject.SetCanView(configuration.RoleId, configuration.CanView); } var a = args.NewObject.SecurityConfigurations; } else { var message = string.Format("Wrong type. Type {0} not supported.", item.GetType()); throw new ArgumentException(message, "item"); } var vm = NavigationItemFactory.CreateExport().Value; vm.Initialize(args.NewObject, this); vm.SelectedRoleId = SelectedRoleId; InsertItem(vm); UpdateItemsCanMove(); Model.NavigationItems.AddedNew -= eh; RaiseAddedNewItemEvent(args.NewObject); Parent.AddItem(vm.Model.PublishedProcessId); }; Model.NavigationItems.AddedNew += eh; Model.NavigationItems.AddNew(); }
/// <summary> /// Initializes the specified model. /// </summary> /// <param name="model">The model.</param> /// <param name="view">The view.</param> public void Initialize(PublishedProcessInfo model, ProcessViewInfo view = null) { PublishedProcess = model; ProcessView = view; LoadIcon(); }