Пример #1
0
 private void UpdateTabControlsTarget()
 {
     for (int i = tabControlMain.Items.Count - 1; 0 <= i; i--)
     {
         TabItem      item = tabControlMain.Items[i] as TabItem;
         UIElement    c    = item.Content as UIElement;
         Type         t    = c.GetType();
         PropertyInfo p    = t.GetProperty("Target");
         if (p == null)
         {
             continue;
         }
         SchemaObject o = p?.GetValue(c) as SchemaObject;
         if (o != null)
         {
             Schema sch = CurrentDataSet.Schemas[o.SchemaName];
             o = sch?.GetCollection(o.GetCollectionIndex())[o.Identifier] as SchemaObject;
         }
         if (o != null)
         {
             p.SetValue(c, o);
         }
         else
         {
             tabControlMain.Items.RemoveAt(i);
         }
     }
 }
Пример #2
0
        private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            TreeViewItem src  = App.FindVisualParent <TreeViewItem>(e.OriginalSource as DependencyObject);
            TreeViewItem item = sender as TreeViewItem;

            if (src != item)
            {
                // DoubleClickイベントはツリーをたどって親ノードでも呼びされるため、親ノードでの実行時には何もしない
                return;
            }
            if (item == null)
            {
                return;
            }
            TreeNode node = item.Tag as TreeNode;

            if (node == null)
            {
                return;
            }
            SchemaObject obj = node.Target as SchemaObject;

            if (obj == null)
            {
                return;
            }
            e.Handled = true;
            OpenViewer(obj);
        }
