public void RemoveFilter(SW_Table_Filter removeFilter)
 {
     ActiveFilters.Remove(removeFilter);
     removeFilter.Display.gameObject.SetActive(false);
     Table.FilterTable(ActiveFilters);
     FilterDisplayGrid.UpdateGrid();
 }
 public void UpdateFilter(SW_Table_Filter newFilter)
 {
     newFilter.ShowFilterDisplay();
     FilterDisplayGrid.UpdateGrid();
     if (!ActiveFilters.Contains(newFilter))
     {
         ActiveFilters.Add(newFilter);
     }
     Table.FilterTable(ActiveFilters);
 }
        /// <summary>
        /// Open the filters menu for the selected table
        /// </summary>
        /// <param name="titleRow">The table's title row. Used to set Filter titles</param>
        /// <param name="valueRow">The table's first actual row, used to find what filters need to be created for this table.</param>
        public void OpenFilters(SW_Row titleRow, SW_Row valueRow)
        {
            TitleRow = titleRow;
            if (Filters.Count == 0)
            {
                Filters = new List <SW_Table_Filter>();
                if (GetComponentsInChildren <SW_Table_Filter>().Length > 0)
                {
                    for (int i = 0; i < GetComponentsInChildren <SW_Table_Filter>().Length; i++)
                    {
                        Filters.Add(GetComponentsInChildren <SW_Table_Filter>()[i]);
                    }
                    return;
                }
                string          title     = "";
                List <string>   propNames = new List <string>();
                PropertyInfo    propInfo;
                FilterType      fType  = 0;
                SW_Table_Filter filter = null;
                for (int i = 0; i < valueRow.DatabaseObject.GetType().GetProperties().Length; i++)
                {
                    propNames.Add(valueRow.DatabaseObject.GetType().GetProperties()[i].Name);
                }
                for (int i = 0; i < propNames.Count; i++)
                {
                    filter = null;
                    fType  = FilterType.None;
                    string lower = propNames[i].ToLower();
                    int    ID    = 0;
                    for (int j = 0; j < TitleRow.Items.Count - 1; j++)
                    {
                        if (!lower.Contains("price") && !lower.Contains("notes") && !lower.Contains("name"))
                        {
                            if (TitleRow.Items[j].name.ToLower().Contains(lower))
                            {
                                propInfo = valueRow.DatabaseObject.GetType().GetProperty(propNames[i]);
                                if (propInfo.PropertyType == typeof(string))
                                {
                                    int num = 0;
                                    if (Int32.TryParse(valueRow.Items[j].Value, out num))
                                    {
                                        fType = FilterType.MinMax;
                                    }
                                    else
                                    {
                                        fType = FilterType.Dropdown;
                                    }
                                }
                                else
                                {
                                    fType = FilterType.MinMax;
                                }
                                ID    = j;
                                title = propInfo.Name;
                            }
                        }
                        else if (lower.Contains("price") && TitleRow.Items[j].name.ToLower().Contains("price"))
                        {
                            title = "Price";
                            fType = FilterType.Price;
                            ID    = j;
                        }
                        //Debug.Log(lower +"-"+ fType);
                    }
                    switch (fType)
                    {
                    case FilterType.Dropdown:
                        filter = Instantiate(DropdownPrefab);
                        filter.SetDropdownOptions(Table.RetrieveUniqueStrings(ID));
                        break;

                    case FilterType.MinMax:
                        filter = Instantiate(MinMaxPrefab);
                        break;

                    case FilterType.Price:
                        filter = Instantiate(PricePrefab);
                        break;

                    case FilterType.None:
                        filter = null;
                        break;

                    default:
                        filter = null;
                        break;
                    }
                    if (filter)
                    {
                        Filters.Add(filter);
                        filter.transform.SetParent(transform, false);
                        filter.Initialize(this, fType, title, ID);
                    }
                }
                fitter.enabled = false;
                fitter.enabled = true;
            }
            if (fitter.enabled)
            {
                StartCoroutine(DisableFitting());
            }
        }