public void FillTree(ICSharpCode.TreeView.SharpTreeView tree, Module module) { var root = CreateTreeItem(module); tree.Root = root; foreach (var ns in module.Namespaces) { var namespaceNode = CreateTreeItem(ns); tree.Root.Children.Add(namespaceNode); foreach (var type in ns.Types) { var typeNode = CreateTreeItem(type); namespaceNode.Children.Add(typeNode); foreach (var method in type.Methods) { var methodName = CreateTreeItem(method); namespaceNode.Children.Add(methodName); } foreach (var field in type.Fields) { var fieldNode = CreateTreeItem(field); namespaceNode.Children.Add(fieldNode); } } } }
//public IEnumerable<ILSpyTreeNode> SelectedNodes //{ // get // { // return treeView.GetTopLevelSelection().OfType<ILSpyTreeNode>(); // } //} void projectTree_SelectionChanged(object sender, SelectionChangedEventArgs e) { ICSharpCode.TreeView.SharpTreeView t = sender as ICSharpCode.TreeView.SharpTreeView; ShowProperties(t); if (SelectionChanged != null) { SelectionChanged(sender, e); } }
void ShowProperties(ICSharpCode.TreeView.SharpTreeView t) { if (t.SelectedItems.Count == 1) { ShopdrawingTreeNode node = t.SelectedItem as ShopdrawingTreeNode; PropertyGrid.SelectedObject = node.DataObject; } else { ShopdrawingTreeNode nodes = t.SelectedItems as ShopdrawingTreeNode; } }
void projectTree_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left) { ICSharpCode.TreeView.SharpTreeView t = sender as ICSharpCode.TreeView.SharpTreeView; if (t.SelectedItems.Count == 1) { ShopdrawingTreeNode node = t.SelectedItem as ShopdrawingTreeNode; if (node.Children.Count == 0) { MessageBox.Show(node.DataObject != null ? node.DataObject.ToString() : "Null"); } } } }
public void NewProject() { //Drawing DrawingHost = new DynamicGeometry.DrawingHost(); DrawingHost.Ribbon.Visibility = System.Windows.Visibility.Collapsed; // Add Behaviors var behaviors = Behavior.LoadBehaviors(typeof(Dragger).Assembly); Behavior.Default = behaviors.First(b => b is Dragger); foreach (var behavior in behaviors) { DrawingHost.AddToolButton(behavior); } var firstDocumentPane = dockManager.Layout.Descendents().OfType <LayoutDocumentPane>().FirstOrDefault(); if (firstDocumentPane != null) { LayoutDocument doc = new LayoutDocument(); doc.Title = "Drawing" + drawingCount; drawingCount++; doc.Content = DrawingHost; firstDocumentPane.Children.Add(doc); } //Project Explorer var projectExplorer = dockManager.Layout.Descendents().OfType <LayoutAnchorablePane>().LastOrDefault(); var rightAnchorgroup = dockManager.Layout.Descendents().OfType <LayoutAnchorablePaneGroup>().FirstOrDefault(); if (projectExplorer != null) { // Tạo 2 LayoutAnchorablePane LayoutAnchorablePane l1 = new LayoutAnchorablePane(); LayoutAnchorablePane l2 = new LayoutAnchorablePane(); LayoutAnchorable doc = new LayoutAnchorable(); ICSharpCode.TreeView.SharpTreeView projectTree = new ICSharpCode.TreeView.SharpTreeView() { AllowDrop = true, AllowDropOrder = true }; ICSharpCode.ILSpy.ContextMenuProvider.Add(projectTree); //App.CompositionContainer.ComposeParts(this); projectTree.SelectionChanged += projectTree_SelectionChanged; projectTree.MouseDoubleClick += projectTree_MouseDoubleClick; // Dữ liệu ban đầu BridgesList brl = new BridgesList() { Name = "Bridges List" }; BridgeProject.Items.Bridge br = new BridgeProject.Items.Bridge() { Name = "Bridge 1" }; //Substructures sub1 = new Substructures(); //br.Substructures = sub1; BridgeProject.Items.Bridge br2 = new BridgeProject.Items.Bridge() { Name = "Bridge 2" }; brl.Children.Add(br, br2); BridgeListNode n = new BridgeListNode(brl); foreach (Bridge b in brl.Children) { BridgeNode n1 = new BridgeNode(b) { Text = b.Name }; n.Children.Add(n1); SubstructuresNode subNode = new SubstructuresNode(b.Substructures); n1.Children.Add(subNode); AbutmentsListNode abutsNode = new AbutmentsListNode(b.Substructures.Abutments); subNode.Children.Add(abutsNode); PiersListNode piersNode = new PiersListNode(b.Substructures.Piers); subNode.Children.Add(piersNode); foreach (Abutment a in b.Substructures.Abutments.Children) { AbutmentNode abn = new AbutmentNode(a); abutsNode.Children.Add(abn); } foreach (Pier p in b.Substructures.Piers.Children) { PierNode abn = new PierNode(p); piersNode.Children.Add(abn); } } projectTree.Root = n; // doc.Content = projectTree; doc.Title = "Project Explorer"; doc.ContentId = "projectExplorer"; l1.Children.Add(doc); // PropertyGrid PropertyGridHost = new DynamicGeometry.PropertyGridHost(); PropertyGrid = new ChristianMoser.WpfInspector.UserInterface.Controls.PropertyGrid() { VerticalAlignment = System.Windows.VerticalAlignment.Stretch, ShowMethod = true, }; PropertyGridHost.Children.Add(PropertyGrid); LayoutAnchorable prop = new LayoutAnchorable(); prop.Content = PropertyGridHost; prop.ContentId = "propertyGrid"; prop.Title = "Properties"; l2.Children.Add(prop); rightAnchorgroup.Children.Add(l1); rightAnchorgroup.Children.Add(l2); // //var pe = dockManager.Layout.Descendents().OfType<LayoutAnchorable>().Single(a => a.ContentId == "projectExplorer"); //var tree = pe.Content as BridgeFS.Controls.Project; //if (tree != null) //{ // //MessageBox.Show(tree.TreeView.ToString() + "xx"); // Binding b = new Binding(); // b.Source = tree.TreeView; // //b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; // b.Path = new PropertyPath(TreeViewItemChangedMvvm.ViewModelUtils.TreeViewHelper.SelectedItemProperty); // this.PropertyGrid.SetBinding(ChristianMoser.WpfInspector.UserInterface.Controls.PropertyGrid.SelectedObjectProperty, b); //} } dockManager.UpdateLayout(); //MainToolbar.Drawing = DrawingHost.CurrentDrawing; //DrawingHost.CurrentDrawing.SelectionChanged += CurrentDrawing_SelectionChanged; dockManager.ActiveContentChanged += dockManager_ActiveContentChanged; }
private void InitCommands() { App.Log("Иницилизация команд главного окна"); SettingsCommand = new DelegateCommand(o => { App.Log("Просмотр настроек"); Dialogs.IDialog dialog = null; Action updateUI = () => dialog.Close(); var control = new SettingsControl(updateUI); dialog = this.DialogCustom(control); dialog.Show(); }); UpdateCommand = new DelegateCommand(o => { cts = new CancellationTokenSource(); Dialogs.IDialog dialog = this.DialogInfo(Strings.UpdatingInProgress, null, MessageBoxImage.None, TMPApplication.WpfDialogs.DialogMode.Cancel); dialog.CloseBehavior = TMPApplication.WpfDialogs.DialogCloseBehavior.ExplicitClose; dialog.Cancel = () => { cts.Cancel(); dialog.CanCancel = false; }; dialog.Show(); if (CheckAvailability() == false) { this.ShowDialogWarning(Strings.MessageServerNotAvailability, null, () => dialog.Close()); return; } try { this.ShowDialogInfo(Strings.OnUpdatingPointsList, null, () => { App.Log("Получение списка точек от сервиса"); _rootEmcosGroup = null; try { _rootEmcosGroup = Utils.Base64StringToObject <ListPoint>(Properties.Settings.Default.RootPoint); } catch { } if (_rootEmcosGroup == null) { _rootEmcosGroup = DEFAULT_ROOT_EMCOS_GROUP; } _backgroudTask = Task.Factory.StartNew(async() => { _index = 0; var source = await FillPointsTree(_rootEmcosGroup); if (source.Count == 0 && String.IsNullOrEmpty(ServiceHelper.ErrorMessage) == false) { this.ShowDialogWarning(ServiceHelper.ErrorMessage); dialog.Close(); return; } InitModel(source); IsReadyToGetData = true; SaveList(source); dialog.Close(); }, cts.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); }); } catch (Exception ex) { App.Log("Получение списка точек от сервиса - ошибка"); dialog.Close(); this.ShowDialogError(String.Format(Strings.Error, App.GetExceptionDetails(ex))); } }); GetReportCommand = new DelegateCommand(o => { this.ShowDialogInfo(Strings.OnGettingData, null, () => { App.Log("Получение отчёта по точкам"); if (CheckAvailability() == false) { this.ShowDialogWarning(Strings.MessageServerNotAvailability); return; } var substations = _treeModel.Point.Items .Flatten(i => i.Items) .Where(i => (i.TypeCode == "SUBSTATION" || i.TypeCode == "VOLTAGE") && i.IsChecked) .OrderBy(i => i.ParentName) .ThenBy(i => i.Name) .ToList <ListPoint>(); if (substations == null || substations.Count == 0) { this.ShowDialogWarning(Strings.EmptyList); return; } Dialogs.IDialog dialog = null; btnPanel.IsEnabled = false; try { App.Current.MainWindow.TaskbarItemInfo = new System.Windows.Shell.TaskbarItemInfo() { Description = Strings.GetDataHeader, ProgressState = System.Windows.Shell.TaskbarItemProgressState.Normal, ProgressValue = 0.01 }; Action updateUI = () => { btnPanel.IsEnabled = true; dialog.Close(); }; Action completed = () => { App.Current.MainWindow.TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.None; updateUI(); }; Action canceled = () => { App.Current.MainWindow.TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Paused; this.ShowDialogInfo(Strings.Canceled); updateUI(); }; Action <Exception> faulted = (Exception e) => { App.Current.MainWindow.TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Error; this.ShowDialogError(App.GetExceptionDetails(e)); updateUI(); }; dialog = this.DialogCustom(new GetDataControl(substations, completed, canceled, faulted)); dialog.Show(); } catch (Exception ex) { App.Log("Получение отчётов - ошибка"); this.ShowDialogError(App.GetExceptionDetails(ex), null, () => TMPApplication.DispatcherExtensions.InUi(() => btnPanel.IsEnabled = true)); dialog.Close(); } }); }, o => IsReadyToGetData); GetEnergyCommand = new DelegateCommand(o => { this.ShowDialogInfo(Strings.OnGettingData, null, () => { App.Log("Получение суточных значений"); if (CheckAvailability() == false) { this.ShowDialogWarning(Strings.MessageServerNotAvailability); return; } Dialogs.IDialog dialog = null; btnPanel.IsEnabled = false; try { App.Current.MainWindow.TaskbarItemInfo = new System.Windows.Shell.TaskbarItemInfo(); App.Current.MainWindow.TaskbarItemInfo.Description = Strings.GetDataHeader; App.Current.MainWindow.TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Normal; App.Current.MainWindow.TaskbarItemInfo.ProgressValue = 0.01; Action updateUI = () => { TMPApplication.DispatcherExtensions.InUi(() => btnPanel.IsEnabled = true); dialog.Close(); }; Action completed = () => { App.Current.MainWindow.TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.None; updateUI(); }; Action canceled = () => { App.Current.MainWindow.TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Paused; this.ShowDialogInfo(Strings.Canceled, Strings.Message, null); updateUI(); }; Action <Exception> faulted = (Exception e) => { App.Current.MainWindow.TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Error; this.ShowDialogError(App.GetExceptionDetails(e)); updateUI(); }; dialog = this.DialogCustom(new GetEnergyControl(_treeModel.Point.Items, completed, canceled, faulted)); dialog.Show(); } catch (Exception ex) { App.Log("Получение суточных значений - ошибка"); this.ShowDialogError(App.GetExceptionDetails(ex), null, () => TMPApplication.DispatcherExtensions.InUi(() => btnPanel.IsEnabled = true)); dialog.Close(); } }); }, o => IsReadyToGetData); TreeCheckOrUncheckItemsCommand = new DelegateCommand( o => { ICSharpCode.TreeView.SharpTreeView tree = o as ICSharpCode.TreeView.SharpTreeView; if (tree != null) { ListPoint point = (ListPoint)tree.SelectedItem; if (point != null && point.Items != null) { foreach (var child in point.Items) { if (child.TypeCode == "FES" || child.TypeCode == "RES" || child.TypeCode == "SUBSTATION" || child.TypeCode == "VOLTAGE") { child.IsChecked = !child.IsChecked; } } } } }, o => _treeModel != null && _treeModel.Children != null && _treeModel.Children.Count > 0); TreeUnselectAllCommand = new DelegateCommand( o => { if (_treeModel != null) { foreach (var item in _treeModel.Point.Items) { ForEachPointInTree(item, p => true, p => p.IsChecked = false); } } }, o => _treeModel != null && _treeModel.Children != null && _treeModel.Children.Count > 0); TreeSelectAllCommand = new DelegateCommand( o => { if (_treeModel != null) { foreach (var item in _treeModel.Point.Items) { ForEachPointInTree(item, p => p.TypeCode == "SUBSTATION" || p.TypeCode == "VOLTAGE", p => p.IsChecked = true); } } }, o => _treeModel != null && _treeModel.Children != null && _treeModel.Children.Count > 0); }