Пример #3
0
        //public override void Restore()
        //{
        //    if (_backup == null)
        //    {
        //        return;
        //    }
        //    RestoreFrom(_backup);
        //}

        public override bool ContentEquals(NamedObject obj)
        {
            SchemaObject o = (SchemaObject)obj;

            if (!base.ContentEquals(o))
            {
                if (Triggers.Count != o.Triggers.Count)
                {
                    return(false);
                }
            }
            foreach (Trigger t in Triggers)
            {
                int i = o.Triggers.IndexOf(t);
                if (i == -1)
                {
                    return(false);
                }
                if (!t.ContentEquals(o.Triggers[i]))
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #4
0
        //protected override void Backup() { }

        protected void RestoreFrom(SchemaObject backup)
        {
            Owner    = backup.Owner;
            _schema  = backup.Schema;
            Name     = backup.Name;
            Triggers = new TriggerCollection(this, backup.Triggers);
        }
Пример #5
0
        private void ReplaceSchemaObjectRecursive(TreeViewItem treeViewItem, SchemaObject newObj, SchemaObject oldObj)
        {
            for (int i = treeViewItem.Items.Count - 1; 0 <= i; i--)
            {
                TreeViewItem item = treeViewItem.Items[i] as TreeViewItem;
                ReplaceSchemaObjectRecursive(item, newObj, oldObj);
            }
            TreeNode node = treeViewItem.Tag as TreeNode;

            if (node == null)
            {
                return;
            }
            SchemaObject obj = node.Target as SchemaObject;

            if (obj == null)
            {
                return;
            }
            if (obj == oldObj)
            {
                if (newObj == null)
                {
                    TreeViewItem p = treeViewItem.Parent as TreeViewItem;
                    if (p != null)
                    {
                        p.Items.Remove(treeViewItem);
                    }
                }
                else
                {
                    treeViewItem.Tag = newObj;
                }
            }
        }
Пример #6
0
        public static TabItem RequireTabItem(SchemaObject target, Style tabItemStyle, TabControl tabControl, Db2SourceContext dataSet)
        {
            ISchemaObjectWpfControl ctrl = target.Control as ISchemaObjectWpfControl;

            if (ctrl != null)
            {
                ctrl.Target = dataSet.Refresh(target);
                return(ctrl.Parent as TabItem);
            }

            lock (TabItemLock)
            {
                if (ctrl != null)
                {
                    return(ctrl.Parent as TabItem);
                }
                ctrl = NewControl(target, tabControl);
                if (ctrl == null)
                {
                    return(null);
                }
                TabItem item = NewTabItem(tabControl, target.FullName, ctrl as UIElement, tabItemStyle);
                item.Tag = target;
                return(item);
            }
        }
Пример #7
0
 private void UpdateTable()
 {
     if (_table != null)
     {
         return;
     }
     _table = Context?.Objects[TableSchema, TableName];
 }
Пример #8
0
 internal TriggerCollection(SchemaObject owner, TriggerCollection basedOn)
 {
     _owner = owner;
     foreach (Trigger t in basedOn)
     {
         Add(new Trigger(t));
     }
 }
Пример #9
0
        public override SchemaObject[] GetStrongReferred(SchemaObject target)
        {
            Table tbl = target as Table;

            if (tbl != null)
            {
                return(GetStrongReferred(tbl));
            }
            return(new SchemaObject[0]);
        }
Пример #10
0
        public override bool Equals(object obj)
        {
            if (!(obj is SchemaObject))
            {
                return(false);
            }
            SchemaObject sc = (SchemaObject)obj;

            return(Schema.Equals(sc.Schema) && (Identifier == sc.Identifier));
        }
Пример #11
0
 public TreeNode(SchemaObject target)
 {
     Name           = target.DisplayName;
     StyleIndex     = 0;
     Hint           = target.CommentText;
     IsGrouped      = false;
     IsHidden       = false;
     ShowChildCount = false;
     TargetType     = target.GetType();
     Target         = target;
 }
Пример #12
0
 protected SchemaObject(SchemaObject basedOn) : base(null)
 {
     Context  = basedOn.Context;
     Owner    = basedOn.Owner;
     _schema  = basedOn.Schema;
     Name     = basedOn.Name;
     Triggers = new TriggerCollection(this);
     foreach (Trigger t in basedOn.Triggers)
     {
         Triggers.Add(new Trigger(t));
     }
 }
Пример #13
0
        private void dataGridDependOn_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            SchemaObject obj = ((KeyValuePair <string, NamedObject>)(sender as DataGrid).SelectedItem).Value as SchemaObject;

            if (obj == null)
            {
                return;
            }
            if (obj is Trigger)
            {
                obj = ((Trigger)obj).Table;
            }
            Dispatcher.InvokeAsync(() => { MainWindow.Current.OpenViewer(obj); });
        }
Пример #14
0
        public override int CompareTo(object obj)
        {
            if (!(obj is SchemaObject))
            {
                return(-1);
            }
            SchemaObject sc  = (SchemaObject)obj;
            int          ret = Schema.Compare(Schema, sc.Schema);

            if (ret != 0)
            {
                return(ret);
            }
            ret = string.Compare(Identifier, sc.Identifier);
            return(ret);
        }
Пример #15
0
        public static ISchemaObjectWpfControl NewControl(SchemaObject target, TabControl parent)
        {
            Type t;

            if (!_schemaObjectToControl.TryGetValue(target.GetType(), out t))
            {
                return(null);
            }
            ISchemaObjectWpfControl ret = t.GetConstructor(new Type[0]).Invoke(null) as ISchemaObjectWpfControl;

            if (ret == null)
            {
                return(null);
            }
            ret.Target     = target;
            target.Control = ret;
            return(ret);
        }
Пример #16
0
        //#pragma warning restore 1998

        public void OpenViewer(SchemaObject target)
        {
            ISchemaObjectWpfControl curCtl = (tabControlMain.SelectedItem as TabItem)?.Content as ISchemaObjectWpfControl;

            TabItem item = MovableTabItem.RequireTabItem(target, FindResource("TabItemStyleClosable") as Style, tabControlMain, CurrentDataSet);

            if (item == null)
            {
                return;
            }
            if (item.Parent == null)
            {
                tabControlMain.Items.Add(item);
            }
            tabControlMain.SelectedItem = item;
            ISchemaObjectWpfControl newCtl = item.Content as ISchemaObjectWpfControl;

            if (newCtl != null && curCtl != null)
            {
                newCtl.SelectedTabKey = curCtl.SelectedTabKey;
            }
        }
Пример #17
0
        /// <summary>
        /// treeViewDBで選択している項目のビューアを開く
        /// </summary>
        public void OpenViewerFromTreeViewDBSelection()
        {
            TreeViewItem item = treeViewDB.SelectedItem as TreeViewItem;

            if (item == null)
            {
                return;
            }
            TreeNode node = item.Tag as TreeNode;

            if (node == null)
            {
                return;
            }
            SchemaObject obj = node.Target as SchemaObject;

            if (obj == null)
            {
                return;
            }
            OpenViewer(obj);
        }
Пример #18
0
        public void FilterTreeView(bool force)
        {
            if (!force && _treeViewFilterText == textBoxFilter.Text)
            {
                return;
            }
            _treeViewFilterText = textBoxFilter.Text;
            bool   filterByName       = menuItemFilterByObjectName.IsChecked;
            bool   filterByColumnName = menuItemFilterByColumnName.IsChecked;
            string f = _treeViewFilterText.ToUpper();

            foreach (TreeViewItem itemDb in treeViewItemTop.Items)
            {
                foreach (TreeViewItem itemSc in itemDb.Items)
                {
                    foreach (TreeViewItem itemGr in itemSc.Items)
                    {
                        for (int i = itemGr.Items.Count - 1; 0 <= i; i--)
                        {
                            TreeViewItem item = (TreeViewItem)itemGr.Items[i];
                            SchemaObject o    = (item.Tag as TreeNode)?.Target as SchemaObject;
                            if (o == null || o.IsReleased)
                            {
                                itemGr.Items.RemoveAt(i);
                            }
                        }
                        int n = 0;
                        foreach (TreeViewItem item in itemGr.Items)
                        {
                            bool matched = false;
                            if (string.IsNullOrEmpty(f))
                            {
                                matched = true;
                            }
                            else
                            {
                                if (filterByName && ((string)item.Header).ToUpper().Contains(f))
                                {
                                    matched = true;
                                }
                                if (filterByColumnName)
                                {
                                    Selectable o = (item.Tag as TreeNode)?.Target as Selectable;
                                    if (o != null)
                                    {
                                        foreach (Column c in o.Columns)
                                        {
                                            if (c.Name.ToUpper().Contains(f))
                                            {
                                                matched = true;
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                            if (matched)
                            {
                                item.Visibility = Visibility.Visible;
                                n++;
                            }
                            else
                            {
                                item.Visibility = Visibility.Collapsed;
                            }
                        }
                        TreeNode nodeGr = itemGr.Tag as TreeNode;
                        if ((nodeGr.ShowChildCount))
                        {
                            itemGr.Header = string.Format(nodeGr.NameBase, n);
                        }
                    }
                }
            }
        }
Пример #19
0
 public void InvalidateTable()
 {
     _table = null;
 }
Пример #20
0
 public TriggerCollection(SchemaObject owner)
 {
     _owner = owner;
 }
Пример #21
0
        public virtual ICommentable GetTarget()
        {
            SchemaObject o = Schema?.Objects[Target];

            return(o);
        }