示例#1
0
        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);
        }
示例#2
0
 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));
 }
示例#3
0
        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();
        }
示例#4
0
        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();
        }
示例#5
0
        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));
        }
示例#6
0
        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());
        }
示例#7
0
        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());
        }
示例#8
0
        /// <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);
            }
        }
示例#9
0
        public override bool IsLeaf(Aga.Controls.Tree.TreePath treePath)
        {
            PiscesObject o = treePath.LastNode as PiscesObject;

            return(!(o is PiscesFolder));
        }
示例#10
0
 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);
 }
示例#11
0
 /// <summary>
 /// Saves Properties to database for Series or Folder
 /// </summary>
 public void SaveProperties(PiscesObject o)
 {
     SaveSeriesRow(o.SeriesCatalogRow);
 }
示例#12
0
 private void AssignImage(PiscesObject o)
 {
     o.Icon = AssignIcon(o.SeriesCatalogRow.iconname);
 }
示例#13
0
        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;
        }
示例#14
0
        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();
               }
        }
示例#15
0
        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;
            }
        }
示例#16
0
 public ParentChangedEventArgs(PiscesObject o, PiscesFolder folder)
 {
     m_piscesObject = o;
     m_folder       = folder;
 }
示例#17
0
 public SortChangedEventArgs(PiscesObject o, int sortOrder)
 {
     this.m_PiscesObject = o;
     this.m_sortOrder = sortOrder;
 }
示例#18
0
 public SortChangedEventArgs(PiscesObject o, int sortOrder)
 {
     this.m_PiscesObject = o;
     this.m_sortOrder    = sortOrder;
 }