public static List <TreeViewItemModel> GetFileFolderModel(string path, string topFolder, string user) { string[] roles = Roles.GetRolesForUser(user); string role = roles[0]; string site = DbUtils.GetSiteNameForUser(user); var list = new List <TreeViewItemModel>(); var tvParent = new TreeViewItemModel(); tvParent.Text = topFolder; tvParent.ImageUrl = "~/Content/Images/folder.png"; tvParent.Expanded = true; list.Add(tvParent); foreach (string f in Directory.GetFiles(path)) { var tvChild = new TreeViewItemModel(); tvChild.Text = Path.GetFileName(f); tvChild.ImageUrl = "~/Content/Images/file.png"; tvChild.NavigateUrl = "~/Download/Getfile/" + tvChild.Text + "/" + topFolder; tvParent.Items.Add(tvChild); } GetFolderFiles(path, topFolder, tvParent, role, site); return(list); }
private TreeViewItemModel BuildTree(List <TreeViewItemModel> data, T dataItem, string groupByName) { var aProp = dataItem.GetType().GetTypeInfo().GetDeclaredProperty(groupByName); if (aProp == null) { throw new Exception($"Cannot find property named {groupByName}"); } var propValue = aProp.GetValue(dataItem); var product = propValue?.ToString() ?? "Unknown"; var item = data.FirstOrDefault(x => x.Name.Equals(product)); if (item == null) { item = new TreeViewItemModel() { Name = product, }; data.Add(item); } return(item); }
public static List <TreeViewItemModel> ToKendoTreeViewItemModelList_todo(this DocumentTreeModels documents) { List <Kendo.Mvc.UI.TreeViewItemModel> result = null; if (documents?.Documents == null || !documents.Documents.Any()) { return(null); } var topMenuItems = DocumentTreeModelsExtensions.GetChildItems(documents, 0); result = new List <TreeViewItemModel>(); foreach (var topMenuItem in topMenuItems) { TreeViewItemModel topMenuTreeItem = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(topMenuItem); result.Add(topMenuTreeItem); if (!topMenuItem.IsDocument) { var children = DocumentTreeModelsExtensions.GetChildItems(documents, topMenuItem.Id); if (children != null && children.Any()) { DocumentTreeModelsExtensions.ProcessSubDocuments(documents, children, ref topMenuTreeItem); } } } return(result); }
internal void CreateItem() { item = new TreeViewItemModel(null) { Title = Utilities.GetInterfaceString("tree_cars", "train") }; item.Children.Add(new TreeViewItemModel(Item) { Title = Utilities.GetInterfaceString("tree_cars", "general") }); item.Children.Add(new TreeViewItemModel(Item) { Title = Utilities.GetInterfaceString("tree_cars", "cars") }); item.Children.Add(new TreeViewItemModel(Item) { Title = Utilities.GetInterfaceString("tree_cars", "couplers") }); item.Children[1].Children = new ObservableCollection <TreeViewItemModel>(Train.Cars.Select((x, i) => new TreeViewItemModel(Item.Children[1]) { Title = i.ToString(culture), Tag = x })); item.Children[2].Children = new ObservableCollection <TreeViewItemModel>(Train.Couplers.Select((x, i) => new TreeViewItemModel(Item.Children[2]) { Title = i.ToString(culture), Tag = x })); OnPropertyChanged(new PropertyChangedEventArgs(nameof(Item))); }
public JsonResult TreeViewTestContent(string id) { List <TreeViewItemModel> items = new List <TreeViewItemModel>(); TreeViewItemModel aItem = new TreeViewItemModel(); aItem.data = new TreeViewItemModelData { title = "Node 1", icon = "folder" }; aItem.attr = new TreeViewItemModelAttributes { id = "1", other_attribute = "additional data can go here" }; aItem.state = "closed"; items.Add(aItem); aItem = new TreeViewItemModel(); aItem.data = new TreeViewItemModelData { title = "Node 2", icon = "folder" }; aItem.attr = new TreeViewItemModelAttributes { id = "2", other_attribute = "additional data can go here" }; aItem.state = "closed"; items.Add(aItem); return(Json(items, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Builds the directory tree. A value of null for 'parentItem' denotes the root node. /// </summary> /// <param name="directory"></param> /// <param name="parentItem"></param> /// <returns>A TreeViewItem structure</returns> public TreeViewItemModel GetDirectoryRecursive(DirectoryInfo directory, TreeViewItemModel parentItem, HttpContextBase ctx) { // If 'parentNode' is null, assume we're starting at the upload path string path = parentItem != null? Path.Combine(parentItem.Value, directory.Name) : directory.FullName; // Get or initalize list in session if (ctx.Session[NetAdvImageSettings._netAdvImageTreeStateSessionKey] == null) { ctx.Session[NetAdvImageSettings._netAdvImageTreeStateSessionKey] = new List <string>(); } List <string> expandedNodes = ctx.Session[NetAdvImageSettings._netAdvImageTreeStateSessionKey] as List <string>; // Create a new TreeViewItem TreeViewItemModel item = new TreeViewItemModel() { Text = directory.Name, Value = path, ImageUrl = "/Scripts/tinymce/plugins/netadvimage/img/folder-horizontal.gif", Enabled = true, Expanded = parentItem == null ? true : // Expand the root node expandedNodes.Contains(path) // Or... get expanded state from session }; // Recurse through the current directory's sub-directories foreach (DirectoryInfo child in directory.GetDirectories()) { TreeViewItemModel childNode = GetDirectoryRecursive(child, item, ctx); item.Items.Add(childNode); } return(item); }
private TreeViewItemModel ConvertTreeViewItemModel(UserDefinition item) { var model = new TreeViewItemModel { Text = item.DisplaySignature, TreeNodeKinds = ConvertTreeNodeKinds(item.DefineKinds), FileName = SourceFile, StartLength = item.StartLength, EndLength = item.EndLength, }; // enum の場合、子ノードにメンバーを追加 if (item.DefineKinds == DefineKinds.Enum && item.EnumMembers.Any()) { foreach (var member in item.EnumMembers) { var memberModel = new TreeViewItemModel { Text = member, TreeNodeKinds = ConvertTreeNodeKinds(item.DefineKinds, true), StartLength = item.StartLength, EndLength = item.EndLength, }; model.Children.Add(memberModel); } model.IsExpanded = true; } return(model); }
private TreeViewItemModel CreatePanelElementsTreeItem(TreeViewItemModel parent) { TreeViewItemModel newItem = new TreeViewItemModel(parent) { Title = "PanelElements" }; newItem.Children.Add(new TreeViewItemModel(newItem) { Title = "PilotLamps" }); newItem.Children.Add(new TreeViewItemModel(newItem) { Title = "Needles" }); newItem.Children.Add(new TreeViewItemModel(newItem) { Title = "DigitalNumbers" }); newItem.Children.Add(new TreeViewItemModel(newItem) { Title = "DigitalGauges" }); newItem.Children.Add(new TreeViewItemModel(newItem) { Title = "LinearGauges" }); newItem.Children.Add(new TreeViewItemModel(newItem) { Title = "Timetables" }); return(newItem); }
public async Task <IViewComponentResult> InvokeAsync(string navMenuId, string itemId = null) { if (string.IsNullOrEmpty(navMenuId)) { return(new ViewComponentPlaceholder()); } var navMenu = await _navigationMenuManager.GetFullNavMenuAsync(navMenuId); if (navMenu == null) { return(new ViewComponentPlaceholder()); } var model = new NavigationMenuViewModel(); model.Id = navMenu.Id; model.SiteId = navMenu.SiteId; model.Title = navMenu.Title; foreach (var item in navMenu.MenuItems) { var node = new TreeViewItemModel(); LoadItemIntoNode(item, node); model.Items.Add(node); } if (!string.IsNullOrEmpty(itemId)) { ExpandToNode(itemId, model.Items); } ViewData["FormTitle"] = "Edit Navigation Menu:"; return(View(model)); }
internal TreeViewItemViewModel(TreeViewItemModel item) { Model = item; Title = item .ObserveProperty(x => x.Title) .ToReadOnlyReactivePropertySlim() .AddTo(disposable); Tag = item .ObserveProperty(x => x.Tag) .ToReadOnlyReactivePropertySlim() .AddTo(disposable); Children = item.Children .ToReadOnlyReactiveCollection(x => new TreeViewItemViewModel(x)) .AddTo(disposable); new[] { Children.CollectionChangedAsObservable().OfType <object>(), Children.ObserveElementObservableProperty(x => x.Title).OfType <object>(), Children.ObserveElementObservableProperty(x => x.Tag).OfType <object>(), Children.ObserveElementProperty(x => x.Children).OfType <object>() } .Merge() .Subscribe(_ => OnPropertyChanged(new PropertyChangedEventArgs(nameof(Children)))) .AddTo(disposable); }
Tuple <System.Collections.ObjectModel.ObservableCollection <TreeViewItemModel <T> >, IEnumerable <TreeViewItemModel <T> > > BuildTree <T>(IEnumerable <T> dataSource) { mSeq = 1; // 重新初始化 mSeq List <TreeViewItemModel <T> > flatList = new List <TreeViewItemModel <T> >(); var itemsSource = new System.Collections.ObjectModel.ObservableCollection <TreeViewItemModel <T> >(); var matchRootList = dataSource.Where(i => i.GetType().GetProperty("ParentId").GetValue(i, null) == null); foreach (var item in matchRootList) { TreeViewItemModel <T> toAdd = digui <T> ( dataSource: dataSource, item: item, parent: null, flatList: flatList, level: 1, isCascade: this.IsCascade ); itemsSource.Add(toAdd); flatList.Add(toAdd); } return(new Tuple <System.Collections.ObjectModel.ObservableCollection <TreeViewItemModel <T> >, IEnumerable <TreeViewItemModel <T> > >(itemsSource, flatList)); }
/// <summary> /// (递归)向父对象发送重新计算 IsChecked属性的通知 /// </summary> /// <param name="m"></param> void digui_Parent_IsChecked_PropertyChanged(TreeViewItemModel <T> m) { if (m.Parent != null) { m.Parent.OnPropertyChanged("IsChecked"); digui_Parent_IsChecked_PropertyChanged(m.Parent); } }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dataSource"></param> /// <param name="item"></param> /// <param name="parent"></param> /// <param name="level"></param> /// <param name="isCascade"></param> /// <returns></returns> TreeViewItemModel <T> digui <T>(IEnumerable <T> dataSource, T item, TreeViewItemModel <T> parent, System.Collections.IList flatList, int level, bool isCascade) { dynamic dItem = item; TreeViewItemModel <T> toAdd = new TreeViewItemModel <T>(item); toAdd.Level = level; toAdd.Id = dItem.Id.ToString(); toAdd.IsCascade = isCascade; toAdd.IsChecked = false; toAdd.IsExpanded = this.ExpandedLevel >= level; toAdd.Children = null; toAdd.Seq = mSeq++; if (level == 1) { toAdd.Parent = null; toAdd.ParentId = null; } else { toAdd.Parent = parent; toAdd.ParentId = parent.Id.ToString(); } toAdd.PropertyChanged += TreeViewItemModel_PropertyChanged; var children = dataSource.Where ( i => i.GetType().GetProperty("ParentId").GetValue(i, null) != null && i.GetType().GetProperty("ParentId").GetValue(i, null).ToString() == dItem.Id.ToString() ); toAdd.IsBranch = false; foreach (var childItem in children) { if (toAdd.IsBranch == false) { toAdd.Children = new System.Collections.ObjectModel.ObservableCollection <TreeViewItemModel <T> >(); toAdd.IsBranch = true; } var child = digui ( dataSource: dataSource, item: childItem, parent: toAdd, flatList: flatList, level: level + 1, isCascade: isCascade ); toAdd.Children.Add(child); flatList.Add(child); } return(toAdd); }
/// <summary> /// Convert to tree item model. /// </summary> /// <param name="dir">Directory info.</param> /// <returns>Tree view item model.</returns> public static TreeViewItemModel ConvertToTreeItemModel(this DirectoryInfo dir) { var treeViewItem = new TreeViewItemModel { Name = dir.Name, Path = dir.FullName }; return(treeViewItem); }
private void AddMember(TreeViewItemModel parent, string parentNamespace) { // インナークラスなど、クラス内で定義したクラス等を除くものを取得 // namespace, class, struct, interface, module, enum, delegate, event, field, property, method(Operator, WindowsAPI, EventHandler, method) // インナークラスのメンバーが、親クラスのメンバーとして登録されてしまうバグの対応 // ループ中、再帰ループから戻ってきた際、rows がおかしくなる挙動のため(遅延評価の影響か)、 // IEnumerable のままから List に変換して、コレクションを確定してからループするように修正 // partial クラスのメンバー分が表示されないバグ、継承元クラスのメンバーが表示されないバグの対応 // Where 句内の SourceFile フィルタを外した var rows = AppEnv.UserDefinitions .Where(x => x.Namespace == parentNamespace) .ToList(); var item = default(TreeViewItemModel); if (rows is null || !rows.Any()) { return; } foreach (var row in rows) { switch (row.DefineKinds) { case DefineKinds.Namespace: break; case DefineKinds.Class: case DefineKinds.Struct: case DefineKinds.Interface: case DefineKinds.Module: item = ConvertTreeViewItemModel(row); parent.Children.Add(item); parentNamespace = row.DefineFullName; AddMember(item, parentNamespace); if (item.Children.Any()) { item.IsExpanded = true; } break; default: item = ConvertTreeViewItemModel(row); parent.Children.Add(item); break; } } }
/// <summary> /// If the user has not been setup in OscarWeb then display an empty menu tree /// </summary> /// <returns></returns> private static List <TreeViewItemModel> GetEmptyTreeMenu() { var result = new List <TreeViewItemModel>(); TreeViewItemModel emptymenuitem = new TreeViewItemModel { Id = "0", Text = StringConstants.NoItemsToDisplay }; result.Add(emptymenuitem); return(result); }
private TreeViewItemModel CreateScreenTreeItem(TreeViewItemModel parent, Screen screen) { TreeViewItemModel newItem = new TreeViewItemModel(parent) { Title = $"Screen{screen.Number}", Tag = screen }; newItem.Children.Add(CreatePanelElementsTreeItem(newItem)); newItem.Children.Add(new TreeViewItemModel(newItem) { Title = "TouchElements" }); return(newItem); }
private void LoadItemIntoNode(NavigationMenuItem item, TreeViewItemModel node) { node.Id = item.Id; node.Text = item.Title; node.HasChildren = (item.Children.Count > 0); //node.Expanded = node.HasChildren; node.Enabled = true; foreach (var child in item.Children) { var childNode = new TreeViewItemModel(); LoadItemIntoNode(child, childNode); node.Items.Add(childNode); } }
private void btnQuery_Click(object sender, RoutedEventArgs e) { if (tree.SelectedItem is TreeViewItemModel) { TreeViewItemModel org = tree.SelectedItem as TreeViewItemModel; if (org != null) { if (org.Id == 0) { LoadReport(org.SMSUnitType); } } } }
/// <summary> /// Convert a list of documents into a Kendo UI tree view for display on the DocumentManager.cshtml page. /// </summary> /// <param name="documents"></param> /// <returns></returns> public static List <TreeViewItemModel> ToKendoTreeViewItemModelList(this DocumentTreeModels documents) { List <Kendo.Mvc.UI.TreeViewItemModel> result = null; if (documents?.Documents == null || !documents.Documents.Any()) { return(null); } var topMenuItems = DocumentTreeModelsExtensions.GetTopLevelItems(documents, 0); result = new List <TreeViewItemModel>(); foreach (var topMenuItem in topMenuItems) { TreeViewItemModel topMenuTreeItem = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(topMenuItem); var children = DocumentTreeModelsExtensions.GetChildItems(documents, topMenuItem.Id); if (children != null && children.Any()) { foreach (var child in children) { var subTopTree = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(child); topMenuTreeItem.Items.Add(subTopTree); var subchildren = DocumentTreeModelsExtensions.GetChildItems(documents, child.Id); if (subchildren == null || !subchildren.Any()) { continue; } foreach (var subchild in subchildren) { var subsubTopTree = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(subchild); subTopTree.Items.Add(subsubTopTree); var subsubchildren = DocumentTreeModelsExtensions.GetChildItems(documents, subchild.Id); if (subsubchildren == null || !subsubchildren.Any()) { continue; } foreach (var subsubchild in subsubchildren) { var subsubTreechild = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(subsubchild); subsubTopTree.Items.Add(subsubTreechild); } } } } result.Add(topMenuTreeItem); } return(result); }
internal void RemoveCar() { int index = Train.Cars.IndexOf((Car)SelectedItem.Tag); Train.Cars.RemoveAt(index); Train.Couplers.RemoveAt(index == 0 ? 0 : index - 1); Item.Children[1].Children.RemoveAt(index); Item.Children[2].Children.RemoveAt(index == 0 ? 0 : index - 1); RenameTreeViewItem(Item.Children[1].Children); RenameTreeViewItem(Item.Children[2].Children); SelectedItem = null; }
internal void CopyCar() { Train.Cars.Add((Car)((Car)SelectedItem.Tag).Clone()); Train.Couplers.Add(new Coupler()); Item.Children[1].Children.Add(new TreeViewItemModel(Item.Children[1]) { Title = (Train.Cars.Count - 1).ToString(culture), Tag = Train.Cars.Last() }); Item.Children[2].Children.Add(new TreeViewItemModel(Item.Children[2]) { Title = (Train.Couplers.Count - 1).ToString(culture), Tag = Train.Couplers.Last() }); SelectedItem = Item.Children[1].Children.Last(); }
private void DefinitionDiscoveryContextMenuClick(TreeViewItemModel e) { var foundVM = Documents.OfType <DefinitionDiscoveryViewModel>().FirstOrDefault(x => x.SelectedItem.FileName == e.FileName); if (foundVM is null) { // 新規登録・表示 AddDefinitionDiscoveryPane(e); } else { // すでに登録済み(表示済み)なので、再アクティブに切り替える foundVM.IsSelected = true; } }
private void SolutionFileContextMenuClick(TreeViewItemModel e) { var foundVM = Documents.OfType <ProjectReferenceViewModel>().FirstOrDefault(x => x.FileName == e.FileName); if (foundVM is null) { // 新規登録・表示 AddProjectReferencePane(e); } else { // すでに登録済み(表示済み)なので、再アクティブに切り替える foundVM.IsSelected = true; } }
internal void CreateTreeItem() { treeItem = new TreeViewItemModel(null) { Title = "TouchElement" }; treeItem.Children.Add(new TreeViewItemModel(TreeItem) { Title = "Sounds" }); treeItem.Children.Add(new TreeViewItemModel(TreeItem) { Title = "Commands" }); OnPropertyChanged(new PropertyChangedEventArgs(nameof(TreeItem))); }
private void All_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { if (tree.SelectedItem is TreeViewItemModel) { TreeViewItemModel org = tree.SelectedItem as TreeViewItemModel; if (org != null) { if (org.Id == 0) { LoadReport(org.SMSUnitType); } } } } }
private void SourceTreeSelectedItemChanged(TreeViewItemModel e) { if (e is null || e.FileName != SourceFile) { return; } // 通常はキャレット位置が変わったら、TextEditorEx_CaretPositionChanged イベントハンドラが実行されていいのですが、 // 各ツリーノードのクリック時は、結果的に無駄処理として実行されるだけなので、フラグを立ててイベントハンドラが動作しないように抑制します。 // ただし、ソースツリーで選択した定義が、メンバーツリー(や継承ツリー)で表示中の定義範囲外の場合、表示更新したいため、わざと抑制フラグは立てません。 // ※ NowWorking フラグは、TextEditorEx_CaretPositionChanged() 内で使用しているイベント処理の抑制フラグです。 var useEventSkipFlag = false; if (MemberTreeItems.Any()) { var item = MemberTreeItems.FirstOrDefault(); if (item.StartLength <= e.StartLength && e.EndLength <= item.EndLength) { useEventSkipFlag = true; } // 例外として、インナーのクラス、構造体、インターフェースの場合は再表示させる switch (e.TreeNodeKinds) { case TreeNodeKinds.Class: case TreeNodeKinds.Struct: case TreeNodeKinds.Interface: useEventSkipFlag = false; break; } } if (useEventSkipFlag) { NowWorking = true; } CaretOffset = e.StartLength; if (useEventSkipFlag) { NowWorking = false; } }
internal void CreateTreeItem() { treeItem = new TreeViewItemModel(null) { Title = "Panel" }; treeItem.Children.Add(new TreeViewItemModel(TreeItem) { Title = "This" }); treeItem.Children.Add(new TreeViewItemModel(TreeItem) { Title = "Screens" }); treeItem.Children.Add(CreatePanelElementsTreeItem(TreeItem)); treeItem.Children[1].Children = new ObservableCollection <TreeViewItemModel>(Screens.Select(x => CreateScreenTreeItem(treeItem.Children[1], x))); OnPropertyChanged(new PropertyChangedEventArgs(nameof(TreeItem))); }
private void tree_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e) { if (e.AddedItems != null && e.AddedItems.Count > 0) { object o = e.AddedItems[0]; if (o is TreeViewItemModel) { TreeViewItemModel org = o as TreeViewItemModel; LoadReport(org.SMSUnitType); } else if (o is Organization) { Organization org = o as Organization; drill(org.Id); } } }
internal void AddCar() { Train.Cars.Add(new TrailerCar()); Train.Couplers.Add(new Coupler()); Train.ApplyPowerNotchesToCar(); Train.ApplyBrakeNotchesToCar(); Train.ApplyLocoBrakeNotchesToCar(); Item.Children[1].Children.Add(new TreeViewItemModel(Item.Children[1]) { Title = (Train.Cars.Count - 1).ToString(culture), Tag = Train.Cars.Last() }); Item.Children[2].Children.Add(new TreeViewItemModel(Item.Children[2]) { Title = (Train.Couplers.Count - 1).ToString(culture), Tag = Train.Couplers.Last() }); SelectedItem = Item.Children[1].Children.Last(); }