Ejemplo n.º 1
0
        private static string GetConnstraint(SQLite3Constraint InConstraint)
        {
            if (InConstraint == SQLite3Constraint.Default)
            {
                return(string.Empty);
            }
            else
            {
                string constraint = string.Empty;
                if ((InConstraint & SQLite3Constraint.PrimaryKey) != 0)
                {
                    constraint += " PRIMARY KEY ";
                }

                if ((InConstraint & SQLite3Constraint.AutoIncrement) != 0)
                {
                    constraint += " AUTOINCREMENT ";
                }
                if ((InConstraint & SQLite3Constraint.NotNull) != 0)
                {
                    constraint += " NOT NULL ";
                }
                if ((InConstraint & SQLite3Constraint.Unique) != 0)
                {
                    constraint += " UNIQUE ";
                }

                return(constraint);
            }
        }
Ejemplo n.º 2
0
 public SQLite3ConstraintAttribute(SQLite3Constraint InConstraint)
 {
     constraint = string.Empty;
     if ((InConstraint & SQLite3Constraint.PrimaryKey) == SQLite3Constraint.PrimaryKey)
     {
         constraint += "PRIMARY KEY ";
     }
     if ((InConstraint & SQLite3Constraint.AutoIncrement) == SQLite3Constraint.AutoIncrement)
     {
         constraint += "AUTOINCREMENT ";
     }
     if ((InConstraint & SQLite3Constraint.Unique) == SQLite3Constraint.Unique)
     {
         constraint += "UNIQUE ";
     }
     if ((InConstraint & SQLite3Constraint.NotNull) == SQLite3Constraint.NotNull)
     {
         constraint += "NOT NULL ";
     }
 }
Ejemplo n.º 3
0
        public static string ConvertSQLite3ConstraintToStr(SQLite3Constraint InConstraint)
        {
            string result = string.Empty;

            if ((InConstraint & SQLite3Constraint.PrimaryKey) != 0)
            {
                result += " PrimaryKey ";
            }
            if ((InConstraint & SQLite3Constraint.Unique) != 0)
            {
                result += " Unique ";
            }
            if ((InConstraint & SQLite3Constraint.AutoIncrement) != 0)
            {
                result += " AutoIncrement ";
            }
            if ((InConstraint & SQLite3Constraint.NotNull) != 0)
            {
                result += " NotNull ";
            }

            return(result == string.Empty ? string.Empty : result.Remove(result.Length - 1, 1));
        }
        public static string ConvertToString(SQLite3Constraint InConstraint)
        {
            string result = string.Empty;

            if ((InConstraint & SQLite3Constraint.PrimaryKey) != 0)
            {
                result += "SQLite3Constraint.PrimaryKey | ";
            }
            if ((InConstraint & SQLite3Constraint.Unique) != 0)
            {
                result += "SQLite3Constraint.Unique | ";
            }
            if ((InConstraint & SQLite3Constraint.AutoIncrement) != 0)
            {
                result += "SQLite3Constraint.AutoIncrement | ";
            }
            if ((InConstraint & SQLite3Constraint.NotNull) != 0)
            {
                result += "SQLite3Constraint.NotNull | ";
            }

            return(result == string.Empty ? string.Empty : result.Remove(result.Length - 2, 2));
        }
