Click here to Skip to main content
15,896,063 members
Articles / Desktop Programming / WPF

DBTool for Oracle - Part 1

Rate me:
Please Sign up or sign in to vote.
4.92/5 (45 votes)
13 Apr 2014CPOL18 min read 138.3K   5.1K   88  
Enhance productivity and reliability, write your own tools.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace Harlinn.Oracle.DBTool.Example.Entities
{

    public class EntitySourceBase : Component, IBindingList
    {
        [NonSerialized]
        IBindingList bindingList;

        public EntitySourceBase()
        {
            
        }

        [Bindable(false),Browsable(false)]
        
        public IBindingList BindingList
        {
            get
            {
                return bindingList;
            }
            
        }

        public void SetBindingList(IBindingList theBindingList)
        {
            if (bindingList == theBindingList)
                return;
            if (bindingList != null)
            {
                bindingList.ListChanged -= bindingList_ListChanged;
            }

            bindingList = theBindingList;

            if (bindingList != null)
            {
                bindingList.ListChanged += bindingList_ListChanged;
            }

            OnListChanged(new ListChangedEventArgs(ListChangedType.Reset,null));
        }


        protected virtual IBindingList GetBindingList()
        {
            return bindingList;
        }


        void bindingList_ListChanged(object sender, ListChangedEventArgs e)
        {
            if (ListChanged != null)
            {
                ListChanged(this, e);
            }
        }


        protected virtual void OnListChanged(ListChangedEventArgs eventArgs)
        {
            if (ListChanged != null)
            {
                ListChanged(this, eventArgs);
            }
        }



        public void AddIndex(PropertyDescriptor property)
        {
            GetBindingList().AddIndex(property);
        }

        public object AddNew()
        {
            return GetBindingList().AddNew();
        }

        public bool AllowEdit
        {
            get 
            {
                return GetBindingList().AllowEdit;
            }
        }

        public bool AllowNew
        {
            get 
            {
                return GetBindingList().AllowNew;
            }
        }

        public bool AllowRemove
        {
            get 
            {
                return GetBindingList().AllowRemove;
            }
        }

        public void ApplySort(PropertyDescriptor property, ListSortDirection direction)
        {
            GetBindingList().ApplySort(property, direction);
        }

        public int Find(PropertyDescriptor property, object key)
        {
            return GetBindingList().Find(property, key);
        }

        public bool IsSorted
        {
            get 
            {
                return GetBindingList().IsSorted;
            }
        }

        public event ListChangedEventHandler ListChanged;

        public void RemoveIndex(PropertyDescriptor property)
        {
            GetBindingList().RemoveIndex(property);
        }

        public void RemoveSort()
        {
            GetBindingList().RemoveSort();
        }

        public ListSortDirection SortDirection
        {
            get 
            {
                return GetBindingList().SortDirection;
            }
        }

        public PropertyDescriptor SortProperty
        {
            get 
            {
                return GetBindingList().SortProperty;
            }
        }

        public bool SupportsChangeNotification
        {
            get 
            {
                return GetBindingList().SupportsChangeNotification;
            }
        }

        public bool SupportsSearching
        {
            get 
            {
                return GetBindingList().SupportsSearching;
            }
        }

        public bool SupportsSorting
        {
            get 
            {
                return GetBindingList().SupportsSorting;
            }
        }

        public int Add(object value)
        {
            return GetBindingList().Add(value);
        }

        public void Clear()
        {
            GetBindingList().Clear();
        }

        public bool Contains(object value)
        {
            return GetBindingList().Contains(value);
        }

        public int IndexOf(object value)
        {
            return GetBindingList().IndexOf(value);
        }

        public void Insert(int index, object value)
        {
            GetBindingList().Insert(index, value);
        }

        public bool IsFixedSize
        {
            get 
            {
                return GetBindingList().IsFixedSize;
            }
        }

        public bool IsReadOnly
        {
            get 
            {
                return GetBindingList().IsReadOnly;
            }
        }

        public void Remove(object value)
        {
            GetBindingList().Remove(value);
        }

        public void RemoveAt(int index)
        {
            GetBindingList().RemoveAt(index);
        }

        public object this[int index]
        {
            get
            {
                return GetBindingList()[index];
            }
            set
            {
                GetBindingList()[index] = value;
            }
        }

        public void CopyTo(Array array, int index)
        {
            GetBindingList().CopyTo(array, index);
        }

        public int Count
        {
            get 
            {
                return GetBindingList().Count;
            }
        }

        public bool IsSynchronized
        {
            get 
            {
                return GetBindingList().IsSynchronized;
            }
        }

        public object SyncRoot
        {
            get 
            {
                return GetBindingList().SyncRoot;
            }
        }

        public System.Collections.IEnumerator GetEnumerator()
        {
            return GetBindingList().GetEnumerator();
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect Sea Surveillance AS
Norway Norway
Chief Architect - Sea Surveillance AS.

Specializing in integrated operations and high performance computing solutions.

I’ve been fooling around with computers since the early eighties, I’ve even done work on CP/M and MP/M.

Wrote my first “real” program on a BBC micro model B based on a series in a magazine at that time. It was fun and I got hooked on this thing called programming ...

A few Highlights:

  • High performance application server development
  • Model Driven Architecture and Code generators
  • Real-Time Distributed Solutions
  • C, C++, C#, Java, TSQL, PL/SQL, Delphi, ActionScript, Perl, Rexx
  • Microsoft SQL Server, Oracle RDBMS, IBM DB2, PostGreSQL
  • AMQP, Apache qpid, RabbitMQ, Microsoft Message Queuing, IBM WebSphereMQ, Oracle TuxidoMQ
  • Oracle WebLogic, IBM WebSphere
  • Corba, COM, DCE, WCF
  • AspenTech InfoPlus.21(IP21), OsiSoft PI


More information about what I do for a living can be found at: harlinn.com or LinkedIn

You can contact me at espen@harlinn.no

Comments and Discussions