/*------------------------------------------------------------------------------------**/
            /// <summary>
            /// IsImportFileValidFormat
            /// </summary>
            /// <param name="fileName"></param>
            /// <param name="ecClass"></param>
            /// <returns></returns>
            /*--------------+---------------+---------------+---------------+---------------+------*/
            private static bool IsImportFileValidFormat
            (
                string fileName,
                IECClass ecClass
            )
            {
                bool status           = true;
                bool assoicationFound = false;
                bool instanceFound    = false;
                int  lineNumber       = 0;

                ArrayList arr = SchemaUtilities.GetAssociatedItems(ecClass);
                bool      lookForAssociations = (arr.Count > 1);

                System.IO.StreamReader sr = System.IO.File.OpenText(fileName);

                try
                {
                    while (!sr.EndOfStream)
                    {
                        string lineRead = sr.ReadLine().Trim();
                        lineNumber++;

                        if (string.IsNullOrEmpty(lineRead))
                        {
                            continue;
                        }

                        string testString = lineRead.Replace("[Associations]", "|");
                        testString = testString.Replace("[InstanceData]", "|");
                        testString = testString.Replace("=", "|");

                        if (!testString.Contains("|"))
                        {
                            WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.InvalidString, lineRead, lineNumber), "");
                            status = false;
                            break;
                        }

                        else if (lineRead == "[Associations]" && !lookForAssociations)
                        {
                            WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.NoAssociationRequired, lineNumber), "");
                            status = false;
                            break;
                        }

                        else if (lineRead == "[InstanceData]" && lookForAssociations && !assoicationFound)
                        {
                            WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.AssociationsNotDefined, ecClass.Name, lineNumber), "");
                            status = false;
                            break;
                        }

                        //Validate Associations
                        if (lineRead == "[Associations]")
                        {
                            while (!sr.EndOfStream)
                            {
                                lineRead = sr.ReadLine().Trim();
                                lineNumber++;
                                if (string.IsNullOrEmpty(lineRead))
                                {
                                    continue;
                                }

                                if (lineRead == "[InstanceData]")
                                {
                                    break;
                                }

                                string[] strs            = lineRead.Split(new char[] { '=' });
                                IECClass ecAssocateClass = SchemaUtilities.PlantSchema.GetClass(strs[0]);
                                if (ecAssocateClass == null)
                                {
                                    WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.InvalidAssociationClass, lineNumber), "");
                                    status = false;
                                    break;
                                }
                            }
                            assoicationFound = true;
                        }

                        if (status == false)
                        {
                            break;
                        }

                        //Validate Instance Data
                        if (lineRead == "[InstanceData]")
                        {
                            while (!sr.EndOfStream)
                            {
                                lineRead = sr.ReadLine().Trim();
                                lineNumber++;
                                if (lineRead == "[InstanceData]")
                                {
                                    break;
                                }

                                if (lineRead == "[Associations]")
                                {
                                    break;
                                }

                                if (string.IsNullOrEmpty(lineRead))
                                {
                                    continue;
                                }

                                string[]    strs   = lineRead.Split(new char[] { '=' });
                                IECProperty ecProp = ecClass[strs[0]];
                                if (ecProp == null)
                                {
                                    WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.InvalidPropertyName, lineNumber), "");
                                    status = false;
                                    break;
                                }
                            }
                            instanceFound = true;
                        }
                        if (status == false)
                        {
                            break;
                        }
                    }
                }
                finally
                {
                    sr.Close();
                }

                return(status && instanceFound);
            }
        public bool FillAssociatedItems(bool isModifyTool)
        {
            ArrayList classRelationshipStrs = SchemaUtilities.GetAssociatedItems(_ClassDef);

            if (classRelationshipStrs.Count == 0)
            {
                return(false);
            }

            if (_bMultiInst)
            {//when editing associations of multiple instances, edit and delete options should not be available.
                this.optionDelete.Visible = false;
                this.optionEdit.Visible   = false;

                //refresh/redraw the grid
                this.OnResize(new EventArgs());
            }

            for (int i = 0; i < classRelationshipStrs.Count; i++)
            {
                string   strData = classRelationshipStrs[i] as string;
                string[] strArr  = strData.Split(new char[] { '|' });

                IECClass ecAssociatedClass           = SchemaUtilities.PlantSchema.GetClass(strArr[0]);
                int      rowIndex                    = this.Rows.Add();
                DataGridViewTextBoxCell itemTypeCell = this[s_WBSClassKey, rowIndex] as DataGridViewTextBoxCell;
                itemTypeCell.Value = ecAssociatedClass.DisplayLabel;
                //itemTypeCell.Tag = ecAssociatedClass;

                DataGridViewComboBoxCell itemInstanceCell = this[s_WBSInstanceKey, rowIndex] as DataGridViewComboBoxCell;
                //ArrayList arr = DgnUtilities.GetInstance().GetECInstanceDisplayLabelsFromDgn (strArr[0]);
                ECInstanceList       arr             = DgnUtilities.GetInstance().GetAllInstancesFromDgn(strArr[0]);
                IECRelationshipClass ecAssociatedRel = SchemaUtilities.PlantSchema.GetClass(strArr[1]) as IECRelationshipClass;
                // move class to 1st column tag, to start with,  later changed

                itemInstanceCell.Tag = ecAssociatedClass;
                itemTypeCell.Tag     = ecAssociatedRel;

                if (_bMultiInst)
                {
                    itemInstanceCell.Items.Add(_cstr_Varies);
                }

                itemInstanceCell.Items.Add(LocalizableStrings.None);

                Dictionary <string, IECInstance> dropDownCache = new Dictionary <string, IECInstance> ();

                foreach (IECInstance returnedInstance in arr)
                //for (int j = 0; j < arr.Count; j++)
                {
                    // insert only if this is not from a referenced file
                    if (DgnUtilities.GetInstance().IsECInstanceFromReferenceFile(returnedInstance))
                    {
                        continue;
                    }

                    string key = SchemaUtilities.GetDisplayNameForECInstance(returnedInstance, true);
                    if (dropDownCache.ContainsKey(key))
                    {
                        dropDownCache[key] = returnedInstance;
                    }
                    else
                    {
                        // insert
                        dropDownCache.Add(key, returnedInstance);
                        itemInstanceCell.Items.Add(key);
                    }
                }
                if (dropDownCache.Count > 0)
                {
                    itemInstanceCell.Tag = dropDownCache;
                }

                if (isModifyTool)
                {
                    string strLastInstID = null;
                    string key           = "";
                    for (int j = 0; j < _instList.Count; j++)
                    {
                        IECInstance parentInstance = GetAssociatedItemFromInstance(_instList[j], ecAssociatedRel, ecAssociatedRel.Source.GetClasses()[0].Class);
                        string      strCurrInstID  = "";

                        // If we have a parent instance, then we must be using an existing instance. We need to make sure we select the existing values.
                        if (null != parentInstance)
                        {
                            key           = SchemaUtilities.GetDisplayNameForECInstance(parentInstance, true);
                            strCurrInstID = parentInstance.InstanceId;
                        }
                        else
                        {
                            key           = LocalizableStrings.None;
                            strCurrInstID = LocalizableStrings.None;
                        }

                        if (String.IsNullOrEmpty(strLastInstID))
                        {
                            strLastInstID = strCurrInstID;
                        }
                        else
                        {
                            if (strCurrInstID != strLastInstID)
                            {
                                key = _cstr_Varies;
                                break;
                            }
                        }
                    } // end for loop

                    itemInstanceCell.Value = key;
                }

                itemInstanceCell.Sorted = true;

                DataGridViewImageCell tempImageCell = this["optionAdd", rowIndex] as DataGridViewImageCell;
                tempImageCell.Tag = ecAssociatedClass;
            }

            if (!isModifyTool)
            {
                ArrayList AssociatonList = WorkspaceUtilities.GetSettings("Associations." + _ClassDef.Name);
                LoadSettings(AssociatonList, false);
            }

            return(true);
        }