Ejemplo n.º 5
0
        void OnGUI()
        {
            GUILayout.Label("Excel To SQLite3 Table", EditorStyles.boldLabel);

            EditorGUILayout.BeginVertical("box");
            {
                EditorGUILayout.BeginVertical("box");
                {
                    GUILayout.BeginHorizontal();
                    {
                        isSingleFile = EditorGUILayout.ToggleLeft("Single Excel", isSingleFile, GUILayout.Width(245));
                        isSingleFile = !EditorGUILayout.ToggleLeft("Excel Directory", !isSingleFile, GUILayout.Width(245));

                        if (preSelect != isSingleFile)
                        {
                            TableData[][] temp = tableData;
                            tableData    = preTableData;
                            preTableData = temp;

                            preSelect = isSingleFile;

                            EditorPrefs.SetBool(selectPrefsKey, isSingleFile);
                        }
                    }

                    GUILayout.EndHorizontal();
                    GUILayout.Space(15);

                    if (isSingleFile)
                    {
                        GUILayout.BeginHorizontal();
                        {
                            singlePathConfig.ExcelPath = EditorGUILayout.TextField("Excel Path", singlePathConfig.ExcelPath, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                string singlePath = singlePathConfig.ExcelPath;
                                int    index      = singlePath.LastIndexOf("/", StringComparison.Ordinal);
                                string path       = -1 == index ? singlePath : singlePath.Substring(0, index);
                                path = EditorUtility.OpenFilePanel("Open Excel Path", path, "xlsx,xls");
                                if (!string.IsNullOrEmpty(path))
                                {
                                    if (path.Contains(dataPath))
                                    {
                                        singlePath = path.Replace(dataPath, "Assets");
                                    }
                                    else
                                    {
                                        Debug.LogWarning("Can not open the floder out of the project path!");
                                        singlePath = path;
                                    }

                                    singlePathConfig.ExcelPath = singlePath;
                                }
                            }
                        }
                        GUILayout.EndHorizontal();

                        if (GUILayout.Button("Preview"))
                        {
                            if (string.IsNullOrEmpty(singlePathConfig.ExcelPath))
                            {
                                EditorUtility.DisplayDialog("Tips", "Please select an excel file first.", "OK");
                            }
                            else
                            {
                                LoadExcel(dataPath + singlePathConfig.ExcelPath.Replace("Assets", string.Empty));
                            }
                        }
                    }
                    else
                    {
                        GUILayout.BeginHorizontal();
                        {
                            multiPathConfig.ExcelPath = EditorGUILayout.TextField("Excel Directory", multiPathConfig.ExcelPath, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                string multiPath = multiPathConfig.ExcelPath;
                                string path      = EditorUtility.OpenFolderPanel("Open Excel Directory", multiPath, "");
                                if (!string.IsNullOrEmpty(path))
                                {
                                    if (path.Contains(dataPath))
                                    {
                                        multiPath = path.Replace(dataPath, "Assets");
                                        multiPathConfig.ExcelPath = multiPath;
                                    }
                                    else
                                    {
                                        EditorUtility.DisplayDialog("Warning", "Can not open the floder out of the project path!", "OK");
                                    }
                                }
                            }
                        }
                        GUILayout.EndHorizontal();

                        if (GUILayout.Button("Preview"))
                        {
                            if (string.IsNullOrEmpty(multiPathConfig.ExcelPath))
                            {
                                EditorUtility.DisplayDialog("Tips", "Please select a directory where excel is stored.", "OK");
                            }
                            else
                            {
                                LoadExcelDirectory(dataPath + multiPathConfig.ExcelPath.Replace("Assets", string.Empty));
                            }
                        }
                    }
                }
                EditorGUILayout.EndVertical();

                if (null != tableData)
                {
                    sheetLength = tableData.Length;
                    config      = isSingleFile ? singlePathConfig : multiPathConfig;
                    EditorGUILayout.BeginVertical("box");
                    {
                        GUILayout.BeginHorizontal();
                        {
                            config.DbPath = EditorGUILayout.TextField("Database Save Path", config.DbPath, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                string path  = config.DbPath;
                                int    index = path.LastIndexOf("/", StringComparison.Ordinal);
                                path = -1 == index ? path : path.Substring(0, index);
                                path = EditorUtility.SaveFilePanel("Database Save Path", path, "Database", "db");
                                if (!string.IsNullOrEmpty(path))
                                {
                                    if (path.Contains(dataPath))
                                    {
                                        config.DbPath = path.Replace(dataPath, "Assets");
                                    }
                                    else
                                    {
                                        Debug.LogWarning("Can not open the floder out of the project path!");
                                        config.DbPath = path;
                                    }
                                }
                            }
                        }
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        {
                            config.ScriptPath = EditorGUILayout.TextField("Script Save Directory", config.ScriptPath, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                string path = EditorUtility.OpenFolderPanel("Script Save Directory", config.ScriptPath, "");
                                if (!string.IsNullOrEmpty(path))
                                {
                                    if (path.Contains(dataPath))
                                    {
                                        config.ScriptPath = path.Replace(dataPath, "Assets") + "/";
                                    }
                                    else
                                    {
                                        Debug.LogWarning("Can not open the floder out of the project path!");
                                        config.ScriptPath = path + "/";
                                    }
                                }
                            }
                        }
                        GUILayout.EndHorizontal();


                        if (!isSingleFile && sheetLength > 1)
                        {
                            if (GUILayout.Button("Create All"))
                            {
                                try
                                {
                                    if (string.IsNullOrEmpty(config.DbPath))
                                    {
                                        EditorUtility.DisplayDialog("Tips", "Please select the storage location of the database.", "OK");
                                    }
                                    else
                                    {
                                        if (string.IsNullOrEmpty(config.ScriptPath))
                                        {
                                            EditorUtility.DisplayDialog("Tips", "Please select the storage location of the script.", "OK");
                                        }
                                        else
                                        {
                                            string dbpath = config.DbPath.Remove(0, 7);
                                            //SQLite3Creator.DeleteDatabase(dbpath);
                                            for (int i = 0; i < sheetLength; i++)
                                            {
                                                rowLength = tableData[i].Length;
                                                for (int j = 0; j < rowLength; j++)
                                                {
                                                    if (tableData[i][j].IsEnable)
                                                    {
                                                        progressValue = 1.0f;
                                                        if (tableData[i][j].IsNeedCreateScript)
                                                        {
                                                            progressValue = .5f;
                                                            EditorUtility.DisplayProgressBar("Convert excel to cshap script...", "Convert excel named: " + tableData[i][j].TableName, i * progressValue / sheetLength);
                                                            ScriptWriter.Writer(multiPathConfig.ScriptPath + tableData[i][j].TableName + ".cs", ref tableData[i][j]);
                                                        }
                                                        EditorUtility.DisplayProgressBar("Convert excel to sqlite3 table...", "Convert excel named: " + tableData[i][j].TableName, i * .5f / sheetLength);

                                                        SQLite3Creator.Creator(ref tableData[i][j], dbpath);
                                                    }
                                                }
                                            }
                                            EditorUtility.DisplayProgressBar("CompileCSharp Script...", "Please Waiting...", 1.5f);

                                            EditorUtility.ClearProgressBar();

                                            EditorUtility.DisplayDialog("Tips", "Convert excel to sqlite3 table finished.", "OK");
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    EditorUtility.DisplayDialog("Error", "Convert excel to sqlite3 table has an error:" + ex.Message, "OK");
                                }
                                Close();
                            }
                        }
                    }
                    EditorGUILayout.EndVertical();

                    scrollPos = GUILayout.BeginScrollView(scrollPos);
                    for (int i = 0; i < sheetLength; ++i)
                    {
                        if (null != tableData[i])
                        {
                            rowLength = tableData[i].Length;
                            for (int j = 0; j < rowLength; ++j)
                            {
                                EditorGUILayout.BeginVertical("box");
                                {
                                    GUILayout.BeginHorizontal();
                                    {
                                        tableData[i][j].TableName = EditorGUILayout.TextField("Table Name",
                                                                                              tableData[i][j].TableName, GUILayout.Width(440));

                                        tableData[i][j].IsEnable = EditorGUILayout.ToggleLeft("Enable",
                                                                                              tableData[i][j].IsEnable, GUILayout.Width(88));
                                    }
                                    GUILayout.EndHorizontal();

                                    if (tableData[i][j].IsEnable)
                                    {
                                        GUILayout.Space(10);
                                        EditorGUILayout.BeginVertical("box");
                                        {
                                            GUILayout.BeginHorizontal();
                                            {
                                                EditorGUILayout.LabelField("Property Name", centerTittleStyle, GUILayout.Width(104));
                                                GUILayout.Space(4);
                                                EditorGUILayout.LabelField("Property Describe", centerTittleStyle, GUILayout.Width(286));
                                                GUILayout.Space(4);
                                                EditorGUILayout.LabelField("SQLite3 Type", centerTittleStyle, GUILayout.Width(104));
                                            }
                                            GUILayout.EndHorizontal();
                                            GUILayout.Space(10);

                                            columnLength = tableData[i][j].ColumnName.Length;
                                            for (int k = 0; k < columnLength; ++k)
                                            {
                                                tableData[i][j].IsColumnEnables[k] = EditorGUILayout.BeginToggleGroup(
                                                    "Enable",
                                                    tableData[i][j].IsColumnEnables[k]);
                                                {
                                                    GUILayout.BeginVertical("box");
                                                    {
                                                        GUILayout.BeginHorizontal();
                                                        {
                                                            tableData[i][j].ColumnName[k] =
                                                                EditorGUILayout.TextField(tableData[i][j].ColumnName[k],
                                                                                          GUILayout.MaxWidth(104));
                                                            GUILayout.Space(4);
                                                            tableData[i][j].ColumnDescribes[k] =
                                                                EditorGUILayout.TextField(tableData[i][j].ColumnDescribes[k],
                                                                                          GUILayout.MaxWidth(286));
                                                            GUILayout.Space(4);
                                                            tableData[i][j].SQLite3Types[k] =
                                                                (SQLite3ValueType)
                                                                EditorGUILayout.EnumPopup(tableData[i][j].SQLite3Types[k],
                                                                                          GUILayout.MaxWidth(104));

                                                            //tableData[i][j].SQLite3Constraints[k] =
                                                            //    (SQLite3Constraint)
                                                            //        EditorGUILayout.EnumPopup(tableData[i][j].SQLite3Constraints[k],
                                                            //            GUILayout.MaxWidth(100));
                                                        }
                                                        GUILayout.EndHorizontal();
                                                        GUILayout.Space(10);
                                                        GUILayout.BeginHorizontal("box");
                                                        {
                                                            SQLite3Constraint constraint = tableData[i][j].SQLite3Constraints[k];
                                                            bool isPrimaryKey            = (constraint & SQLite3Constraint.PrimaryKey) != 0;
                                                            bool isAutoIncrement         = (constraint & SQLite3Constraint.AutoIncrement) != 0;
                                                            bool isNotNull = (constraint & SQLite3Constraint.NotNull) != 0;
                                                            bool isUnique  = (constraint & SQLite3Constraint.Unique) != 0;

                                                            EditorGUILayout.LabelField("SQLite3 Constraint:", leftTittleStyle, GUILayout.Width(114));
                                                            isPrimaryKey = EditorGUILayout.ToggleLeft("PrimaryKey", isPrimaryKey, GUILayout.Width(80));

                                                            if (tableData[i][j].SQLite3Types[k] != SQLite3ValueType.INTEGER)
                                                            {
                                                                GUI.enabled     = false;
                                                                isAutoIncrement = false;
                                                            }

                                                            isAutoIncrement = EditorGUILayout.ToggleLeft("AutoIncrement", isAutoIncrement, GUILayout.Width(104));
                                                            GUI.enabled     = true;

                                                            if (isPrimaryKey)
                                                            {
                                                                isUnique    = false;
                                                                isNotNull   = false;
                                                                GUI.enabled = false;
                                                            }
                                                            isNotNull   = EditorGUILayout.ToggleLeft("NotNull", isNotNull, GUILayout.Width(60));
                                                            isUnique    = EditorGUILayout.ToggleLeft("Unique", isUnique, GUILayout.Width(60));
                                                            GUI.enabled = true;
                                                            bool isDefault = !(isPrimaryKey || isAutoIncrement || isNotNull || isUnique);
                                                            isDefault = EditorGUILayout.ToggleLeft("Default", isDefault, GUILayout.Width(60));
                                                            if (isDefault)
                                                            {
                                                                isPrimaryKey = isAutoIncrement = isNotNull = isUnique = false;
                                                            }

                                                            if (isDefault)
                                                            {
                                                                constraint = SQLite3Constraint.Default;
                                                            }
                                                            else
                                                            {
                                                                constraint = constraint & ~SQLite3Constraint.Default;
                                                            }

                                                            if (isPrimaryKey)
                                                            {
                                                                for (int m = 0; m < columnLength; m++)
                                                                {
                                                                    tableData[i][j].SQLite3Constraints[m] &= ~SQLite3Constraint.PrimaryKey;
                                                                }
                                                                constraint |= SQLite3Constraint.PrimaryKey;
                                                            }
                                                            else
                                                            {
                                                                constraint = constraint & ~SQLite3Constraint.PrimaryKey;
                                                            }

                                                            if (isAutoIncrement)
                                                            {
                                                                constraint |= SQLite3Constraint.AutoIncrement;
                                                            }
                                                            else
                                                            {
                                                                constraint &= ~SQLite3Constraint.AutoIncrement;
                                                            }

                                                            if (isNotNull)
                                                            {
                                                                constraint |= SQLite3Constraint.NotNull;
                                                            }
                                                            else
                                                            {
                                                                constraint &= ~SQLite3Constraint.NotNull;
                                                            }

                                                            if (isUnique)
                                                            {
                                                                constraint |= SQLite3Constraint.Unique;
                                                            }
                                                            else
                                                            {
                                                                constraint &= ~SQLite3Constraint.Unique;
                                                            }

                                                            tableData[i][j].SQLite3Constraints[k] = constraint;
                                                        }
                                                        GUILayout.EndHorizontal();
                                                    }
                                                    GUILayout.EndVertical();
                                                }
                                                EditorGUILayout.EndToggleGroup();
                                            }

                                            EditorGUILayout.BeginHorizontal("box");
                                            {
                                                tableData[i][j].IsNeedCreateScript =
                                                    EditorGUILayout.ToggleLeft("Need create or update script?",
                                                                               tableData[i][j].IsNeedCreateScript, GUILayout.Width(258));
                                                GUILayout.Space(10);
                                                if (GUILayout.Button("Create", GUILayout.Width(242)))
                                                {
                                                    try
                                                    {
                                                        if (string.IsNullOrEmpty(config.DbPath))
                                                        {
                                                            EditorUtility.DisplayDialog("Tips", "Please select the storage location of the database.", "OK");
                                                        }
                                                        else
                                                        {
                                                            if (string.IsNullOrEmpty(config.ScriptPath))
                                                            {
                                                                EditorUtility.DisplayDialog("Tips", "Please select the storage location of the script.", "OK");
                                                            }
                                                            else
                                                            {
                                                                if (tableData[i][j].IsNeedCreateScript)
                                                                {
                                                                    ScriptWriter.Writer(config.ScriptPath + tableData[i][j].TableName + ".cs", ref tableData[i][j]);
                                                                }
                                                                SQLite3Creator.Creator(ref tableData[i][j], config.DbPath.Remove(0, 7));

                                                                EditorUtility.DisplayDialog("Tips", "Convert excel to sqlite3 table finished.", "OK");

                                                                if (isSingleFile)
                                                                {
                                                                    Close();
                                                                }
                                                            }
                                                        }
                                                    }
                                                    catch (Exception ex)
                                                    {
                                                        EditorUtility.DisplayDialog("Error", "Convert excel to sqlite3 table has an error:" + ex.Message, "OK");
                                                    }
                                                }
                                            }
                                            EditorGUILayout.EndHorizontal();
                                        }
                                        EditorGUILayout.EndVertical();
                                    }
                                }
                                EditorGUILayout.EndVertical();
                            }
                        }
                    }
                    EditorGUILayout.EndScrollView();
                }
            }
            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 6
0
        private void OnGUI()
        {
            GUILayout.Label("Excel To SQLite3 Table", EditorStyles.boldLabel);

            EditorGUILayout.BeginVertical("box");
            {
                EditorGUILayout.BeginVertical("box");
                {
                    GUILayout.BeginHorizontal();
                    {
                        isSingleFile = EditorGUILayout.ToggleLeft("Single Excel", isSingleFile, GUILayout.Width(245));
                        isSingleFile = !EditorGUILayout.ToggleLeft("Excel Directory", !isSingleFile, GUILayout.Width(245));

                        if (preSelect != isSingleFile)
                        {
                            TableData[][] temp = tableData;
                            tableData    = preTableData;
                            preTableData = temp;

                            preSelect = isSingleFile;

                            EditorPrefs.SetBool(selectPrefKey, isSingleFile);
                        }
                    }

                    GUILayout.EndHorizontal();
                    GUILayout.Space(15);

                    if (isSingleFile)
                    {
                        GUILayout.BeginHorizontal();
                        {
                            excelPath = EditorGUILayout.TextField("Excel Path", excelPath, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                excelPath = SQLite3Path.SelectExcelPath();
                            }
                        }
                        GUILayout.EndHorizontal();

                        if (GUILayout.Button("Preview"))
                        {
                            if (string.IsNullOrEmpty(excelPath))
                            {
                                EditorUtility.DisplayDialog("Tips", "Please select an excel file first.", "OK");
                            }
                            else
                            {
                                LoadExcel(Path.Combine(dataPath, excelPath));
                            }
                        }
                    }
                    else
                    {
                        GUILayout.BeginHorizontal();
                        {
                            excelFolder = EditorGUILayout.TextField("Excel Directory", excelFolder, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                excelFolder = SQLite3Path.SelectExcelFolder();
                            }
                        }
                        GUILayout.EndHorizontal();

                        if (GUILayout.Button("Preview"))
                        {
                            if (string.IsNullOrEmpty(excelFolder))
                            {
                                EditorUtility.DisplayDialog("Tips", "Please select a directory where excel is stored.", "OK");
                            }
                            else
                            {
                                LoadExcelDirectory(Path.Combine(dataPath, excelFolder));
                            }
                        }
                    }
                }
                EditorGUILayout.EndVertical();

                if (null != tableData)
                {
                    sheetLength = tableData.Length;
                    //config = isSingleFile ? singlePathConfig : multiPathConfig;
                    EditorGUILayout.BeginVertical("box");
                    {
                        GUILayout.BeginHorizontal();
                        {
                            dbPath = EditorGUILayout.TextField("Database Save Path", dbPath, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                dbPath = SQLite3Path.SelectDbSavePath();
                            }
                        }
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        {
                            scriptFolder = EditorGUILayout.TextField("Script Save Directory", scriptFolder, GUILayout.Width(440));
                            if (GUILayout.Button("Select", GUILayout.MaxWidth(88)))
                            {
                                scriptFolder = SQLite3Path.SelectScriptSaveFolder();
                            }
                        }
                        GUILayout.EndHorizontal();


                        if (!isSingleFile && sheetLength > 1)
                        {
                            if (GUILayout.Button("Create All"))
                            {
                                try
                                {
                                    if (string.IsNullOrEmpty(dbPath))
                                    {
                                        EditorUtility.DisplayDialog("Tips", "Please select the storage location of the database.", "OK");
                                    }
                                    else
                                    {
                                        if (string.IsNullOrEmpty(scriptFolder))
                                        {
                                            EditorUtility.DisplayDialog("Tips", "Please select the storage location of the script.", "OK");
                                        }
                                        else
                                        {
                                            for (int i = 0; i < sheetLength; i++)
                                            {
                                                rowLength = tableData[i].Length;
                                                for (int j = 0; j < rowLength; j++)
                                                {
                                                    if (tableData[i][j].IsEnable)
                                                    {
                                                        progressValue = 1.0f;
                                                        if (tableData[i][j].IsNeedCreateScript)
                                                        {
                                                            progressValue = .5f;
                                                            EditorUtility.DisplayProgressBar("Convert excel to C# script...", "Convert excel named: " + tableData[i][j].TableName, i * progressValue / sheetLength);
                                                            ScriptWriter.Writer(string.Format("{0}{1}.cs", Path.Combine(dataPath, scriptFolder), tableData[i][j].TableName), ref tableData[i][j]);
                                                        }
                                                        EditorUtility.DisplayProgressBar("Convert excel to SQLite3 table...", "Convert excel named: " + tableData[i][j].TableName, i * .5f / sheetLength);

                                                        SQLite3Creator.Creator(ref tableData[i][j], Path.Combine(dataPath, dbPath));
                                                    }
                                                }
                                            }
                                            EditorUtility.DisplayProgressBar("CompileCSharp Script...", "Please Waiting...", 1.5f);

                                            EditorUtility.ClearProgressBar();

                                            EditorUtility.DisplayDialog("Tips", "Convert excel to SQLite3 table finished.", "OK");
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    EditorUtility.DisplayDialog("Error", "Convert excel to SQLite3 table has an error:" + ex.Message, "OK");
                                }
                                Close();
                            }
                        }
                    }
                    EditorGUILayout.EndVertical();

                    scrollPos = GUILayout.BeginScrollView(scrollPos);
                    for (int i = 0; i < sheetLength; ++i)
                    {
                        if (null != tableData[i])
                        {
                            rowLength = tableData[i].Length;
                            for (int j = 0; j < rowLength; ++j)
                            {
                                EditorGUILayout.BeginVertical("box");
                                {
                                    GUILayout.BeginHorizontal();
                                    {
                                        tableData[i][j].TableName = EditorGUILayout.TextField("Table Name",
                                                                                              tableData[i][j].TableName, GUILayout.Width(440));

                                        tableData[i][j].IsEnable = EditorGUILayout.ToggleLeft("Enable",
                                                                                              tableData[i][j].IsEnable, GUILayout.Width(88));
                                    }
                                    GUILayout.EndHorizontal();

                                    if (tableData[i][j].IsEnable)
                                    {
                                        GUILayout.Space(10);
                                        EditorGUILayout.BeginVertical("box");
                                        {
                                            GUILayout.BeginHorizontal();
                                            {
                                                EditorGUILayout.LabelField("Property Name", centerTittleStyle, GUILayout.Width(104));
                                                GUILayout.Space(4);
                                                EditorGUILayout.LabelField("Property Describe", centerTittleStyle, GUILayout.Width(286));
                                                GUILayout.Space(4);
                                                EditorGUILayout.LabelField("SQLite3 Type", centerTittleStyle, GUILayout.Width(104));
                                            }
                                            GUILayout.EndHorizontal();
                                            GUILayout.Space(10);

                                            columnLength = tableData[i][j].ColumnName.Length;
                                            for (int k = 0; k < columnLength; ++k)
                                            {
                                                tableData[i][j].IsColumnEnables[k] = EditorGUILayout.BeginToggleGroup(
                                                    "Enable",
                                                    tableData[i][j].IsColumnEnables[k]);
                                                {
                                                    GUILayout.BeginVertical("box");
                                                    {
                                                        GUILayout.BeginHorizontal();
                                                        {
                                                            tableData[i][j].ColumnName[k] =
                                                                EditorGUILayout.TextField(tableData[i][j].ColumnName[k],
                                                                                          GUILayout.MaxWidth(104));
                                                            GUILayout.Space(4);
                                                            tableData[i][j].ColumnDescribes[k] =
                                                                EditorGUILayout.TextField(tableData[i][j].ColumnDescribes[k],
                                                                                          GUILayout.MaxWidth(286));
                                                            GUILayout.Space(4);
                                                            tableData[i][j].SQLite3Types[k] =
                                                                (SQLite3ValueType)
                                                                EditorGUILayout.EnumPopup(tableData[i][j].SQLite3Types[k],
                                                                                          GUILayout.MaxWidth(104));

                                                            //tableData[i][j].SQLite3Constraints[k] =
                                                            //    (SQLite3Constraint)
                                                            //        EditorGUILayout.EnumPopup(tableData[i][j].SQLite3Constraints[k],
                                                            //            GUILayout.MaxWidth(100));
                                                        }
                                                        GUILayout.EndHorizontal();
                                                        GUILayout.Space(10);
                                                        GUILayout.BeginHorizontal("box");
                                                        {
                                                            SQLite3Constraint constraint = tableData[i][j].SQLite3Constraints[k];
                                                            bool isPrimaryKey            = (constraint & SQLite3Constraint.PrimaryKey) != 0;
                                                            bool isAutoIncrement         = (constraint & SQLite3Constraint.AutoIncrement) != 0;
                                                            bool isNotNull = (constraint & SQLite3Constraint.NotNull) != 0;
                                                            bool isUnique  = (constraint & SQLite3Constraint.Unique) != 0;

                                                            EditorGUILayout.LabelField("SQLite3 Constraint:", leftTittleStyle, GUILayout.Width(114));
                                                            isPrimaryKey = EditorGUILayout.ToggleLeft("PrimaryKey", isPrimaryKey, GUILayout.Width(80));

                                                            if (tableData[i][j].SQLite3Types[k] != SQLite3ValueType.Integer)
                                                            {
                                                                GUI.enabled     = false;
                                                                isAutoIncrement = false;
                                                            }

                                                            isAutoIncrement = EditorGUILayout.ToggleLeft("AutoIncrement", isAutoIncrement, GUILayout.Width(104));
                                                            GUI.enabled     = true;

                                                            if (isPrimaryKey)
                                                            {
                                                                isUnique    = false;
                                                                isNotNull   = false;
                                                                GUI.enabled = false;
                                                            }
                                                            isNotNull   = EditorGUILayout.ToggleLeft("NotNull", isNotNull, GUILayout.Width(60));
                                                            isUnique    = EditorGUILayout.ToggleLeft("Unique", isUnique, GUILayout.Width(60));
                                                            GUI.enabled = true;
                                                            bool isDefault = !(isPrimaryKey || isAutoIncrement || isNotNull || isUnique);
                                                            isDefault = EditorGUILayout.ToggleLeft("Default", isDefault, GUILayout.Width(60));
                                                            if (isDefault)
                                                            {
                                                                isPrimaryKey = isAutoIncrement = isNotNull = isUnique = false;
                                                            }

                                                            if (isDefault)
                                                            {
                                                                constraint = SQLite3Constraint.Default;
                                                            }
                                                            else
                                                            {
                                                                constraint = constraint & ~SQLite3Constraint.Default;
                                                            }

                                                            if (isPrimaryKey)
                                                            {
                                                                for (int m = 0; m < columnLength; m++)
                                                                {
                                                                    tableData[i][j].SQLite3Constraints[m] &= ~SQLite3Constraint.PrimaryKey;
                                                                }
                                                                constraint |= SQLite3Constraint.PrimaryKey;
                                                            }
                                                            else
                                                            {
                                                                constraint = constraint & ~SQLite3Constraint.PrimaryKey;
                                                            }

                                                            if (isAutoIncrement)
                                                            {
                                                                constraint |= SQLite3Constraint.AutoIncrement;
                                                            }
                                                            else
                                                            {
                                                                constraint &= ~SQLite3Constraint.AutoIncrement;
                                                            }

                                                            if (isNotNull)
                                                            {
                                                                constraint |= SQLite3Constraint.NotNull;
                                                            }
                                                            else
                                                            {
                                                                constraint &= ~SQLite3Constraint.NotNull;
                                                            }

                                                            if (isUnique)
                                                            {
                                                                constraint |= SQLite3Constraint.Unique;
                                                            }
                                                            else
                                                            {
                                                                constraint &= ~SQLite3Constraint.Unique;
                                                            }

                                                            tableData[i][j].SQLite3Constraints[k] = constraint;
                                                        }
                                                        GUILayout.EndHorizontal();
                                                    }
                                                    GUILayout.EndVertical();
                                                }
                                                EditorGUILayout.EndToggleGroup();
                                            }

                                            EditorGUILayout.BeginHorizontal("box");
                                            {
                                                tableData[i][j].IsNeedCreateScript =
                                                    EditorGUILayout.ToggleLeft("Need create or update script?",
                                                                               tableData[i][j].IsNeedCreateScript, GUILayout.Width(258));
                                                GUILayout.Space(10);
                                                if (GUILayout.Button("Create", GUILayout.Width(242)))
                                                {
                                                    try
                                                    {
                                                        if (string.IsNullOrEmpty(dbPath))
                                                        {
                                                            EditorUtility.DisplayDialog("Tips", "Please select the storage location of the database.", "OK");
                                                        }
                                                        else
                                                        {
                                                            if (string.IsNullOrEmpty(scriptFolder))
                                                            {
                                                                EditorUtility.DisplayDialog("Tips", "Please select the storage location of the script.", "OK");
                                                            }
                                                            else
                                                            {
                                                                if (tableData[i][j].IsNeedCreateScript)
                                                                {
                                                                    ScriptWriter.Writer(string.Format("{0}{1}.cs", Path.Combine(dataPath, scriptFolder), tableData[i][j].TableName), ref tableData[i][j]);
                                                                }
                                                                SQLite3Creator.Creator(ref tableData[i][j], Path.Combine(dataPath, dbPath));

                                                                EditorUtility.DisplayDialog("Tips", "Convert excel to SQLite3 table finished.", "OK");

                                                                if (isSingleFile)
                                                                {
                                                                    Close();
                                                                }
                                                            }
                                                        }
                                                    }
                                                    catch (Exception ex)
                                                    {
                                                        EditorUtility.DisplayDialog("Error", "Convert excel to SQLite3 table has an error:" + ex.Message, "OK");
                                                    }
                                                }
                                            }
                                            EditorGUILayout.EndHorizontal();
                                        }
                                        EditorGUILayout.EndVertical();
                                    }
                                }
                                EditorGUILayout.EndVertical();
                            }
                        }
                    }
                    EditorGUILayout.EndScrollView();
                }
            }
            EditorGUILayout.EndVertical();
        }