/* public MingTreeViewItem GetRootNode(MingTreeViewItem treeViewItem) { var climb = treeViewItem; while (climb.Parent != null) { climb = climb.Parent; } return climb; }*/ public ConnectionInfo GetNodeConnection(MingTreeViewItem treeViewItem) { var climb = treeViewItem; while (!(climb.Data is IConnectionProvider)) { climb = climb.Parent; } return (climb.Data as IConnectionProvider).ConnectionInfo; }
public void CompactCollections(MingTreeViewItem node, ConnectionInfo cnnInfo, string database) { var confirm = new MessageBox(); var message = database == null ? string.Format(Properties.Resources.CompactCollections_ConfirmAll, cnnInfo.Host, cnnInfo.Port) : string.Format(Properties.Resources.CompactCollections_Confirm, database); if (!confirm.ShowConfirm(_mingApp.MainWindow, message)) { return; } var operation = new OperationStatus { IsIndeterminate = true, Title = Properties.Resources.CompactCollections_Title, Description = Properties.Resources.CompactCollections_DescCounting }; _mingApp.AddLongRunningOperation(operation); var task = new CancelableTask(() => DoCompactCollections(operation, cnnInfo, database), null); task.Execute(); }
public void CopyCollection(MingTreeViewItem node, ConnectionInfo cnnInfo, string database, string collection) { var ted = new TextEntryDialogController(_mingApp.MainWindow, Properties.Resources.CopyCollection_Title, Properties.Resources.CreateCollection_Prompt); ted.Text = collection; if (!ted.ShowDialog()) { return; } var name = ted.Text.Trim(); if (string.IsNullOrWhiteSpace(name)) { return; } var operation = new OperationStatus { IsIndeterminate = true, Title = Properties.Resources.CopyCollection_OpTitle, Description = Properties.Resources.CopyCollection_Counting }; _mingApp.AddLongRunningOperation(operation); var task = new CancelableTask(() => DoCopyCollection(node, operation, cnnInfo, database, collection, name), null); task.Execute(); }
private void DoCopyCollection(MingTreeViewItem node, OperationStatus operation, ConnectionInfo cnnInfo, string database, string collection, string newCollection) { try { if (MongoUtilities.Create(cnnInfo).GetDatabase(database).CollectionExists(newCollection)) { operation.IsSuccess = false; operation.IsComplete = true; operation.Description = string.Format(Properties.Resources.CopyCollection_Exists, newCollection); return; } var src = MongoUtilities.Create(cnnInfo).GetDatabase(database).GetCollection(collection); var dest = MongoUtilities.Create(cnnInfo).GetDatabase(database).GetCollection(newCollection); var count = src.Count(); operation.IsIndeterminate = false; operation.Description = string.Format(Properties.Resources.CopyCollection_Copying, 0); var copied = 0; var srcCur = src.FindAll().SetSnapshot(); foreach (var item in srcCur) { dest.Insert(item); copied++; operation.Description = string.Format(Properties.Resources.CopyCollection_Copying, copied); operation.PercentComplete = (int)((100.0 / (double)count) * (double)copied); } operation.IsSuccess = true; operation.IsComplete = true; } catch (Exception ex) { operation.Description = string.Format(Properties.Resources.CopyCollections_Error, ex.Message); operation.IsSuccess = false; operation.IsComplete = true; } _mingApp.RefreshTreeViewItem(node.Parent); }
private void TreeViewItemsLoaded(MingTreeViewItem parent, IEnumerable<MingTreeViewItem> items) { parent.Items.Clear(); if (items == null || items.Count() == 0) { parent.AddChild(new MingTreeViewItem(Utilities.BitmapImageFromBitmap(Properties.Resources.warning), Properties.Resources.TreeView_NoData, null, false)); } else { items.ToList().ForEach(item => parent.AddChild(item)); } MingApp.Instance.IndicateIdle(); }
private void LoadChildren(MingTreeViewItem node) { MingApp.Instance.IndicateBusy(null); var cnn = GetNodeConnection(node); var plugin = PluginManager.Instance.GetPluginInstance(cnn.ServiceId); var loadtask = new CancelableTask<IEnumerable<MingTreeViewItem>>( () => plugin.TreeViewClient.NodeExpanded(node, cnn), result => TreeViewItemsLoaded(node, result)); loadtask.Execute(); }
private void DisplayConnection(ConnectionInfo cnnInfo) { var img = Utilities.BitmapImageFromBitmap(PluginManager.Instance.GetPluginInstance(cnnInfo.ServiceId).TreeViewIcon); MingTreeViewItem cnnObj; if (!string.IsNullOrWhiteSpace(cnnInfo.Name)) { cnnObj = new MingTreeViewItem(img, cnnInfo.Name, new TreeViewRootNodeData(cnnInfo), true); } else { if (!string.IsNullOrWhiteSpace(cnnInfo.Username)) { cnnObj = new MingTreeViewItem(img, string.Format("{0}@{1}:{2}", cnnInfo.Username, cnnInfo.Host, cnnInfo.Port), new TreeViewRootNodeData(cnnInfo), true); } else { cnnObj = new MingTreeViewItem(img, string.Format("{0}:{1}", cnnInfo.Host, cnnInfo.Port), new TreeViewRootNodeData(cnnInfo), true); } } _treeView.Items.Add(cnnObj); }
public IEnumerable<string> GetActiveNodeContextMenuKeys(MingTreeViewItem node) { var items = new List<string>(); var nodeData = node.Data; if (nodeData is TreeViewRootNodeData) { items.Add(MenuFileDeleteConnection); } if (node.HasDynamicChildren) { items.Add(MenuRefresh); } return items; }
public void MenuItemHandler(ConnectionInfo cnnInfo, MingTreeViewItem node, string menuKey) { throw new NotImplementedException(); }
void ConnectionsTreeController_SelectedItemChanged(MingTreeViewItem selectedItem) { _menuController.ActivateToolBarItems(); }
public IList<object> TreeViewContextMenu(MingTreeViewItem originator) { var plugin = PluginManager.Instance.GetPluginInfo(_connectionsTreeController.GetNodeConnection(originator).ServiceId); return _menuController.GetContextMenu(originator, plugin); }
public void RefreshTreeViewItem(MingTreeViewItem node) { _mainWindow.Dispatcher.Invoke(new Action(() => _connectionsTreeController.RefreshNode(node))); }
public void MenuItemHandler(ConnectionInfo cnnInfo, MingTreeViewItem node, string menuKey) { switch (menuKey) { case MenuFileAddConnection: Connect(); break; case MenuFileDeleteConnection: Disconnect(cnnInfo); break; case MenuFileImport: var import = new ConnectionsPort(); import.ImportConnections(); break; case MenuFileExport: var export = new ConnectionsPort(); export.ExportConnections(); break; case MenuFileExit: End(); break; case MenuRefresh: _connectionsTreeController.RefreshSelectedNode(); break; case MenuHelpAbout: var about = new Ming.Forms.AboutForm(); about.Owner = _mainWindow; about.ShowDialog(); break; } }
public ConnectionInfo GetTreeViewNodeConnectionInfo(MingTreeViewItem item) { if (item == null) { return null; } return _connectionsTreeController.GetNodeConnection(item); }
public void RefreshNode(MingTreeViewItem node) { LoadChildren(node); }
public System.Collections.Generic.IEnumerable<string> GetActiveMenuKeys(MingTreeViewItem activeNode) { return System.Linq.Enumerable.Empty<string>(); }
public IEnumerable<MingTreeViewItem> NodeExpanded(MingTreeViewItem node, ConnectionInfo cnnInfo) { var nodeData = node.Data; if (nodeData is TreeViewRootNodeData) { return LoadReplicaSet(cnnInfo); } if (nodeData is ReplicaSetMemberNode) { return LoadDatabases(cnnInfo); } if (nodeData is DatabaseNode) { return GetDatabaseObjectNodes(nodeData as DatabaseNode); } if (nodeData is CollectionsNode) { return LoadCollections(nodeData as CollectionsNode, cnnInfo); } if (nodeData is CollectionNode) { return GetCollectionObjectNodes(nodeData as CollectionNode); } if (nodeData is CollectionIndexesNode) { return LoadCollectionIndexes(nodeData as CollectionIndexesNode, cnnInfo); } if (nodeData is CollectionPropertiesNode) { return LoadCollectionProperties(nodeData as CollectionPropertiesNode, cnnInfo); } if (nodeData is CollectionPropertyNode) { return LoadPropertyProperties(nodeData as CollectionPropertyNode, cnnInfo); } return null; }
public IEnumerable<string> GetActiveNodeContextMenuKeys(MingTreeViewItem node) { var keys = new List<string>(); var nodeData = node.Data; if (nodeData is DatabaseNode || nodeData is CollectionsNode || nodeData is CollectionsEmptyNode) { keys.Add(Menus.NewCollection); if (!(nodeData is CollectionIndexesEmptyNode)) { keys.Add(Menus.CompactCollections); keys.Add(Menus.OpenConsole); keys.Add(Menus.SystemStatus); } } if (nodeData is DatabaseNode) { keys.Add(Menus.DeleteDatabase); keys.Add(Menus.EvaluateJavaScript); keys.Add(Menus.CopyCollections); keys.Add(Menus.OpenConsole); keys.Add(Menus.SystemStatus); keys.Add(Menus.DeleteColsDBs); } if (nodeData is TreeViewRootNodeData) { var rootNode = nodeData as TreeViewRootNodeData; if (rootNode != null) { if (rootNode.ConnectionInfo.ServiceId == MongoPlugin.PluginId) { keys.Add(Menus.NewDatabase); keys.Add(Menus.WatchLogs); keys.Add(Menus.CopyCollections); keys.Add(Menus.OpenConsole); keys.Add(Menus.SystemStatus); keys.Add(Menus.DeleteColsDBs); } } } if (nodeData is ReplicaSetMemberNode) { keys.Add(Menus.NewDatabase); keys.Add(Menus.CompactCollections); keys.Add(Menus.WatchLogs); keys.Add(Menus.CopyCollections); keys.Add(Menus.OpenConsole); keys.Add(Menus.SystemStatus); keys.Add(Menus.DeleteColsDBs); } else if (nodeData is DatabasesEmptyNode) { keys.Add(Menus.NewDatabase); keys.Add(Menus.CompactCollections); } if (nodeData is CollectionNode) { keys.Add(Menus.ViewCollection); keys.Add(Menus.DeleteCollection); keys.Add(Menus.RenameCollection); keys.Add(Menus.CopyCollection); keys.Add(Menus.CopyCollections); keys.Add(Menus.ManageIndexes); keys.Add(Menus.OpenConsole); keys.Add(Menus.SystemStatus); } if (nodeData is CollectionsNode) { keys.Add(Menus.CopyCollections); keys.Add(Menus.OpenConsole); keys.Add(Menus.SystemStatus); keys.Add(Menus.DeleteColsDBs); } if (nodeData is CollectionIndexesNode) { keys.Add(Menus.ManageIndexes); } if (nodeData is CollectionIndexNode) { keys.Add(Menus.ManageIndexes); } return keys; }
public IList<object> GetContextMenu(MingTreeViewItem originator, PluginInfo plugin) { _contextMenuOriginator = originator; var keys = plugin.Instance.TreeViewClient.GetActiveNodeContextMenuKeys(originator); _contextMenuKeyProviders.ToList().ForEach(item => keys = keys.Union(item.GetActiveNodeContextMenuKeys(originator))); var items = _contextMenuItems.Where(item => item is MenuItem ? keys.Contains(((MenuItem) item).Name) : true).ToList(); if (items.Count > 0) { if (items[0] is Separator) { items.RemoveAt(0); } if (items.Count > 0) { if (items.Last() is Separator) { items.RemoveAt(items.Count - 1); } } } return items; }
public void AddChild(MingTreeViewItem child) { child._parent = this; _items.Add(child); }
public IEnumerable<string> GetActiveMenuKeys(MingTreeViewItem activeNode) { var keys = new List<string>(); keys.Add(MenuFileAddConnection); if (activeNode != null) { keys.Add(MenuFileDeleteConnection); } keys.Add(MenuFileImport); if (SettingsManager.Instance.Connections.Count > 0) { keys.Add(MenuFileExport); } keys.Add(MenuFileExit); keys.Add(MenuHelpAbout); return keys; }