public override System.Collections.IEnumerable GetChildren(Aga.Controls.Tree.TreePath treePath) { List <PiscesObject> items = new List <PiscesObject>(); if (treePath.IsEmpty()) { PiscesObject[] roots = db.GetRootObjects(); foreach (PiscesObject o in roots) { items.Add(o); } } else { PiscesObject s = treePath.LastNode as PiscesObject; PiscesObject[] children = db.GetChildren(s); foreach (PiscesObject si in children) { items.Add(si); } } return(items); }
public void ChangeParent(PiscesObject piscesObject, PiscesFolder piscesFolder) { if (piscesObject.Parent.ID == piscesFolder.ID) return; // nothing to do TimeSeriesDatabaseDataSet.SeriesCatalogRow r = GetSeriesRow(piscesObject.ID); r.ParentID = piscesFolder.ID; SaveSeriesRow(r); OnDatabaseChanged(GetPathArray(piscesObject.Parent)); OnDatabaseChanged(GetPathArray(piscesFolder)); }
public PiscesObject[] GetChildren(PiscesObject parent) { var tbl = GetChildrenRows(parent); List<PiscesObject> rval = new List<PiscesObject>(); for (int i = 0; i < tbl.Rows.Count; i++) { PiscesObject o = this.Factory.CreateObject(tbl[i]); o.Parent = parent as PiscesFolder; rval.Add(o); } return rval.ToArray(); }
private void treeView1_DragDrop(object sender, DragEventArgs e) { treeView1.BeginUpdate(); TreeNodeAdv[] nodes = (TreeNodeAdv[])e.Data.GetData(typeof(TreeNodeAdv[])); TreeNodeAdv dropNodeAdv = treeView1.DropPosition.Node; PiscesObject dropNode = treeView1.DropPosition.Node.Tag as PiscesObject; if (treeView1.DropPosition.Position == NodePosition.Inside && dropNode is PiscesFolder) { foreach (TreeNodeAdv n in nodes) { PiscesObject o = n.Tag as PiscesObject; OnNodeParentChanged(new ParentChangedEventArgs(o, dropNode as PiscesFolder)); } treeView1.DropPosition.Node.IsExpanded = true; } else { PiscesFolder parent = dropNodeAdv.Parent.Tag as PiscesFolder; PiscesObject nextItem = dropNode; int sortOrder = nextItem.SortOrder; if (treeView1.DropPosition.Position == NodePosition.Before) { sortOrder--; } foreach (TreeNodeAdv node in nodes) { OnNodeParentChanged(new ParentChangedEventArgs(node.Tag as PiscesObject, parent)); } Console.WriteLine("sort order for dragged object = " + sortOrder); foreach (TreeNodeAdv node in nodes) { PiscesObject o = node.Tag as PiscesObject; OnNodeSortOrderChanged(new SortChangedEventArgs(o, sortOrder)); } } treeView1.EndUpdate(); }
public void ChangeSortOrder(PiscesObject piscesObject, int sortOrder) { if (piscesObject.SortOrder == sortOrder) { return;// nothing to do } string sql = "Update seriescatalog set sortorder = sortorder+1 where parentid = " + piscesObject.Parent.ID + " and sortorder > " + sortOrder; int i = m_server.RunSqlCommand(sql); int newSortOrder = sortOrder + 1; sql = "Update seriescatalog set sortorder = " + newSortOrder + " Where id = " + piscesObject.ID; i = m_server.RunSqlCommand(sql); Logger.WriteLine("SortOrder changed for " + i + " items"); OnDatabaseChanged(GetPathArray(piscesObject.Parent)); }
public Series[] GetSelectedSeries() { var rval = new List <Series>(); if (IsCommandLine) { return(hydrometCommandLine1.SelectedSeries); } else { for (int i = 0; i < treeView1.SelectedNodes.Count; i++) { PiscesObject o = treeView1.SelectedNodes[i].Tag as PiscesObject; if (o is Series) { rval.Add(o as Series); } } } return(rval.ToArray()); }
public BasicRating[] GetSelectedRatings() { var rval = new List <BasicRating>(); if (IsCommandLine) { return(rval.ToArray()); } else { for (int i = 0; i < treeView1.SelectedNodes.Count; i++) { PiscesObject o = treeView1.SelectedNodes[i].Tag as PiscesObject; if (o is BasicRating) { rval.Add(o as BasicRating); } } } return(rval.ToArray()); }
/// <summary> /// Propertie can be selected for a single object /// </summary> private void Properties(object sender, EventArgs e) { try { PiscesObject v = tree1.SelectedObject; if (v is Series) { Series s = v as Series; string tmpExp = s.Expression; SeriesProperties p = new SeriesProperties(s, DB); if (p.ShowDialog() == DialogResult.OK) { DB.SaveProperties(s); if (s is CalculationSeries && tmpExp != s.Expression && s.Expression.Trim() != "") { // ShowAsBusy("calculating " + s.Expression); //(s as CalculationSeries).Calculate(); } //tree1_SelectionChanged(this, EventArgs.Empty); DrawBasedOnTreeSelection(); } } else if (v is PiscesFolder) { PiscesFolder f = v as PiscesFolder; FolderProperties p = new FolderProperties(f); if (p.ShowDialog() == DialogResult.OK) { DB.SaveProperties(f); } } } catch (Exception propEx) { MessageBox.Show(propEx.Message); } }
public override bool IsLeaf(Aga.Controls.Tree.TreePath treePath) { PiscesObject o = treePath.LastNode as PiscesObject; return(!(o is PiscesFolder)); }
public void Delete(PiscesObject o) { PiscesObject parent = o.Parent; TimeSeriesDatabaseDelete d = new TimeSeriesDatabaseDelete(this, o); d.Delete(); if (parent is PiscesFolder) RefreshFolder(parent as PiscesFolder); }
/// <summary> /// Saves Properties to database for Series or Folder /// </summary> public void SaveProperties(PiscesObject o) { SaveSeriesRow(o.SeriesCatalogRow); }
private void AssignImage(PiscesObject o) { o.Icon = AssignIcon(o.SeriesCatalogRow.iconname); }
public List<PiscesObject> GetRootObjects() { var tbl = new TimeSeriesDatabaseDataSet.SeriesCatalogDataTable(); string sql = "select * from seriescatalog where id = parentid "; m_server.FillTable(tbl, sql); if (tbl.Rows.Count == 0) { Reclamation.Core.Logger.WriteLine("Tree Requires at least one root Node"); Logger.WriteLine("AutoCreation of New Root Folder"); CreateRootFolder(); m_server.FillTable(tbl, sql); } List<PiscesObject> rval = new List<PiscesObject>(); for (int i = 0; i < tbl.Rows.Count; i++) { rval.Add(Factory.CreateObject(tbl[i])); } if (rval.Count > 0) m_root = rval[0]; return rval; }
object[] GetPathArray(PiscesObject node) { if (node == null) return new object[] { };// empty if (node.ID == m_root.ID) { return new object[] {node}; } else { Stack<object> stack = new Stack<object>(); var rootObjectsID = GetRootObjects().Select(x => x.ID).ToList(); while (!rootObjectsID.Contains(node.ID)) { stack.Push(node); if (node.Parent == null) { System.Windows.Forms.MessageBox.Show("oops node.Parent == null"); Console.WriteLine("oops node.Parent == null"); break; } node = node.Parent; } stack.Push(node); //root object return stack.ToArray(); } }
private TimeSeriesDatabaseDataSet.SeriesCatalogDataTable GetChildrenRows(PiscesObject parent) { if (Filter.Trim() == "") { string sql = "select * from seriescatalog where parentid = " + parent.ID + " and id <> " + parent.ID + " order by sortorder"; var tbl = new TimeSeriesDatabaseDataSet.SeriesCatalogDataTable(); m_server.FillTable(tbl, sql); return tbl; } else {// filtered catalog var sc = GetFilteredCatalog(); var tbl = new TimeSeriesDatabaseDataSet.SeriesCatalogDataTable(); var rows = sc.Select("parentid=" + parent.ID+ " and id <> parentid","sortorder"); foreach (var item in rows) { var newRow = tbl.NewSeriesCatalogRow(); newRow.ItemArray = item.ItemArray; tbl.Rows.Add(newRow); } tbl.AcceptChanges(); return tbl; } }
public ParentChangedEventArgs(PiscesObject o, PiscesFolder folder) { m_piscesObject = o; m_folder = folder; }
public SortChangedEventArgs(PiscesObject o, int sortOrder) { this.m_PiscesObject = o; this.m_sortOrder = sortOrder; }