/// <summary>
            /// Create a new instance of the HashOutputColumn
            /// </summary>
            /// <param name="output">output in which the instance should be created</param>
            /// <returns></returns>
            public static HashOutputColumn CreateNewInstance(IDTSOutput output)
            {
                IDTSOutputColumn col = output.OutputColumnCollection.New();

                col.Name        = Resources.HashColumnDefaultName + col.ID;
                col.Description = Resources.HashColumnDefaultDesccription;

                HashColumnsTransformationHelper.SetHashColumnProperties(HashColumnsTransformation.HashOuputColumnProperties.All, col);

                HashOutputColumn c = new HashOutputColumn(col);

                return(c);
            }
        private void ProcessInputColumns()
        {
            List <int> inputLineages = new List <int>();
            //Get lineages of input columns for all output HASH Columns
            TreeNode node = trvOutputColumns.SelectedNode;

            if (node != null)
            {
                if (node.Tag is FormOutputColumn)
                {
                    node = node.Parent;
                }

                //Iterate through Hash Output Columns
                foreach (TreeNode nd in node.Nodes)
                {
                    HashOutputColumn ocol = nd.Tag as HashOutputColumn;
                    if (ocol != null)
                    {
                        var colInputLineages = ocol.HashInputColumns.GetInputLineages();
                        //Iterate through each input column lineages and store unique lineages in the inputLineages List
                        foreach (int lineageID in colInputLineages)
                        {
                            if (!inputLineages.Contains(lineageID))
                            {
                                inputLineages.Add(lineageID);
                            }
                        }
                    }
                }
            }

            var iCols = UIHelper.GetFormInputColumns();

            foreach (FormInputColumn icol in iCols)
            {
                bool isSelected = inputLineages.Contains(icol.LineageID);
                if (isSelected != icol.IsSelected)
                {
                    UIHelper.SelectInputColumn(icol.LineageID, isSelected);
                }
            }
        }
        void o_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "Name")
            {
                UIHelper.UpdateTreeViewNodeName(sender, trvOutputColumns);
            }

            HashOutputColumn hoc = sender as HashOutputColumn;

            if (hoc != null && hoc.AssociatedTreeNode != null)
            {
                if (hoc.HashType == HashColumnsTransformation.HashType.None || hoc.HashInputColumns.Count == 0)
                {
                    hoc.AssociatedTreeNode.StateImageIndex = 1;
                }
                else
                {
                    hoc.AssociatedTreeNode.StateImageIndex = 0;
                }
            }
        }