public static INiHierarchy FindByDocument(this INiHierarchy self, string document) { var projectItem = self as INiProjectItem; if (projectItem != null) { string fileName; ErrorUtil.ThrowOnFailure(projectItem.GetFileName(out fileName)); if (fileName != null && String.Equals(document, fileName, StringComparison.OrdinalIgnoreCase)) { return(self); } } foreach (var child in self.GetChildren()) { var result = FindByDocument(child, document); if (result != null) { return(result); } } return(null); }
public HResult Register(string document, INiHierarchy hier, INiPersistDocData docData, out int cookie) { cookie = -1; try { if (document == null) { throw new ArgumentNullException("document"); } if (docData == null) { throw new ArgumentNullException("docData"); } cookie = Interlocked.Increment(ref _lastCookie); _registrations.Add(cookie, new Registration(document, hier, docData)); return(HResult.OK); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
public virtual HResult OpenItem(INiHierarchy hier, out INiWindowFrame windowFrame) { windowFrame = null; try { if ((NiHierarchyType?)hier.GetPropertyEx(NiHierarchyProperty.ItemType) == NiHierarchyType.File) { string fileName; ErrorUtil.ThrowOnFailure(((INiProjectItem)hier).GetFileName(out fileName)); return ((INiOpenDocumentManager)GetService(typeof(INiOpenDocumentManager))).OpenStandardEditor( null, fileName, hier, this, out windowFrame ); } return HResult.False; } catch (Exception ex) { return ErrorUtil.GetHResult(ex); } }
public HResult IsDocumentOpen(string document, out INiHierarchy hier, out INiWindowFrame windowFrame) { hier = null; windowFrame = null; try { if (document == null) { throw new ArgumentNullException("document"); } OpenDocument openDocument; if (_openDocuments.TryGetValue(document, out openDocument)) { hier = openDocument.Item; windowFrame = openDocument.WindowFrame; return(HResult.OK); } return(HResult.False); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
public void OnPropertyChanged(INiHierarchy hier, int property) { try { switch ((NiHierarchyProperty)property) { case NiHierarchyProperty.Name: _manager.TreeNode.Text = (string)hier.GetPropertyEx(NiHierarchyProperty.Name); _manager.Reorder(); break; case NiHierarchyProperty.SortPriority: _manager.Reorder(); break; case NiHierarchyProperty.Image: case NiHierarchyProperty.OverlayImage: case NiHierarchyProperty.ItemType: _manager.UpdateImage(); break; } } catch (Exception ex) { Log.Warn("Failed to process hierarchy property change", ex); } }
public virtual HResult OpenItem(INiHierarchy hier, out INiWindowFrame windowFrame) { windowFrame = null; try { if ((NiHierarchyType?)hier.GetPropertyEx(NiHierarchyProperty.ItemType) == NiHierarchyType.File) { string fileName; ErrorUtil.ThrowOnFailure(((INiProjectItem)hier).GetFileName(out fileName)); return(((INiOpenDocumentManager)GetService(typeof(INiOpenDocumentManager))).OpenStandardEditor( null, fileName, hier, this, out windowFrame )); } return(HResult.False); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
public HResult GetDocumentInfo(int cookie, out string document, out INiHierarchy hier, out INiPersistDocData docData) { document = null; hier = null; docData = null; try { Registration registration; if (!_registrations.TryGetValue(cookie, out registration)) { throw new ArgumentOutOfRangeException("cookie", NeutralResources.DocumentNotRegistered); } document = registration.Document; hier = registration.Item; docData = registration.DocData; return(HResult.OK); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
public static object GetPropertyEx(this INiHierarchy self, int property) { object result; ErrorUtil.ThrowOnFailure(self.GetProperty(property, out result)); return(result); }
public Node(INiHierarchy hierarchy) { if (hierarchy != null) { Name = (string)hierarchy.GetPropertyEx(NiHierarchyProperty.Name); } Children = new Dictionary <INiHierarchy, Node>(); }
private void LoadNode(TreeNodeCollection nodes, INiHierarchy item) { var treeNode = new TreeNodeManager(this, item).TreeNode; nodes.Add(treeNode); foreach (var child in item.GetChildren()) { LoadNode(treeNode.Nodes, child); } }
private static INiHierarchy GetLastChild(INiHierarchy hier) { var lastChild = hier.GetChildren().LastOrDefault(); while (lastChild != null) { hier = lastChild; lastChild = hier.GetChildren().LastOrDefault(); } return(hier); }
public static INiHierarchy FindNext(this INiHierarchy self) { // Descend into children. var firstChild = (INiHierarchy)self.GetPropertyEx(NiHierarchyProperty.FirstChild); if (firstChild != null) { return(firstChild); } // Find the next sibling. var nextSibling = (INiHierarchy)self.GetPropertyEx(NiHierarchyProperty.NextSibling); if (nextSibling != null) { return(nextSibling); } // Look at the parents. var root = self; var parent = (INiHierarchy)self.GetPropertyEx(NiHierarchyProperty.Parent); while (parent != null) { // If the parent has a next sibling, return that. nextSibling = (INiHierarchy)parent.GetPropertyEx(NiHierarchyProperty.NextSibling); if (nextSibling != null) { return(nextSibling); } // Else, look at the parent of the parent. root = parent; parent = (INiHierarchy)parent.GetPropertyEx(NiHierarchyProperty.Parent); } // If the root didn't have a next sibling, we re-start from the root. // If we started at the root (i.e. the root is the only hierarchy), // we don't return it. if (root != self) { return(root); } return(null); }
public static INiHierarchy FindPrevious(this INiHierarchy self) { var parent = (INiHierarchy)self.GetPropertyEx(NiHierarchyProperty.Parent); // Look at the parent. if (parent != null) { // Find the previous sibling of the parent. INiHierarchy previousSibling = null; foreach (var child in parent.GetChildren()) { if (child == self) { break; } previousSibling = child; } // If the parent had a previous sibling, find the last child // if that sibling. if (previousSibling != null) { return(GetLastChild(previousSibling)); } // Else, return the parent. return(parent); } // We're at the root. In that case, descend into the last child of the root. var lastChild = GetLastChild(self); // Don't return the last child if it's the same as the root // (i.e. is the only node). if (self == lastChild) { return(null); } return(lastChild); }
public TreeNodeManager(ProjectExplorerControl owner, INiHierarchy item) { _owner = owner; Item = item; _listener = new Listener(this); TreeNode = new TreeNode { Text = (string)Item.GetPropertyEx(NiHierarchyProperty.Name), Tag = this }; UpdateImage(); }
public HResult GetSelectedHierarchy(out INiHierarchy hier) { hier = null; try { if (_window != null) return _window.GetSelectedHierarchy(out hier); return HResult.OK; } catch (Exception ex) { return ErrorUtil.GetHResult(ex); } }
public static IEnumerable <INiHierarchy> GetChildren(this INiHierarchy self) { if (self == null) { throw new ArgumentNullException("self"); } var child = (INiHierarchy)self.GetPropertyEx(NiHierarchyProperty.FirstChild); while (child != null) { yield return(child); child = (INiHierarchy)child.GetPropertyEx(NiHierarchyProperty.NextSibling); } }
public HResult GetSelectedHierarchy(out INiHierarchy hier) { hier = null; try { var node = _treeView.SelectedNode; if (node != null) hier = ((TreeNodeManager)node.Tag).Item; return HResult.OK; } catch (Exception ex) { return ErrorUtil.GetHResult(ex); } }
public HResult GetSelectedHierarchy(out INiHierarchy hier) { hier = null; try { if (_window != null) { return(_window.GetSelectedHierarchy(out hier)); } return(HResult.OK); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
public HResult OpenStandardEditor(Guid?editorGuid, string document, INiHierarchy hier, IServiceProvider serviceProvider, out INiWindowFrame windowFrame) { windowFrame = null; try { if (document == null) { throw new ArgumentNullException("document"); } if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } INiEditorFactory editorFactory; Guid resolvedEditorGuid; var hr = ((NiEnv)GetService(typeof(INiEnv))).GetStandardEditorFactory(null, document, out editorFactory, out resolvedEditorGuid); if (ErrorUtil.Failure(hr)) { return(hr); } if (editorFactory == null) { return(HResult.False); } return(OpenSpecificEditor( document, resolvedEditorGuid, editorFactory, hier, serviceProvider, out windowFrame )); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
private static Node InsertNode(Node node, INiHierarchy hier) { var parent = (INiHierarchy)hier.GetPropertyEx(NiHierarchyProperty.Parent); if (parent != null) { node = InsertNode(node, parent); } Node result; if (!node.Children.TryGetValue(hier, out result)) { result = new Node(hier); node.Children.Add(hier, result); } return(result); }
public HResult GetSelectedHierarchy(out INiHierarchy hier) { hier = null; try { var node = _treeView.SelectedNode; if (node != null) { hier = ((TreeNodeManager)node.Tag).Item; } return(HResult.OK); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
public OpenDocument(NiOpenDocumentManager manager, string document, INiHierarchy item, INiWindowFrame windowFrame, int rdtCookie, INiPersistDocData docData) { _manager = manager; _rdtCookie = rdtCookie; _docData = docData; Document = document; Item = item; WindowFrame = windowFrame; new Listener(this); if (docData != null) { ErrorUtil.ThrowOnFailure(windowFrame.GetCaption(out _initialCaption)); UpdateDirtyFlag(); ((NiShell)manager.GetService(typeof(INiShell))).RequerySuggested += OpenDocument_RequerySuggested; } }
public HResult OpenSpecificEditor(string document, Guid editorType, INiHierarchy hier, IServiceProvider serviceProvider, out INiWindowFrame windowFrame) { windowFrame = null; try { INiEditorFactory editorFactory; var hr = ((INiEnv)GetService(typeof(INiEnv))).GetStandardEditorFactory(editorType, null, out editorFactory); if (ErrorUtil.Failure(hr)) { return(hr); } return(OpenSpecificEditor(document, editorType, editorFactory, hier, serviceProvider, out windowFrame)); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
private void LoadDirectory(INiHierarchy parentItem, string path) { foreach (string subPath in Directory.GetDirectories(path)) { if (new FileInfo(subPath).Attributes.HasFlag(FileAttributes.Hidden)) { continue; } var projectItem = new NiProjectItem(); projectItem.SetPropertyEx(NiHierarchyProperty.ItemType, NiHierarchyType.Directory); projectItem.SetFileName(subPath); projectItem.SetPropertyEx(NiHierarchyProperty.SortPriority, -1); projectItem.SetPropertyEx(NiHierarchyProperty.Name, Path.GetFileName(subPath)); projectItem.SetPropertyEx(NiHierarchyProperty.Parent, parentItem); LoadDirectory(projectItem, subPath); } foreach (string subPath in Directory.GetFiles(path)) { if ( new FileInfo(subPath).Attributes.HasFlag(FileAttributes.Hidden) || String.Equals(Path.GetExtension(subPath), ".niproj", StringComparison.OrdinalIgnoreCase) ) { continue; } var projectItem = new NiProjectItem(); projectItem.SetPropertyEx(NiHierarchyProperty.Name, Path.GetFileName(subPath)); projectItem.SetPropertyEx(NiHierarchyProperty.ItemType, NiHierarchyType.File); projectItem.SetFileName(subPath); projectItem.SetPropertyEx(NiHierarchyProperty.Parent, parentItem); } }
protected override bool FindNext() { if (_current == null) { _current = GetCurrentHierarchy(_serviceProvider); // If we're finding all items, start from the root. if ( _findState.Options.HasFlag(NiFindOptions.FindAll) || _findState.Options.HasFlag(NiFindOptions.ReplaceAll) ) { _current = (INiHierarchy)_current.GetPropertyEx(NiHierarchyProperty.Root); } if (_current == null) { return(false); } } else { _current = _findState.Options.HasFlag(NiFindOptions.Backwards) ? _current.FindPrevious() : _current.FindNext(); if (_current == null || _seen.Contains(_current)) { _current = null; return(false); } } _seen.Add(_current); return(true); }
private void LoadDirectory(INiHierarchy parentItem, string path) { foreach (string subPath in Directory.GetDirectories(path)) { if (new FileInfo(subPath).Attributes.HasFlag(FileAttributes.Hidden)) continue; var projectItem = new NiProjectItem(); projectItem.SetPropertyEx(NiHierarchyProperty.ItemType, NiHierarchyType.Directory); projectItem.SetFileName(subPath); projectItem.SetPropertyEx(NiHierarchyProperty.SortPriority, -1); projectItem.SetPropertyEx(NiHierarchyProperty.Name, Path.GetFileName(subPath)); projectItem.SetPropertyEx(NiHierarchyProperty.Parent, parentItem); LoadDirectory(projectItem, subPath); } foreach (string subPath in Directory.GetFiles(path)) { if ( new FileInfo(subPath).Attributes.HasFlag(FileAttributes.Hidden) || String.Equals(Path.GetExtension(subPath), ".niproj", StringComparison.OrdinalIgnoreCase) ) continue; var projectItem = new NiProjectItem(); projectItem.SetPropertyEx(NiHierarchyProperty.Name, Path.GetFileName(subPath)); projectItem.SetPropertyEx(NiHierarchyProperty.ItemType, NiHierarchyType.File); projectItem.SetFileName(subPath); projectItem.SetPropertyEx(NiHierarchyProperty.Parent, parentItem); } }
public virtual HResult AddItem(INiHierarchy location, string file) { throw new NotImplementedException(); }
private HResult OpenSpecificEditor(string document, Guid editorType, INiEditorFactory editorFactory, INiHierarchy hier, IServiceProvider serviceProvider, out INiWindowFrame windowFrame) { windowFrame = null; try { if (document == null) { throw new ArgumentNullException("document"); } if (editorFactory == null) { throw new ArgumentNullException("editorFactory"); } if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } OpenDocument openDocument; if (_openDocuments.TryGetValue(document, out openDocument)) { ErrorUtil.ThrowOnFailure(openDocument.WindowFrame.Show()); return(HResult.OK); } string editorCaption; INiWindowPane windowPane; var hr = editorFactory.CreateEditor(document, out editorCaption, out windowPane); if (ErrorUtil.Failure(hr)) { return(hr); } if (windowPane == null) { return(HResult.False); } hr = windowPane.SetSite(serviceProvider); if (ErrorUtil.Failure(hr)) { return(hr); } hr = ((INiShell)GetService(typeof(INiShell))).CreateToolWindow( windowPane, NiDockStyle.Document, NiToolWindowOrientation.Top, out windowFrame ); if (ErrorUtil.Failure(hr)) { return(hr); } ErrorUtil.ThrowOnFailure(windowFrame.SetCaption( editorCaption ?? Path.GetFileName(document) )); hr = windowPane.Initialize(); if (ErrorUtil.Failure(hr)) { return(hr); } var docData = windowPane as INiPersistDocData; if (docData == null) { var textBufferProvider = windowPane as INiTextBufferProvider; if (textBufferProvider != null) { INiTextBuffer textBuffer; hr = textBufferProvider.GetTextBuffer(out textBuffer); if (ErrorUtil.Failure(hr)) { return(hr); } docData = textBuffer; } } int rdtCooke = -1; if (docData != null) { hr = docData.LoadDocData(document); if (ErrorUtil.Failure(hr)) { return(hr); } hr = ((INiRunningDocumentTable)GetService(typeof(INiRunningDocumentTable))).Register( document, hier, docData, out rdtCooke ); if (ErrorUtil.Failure(hr)) { return(hr); } } windowFrame.SetPropertyEx(NiFrameProperty.DocCookie, rdtCooke); windowFrame.SetPropertyEx(NiFrameProperty.DocView, windowPane); windowFrame.SetPropertyEx(NiFrameProperty.DocData, docData); windowFrame.SetPropertyEx(NiFrameProperty.Document, document); windowFrame.SetPropertyEx(NiFrameProperty.EditorType, editorType); windowFrame.SetPropertyEx(NiFrameProperty.Hierarchy, hier); windowFrame.SetPropertyEx(NiFrameProperty.Type, NiFrameType.Document); _openDocuments.Add(document, new OpenDocument( this, document, hier, windowFrame, rdtCooke, docData )); return(windowFrame.Show()); } catch (Exception ex) { return(ErrorUtil.GetHResult(ex)); } }
public void OnChildRemoved(INiHierarchy hier) { throw new NotImplementedException(); }
public static object GetPropertyEx(this INiHierarchy self, NiHierarchyProperty property) { return(GetPropertyEx(self, (int)property)); }
public Registration(string document, INiHierarchy item, INiPersistDocData docData) { Document = document; Item = item; DocData = docData; }
public static void SetPropertyEx(this INiHierarchy self, NiHierarchyProperty property, object value) { SetPropertyEx(self, (int)property, value); }
public virtual HResult RemoveItem(INiHierarchy hier) { throw new NotImplementedException(); }
private static INiHierarchy GetLastChild(INiHierarchy hier) { var lastChild = hier.GetChildren().LastOrDefault(); while (lastChild != null) { hier = lastChild; lastChild = hier.GetChildren().LastOrDefault(); } return hier; }
public HResult QuerySaveViaDialog(INiHierarchy[] hiers, out NiQuerySaveResult result) { result = NiQuerySaveResult.Cancel; try { if (hiers == null) throw new ArgumentNullException("hiers"); switch (SaveHierarchiesForm.ShowDialog(this, hiers)) { case DialogResult.Yes: result = NiQuerySaveResult.Save; break; case DialogResult.No: result = NiQuerySaveResult.DoNotSave; break; } return HResult.OK; } catch (Exception ex) { return ErrorUtil.GetHResult(ex); } }
protected override bool FindNext() { if (_current == null) { _current = GetCurrentHierarchy(_serviceProvider); // If we're finding all items, start from the root. if ( _findState.Options.HasFlag(NiFindOptions.FindAll) || _findState.Options.HasFlag(NiFindOptions.ReplaceAll) ) _current = (INiHierarchy)_current.GetPropertyEx(NiHierarchyProperty.Root); if (_current == null) return false; } else { _current = _findState.Options.HasFlag(NiFindOptions.Backwards) ? _current.FindPrevious() : _current.FindNext(); if (_current == null || _seen.Contains(_current)) { _current = null; return false; } } _seen.Add(_current); return true; }
public static void SetPropertyEx(this INiHierarchy self, int property, object value) { ErrorUtil.ThrowOnFailure(self.SetProperty(property, value)); }
public HResult GetSelectedHierarchy(out INiHierarchy hier) { return _control.GetSelectedHierarchy(out hier); }