Browse Source

Added in Schema Spy and the GUI

Samuel W. Flint 7 years ago
parent
commit
e086d35d26
46 changed files with 3897 additions and 0 deletions
  1. BIN
      schemaSpyGUI/lib/mysql-connector-java-5.1.40-bin.jar
  2. BIN
      schemaSpyGUI/lib/schemaSpy_5.0.0.jar
  3. BIN
      schemaSpyGUI/lib/swing-layout-1.0.3.jar
  4. 39 0
      schemaSpyGUI/mysql.xml
  5. 28 0
      schemaSpyGUI/properties/db2.properties
  6. 17 0
      schemaSpyGUI/properties/db2net.properties
  7. 13 0
      schemaSpyGUI/properties/derby.properties
  8. 14 0
      schemaSpyGUI/properties/derbynet.properties
  9. 17 0
      schemaSpyGUI/properties/firebird.properties
  10. 15 0
      schemaSpyGUI/properties/hsqldb.properties
  11. 19 0
      schemaSpyGUI/properties/informix.properties
  12. 17 0
      schemaSpyGUI/properties/jtds.properties
  13. 16 0
      schemaSpyGUI/properties/maxdb.properties
  14. 26 0
      schemaSpyGUI/properties/mssql-jtds.properties
  15. 23 0
      schemaSpyGUI/properties/mssql.properties
  16. 13 0
      schemaSpyGUI/properties/mssql05-jtds.properties
  17. 30 0
      schemaSpyGUI/properties/mssql05.properties
  18. 27 0
      schemaSpyGUI/properties/mysql.properties
  19. 47 0
      schemaSpyGUI/properties/ora.properties
  20. 14 0
      schemaSpyGUI/properties/orathin.properties
  21. 16 0
      schemaSpyGUI/properties/pgsql.properties
  22. 19 0
      schemaSpyGUI/properties/sybase.properties
  23. 15 0
      schemaSpyGUI/properties/sybase2.properties
  24. 12 0
      schemaSpyGUI/properties/udbt4.properties
  25. 1 0
      schemaSpyGUI/schemaSpyGUI.bat
  26. BIN
      schemaSpyGUI/schemaSpyGUI.jar
  27. 4 0
      schemaSpyGUI/schemaSpyGUI.sh
  28. 145 0
      schemaSpyGUI/src/schemaspygui/AboutBox.form
  29. 148 0
      schemaSpyGUI/src/schemaspygui/AboutBox.java
  30. 42 0
      schemaSpyGUI/src/schemaspygui/BrowserOutputStart.java
  31. 37 0
      schemaSpyGUI/src/schemaspygui/Main.java
  32. 110 0
      schemaSpyGUI/src/schemaspygui/RunSchemaSpy.java
  33. 1203 0
      schemaSpyGUI/src/schemaspygui/SchemaSpyGUIApp.form
  34. 1764 0
      schemaSpyGUI/src/schemaspygui/SchemaSpyGUIApp.java
  35. 3 0
      schemaSpyGUI/src/schemaspygui/resources/ReleaseText.properties
  36. BIN
      schemaSpyGUI/src/schemaspygui/resources/cross.png
  37. BIN
      schemaSpyGUI/src/schemaspygui/resources/database_add.png
  38. BIN
      schemaSpyGUI/src/schemaspygui/resources/database_connect.png
  39. BIN
      schemaSpyGUI/src/schemaspygui/resources/database_go.png
  40. BIN
      schemaSpyGUI/src/schemaspygui/resources/disk.png
  41. BIN
      schemaSpyGUI/src/schemaspygui/resources/disk_multiple.png
  42. BIN
      schemaSpyGUI/src/schemaspygui/resources/door_out.png
  43. BIN
      schemaSpyGUI/src/schemaspygui/resources/folder_explore.png
  44. BIN
      schemaSpyGUI/src/schemaspygui/resources/folder_page_white.png
  45. BIN
      schemaSpyGUI/src/schemaspygui/resources/hourglass_go.png
  46. 3 0
      startSchemaSpyGui

BIN
schemaSpyGUI/lib/mysql-connector-java-5.1.40-bin.jar


BIN
schemaSpyGUI/lib/schemaSpy_5.0.0.jar


BIN
schemaSpyGUI/lib/swing-layout-1.0.3.jar


+ 39 - 0
schemaSpyGUI/mysql.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+<comment>Saved parameters for SchemaSpyGUI. Load it with Load Menu</comment>
+<entry key="pathOutputTField"></entry>
+<entry key="aHTMLCBox">false</entry>
+<entry key="descTArea"/>
+<entry key="dbNameTField"></entry>
+<entry key="tNameRExTField"/>
+<entry key="dbUserTField"></entry>
+<entry key="tNameExRExTField"/>
+<entry key="cssPathTField"/>
+<entry key="dbHostTField"></entry>
+<entry key="dbTypeCBox">mysql</entry>
+<entry key="noLogoCBox">true</entry>
+<entry key="dbDriverPTField">/home/swflint/bin/schemaSpyGUI/lib/mysql-connector-java-5.1.40-bin.jar</entry>
+<entry key="allSchemasCBox">false</entry>
+<entry key="highQuCBox">false</entry>
+<entry key="propertiePathTField">/home/swflint/bin/schemaSpyGUI/properties/mysql.properties</entry>
+<entry key="noAdsCBox">true</entry>
+<entry key="charsetComBox"/>
+<entry key="colExRelCBox">false</entry>
+<entry key="schemaTField"/>
+<entry key="cNameRExTField"/>
+<entry key="dbPortTField"/>
+<entry key="metaFilePathTField"/>
+<entry key="propertiesTField"/>
+<entry key="showFinishCBox">false</entry>
+<entry key="savePassCBox">false</entry>
+<entry key="noHTMLCBox">false</entry>
+<entry key="fontSizeTField"/>
+<entry key="dincFKCBox">false</entry>
+<entry key="sSpyPathTField">/home/swflint/bin/schemaSpyGUI/lib/schemaSpy_5.0.0.jar</entry>
+<entry key="dbPwdField"/>
+<entry key="lowQuCBox">false</entry>
+<entry key="railsCBox">false</entry>
+<entry key="noRowsBox">true</entry>
+<entry key="fontNameTField"/>
+</properties>

+ 28 - 0
schemaSpyGUI/properties/db2.properties

@@ -0,0 +1,28 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=IBM DB2 with the 'App' Driver
+
+connectionSpec=jdbc:db2:<db>
+db=database name
+
+driver=COM.ibm.db2.jdbc.app.DB2Driver
+
+# you can use the -cp command line option if you prefer
+driverPath=c:/Program Files/IBM/SQLLIB/java/db2java.zip
+
+# return text that represents a specific :view / :schema
+selectViewSql=select text from syscat.views where viewname=:view and viewschema=:schema
+
+# return table_name, constraint_name and text for a specific :schema
+selectCheckConstraintsSql=select constname constraint_name, tabname table_name, text from syscat.checks where tabschema=:schema
+
+selectTableIdsSql=select tableid table_id, tabname table_name from syscat.tables where tabschema=:schema
+selectIndexIdsSql=select iid index_id, indname index_name, tabname table_name from syscat.indexes where tabschema=:schema
+
+# regular expression used in conjunction with -all (and can be command line param '-schemaSpec')
+# this says which schemas to include in our evaluation of "all schemas"
+# basically .* (at the end) matches anything and the rest of it says "except schemas starting with SYS"
+schemaSpec=(?!^SYS.*$).*

+ 17 - 0
schemaSpyGUI/properties/db2net.properties

@@ -0,0 +1,17 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=IBM DB2 with the Type 4 'Net' Driver
+
+# gory details in db2.properties:
+extends=db2
+
+# use the 'net' driver (Type 4) instead of the default 'app' driver
+driver=COM.ibm.db2.jdbc.net.DB2Driver
+
+connectionSpec=jdbc:db2://<host>:<port>/<db>
+host=database host
+port=port on database host
+db=database name

+ 13 - 0
schemaSpyGUI/properties/derby.properties

@@ -0,0 +1,13 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Derby Embedded Server
+
+driver=org.apache.derby.jdbc.EmbeddedDriver
+
+connectionSpec=jdbc:derby:<db>
+
+# the following provide description(s) for above entries in connectionSpec:
+db=path to database

+ 14 - 0
schemaSpyGUI/properties/derbynet.properties

@@ -0,0 +1,14 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Derby Network Server
+
+driver=org.apache.derby.jdbc.ClientDriver
+
+connectionSpec=jdbc:derby://<host>/<db>
+
+# the following provide description(s) for above entries in connectionSpec:
+host=hostname[:port] host where database resides with optional port
+db=database name

+ 17 - 0
schemaSpyGUI/properties/firebird.properties

@@ -0,0 +1,17 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Firebird
+
+connectionSpec=jdbc:firebirdsql://<host>/<db>
+host=hostname[:port] (possibly just localhost)
+db=database name
+
+driver=org.firebirdsql.jdbc.FBDriver
+
+# Sample path to the firebird drivers.
+# Use -dp to override.
+# The driver should be available at http://www.firebirdsql.org
+driverPath=/usr/java/tools/firebird/jaybird-full-2.0.1.jar:;c:\jdbc\firebird\jaybird-full-2.0.1.jar

+ 15 - 0
schemaSpyGUI/properties/hsqldb.properties

@@ -0,0 +1,15 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=HSQLDB Server
+
+connectionSpec=jdbc:hsqldb:hsql://<host>/<db>
+host=hostname[:port] (possibly just localhost)
+
+driver=org.hsqldb.jdbcDriver
+
+# Sample path to the HSQLDB drivers.
+# Use -dp to override.
+driverPath=/HSQLDB/1.8.0/hsqldb.jar

+ 19 - 0
schemaSpyGUI/properties/informix.properties

@@ -0,0 +1,19 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+# InformixSQL driver details provided by Tom Conlin
+description=InformixSQL
+
+connectionSpec=jdbc:informix-sqli://<host>/<db>:INFORMIXSERVER=<server>
+host=hostname and port
+db=database name
+server=database server
+
+driver=com.informix.jdbc.IfxDriver
+
+# Sample path to the informix drivers.
+# Use -dp to override.
+# Note: you need to include both ifxjdbc.jar and ifxjdbcx.jar
+driverPath=/path/to/jdbc3.00.JC1/lib/ifxjdbc.jar:/path/to/jdbc3.00.JC1/lib/ifxjdbcx.jar

+ 17 - 0
schemaSpyGUI/properties/jtds.properties

@@ -0,0 +1,17 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Microsoft SQL Server JTDS
+
+# use majority of settings in mssql.properties:
+extends=mssql
+
+# JTDS-specific differences from settings in mssql.properties:
+connectionSpec=jdbc:jtds:sqlserver://<host>:<port>;databaseName=<db>;progName=schemaSpy
+driver=net.sourceforge.jtds.jdbc.Driver
+
+# Sample path to the jtds drivers.
+# Use -dp to override.
+driverPath=./jtds-1.2.jar

+ 16 - 0
schemaSpyGUI/properties/maxdb.properties

@@ -0,0 +1,16 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=MaxDB
+
+connectionSpec=jdbc:sapdb://<host>/<db>?sqlmode=ORACLE
+host=Name of the computer on which the database instance is running
+db=Name of database instance
+
+driver=com.sap.dbtech.jdbc.DriverSapDB
+
+# Sample path to the maxdb drivers.
+# Use -dp to override.
+driverPath=C:\Program Files\sdb\programs\runtime\jar\sapdbc.jar

+ 26 - 0
schemaSpyGUI/properties/mssql-jtds.properties

@@ -0,0 +1,26 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+# Provided by Ernest Zapata 
+description=jTDS JDBC Driver for Microsoft SQL 2000/2005 Server 
+ 
+# some details in mssql.properties: 
+extends=mssql
+
+# if domain is required then use -connprops=domain\=mydomain
+connectionSpec=jdbc:jtds:sqlserver://<host>:<port>/<db>
+ 
+host=database server host 
+port=database port on host 
+db=database name  
+ 
+driver=net.sourceforge.jtds.jdbc.Driver
+
+# Sample path to the sql server drivers.
+# Use -dp to override.
+driverPath=C:/Program Files/Java/shared/jtds/jtds-1.2.jar 
+ 
+# querying database metadata isn't thread safe with this driver.
+dbThreads=1

+ 23 - 0
schemaSpyGUI/properties/mssql.properties

@@ -0,0 +1,23 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Microsoft SQL Server
+
+connectionSpec=jdbc:microsoft:sqlserver://<host>:<port>;databaseName=<db>
+host=database server host
+port=database port on host
+db=database name
+
+driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
+
+# Sample path to the sql server drivers.
+# Use -dp to override.
+driverPath=C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/msbase.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/mssqlserver.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/msutil.jar
+
+# return text that represents a specific :view / :schema
+selectViewSql=select text from syscomments sc, sysobjects so where sc.id=so.id and so.name=:table
+
+# return table_name, column_name, comments for a specific :schema
+selectColumnCommentsSql=SELECT i_s.TABLE_NAME, i_s.COLUMN_NAME, s.value AS comments FROM INFORMATION_SCHEMA.COLUMNS i_s INNER JOIN sysproperties s ON  s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME) AND s.smallid = i_s.ORDINAL_POSITION AND s.name = 'MS_Description' WHERE OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0

+ 13 - 0
schemaSpyGUI/properties/mssql05-jtds.properties

@@ -0,0 +1,13 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+# Provided by Ernest Zapata 
+description=jTDS JDBC Driver for Microsoft SQL 2000/2005 Server 
+ 
+# majority of settings are identical to jTDS: 
+extends=mssql-jtds
+
+# with 2005's column comments SQL:
+include.1=mssql05::selectColumnCommentsSql

+ 30 - 0
schemaSpyGUI/properties/mssql05.properties

@@ -0,0 +1,30 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+# Provided by Craig Boland
+description=Microsoft SQL Server 2005
+
+# some details in mssql.properties:
+extends=mssql
+
+connectionSpec=jdbc:sqlserver://<host>:<port>;databaseName=<db>
+
+host=database server host
+port=database port on host
+db=database name
+
+driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
+
+# Sample path to the sql server drivers.
+# Use -dp to override.
+driverPath=C:/Program Files/Microsoft SQL Server 2005 JDBC Driver/sqljdbc_1.0/enu/sqljdbc.jar
+
+# querying database metadata isn't thread safe with this driver.
+dbThreads=1
+
+# reference: http://databases.aspfaq.com/schema-tutorials/schema-how-do-i-show-the-description-property-of-a-column.html
+# return table_name, column_name, comments for a specific :schema
+# Provided by Ernest Zapata 
+selectColumnCommentsSql=SELECT OBJECT_NAME(c.object_id) AS TABLE_NAME, c.name AS COLUMN_NAME, ex.value AS comments FROM sys.columns c LEFT OUTER JOIN sys.extended_properties ex ON ex.major_id = c.object_id AND ex.minor_id = c.column_id AND ex.name = 'MS_Description' WHERE OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0 ORDER BY OBJECT_NAME(c.object_id), c.column_id 

+ 27 - 0
schemaSpyGUI/properties/mysql.properties

@@ -0,0 +1,27 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+# note that MySQL tables must be of type 'InnoDB' or they won't
+# have foreign key relationships
+description=MySQL
+
+connectionSpec=jdbc:mysql://<host>/<db>
+host=hostname[:port] host where database resides with optional port
+db=database name
+
+driver=com.mysql.jdbc.Driver
+
+# Sample path to the MySQL drivers.
+# Use -dp to override.
+# The driver should be available at www.mysql.com/products/connector/j/
+driverPath=/mysql/mysql-connector-java-5.1.6-bin.jar
+
+# return table_name, comments for a specific :schema (which MySQL doesn't have, so the db name will be used)
+selectTableCommentsSql=select table_name, table_comment comments from information_schema.tables where table_schema=:schema
+
+# this should be significantly faster than the default implementation, but will be
+#  a rough estimate for InnoDB-based tables  
+# comment out this line if that's not appropriate for your situation
+selectRowCountSql=select table_rows row_count from information_schema.tables where table_name=:table 

+ 47 - 0
schemaSpyGUI/properties/ora.properties

@@ -0,0 +1,47 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Oracle with OCI8 Driver
+
+connectionSpec=jdbc:oracle:oci8:@<db>
+db=database name (from TNSNAMES.ORA)
+
+driver=oracle.jdbc.driver.OracleDriver
+
+# Sample path to the oracle drivers.
+# Use -dp to override.
+driverPath=c:/Oracle8I/ora81/jdbc/lib/classes12.zip
+
+# this Oracle driver's metadata services aren't thread safe so limit its access to one thread
+dbThreads=1
+
+# return text that represents a specific :view / :schema
+selectViewSql=select text from all_views where view_name=:view and owner=:owner
+
+# return table_name, constraint_name and text for a specific :schema
+selectCheckConstraintsSql=select table_name, constraint_name, search_condition text from all_constraints where constraint_type = 'C' and constraint_name not like 'SYS%' and owner = :owner
+
+# Oracle's driver does 'inappropriate things' when you call DatabaseMetaData.getIndexInfo().
+# (Oracle Bug No. 2686037 - IMPROVE IMPLEMENTATION OF DATABASEMETADATA.GETINDEXINFO - per Andrea (bsq99)
+# This is an opportunity to bypass that 'badness'
+selectIndexesSql=select null as table_cat, owner as table_schem, table_name, 0 as NON_UNIQUE, null as index_qualifier, null as index_name, 0 as type, 0 as ordinal_position, null as column_name, null as asc_or_desc, num_rows as cardinality, blocks as pages, null as filter_condition from all_tables where table_name = :table and owner = :owner union select null as table_cat, i.owner as table_schem, i.table_name, decode (i.uniqueness, 'UNIQUE', 0, 1), null as index_qualifier, i.index_name, 1 as type, c.column_position as ordinal_position, c.column_name, null as asc_or_desc, i.distinct_keys as cardinality, i.leaf_blocks as pages, null as filter_condition from all_indexes i, all_ind_columns c where i.table_name = :table and i.owner = :owner and i.index_name = c.index_name and i.table_owner = c.table_owner and i.table_name = c.table_name and i.owner = c.index_owner
+
+# return table_name, comments for a specific :schema
+# useful if db driver doesn't return this info
+selectTableCommentsSql=select table_name, comments from all_tab_comments where owner=:owner
+
+# return table_name, column_name, comments for a specific :schema
+# useful if db driver doesn't return this info
+selectColumnCommentsSql=select table_name, column_name, comments from all_col_comments where owner=:owner
+
+# return row_count for a specific :table
+#  many times faster than select count(*)
+#  thanks to Mikheil Kapanadze for the SQL
+selectRowCountSql=select table_rows row_count from information_schema.tables where table_name=:table 
+
+# regular expression used in conjunction with -all (and can be command line param '-schemaSpec')
+# this says which schemas to include in our evaluation of "all schemas"
+# basically .* (at the end) matches anything and the rest of it says "except SYS or SYSTEM or ......."
+schemaSpec=(?!^SYS$|^SYSTEM$|^DBSNMP$|^OUTLN$|^MDSYS$|^ORDSYS$|^ORDPLUGINS$|^CTXSYS$|^DSSYS$|^PERFSTAT$|^WKPROXY$|^WKSYS$|^WMSYS$|^XDB$|^ANONYMOUS$|^ODM$|^ODM_MTR$|^OLAPSYS$|^TRACESVR$|^REPADMIN$).*

+ 14 - 0
schemaSpyGUI/properties/orathin.properties

@@ -0,0 +1,14 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Oracle with Thin Driver
+
+# gory details in ora.properties:
+extends=ora
+
+connectionSpec=jdbc:oracle:thin:@<host>:<port>:<db>
+host=database host
+port=port on database host
+db=database SID as known on host

+ 16 - 0
schemaSpyGUI/properties/pgsql.properties

@@ -0,0 +1,16 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=PostgreSQL
+
+connectionSpec=jdbc:postgresql://<host>/<db>
+host=hostname[:port] (possibly just localhost)
+db=database name
+
+driver=org.postgresql.Driver
+
+# Sample path to the postgresql drivers.
+# Use -dp to override.
+driverPath=/whereever/postgresql-8.0-312.jdbc3.jar

+ 19 - 0
schemaSpyGUI/properties/sybase.properties

@@ -0,0 +1,19 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Sybase Server (jdbc3)
+
+connectionSpec=jdbc:sybase:Tds:<host>:<port>/<db>
+host=database server host
+port=database port on host
+db=database name
+
+driver=com.sybase.jdbc3.jdbc.SybDriver
+
+# Sample path to the sybase drivers.
+# Use -dp to override.
+driverPath=D:/Programme/sybase/jConnect-6_0/classes/jconn3.jar;C:/Programme/sybase/jConnect-6_0/classes/jconn3.jar;D:/Programs/sybase/jConnect-6_0/classes/jconn3.jar;C:/Programs/sybase/jConnect-6_0/classes/jconn3.jar
+
+selectRowCountSql=select rowcnt row_count from systabstats where id = object_id(':table') and indid in (0,1)

+ 15 - 0
schemaSpyGUI/properties/sybase2.properties

@@ -0,0 +1,15 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=Sybase Server (jdbc2)
+
+# gory details in sybase.properties:
+extends=sybase
+
+driver=com.sybase.jdbc2.jdbc.SybDriver
+
+# Sample path to the sybase drivers.
+# Use -dp to override.
+driverPath=D:/Programme/sybase/jConnect-5_5/classes/jconn2.jar;C:/Programme/sybase/jConnect-5_5/classes/jconn2.jar;D:/Programs/sybase/jConnect-5_5/classes/jconn2.jar;C:/Programs/sybase/jConnect-5_5/classes/jconn2.jar

+ 12 - 0
schemaSpyGUI/properties/udbt4.properties

@@ -0,0 +1,12 @@
+#
+# see http://schemaspy.sourceforge.net/dbtypes.html
+# for configuration / customization details
+#
+
+description=DB2 UDB Type 4 Driver
+
+# gory details in db2net.properties:
+extends=db2net
+
+# specify UDB Driver...everything else is same as db2net
+driver=com.ibm.db2.jcc.DB2Driver

+ 1 - 0
schemaSpyGUI/schemaSpyGUI.bat

@@ -0,0 +1 @@
+java -jar schemaSpyGUI.jar

BIN
schemaSpyGUI/schemaSpyGUI.jar


+ 4 - 0
schemaSpyGUI/schemaSpyGUI.sh

@@ -0,0 +1,4 @@
+#!/bin/sh
+#Start SchemaSpyGUI
+echo 'starting SchemaSpyGUI'
+java -jar schemaSpyGUI.jar

+ 145 - 0
schemaSpyGUI/src/schemaspygui/AboutBox.form

@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <NonVisualComponents>
+    <Container class="javax.swing.JDialog" name="jDialog1">
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+    </Container>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="127" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="2" attributes="0">
+                              <Component id="jLabel2" alignment="2" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel1" alignment="2" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="170" max="-2" attributes="0"/>
+                          <Component id="button_CLOSE" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jScrollPane1" pref="382" max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                  <Component id="jScrollPane1" pref="271" max="32767" attributes="0"/>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Component id="button_CLOSE" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="button_CLOSE">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Close" noResource="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="button_CLOSEActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+              <ResourceString bundle="schemaspygui/resources/ReleaseText.properties" key="ProgramName" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
+            </Property>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel2">
+          <Properties>
+            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+              <ResourceString bundle="schemaspygui/resources/ReleaseText.properties" key="VersionInfo" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
+            </Property>
+          </Properties>
+        </Component>
+        <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+          <AuxValues>
+            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+          </AuxValues>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+          <SubComponents>
+            <Component class="javax.swing.JEditorPane" name="jEditorPane1">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="null"/>
+                </Property>
+                <Property name="contentType" type="java.lang.String" value="text/html" noResource="true"/>
+                <Property name="editable" type="boolean" value="false"/>
+                <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+                  <ResourceString bundle="schemaspygui/resources/ReleaseText.properties" key="ReleaseText" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
+                </Property>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>

+ 148 - 0
schemaSpyGUI/src/schemaspygui/AboutBox.java

@@ -0,0 +1,148 @@
+/*
+ * AboutBox.java
+ *
+ * Created on 18. November 2007, 11:28
+ */
+
+package schemaspygui;
+
+import javax.swing.*;
+
+/**
+ *
+ * @author joachim uhl; mailto:admin@joachim-uhl.de; http://www.joachim-uhl.de/projekte/schemaspygui/
+ */
+public class AboutBox extends javax.swing.JDialog {
+    
+    /** Creates new form AboutBox */
+    public AboutBox(JFrame gui) {
+        startup(gui);
+    }
+    
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jDialog1 = new javax.swing.JDialog();
+        jPanel1 = new javax.swing.JPanel();
+        button_CLOSE = new javax.swing.JButton();
+        jLabel1 = new javax.swing.JLabel();
+        jLabel2 = new javax.swing.JLabel();
+        jScrollPane1 = new javax.swing.JScrollPane();
+        jEditorPane1 = new javax.swing.JEditorPane();
+
+        FormListener formListener = new FormListener();
+
+        org.jdesktop.layout.GroupLayout jDialog1Layout = new org.jdesktop.layout.GroupLayout(jDialog1.getContentPane());
+        jDialog1.getContentPane().setLayout(jDialog1Layout);
+        jDialog1Layout.setHorizontalGroup(
+            jDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(0, 400, Short.MAX_VALUE)
+        );
+        jDialog1Layout.setVerticalGroup(
+            jDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(0, 300, Short.MAX_VALUE)
+        );
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+        button_CLOSE.setText("Close"); // NOI18N
+        button_CLOSE.addActionListener(formListener);
+
+        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
+        java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("schemaspygui/resources/ReleaseText"); // NOI18N
+        jLabel1.setText(bundle.getString("ProgramName")); // NOI18N
+
+        jLabel2.setText(bundle.getString("VersionInfo")); // NOI18N
+
+        jEditorPane1.setBorder(null);
+        jEditorPane1.setContentType("text/html"); // NOI18N
+        jEditorPane1.setEditable(false);
+        jEditorPane1.setText(bundle.getString("ReleaseText")); // NOI18N
+        jScrollPane1.setViewportView(jEditorPane1);
+
+        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
+        jPanel1.setLayout(jPanel1Layout);
+        jPanel1Layout.setHorizontalGroup(
+            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(jPanel1Layout.createSequentialGroup()
+                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(jPanel1Layout.createSequentialGroup()
+                        .add(127, 127, 127)
+                        .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.CENTER)
+                            .add(jLabel2)
+                            .add(jLabel1)))
+                    .add(jPanel1Layout.createSequentialGroup()
+                        .add(170, 170, 170)
+                        .add(button_CLOSE))
+                    .add(jPanel1Layout.createSequentialGroup()
+                        .addContainerGap()
+                        .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE)))
+                .addContainerGap())
+        );
+        jPanel1Layout.setVerticalGroup(
+            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(jPanel1Layout.createSequentialGroup()
+                .addContainerGap()
+                .add(jLabel1)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jLabel2)
+                .add(18, 18, 18)
+                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 271, Short.MAX_VALUE)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
+                .add(button_CLOSE)
+                .addContainerGap())
+        );
+
+        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+        );
+
+        pack();
+    }
+
+    // Code for dispatching events from components to event handlers.
+
+    private class FormListener implements java.awt.event.ActionListener {
+        FormListener() {}
+        public void actionPerformed(java.awt.event.ActionEvent evt) {
+            if (evt.getSource() == button_CLOSE) {
+                AboutBox.this.button_CLOSEActionPerformed(evt);
+            }
+        }
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void startup(JFrame gui) {
+        initComponents();
+        //setLocation(gui.getLocation().x+210, gui.getLocation().y+40 );
+        setLocationRelativeTo(gui);
+    }
+    
+    private void button_CLOSEActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button_CLOSEActionPerformed
+        this.setVisible(false);
+    }//GEN-LAST:event_button_CLOSEActionPerformed
+    
+
+    
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton button_CLOSE;
+    private javax.swing.JDialog jDialog1;
+    private javax.swing.JEditorPane jEditorPane1;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JScrollPane jScrollPane1;
+    // End of variables declaration//GEN-END:variables
+    
+}

+ 42 - 0
schemaSpyGUI/src/schemaspygui/BrowserOutputStart.java

@@ -0,0 +1,42 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package schemaspygui;
+
+import java.io.*;
+
+/**
+ *
+ * @author joachim uhl; mailto:admin@joachim-uhl.de; http://www.joachim-uhl.de/projekte/schemaspygui/
+ */
+public class BrowserOutputStart {
+    static String url;
+
+    public BrowserOutputStart( String url_in ) {
+        url = "file://" +url_in;
+    }
+
+    public static void launch() {
+        try {
+            if (isWindows()) {
+                Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler "
+                + url );
+            } else {
+                Runtime.getRuntime().exec("firefox " + url);
+            }
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        }
+    }
+
+    public static boolean isWindows() {
+        String os = System.getProperty("os.name");
+        if ( os != null && os.startsWith("Windows")) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}

+ 37 - 0
schemaSpyGUI/src/schemaspygui/Main.java

@@ -0,0 +1,37 @@
+/*
+ * Main.java
+ *
+ * Created on 26. Juli 2007, 06:10
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package schemaspygui;
+
+/**
+ *
+ * @author joachim uhl; mailto:admin@joachim-uhl.de;
+ * http://www.joachim-uhl.de/projekte/schemaspygui/
+ */
+public class Main {
+    
+    /** Creates a new instance of Main */
+    public Main() {
+    }
+    
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) {
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                SchemaSpyGUIApp gui = new SchemaSpyGUIApp();
+                //gui.setLocation(25,25);
+                // Center the GUI
+                gui.setLocationRelativeTo(null);
+                gui.setVisible(true);
+            }
+        });
+    }
+}

+ 110 - 0
schemaSpyGUI/src/schemaspygui/RunSchemaSpy.java

@@ -0,0 +1,110 @@
+package schemaspygui;
+
+import java.io.*;
+import java.io.InputStreamReader;
+
+//Catches every error output from SchemaSpy
+/**
+ *
+ * @author joachim uhl; mailto:admin@joachim-uhl.de; http://www.joachim-uhl.de/projekte/schemaspygui/
+ */
+public class RunSchemaSpy implements Runnable {
+
+    private SchemaSpyGUIApp gui;
+    private String command;
+    private String displ_command;
+
+    public RunSchemaSpy(SchemaSpyGUIApp gui, String run_command, String display_command) {
+        this.gui = gui;
+        this.command = run_command;
+        this.displ_command = display_command;
+    }
+
+    public void run( ) {
+
+        try {
+             gui.setOutputText("This is the command (password not displayed!) SchemaSpyGUI has generated:" +"\n");
+             gui.setOutputText(displ_command +"\n");
+             gui.setOutputText("\n");
+             Process d = Runtime.getRuntime().exec(command);
+
+             ErrStreamOut errOut = new ErrStreamOut(d, gui);
+             InputStreamOut inOut = new InputStreamOut(d, gui);
+
+             Thread terrOut = new Thread(errOut);
+             Thread tinOut = new Thread(inOut);
+
+             terrOut.setName("terrOut");
+             terrOut.start();
+             tinOut.setName("tinOut");
+             tinOut.start();
+
+        } catch ( Exception ioe ) {
+                System.err.println( "IO error: " + ioe );
+                ioe.printStackTrace();
+        }
+    }
+
+}
+class ErrStreamOut implements Runnable {
+
+    private Process p;
+    private SchemaSpyGUIApp gui;
+
+    public ErrStreamOut(Process d, SchemaSpyGUIApp gui) {
+        this.p = d;
+        this.gui = gui;
+    }
+
+    public void run() {
+        try {
+            BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+            String s;
+            while ((s = in.readLine()) != null) {
+                gui.setOutputText(s +"\n");
+            }
+            int exitVal = p.waitFor();
+            gui.setOutputText("E=" + exitVal);
+            in.close();
+        } catch (Exception e) {
+           e.printStackTrace();
+        }
+    }
+}
+
+//Catches every "normal" output from SchemaSpy
+class InputStreamOut implements Runnable {
+    
+    private Process p;
+    private SchemaSpyGUIApp gui;
+    
+    public InputStreamOut(Process d, SchemaSpyGUIApp gui) {
+        this.p = d;
+        this.gui = gui;
+    }
+    
+    public void run() {
+        try {
+            BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+            //String s;
+            int c;
+            /*while ((s = in.readLine()) != null)
+                {GuiSchema.setText(s +"\n");}
+            int exitVal = p.waitFor();
+            GuiSchema.setText("" +exitVal);
+            */
+            while ((c = in.read()) != -1) {
+                /*String aChar = new Character((char)c).toString();
+                GuiSchema.setText(aChar);*/
+                gui.setOutputText(String.valueOf(Character.toChars(c)));
+            }
+            int exitVal = p.waitFor();
+            gui.setOutputText("I=" + exitVal);
+            in.close();
+            // Launch the result when finish if checked and No Errors
+            if (exitVal == 0 && gui.getAutoLaunchInfo()) {gui.startShowOutput();}
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 1203 - 0
schemaSpyGUI/src/schemaspygui/SchemaSpyGUIApp.form

@@ -0,0 +1,1203 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="mainMenuBar">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="fileMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File" noResource="true"/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value=""/>
+          </AuxValues>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="sParamMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Save Parameters ..." noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="sParamMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="lParamMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Load Parameters ..." noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lParamMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Exit" noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="infoMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Help" noResource="true"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="helpMenueAboutItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="About" noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="helpMenueAboutItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_SerializeTo" type="java.lang.String" value="Gui_helpMenueAboutItem"/>
+              </AuxValues>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+      <ResourceString bundle="schemaspygui/resources/ReleaseText.properties" key="ProgramName" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
+    </Property>
+    <Property name="name" type="java.lang.String" value="SchemaSpyGUIAppMainFrame" noResource="true"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="mainMenuBar"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jToolBar" alignment="0" pref="579" max="32767" attributes="1"/>
+          <Component id="jTabbedPane" alignment="0" pref="579" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <Component id="jToolBar" min="-2" max="-2" attributes="1"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jTabbedPane" pref="504" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JToolBar" name="jToolBar">
+      <Properties>
+        <Property name="rollover" type="boolean" value="true"/>
+      </Properties>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="exitButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/door_out.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Exit"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="quickSaveButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/disk.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Quick Save"/>
+            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Saves your settings in a default xml file&lt;/html&gt;"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="quickSaveButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="quickLoadButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/folder_page_white.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Quick Load"/>
+            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Loads your settings out of the default xml file&lt;/html&gt;"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="quickLoadButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JToolBar$Separator" name="jSeparator2">
+        </Component>
+        <Component class="javax.swing.JButton" name="saveParamFileButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/disk_multiple.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Save File"/>
+            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Save your settings with a filename (xml format) you can choose&lt;/html&gt;"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveParamFileButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="loadParamFileButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/folder_explore.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Load File"/>
+            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Load your settings.&lt;br&gt;Choose freely which xml config file you need&lt;/html&gt;"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="loadParamFileButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="clearFieldsButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/cross.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Clear Fields"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="clearFieldsButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JToolBar$Separator" name="jSeparator1">
+        </Component>
+        <Component class="javax.swing.JButton" name="startSchemaSpyButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/database_connect.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Start SchemaSpy"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="startSchemaSpyButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="showOutputButton">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/schemaspygui/resources/database_go.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Show Output"/>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="horizontalTextPosition" type="int" value="0"/>
+            <Property name="verticalTextPosition" type="int" value="3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="showOutputButtonActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JTabbedPane" name="jTabbedPane">
+      <Properties>
+        <Property name="toolTipText" type="java.lang.String" value=""/>
+      </Properties>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
+      <SubComponents>
+        <Container class="javax.swing.JPanel" name="reqParamPanel">
+          <Properties>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
+              <JTabbedPaneConstraints tabName="Parameters/Flags">
+                <Property name="tabTitle" type="java.lang.String" value="Parameters/Flags"/>
+              </JTabbedPaneConstraints>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <EmptySpace min="-2" pref="28" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="1" attributes="0">
+                                  <Group type="102" alignment="1" attributes="0">
+                                      <EmptySpace min="51" pref="51" max="51" attributes="0"/>
+                                      <Component id="lbl_DBName" max="32767" attributes="0"/>
+                                  </Group>
+                                  <Group type="102" alignment="1" attributes="0">
+                                      <EmptySpace min="53" pref="53" max="53" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="lbl_DBType" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <Component id="lbl_DBHost" max="32767" attributes="0"/>
+                                              <EmptySpace min="2" pref="2" max="2" attributes="0"/>
+                                          </Group>
+                                      </Group>
+                                  </Group>
+                                  <Group type="102" alignment="1" attributes="0">
+                                      <EmptySpace min="55" pref="55" max="55" attributes="0"/>
+                                      <Component id="lbl_DBUser" max="32767" attributes="0"/>
+                                  </Group>
+                                  <Component id="lbl_PathtoDBdrvr" alignment="1" min="-2" max="-2" attributes="0"/>
+                                  <Component id="lbl_PathSchemSpy" alignment="1" min="-2" max="-2" attributes="0"/>
+                                  <Component id="lbl_PropertiePath" alignment="1" min="-2" max="-2" attributes="0"/>
+                                  <Component id="lbl_prop" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="-2" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="propertiesTField" alignment="0" min="-2" pref="381" max="-2" attributes="2"/>
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Group type="103" groupAlignment="1" attributes="0">
+                                          <Component id="dbDriverPTField" alignment="0" min="-2" pref="306" max="-2" attributes="2"/>
+                                          <Component id="sSpyPathTField" alignment="0" min="-2" pref="306" max="-2" attributes="2"/>
+                                          <Component id="propertiePathTField" alignment="0" min="-2" pref="306" max="-2" attributes="1"/>
+                                      </Group>
+                                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="propertiePathButton" max="32767" attributes="0"/>
+                                          <Component id="sSpyPathButton" max="32767" attributes="0"/>
+                                          <Component id="driverButton" alignment="0" max="32767" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                                  <Group type="102" alignment="0" attributes="0">
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="dbTypeCBox" alignment="0" min="-2" pref="122" max="-2" attributes="1"/>
+                                          <Component id="dbNameTField" alignment="0" min="-2" pref="171" max="-2" attributes="2"/>
+                                          <Component id="dbUserTField" alignment="0" min="-2" pref="171" max="-2" attributes="2"/>
+                                          <Component id="dbHostTField" alignment="0" min="-2" pref="171" max="-2" attributes="2"/>
+                                      </Group>
+                                      <EmptySpace type="unrelated" min="-2" max="-2" attributes="0"/>
+                                      <Group type="103" groupAlignment="0" attributes="0">
+                                          <Component id="savePassCBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                          <Group type="102" alignment="0" attributes="0">
+                                              <Group type="103" groupAlignment="0" attributes="0">
+                                                  <Component id="lbl_DBPwd" alignment="0" pref="66" max="32767" attributes="0"/>
+                                                  <Group type="102" alignment="0" attributes="0">
+                                                      <EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
+                                                      <Component id="lbl_DBPort" max="32767" attributes="0"/>
+                                                      <EmptySpace min="18" pref="18" max="18" attributes="0"/>
+                                                  </Group>
+                                              </Group>
+                                              <EmptySpace min="-2" max="-2" attributes="0"/>
+                                              <Group type="103" groupAlignment="0" attributes="0">
+                                                  <Component id="dbPortTField" alignment="0" min="-2" pref="89" max="-2" attributes="2"/>
+                                                  <Component id="dbPwdField" alignment="0" min="-2" pref="89" max="-2" attributes="2"/>
+                                              </Group>
+                                          </Group>
+                                      </Group>
+                                      <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
+                                  </Group>
+                              </Group>
+                              <EmptySpace min="-2" pref="54" max="-2" attributes="0"/>
+                          </Group>
+                          <Group type="102" alignment="0" attributes="0">
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="flagsPanel" max="32767" attributes="1"/>
+                          </Group>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="1" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="dbTypeCBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_DBType" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="dbHostTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_DBHost" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="dbPortTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_DBPort" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="dbNameTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_DBName" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" pref="6" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="dbUserTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="dbPwdField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_DBPwd" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_DBUser" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="savePassCBox" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace pref="15" max="32767" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="dbDriverPTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="driverButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_PathtoDBdrvr" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="sSpyPathTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="sSpyPathButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_PathSchemSpy" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="propertiePathTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="propertiePathButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_PropertiePath" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="propertiesTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_prop" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
+                      <Component id="flagsPanel" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="lbl_DBType">
+              <Properties>
+                <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
+                  <FontInfo relative="true">
+                    <Font component="lbl_DBType" property="font" relativeSize="true" size="0"/>
+                  </FontInfo>
+                </Property>
+                <Property name="text" type="java.lang.String" value="DB Type:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JComboBox" name="dbTypeCBox">
+              <Properties>
+                <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+                  <StringArray count="20">
+                    <StringItem index="0" value=" "/>
+                    <StringItem index="1" value="db2"/>
+                    <StringItem index="2" value="db2net"/>
+                    <StringItem index="3" value="derby"/>
+                    <StringItem index="4" value="derbynet"/>
+                    <StringItem index="5" value="firebird"/>
+                    <StringItem index="6" value="hsqldb"/>
+                    <StringItem index="7" value="informix"/>
+                    <StringItem index="8" value="maxdb"/>
+                    <StringItem index="9" value="mssql"/>
+                    <StringItem index="10" value="mssql05"/>
+                    <StringItem index="11" value="mssql-jtds"/>
+                    <StringItem index="12" value="mssql05-jtds"/>
+                    <StringItem index="13" value="mysql"/>
+                    <StringItem index="14" value="ora"/>
+                    <StringItem index="15" value="orathin"/>
+                    <StringItem index="16" value="pgsql"/>
+                    <StringItem index="17" value="sybase"/>
+                    <StringItem index="18" value="sybase2"/>
+                    <StringItem index="19" value="udbt4"/>
+                  </StringArray>
+                </Property>
+                <Property name="toolTipText" type="java.lang.String" value="Choose your type of database (-t)"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="dbTypeCBoxActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_PathtoDBdrvr">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Path to DB driver:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_DBName">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="DB name:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_DBHost">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="DB Host:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_DBPort">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="DB Port:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_DBUser">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="DB User:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_DBPwd">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Password:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_PathSchemSpy">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Path to SchemaSpy:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JPasswordField" name="dbPwdField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Enter the User Password (-p)&lt;br&gt;It&apos;s not displayed in the SchemaSpy Output,&lt;br&gt;but be careful with the &quot;Save User Password&quot; option.&lt;br&gt; Currently the PWD is stored in clear text.&#xa;&lt;/html&gt;"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="dbUserTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="Enter the User name (-u)"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="dbNameTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="Enter the Database Name to connect to (-db)"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="dbHostTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="Enter your DB Host (-host)"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="dbPortTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="Enter the port for the DB (-port)"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="dbDriverPTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="The path to your DB driver"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JButton" name="driverButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Choose" noResource="true"/>
+                <Property name="toolTipText" type="java.lang.String" value="Click to choose the path to database driver file (-dp)" noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="driverButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JTextField" name="sSpyPathTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="The path to the schemaSpy.jar file (executable)"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JButton" name="sSpyPathButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Choose" noResource="true"/>
+                <Property name="toolTipText" type="java.lang.String" value="Click to choose the path to SchemaSpy" noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="sSpyPathButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_PropertiePath">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Path propertie file:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="propertiePathTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Specifies additional properties to be used when connecting to the database.&lt;br&gt; Specify a .properties file with key=value entries.&lt;br&gt;&#xa;Have a look at the .propertie Files in the subdirectory /properties in your SchemaSpyGUI folder.&lt;/html&gt;"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JButton" name="propertiePathButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Choose" noResource="true"/>
+                <Property name="toolTipText" type="java.lang.String" value="Click to choose the path to your database specific propertie file" noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="propertiePathButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JTextField" name="propertiesTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="Specify the entries directly, escaping the =&apos;s with \= and separating each key\=value pair with a ;."/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_prop">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Properties directly:"/>
+              </Properties>
+            </Component>
+            <Container class="javax.swing.JPanel" name="flagsPanel">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title=" Flags "/>
+                  </Border>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="44" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="aHTMLCBox" max="32767" attributes="0"/>
+                                  <EmptySpace min="46" pref="46" max="46" attributes="0"/>
+                              </Group>
+                              <Component id="noRowsBox" alignment="0" max="32767" attributes="0"/>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="railsCBox" max="32767" attributes="0"/>
+                                  <EmptySpace min="16" pref="16" max="16" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="qualityPanel" max="32767" attributes="0"/>
+                                  <EmptySpace min="49" pref="49" max="49" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Component id="dincFKCBox" alignment="0" max="32767" attributes="0"/>
+                                      <Group type="102" alignment="0" attributes="0">
+                                          <Component id="noHTMLCBox" max="32767" attributes="0"/>
+                                          <EmptySpace min="76" pref="76" max="76" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                                  <EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Group type="102" alignment="0" attributes="0">
+                                          <Component id="noAdsCBox" max="32767" attributes="0"/>
+                                          <EmptySpace min="6" pref="6" max="6" attributes="0"/>
+                                      </Group>
+                                      <Component id="noLogoCBox" alignment="0" max="32767" attributes="0"/>
+                                  </Group>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="showFinishCBox" min="-2" max="-2" attributes="2"/>
+                                  <EmptySpace min="60" pref="60" max="60" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="singleSignCBox" max="32767" attributes="0"/>
+                                  <EmptySpace min="122" pref="122" max="122" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace min="-2" pref="77" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="1" attributes="0">
+                          <EmptySpace pref="11" max="32767" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Group type="102" alignment="0" attributes="0">
+                                          <Group type="103" groupAlignment="1" attributes="0">
+                                              <Group type="102" alignment="1" attributes="0">
+                                                  <Component id="aHTMLCBox" min="-2" max="-2" attributes="0"/>
+                                                  <EmptySpace max="-2" attributes="0"/>
+                                                  <Component id="noRowsBox" min="-2" max="-2" attributes="0"/>
+                                                  <EmptySpace max="-2" attributes="0"/>
+                                                  <Component id="railsCBox" min="-2" max="-2" attributes="0"/>
+                                              </Group>
+                                              <Group type="102" alignment="1" attributes="0">
+                                                  <Component id="noHTMLCBox" min="-2" max="-2" attributes="0"/>
+                                                  <EmptySpace max="-2" attributes="0"/>
+                                                  <Component id="dincFKCBox" min="-2" max="-2" attributes="0"/>
+                                                  <EmptySpace max="-2" attributes="0"/>
+                                                  <Component id="singleSignCBox" min="-2" max="-2" attributes="0"/>
+                                              </Group>
+                                          </Group>
+                                          <EmptySpace type="separate" max="-2" attributes="0"/>
+                                          <Component id="showFinishCBox" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                      <Group type="102" alignment="0" attributes="0">
+                                          <Component id="noLogoCBox" min="-2" max="-2" attributes="0"/>
+                                          <EmptySpace max="-2" attributes="0"/>
+                                          <Component id="noAdsCBox" min="-2" max="-2" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                                  <EmptySpace pref="43" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="1" attributes="0">
+                                  <EmptySpace pref="80" max="-2" attributes="0"/>
+                                  <Component id="qualityPanel" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JCheckBox" name="aHTMLCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Allow HTML in comments" noResource="true"/>
+                    <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Any HTML embedded in comments normally gets encoded so that it&apos;s rendered as text.&lt;br&gt; This option allows it to be rendered as HTML. (-ahic)&lt;/html&gt;"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="noHTMLCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="No HTML" noResource="true"/>
+                    <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Only generate files needed for insertion/deletion of data (e.g. for scripts)&lt;br&gt; and an XML representation of the schema. (-nohtml)&lt;/html&gt;"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="dincFKCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Don&apos;t include foreign key" noResource="true"/>
+                    <Property name="toolTipText" type="java.lang.String" value="Don&apos;t include implied foreign key relationships. (-noimplied)"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="noAdsCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="No Ads"/>
+                    <Property name="toolTipText" type="java.lang.String" value="Don&apos;t show ads (-noads)"/>
+                    <Property name="enabled" type="boolean" value="false"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="noLogoCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="No Logo"/>
+                    <Property name="toolTipText" type="java.lang.String" value="Don&apos;t show Sourceforge.net image logo. (-nologo)"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="noRowsBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Don&apos;t query or display row counts"/>
+                    <Property name="toolTipText" type="java.lang.String" value="(-norows)"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="railsCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Ruby on Rails-based database"/>
+                    <Property name="toolTipText" type="java.lang.String" value="(-rails)"/>
+                  </Properties>
+                </Component>
+                <Container class="javax.swing.JPanel" name="qualityPanel">
+                  <Properties>
+                    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                      <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                        <TitledBorder title="Quality Image Diagrams:"/>
+                      </Border>
+                    </Property>
+                    <Property name="toolTipText" type="java.lang.String" value="Generate either higher or lower-quality diagrams. Depends Graphviz istallation."/>
+                  </Properties>
+
+                  <Layout>
+                    <DimensionLayout dim="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="highQuCBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="lowQuCBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace pref="37" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                    <DimensionLayout dim="1">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="102" alignment="0" attributes="0">
+                              <Component id="highQuCBox" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Component id="lowQuCBox" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                    </DimensionLayout>
+                  </Layout>
+                  <SubComponents>
+                    <Component class="javax.swing.JCheckBox" name="highQuCBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="High Quality"/>
+                        <Property name="toolTipText" type="java.lang.String" value="(-hq)"/>
+                      </Properties>
+                    </Component>
+                    <Component class="javax.swing.JCheckBox" name="lowQuCBox">
+                      <Properties>
+                        <Property name="text" type="java.lang.String" value="Low Quality"/>
+                        <Property name="toolTipText" type="java.lang.String" value="(-lq)"/>
+                      </Properties>
+                    </Component>
+                  </SubComponents>
+                </Container>
+                <Component class="javax.swing.JCheckBox" name="singleSignCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Single Sign-On"/>
+                    <Property name="toolTipText" type="java.lang.String" value="Don&apos;t require a user to be specified with -u to simplify configuration when running in a single sign-on environment (-sso)"/>
+                    <Property name="enabled" type="boolean" value="false"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JCheckBox" name="showFinishCBox">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Show Output when finished"/>
+                  </Properties>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Component class="javax.swing.JCheckBox" name="savePassCBox">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Save User Password"/>
+                <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;&lt;b&gt;WARNING:&lt;/b&gt; Saves DB User Password as plain text!&lt;/html&gt;"/>
+              </Properties>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_SerializeTo" type="java.lang.String" value="Gui_savePassCBox"/>
+              </AuxValues>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="outputOptionsPanel">
+          <Properties>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
+              <JTabbedPaneConstraints tabName="Ouput Options">
+                <Property name="tabTitle" type="java.lang.String" value="Ouput Options"/>
+              </JTabbedPaneConstraints>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace min="-2" pref="38" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="lbl_Desc" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Group type="103" alignment="0" groupAlignment="1" attributes="0">
+                              <Component id="descTAreaScrollPane" alignment="0" pref="517" max="32767" attributes="2"/>
+                              <Group type="102" alignment="0" max="-2" attributes="0">
+                                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                      <Component id="lbl_ColumnRegEx" alignment="1" min="-2" max="-2" attributes="0"/>
+                                      <Component id="lbl_TableExRegEx" alignment="1" min="-2" max="-2" attributes="0"/>
+                                      <Component id="lbl_TableRegEx" alignment="1" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace min="-2" max="-2" attributes="0"/>
+                                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                      <Component id="tNameRExTField" min="-2" pref="387" max="-2" attributes="1"/>
+                                      <Component id="tNameExRExTField" alignment="0" min="-2" pref="387" max="-2" attributes="1"/>
+                                      <Component id="cNameRExTField" alignment="0" min="-2" pref="387" max="-2" attributes="1"/>
+                                      <Component id="colExRelCBox" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                              </Group>
+                          </Group>
+                          <Component id="stylePanel" alignment="0" min="-2" max="-2" attributes="2"/>
+                      </Group>
+                      <EmptySpace min="-2" pref="19" max="-2" attributes="0"/>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace min="-2" pref="29" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="1" attributes="0">
+                          <Component id="lbl_Schema" min="-2" max="-2" attributes="2"/>
+                          <Component id="lbl_OutDir" alignment="1" min="-2" max="-2" attributes="2"/>
+                          <Component id="lbl_OutDir1" alignment="1" min="-2" max="-2" attributes="2"/>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="metaFilePathTField" alignment="0" min="-2" pref="309" max="-2" attributes="2"/>
+                          <Component id="schemaTField" min="-2" pref="309" max="-2" attributes="2"/>
+                          <Component id="pathOutputTField" min="-2" pref="309" max="-2" attributes="2"/>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="metaFilePathButton" pref="96" max="32767" attributes="0"/>
+                          <Component id="outDirButton" pref="96" max="32767" attributes="0"/>
+                          <Component id="allSchemasCBox" alignment="0" pref="96" max="32767" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" pref="28" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="pathOutputTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_OutDir" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="outDirButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="schemaTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_Schema" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="allSchemasCBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="metaFilePathTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="metaFilePathButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="lbl_OutDir1" alignment="3" pref="14" max="32767" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" pref="29" max="-2" attributes="0"/>
+                      <Component id="lbl_Desc" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Component id="descTAreaScrollPane" pref="118" max="32767" attributes="0"/>
+                      <EmptySpace type="separate" min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="lbl_TableRegEx" min="-2" max="-2" attributes="0"/>
+                          <Component id="tNameRExTField" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="lbl_TableExRegEx" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="tNameExRExTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="lbl_ColumnRegEx" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="cNameRExTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" max="-2" attributes="0"/>
+                      <Component id="colExRelCBox" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace type="separate" max="-2" attributes="0"/>
+                      <Component id="stylePanel" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="lbl_OutDir">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Output directory:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="pathOutputTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="Choose the path to your SchemaSpy output dir (-o)"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JButton" name="outDirButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Choose" noResource="true"/>
+                <Property name="toolTipText" type="java.lang.String" value="Click to choose the path to your SchemaSpy output dir (-o). You can leave this blank. SchemaSpyGUI will generate a path out of your db-name, db-user and db-schema name" noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="outDirButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JCheckBox" name="allSchemasCBox">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="All Schemas"/>
+                <Property name="toolTipText" type="java.lang.String" value="Evaluate all schemas in a database (-all)"/>
+              </Properties>
+              <Events>
+                <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="allSchemasCBoxStateChanged"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JTextField" name="schemaTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Database schema (optional if the same as user or isn&apos;t supported by your database)(-s).&lt;br&gt; Evaluate specified schemas.(-schemas &quot;s1,s2&quot;)&lt;/html&gt;"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_Schema">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Schema/s to explore:" noResource="true"/>
+                <Property name="toolTipText" type="java.lang.String" value="Schemas coma separated"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_Desc">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Description on summary page:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Container class="javax.swing.JScrollPane" name="descTAreaScrollPane">
+              <AuxValues>
+                <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+              </AuxValues>
+
+              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+              <SubComponents>
+                <Component class="javax.swing.JTextArea" name="descTArea">
+                  <Properties>
+                    <Property name="columns" type="int" value="20"/>
+                    <Property name="rows" type="int" value="4"/>
+                    <Property name="toolTipText" type="java.lang.String" value="Displays the specified textual description on summary pages (-desc).&#xa;For example: &lt;a href\=&apos;http://schemaspy.sourceforge.net&apos;&gt;SchemaSpy&lt;/a&gt;"/>
+                  </Properties>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Component class="javax.swing.JLabel" name="lbl_TableRegEx">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Table name RegExp:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="tNameRExTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;This is a regular expression that&apos;s used to determine which tables/views to include (-i).&lt;br&gt; For example: (.*book.*)|(library.*)&lt;/html&gt;"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_TableExRegEx">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Table Exclusion RegExp:"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="tNameExRExTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="This is a regular expression that&apos;s used to determine which tables/views to exclude (-I)."/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_ColumnRegEx">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Column Exclusion RegExp:" noResource="true"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="cNameRExTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Exclude matching columns from relationship analysis to simplify the generated graphs (-x).&lt;br&gt;For example: (book.isbn)|(borrower.address)&lt;/html&gt;"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JCheckBox" name="colExRelCBox">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Excluded relationships"/>
+                <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Set the columns to exclude from relationship diagrams where&lt;br&gt;the specified columns aren&apos;t directly referenced by the focal table. (-X)&lt;/html&gt;"/>
+              </Properties>
+            </Component>
+            <Container class="javax.swing.JPanel" name="stylePanel">
+              <Properties>
+                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+                  <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                    <TitledBorder title=" Style: (Modify the .css to specify HTML fonts) "/>
+                  </Border>
+                </Property>
+                <Property name="toolTipText" type="java.lang.String" value="Modify the .css to specify HTML fonts."/>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="lbl_Charset" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="charsetComBox" min="-2" pref="136" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="lbl_Font" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="fontNameTField" min="-2" pref="136" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="lbl_fontSize" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="fontSizeTField" min="-2" pref="39" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="1">
+                                  <Component id="lbl_css" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="cssPathTField" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="lbl_Charset" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="charsetComBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="lbl_Font" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="fontNameTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="lbl_fontSize" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="fontSizeTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="3" attributes="0">
+                              <Component id="lbl_css" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="cssPathTField" alignment="3" min="-2" max="-2" attributes="0"/>
+                              <Component id="jButton1" alignment="3" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+              <SubComponents>
+                <Component class="javax.swing.JComboBox" name="charsetComBox">
+                  <Properties>
+                    <Property name="editable" type="boolean" value="true"/>
+                    <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+                      <StringArray count="17">
+                        <StringItem index="0" value=""/>
+                        <StringItem index="1" value="UTF-8"/>
+                        <StringItem index="2" value="ISO-8859-1"/>
+                        <StringItem index="3" value="ISO-8859-2"/>
+                        <StringItem index="4" value="ISO-8859-3"/>
+                        <StringItem index="5" value="ISO-8859-4"/>
+                        <StringItem index="6" value="ISO-8859-5"/>
+                        <StringItem index="7" value="ISO-8859-6"/>
+                        <StringItem index="8" value="ISO-8859-7"/>
+                        <StringItem index="9" value="ISO-8859-8"/>
+                        <StringItem index="10" value="ISO-8859-9"/>
+                        <StringItem index="11" value="ISO-8859-10"/>
+                        <StringItem index="12" value="ISO-8859-11"/>
+                        <StringItem index="13" value="ISO-8859-12"/>
+                        <StringItem index="14" value="ISO-8859-13"/>
+                        <StringItem index="15" value="ISO-8859-14"/>
+                        <StringItem index="16" value="ISO-8859-15"/>
+                      </StringArray>
+                    </Property>
+                    <Property name="toolTipText" type="java.lang.String" value="Default by SchemaSpy: ISO-8859-1 (-charset)"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JLabel" name="lbl_Charset">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Charset:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JLabel" name="lbl_Font">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Font Name:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="fontNameTField">
+                  <Properties>
+                    <Property name="toolTipText" type="java.lang.String" value="Default font: &quot;Helvetica&quot; (-font). Use the file font name instead of Real name, ej. times or timesb instead of &quot;Times New Roman&quot; or &quot;Times New Roman Bold&quot;"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JLabel" name="lbl_fontSize">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Font size:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="fontSizeTField">
+                  <Properties>
+                    <Property name="toolTipText" type="java.lang.String" value="Fontsize default: 11 (-fontsize)"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JLabel" name="lbl_css">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Style css file:"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JTextField" name="cssPathTField">
+                  <Properties>
+                    <Property name="toolTipText" type="java.lang.String" value="css file default: schemaSpy.css (-css)"/>
+                  </Properties>
+                </Component>
+                <Component class="javax.swing.JButton" name="jButton1">
+                  <Properties>
+                    <Property name="text" type="java.lang.String" value="Choose"/>
+                    <Property name="toolTipText" type="java.lang.String" value="Click to choose the path to css file (-css)"/>
+                  </Properties>
+                  <Events>
+                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+                  </Events>
+                </Component>
+              </SubComponents>
+            </Container>
+            <Component class="javax.swing.JButton" name="metaFilePathButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Choose" noResource="true"/>
+                <Property name="toolTipText" type="java.lang.String" value="Click to choose the path to your Metafile (-meta). You can leave this blank." noResource="true"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="metaFilePathButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JTextField" name="metaFilePathTField">
+              <Properties>
+                <Property name="toolTipText" type="java.lang.String" value="Choose the path to your Metafile (-meta)"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="lbl_OutDir1">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Metafile Path:" noResource="true"/>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="outputPanel">
+          <Properties>
+            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+              <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
+                <EmptyBorder/>
+              </Border>
+            </Property>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
+              <JTabbedPaneConstraints tabName="SchemaSpy Output">
+                <Property name="tabTitle" type="java.lang.String" value="SchemaSpy Output"/>
+              </JTabbedPaneConstraints>
+            </Constraint>
+          </Constraints>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="sSpyOutTAreaScrollPane" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="1" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="sSpyOutTAreaScrollPane" pref="452" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Container class="javax.swing.JScrollPane" name="sSpyOutTAreaScrollPane">
+              <AuxValues>
+                <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+              </AuxValues>
+
+              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+              <SubComponents>
+                <Component class="javax.swing.JTextArea" name="sSpyOutTArea">
+                  <Properties>
+                    <Property name="editable" type="boolean" value="false"/>
+                    <Property name="lineWrap" type="boolean" value="true"/>
+                    <Property name="wrapStyleWord" type="boolean" value="true"/>
+                  </Properties>
+                </Component>
+              </SubComponents>
+            </Container>
+          </SubComponents>
+        </Container>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>

+ 1764 - 0
schemaSpyGUI/src/schemaspygui/SchemaSpyGUIApp.java

@@ -0,0 +1,1764 @@
+/*
+ * SchemaSpyGUIApp.java
+ *
+ * Created on 07.01.2009, 22:21:15
+ */
+
+package schemaspygui;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import javax.swing.*;
+import javax.swing.UIManager;
+import javax.swing.filechooser.FileFilter;
+import java.util.Set;
+import java.util.Properties;
+
+
+/**
+ *
+ * @author Joachim Uhl
+ */
+public class SchemaSpyGUIApp extends javax.swing.JFrame {
+
+    /** Creates new form SchemaSpyGUIApp */
+    public SchemaSpyGUIApp() {
+        setLookandFeel();
+        initParams();
+        initComponents();
+    }
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jToolBar = new javax.swing.JToolBar();
+        exitButton = new javax.swing.JButton();
+        quickSaveButton = new javax.swing.JButton();
+        quickLoadButton = new javax.swing.JButton();
+        jSeparator2 = new javax.swing.JToolBar.Separator();
+        saveParamFileButton = new javax.swing.JButton();
+        loadParamFileButton = new javax.swing.JButton();
+        clearFieldsButton = new javax.swing.JButton();
+        jSeparator1 = new javax.swing.JToolBar.Separator();
+        startSchemaSpyButton = new javax.swing.JButton();
+        showOutputButton = new javax.swing.JButton();
+        jTabbedPane = new javax.swing.JTabbedPane();
+        reqParamPanel = new javax.swing.JPanel();
+        lbl_DBType = new javax.swing.JLabel();
+        dbTypeCBox = new javax.swing.JComboBox();
+        lbl_PathtoDBdrvr = new javax.swing.JLabel();
+        lbl_DBName = new javax.swing.JLabel();
+        lbl_DBHost = new javax.swing.JLabel();
+        lbl_DBPort = new javax.swing.JLabel();
+        lbl_DBUser = new javax.swing.JLabel();
+        lbl_DBPwd = new javax.swing.JLabel();
+        lbl_PathSchemSpy = new javax.swing.JLabel();
+        dbPwdField = new javax.swing.JPasswordField();
+        dbUserTField = new javax.swing.JTextField();
+        dbNameTField = new javax.swing.JTextField();
+        dbHostTField = new javax.swing.JTextField();
+        dbPortTField = new javax.swing.JTextField();
+        dbDriverPTField = new javax.swing.JTextField();
+        driverButton = new javax.swing.JButton();
+        sSpyPathTField = new javax.swing.JTextField();
+        sSpyPathButton = new javax.swing.JButton();
+        lbl_PropertiePath = new javax.swing.JLabel();
+        propertiePathTField = new javax.swing.JTextField();
+        propertiePathButton = new javax.swing.JButton();
+        propertiesTField = new javax.swing.JTextField();
+        lbl_prop = new javax.swing.JLabel();
+        flagsPanel = new javax.swing.JPanel();
+        aHTMLCBox = new javax.swing.JCheckBox();
+        noHTMLCBox = new javax.swing.JCheckBox();
+        dincFKCBox = new javax.swing.JCheckBox();
+        noAdsCBox = new javax.swing.JCheckBox();
+        noLogoCBox = new javax.swing.JCheckBox();
+        noRowsBox = new javax.swing.JCheckBox();
+        railsCBox = new javax.swing.JCheckBox();
+        qualityPanel = new javax.swing.JPanel();
+        highQuCBox = new javax.swing.JCheckBox();
+        lowQuCBox = new javax.swing.JCheckBox();
+        singleSignCBox = new javax.swing.JCheckBox();
+        showFinishCBox = new javax.swing.JCheckBox();
+        savePassCBox = new javax.swing.JCheckBox();
+        outputOptionsPanel = new javax.swing.JPanel();
+        lbl_OutDir = new javax.swing.JLabel();
+        pathOutputTField = new javax.swing.JTextField();
+        outDirButton = new javax.swing.JButton();
+        allSchemasCBox = new javax.swing.JCheckBox();
+        schemaTField = new javax.swing.JTextField();
+        lbl_Schema = new javax.swing.JLabel();
+        lbl_Desc = new javax.swing.JLabel();
+        descTAreaScrollPane = new javax.swing.JScrollPane();
+        descTArea = new javax.swing.JTextArea();
+        lbl_TableRegEx = new javax.swing.JLabel();
+        tNameRExTField = new javax.swing.JTextField();
+        lbl_TableExRegEx = new javax.swing.JLabel();
+        tNameExRExTField = new javax.swing.JTextField();
+        lbl_ColumnRegEx = new javax.swing.JLabel();
+        cNameRExTField = new javax.swing.JTextField();
+        colExRelCBox = new javax.swing.JCheckBox();
+        stylePanel = new javax.swing.JPanel();
+        charsetComBox = new javax.swing.JComboBox();
+        lbl_Charset = new javax.swing.JLabel();
+        lbl_Font = new javax.swing.JLabel();
+        fontNameTField = new javax.swing.JTextField();
+        lbl_fontSize = new javax.swing.JLabel();
+        fontSizeTField = new javax.swing.JTextField();
+        lbl_css = new javax.swing.JLabel();
+        cssPathTField = new javax.swing.JTextField();
+        jButton1 = new javax.swing.JButton();
+        metaFilePathButton = new javax.swing.JButton();
+        metaFilePathTField = new javax.swing.JTextField();
+        lbl_OutDir1 = new javax.swing.JLabel();
+        outputPanel = new javax.swing.JPanel();
+        sSpyOutTAreaScrollPane = new javax.swing.JScrollPane();
+        sSpyOutTArea = new javax.swing.JTextArea();
+        mainMenuBar = new javax.swing.JMenuBar();
+        fileMenu = new javax.swing.JMenu();
+        sParamMenuItem = new javax.swing.JMenuItem();
+        lParamMenuItem = new javax.swing.JMenuItem();
+        exitMenuItem = new javax.swing.JMenuItem();
+        infoMenu = new javax.swing.JMenu();
+        helpMenueAboutItem = new javax.swing.JMenuItem();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("schemaspygui/resources/ReleaseText"); // NOI18N
+        setTitle(bundle.getString("ProgramName")); // NOI18N
+        setName("SchemaSpyGUIAppMainFrame"); // NOI18N
+
+        jToolBar.setRollover(true);
+
+        exitButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/door_out.png"))); // NOI18N
+        exitButton.setText("Exit");
+        exitButton.setFocusable(false);
+        exitButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        exitButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        exitButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                exitButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(exitButton);
+
+        quickSaveButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/disk.png"))); // NOI18N
+        quickSaveButton.setText("Quick Save");
+        quickSaveButton.setToolTipText("<html>Saves your settings in a default xml file</html>");
+        quickSaveButton.setFocusable(false);
+        quickSaveButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        quickSaveButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        quickSaveButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                quickSaveButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(quickSaveButton);
+
+        quickLoadButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/folder_page_white.png"))); // NOI18N
+        quickLoadButton.setText("Quick Load");
+        quickLoadButton.setToolTipText("<html>Loads your settings out of the default xml file</html>");
+        quickLoadButton.setFocusable(false);
+        quickLoadButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        quickLoadButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        quickLoadButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                quickLoadButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(quickLoadButton);
+        jToolBar.add(jSeparator2);
+
+        saveParamFileButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/disk_multiple.png"))); // NOI18N
+        saveParamFileButton.setText("Save File");
+        saveParamFileButton.setToolTipText("<html>Save your settings with a filename (xml format) you can choose</html>");
+        saveParamFileButton.setFocusable(false);
+        saveParamFileButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        saveParamFileButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        saveParamFileButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                saveParamFileButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(saveParamFileButton);
+
+        loadParamFileButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/folder_explore.png"))); // NOI18N
+        loadParamFileButton.setText("Load File");
+        loadParamFileButton.setToolTipText("<html>Load your settings.<br>Choose freely which xml config file you need</html>");
+        loadParamFileButton.setFocusable(false);
+        loadParamFileButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        loadParamFileButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        loadParamFileButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                loadParamFileButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(loadParamFileButton);
+
+        clearFieldsButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/cross.png"))); // NOI18N
+        clearFieldsButton.setText("Clear Fields");
+        clearFieldsButton.setFocusable(false);
+        clearFieldsButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        clearFieldsButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        clearFieldsButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                clearFieldsButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(clearFieldsButton);
+        jToolBar.add(jSeparator1);
+
+        startSchemaSpyButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/database_connect.png"))); // NOI18N
+        startSchemaSpyButton.setText("Start SchemaSpy");
+        startSchemaSpyButton.setFocusable(false);
+        startSchemaSpyButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        startSchemaSpyButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        startSchemaSpyButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                startSchemaSpyButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(startSchemaSpyButton);
+
+        showOutputButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/database_go.png"))); // NOI18N
+        showOutputButton.setText("Show Output");
+        showOutputButton.setFocusable(false);
+        showOutputButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+        showOutputButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+        showOutputButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                showOutputButtonActionPerformed(evt);
+            }
+        });
+        jToolBar.add(showOutputButton);
+
+        jTabbedPane.setToolTipText("");
+
+        reqParamPanel.setToolTipText("");
+
+        lbl_DBType.setFont(lbl_DBType.getFont());
+        lbl_DBType.setText("DB Type:"); // NOI18N
+
+        dbTypeCBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "db2", "db2net", "derby", "derbynet", "firebird", "hsqldb", "informix", "maxdb", "mssql", "mssql05", "mssql-jtds", "mssql05-jtds", "mysql", "ora", "orathin", "pgsql", "sybase", "sybase2", "udbt4" }));
+        dbTypeCBox.setToolTipText("Choose your type of database (-t)");
+        dbTypeCBox.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                dbTypeCBoxActionPerformed(evt);
+            }
+        });
+
+        lbl_PathtoDBdrvr.setText("Path to DB driver:"); // NOI18N
+
+        lbl_DBName.setText("DB name:"); // NOI18N
+
+        lbl_DBHost.setText("DB Host:"); // NOI18N
+
+        lbl_DBPort.setText("DB Port:"); // NOI18N
+
+        lbl_DBUser.setText("DB User:"); // NOI18N
+
+        lbl_DBPwd.setText("Password:"); // NOI18N
+
+        lbl_PathSchemSpy.setText("Path to SchemaSpy:"); // NOI18N
+
+        dbPwdField.setToolTipText("<html>Enter the User Password (-p)<br>It's not displayed in the SchemaSpy Output,<br>but be careful with the \"Save User Password\" option.<br> Currently the PWD is stored in clear text.\n</html>");
+
+        dbUserTField.setToolTipText("Enter the User name (-u)");
+
+        dbNameTField.setToolTipText("Enter the Database Name to connect to (-db)");
+
+        dbHostTField.setToolTipText("Enter your DB Host (-host)");
+
+        dbPortTField.setToolTipText("Enter the port for the DB (-port)");
+
+        dbDriverPTField.setToolTipText("The path to your DB driver");
+
+        driverButton.setText("Choose"); // NOI18N
+        driverButton.setToolTipText("Click to choose the path to database driver file (-dp)"); // NOI18N
+        driverButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                driverButtonActionPerformed(evt);
+            }
+        });
+
+        sSpyPathTField.setToolTipText("The path to the schemaSpy.jar file (executable)");
+
+        sSpyPathButton.setText("Choose"); // NOI18N
+        sSpyPathButton.setToolTipText("Click to choose the path to SchemaSpy"); // NOI18N
+        sSpyPathButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                sSpyPathButtonActionPerformed(evt);
+            }
+        });
+
+        lbl_PropertiePath.setText("Path propertie file:"); // NOI18N
+
+        propertiePathTField.setToolTipText("<html>Specifies additional properties to be used when connecting to the database.<br> Specify a .properties file with key=value entries.<br>\nHave a look at the .propertie Files in the subdirectory /properties in your SchemaSpyGUI folder.</html>");
+
+        propertiePathButton.setText("Choose"); // NOI18N
+        propertiePathButton.setToolTipText("Click to choose the path to your database specific propertie file"); // NOI18N
+        propertiePathButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                propertiePathButtonActionPerformed(evt);
+            }
+        });
+
+        propertiesTField.setToolTipText("Specify the entries directly, escaping the ='s with \\= and separating each key\\=value pair with a ;.");
+
+        lbl_prop.setText("Properties directly:");
+
+        flagsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(" Flags "));
+
+        aHTMLCBox.setText("Allow HTML in comments"); // NOI18N
+        aHTMLCBox.setToolTipText("<html>Any HTML embedded in comments normally gets encoded so that it's rendered as text.<br> This option allows it to be rendered as HTML. (-ahic)</html>");
+
+        noHTMLCBox.setText("No HTML"); // NOI18N
+        noHTMLCBox.setToolTipText("<html>Only generate files needed for insertion/deletion of data (e.g. for scripts)<br> and an XML representation of the schema. (-nohtml)</html>");
+
+        dincFKCBox.setText("Don't include foreign key"); // NOI18N
+        dincFKCBox.setToolTipText("Don't include implied foreign key relationships. (-noimplied)");
+
+        noAdsCBox.setText("No Ads");
+        noAdsCBox.setToolTipText("Don't show ads (-noads)");
+        noAdsCBox.setEnabled(false);
+
+        noLogoCBox.setText("No Logo");
+        noLogoCBox.setToolTipText("Don't show Sourceforge.net image logo. (-nologo)");
+
+        noRowsBox.setText("Don't query or display row counts");
+        noRowsBox.setToolTipText("(-norows)");
+
+        railsCBox.setText("Ruby on Rails-based database");
+        railsCBox.setToolTipText("(-rails)");
+
+        qualityPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Quality Image Diagrams:"));
+        qualityPanel.setToolTipText("Generate either higher or lower-quality diagrams. Depends Graphviz istallation.");
+
+        highQuCBox.setText("High Quality");
+        highQuCBox.setToolTipText("(-hq)");
+
+        lowQuCBox.setText("Low Quality");
+        lowQuCBox.setToolTipText("(-lq)");
+
+        org.jdesktop.layout.GroupLayout qualityPanelLayout = new org.jdesktop.layout.GroupLayout(qualityPanel);
+        qualityPanel.setLayout(qualityPanelLayout);
+        qualityPanelLayout.setHorizontalGroup(
+            qualityPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(qualityPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .add(qualityPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(highQuCBox)
+                    .add(lowQuCBox))
+                .addContainerGap(37, Short.MAX_VALUE))
+        );
+        qualityPanelLayout.setVerticalGroup(
+            qualityPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(qualityPanelLayout.createSequentialGroup()
+                .add(highQuCBox)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(lowQuCBox))
+        );
+
+        singleSignCBox.setText("Single Sign-On");
+        singleSignCBox.setToolTipText("Don't require a user to be specified with -u to simplify configuration when running in a single sign-on environment (-sso)");
+        singleSignCBox.setEnabled(false);
+
+        showFinishCBox.setText("Show Output when finished");
+
+        org.jdesktop.layout.GroupLayout flagsPanelLayout = new org.jdesktop.layout.GroupLayout(flagsPanel);
+        flagsPanel.setLayout(flagsPanelLayout);
+        flagsPanelLayout.setHorizontalGroup(
+            flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(flagsPanelLayout.createSequentialGroup()
+                .add(44, 44, 44)
+                .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(flagsPanelLayout.createSequentialGroup()
+                        .add(aHTMLCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .add(46, 46, 46))
+                    .add(noRowsBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .add(flagsPanelLayout.createSequentialGroup()
+                        .add(railsCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .add(16, 16, 16))
+                    .add(flagsPanelLayout.createSequentialGroup()
+                        .add(qualityPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .add(49, 49, 49)))
+                .add(17, 17, 17)
+                .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(flagsPanelLayout.createSequentialGroup()
+                        .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                            .add(dincFKCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .add(flagsPanelLayout.createSequentialGroup()
+                                .add(noHTMLCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                .add(76, 76, 76)))
+                        .add(9, 9, 9)
+                        .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                            .add(flagsPanelLayout.createSequentialGroup()
+                                .add(noAdsCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                .add(6, 6, 6))
+                            .add(noLogoCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+                    .add(flagsPanelLayout.createSequentialGroup()
+                        .add(showFinishCBox)
+                        .add(60, 60, 60))
+                    .add(flagsPanelLayout.createSequentialGroup()
+                        .add(singleSignCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .add(122, 122, 122)))
+                .add(77, 77, 77))
+        );
+        flagsPanelLayout.setVerticalGroup(
+            flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(org.jdesktop.layout.GroupLayout.TRAILING, flagsPanelLayout.createSequentialGroup()
+                .addContainerGap(11, Short.MAX_VALUE)
+                .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(flagsPanelLayout.createSequentialGroup()
+                        .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                            .add(flagsPanelLayout.createSequentialGroup()
+                                .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
+                                    .add(flagsPanelLayout.createSequentialGroup()
+                                        .add(aHTMLCBox)
+                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                        .add(noRowsBox)
+                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                        .add(railsCBox))
+                                    .add(flagsPanelLayout.createSequentialGroup()
+                                        .add(noHTMLCBox)
+                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                        .add(dincFKCBox)
+                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                        .add(singleSignCBox)))
+                                .add(18, 18, 18)
+                                .add(showFinishCBox))
+                            .add(flagsPanelLayout.createSequentialGroup()
+                                .add(noLogoCBox)
+                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(noAdsCBox)))
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 43, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                    .add(org.jdesktop.layout.GroupLayout.TRAILING, flagsPanelLayout.createSequentialGroup()
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 80, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                        .add(qualityPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
+                .addContainerGap())
+        );
+
+        savePassCBox.setText("Save User Password");
+        savePassCBox.setToolTipText("<html><b>WARNING:</b> Saves DB User Password as plain text!</html>");
+
+        org.jdesktop.layout.GroupLayout reqParamPanelLayout = new org.jdesktop.layout.GroupLayout(reqParamPanel);
+        reqParamPanel.setLayout(reqParamPanelLayout);
+        reqParamPanelLayout.setHorizontalGroup(
+            reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(reqParamPanelLayout.createSequentialGroup()
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(reqParamPanelLayout.createSequentialGroup()
+                        .add(28, 28, 28)
+                        .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
+                            .add(reqParamPanelLayout.createSequentialGroup()
+                                .add(51, 51, 51)
+                                .add(lbl_DBName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                            .add(reqParamPanelLayout.createSequentialGroup()
+                                .add(53, 53, 53)
+                                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                                    .add(lbl_DBType)
+                                    .add(reqParamPanelLayout.createSequentialGroup()
+                                        .add(lbl_DBHost, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                        .add(2, 2, 2))))
+                            .add(reqParamPanelLayout.createSequentialGroup()
+                                .add(55, 55, 55)
+                                .add(lbl_DBUser, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                            .add(lbl_PathtoDBdrvr)
+                            .add(lbl_PathSchemSpy)
+                            .add(lbl_PropertiePath)
+                            .add(lbl_prop))
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                            .add(propertiesTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 381, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                            .add(reqParamPanelLayout.createSequentialGroup()
+                                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
+                                    .add(org.jdesktop.layout.GroupLayout.LEADING, dbDriverPTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 306, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                    .add(org.jdesktop.layout.GroupLayout.LEADING, sSpyPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 306, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                    .add(org.jdesktop.layout.GroupLayout.LEADING, propertiePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 306, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                                    .add(propertiePathButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                    .add(sSpyPathButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                    .add(driverButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+                            .add(reqParamPanelLayout.createSequentialGroup()
+                                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                                    .add(dbTypeCBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 122, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                    .add(dbNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 171, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                    .add(dbUserTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 171, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                    .add(dbHostTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 171, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
+                                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                                    .add(savePassCBox)
+                                    .add(reqParamPanelLayout.createSequentialGroup()
+                                        .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                                            .add(lbl_DBPwd, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE)
+                                            .add(reqParamPanelLayout.createSequentialGroup()
+                                                .add(8, 8, 8)
+                                                .add(lbl_DBPort, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                                .add(18, 18, 18)))
+                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                                        .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                                            .add(dbPortTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 89, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                            .add(dbPwdField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 89, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
+                                .add(41, 41, 41)))
+                        .add(54, 54, 54))
+                    .add(reqParamPanelLayout.createSequentialGroup()
+                        .addContainerGap()
+                        .add(flagsPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+                .addContainerGap())
+        );
+        reqParamPanelLayout.setVerticalGroup(
+            reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(org.jdesktop.layout.GroupLayout.TRAILING, reqParamPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(dbTypeCBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_DBType))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(dbHostTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_DBHost)
+                    .add(dbPortTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_DBPort))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(dbNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_DBName))
+                .add(6, 6, 6)
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(dbUserTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(dbPwdField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_DBPwd)
+                    .add(lbl_DBUser))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(savePassCBox)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 15, Short.MAX_VALUE)
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(dbDriverPTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(driverButton)
+                    .add(lbl_PathtoDBdrvr))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(sSpyPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(sSpyPathButton)
+                    .add(lbl_PathSchemSpy))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(propertiePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(propertiePathButton)
+                    .add(lbl_PropertiePath))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(propertiesTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_prop))
+                .add(18, 18, 18)
+                .add(flagsPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap())
+        );
+
+        jTabbedPane.addTab("Parameters/Flags", reqParamPanel);
+
+        outputOptionsPanel.setToolTipText("");
+
+        lbl_OutDir.setText("Output directory:"); // NOI18N
+
+        pathOutputTField.setToolTipText("Choose the path to your SchemaSpy output dir (-o)");
+
+        outDirButton.setText("Choose"); // NOI18N
+        outDirButton.setToolTipText("Click to choose the path to your SchemaSpy output dir (-o). You can leave this blank. SchemaSpyGUI will generate a path out of your db-name, db-user and db-schema name"); // NOI18N
+        outDirButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                outDirButtonActionPerformed(evt);
+            }
+        });
+
+        allSchemasCBox.setText("All Schemas");
+        allSchemasCBox.setToolTipText("Evaluate all schemas in a database (-all)");
+        allSchemasCBox.addChangeListener(new javax.swing.event.ChangeListener() {
+            public void stateChanged(javax.swing.event.ChangeEvent evt) {
+                allSchemasCBoxStateChanged(evt);
+            }
+        });
+
+        schemaTField.setToolTipText("<html>Database schema (optional if the same as user or isn't supported by your database)(-s).<br> Evaluate specified schemas.(-schemas \"s1,s2\")</html>");
+
+        lbl_Schema.setText("Schema/s to explore:"); // NOI18N
+        lbl_Schema.setToolTipText("Schemas coma separated");
+
+        lbl_Desc.setText("Description on summary page:"); // NOI18N
+
+        descTArea.setColumns(20);
+        descTArea.setRows(4);
+        descTArea.setToolTipText("Displays the specified textual description on summary pages (-desc).\nFor example: <a href\\='http://schemaspy.sourceforge.net'>SchemaSpy</a>");
+        descTAreaScrollPane.setViewportView(descTArea);
+
+        lbl_TableRegEx.setText("Table name RegExp:"); // NOI18N
+
+        tNameRExTField.setToolTipText("<html>This is a regular expression that's used to determine which tables/views to include (-i).<br> For example: (.*book.*)|(library.*)</html>");
+
+        lbl_TableExRegEx.setText("Table Exclusion RegExp:");
+
+        tNameExRExTField.setToolTipText("This is a regular expression that's used to determine which tables/views to exclude (-I).");
+
+        lbl_ColumnRegEx.setText("Column Exclusion RegExp:"); // NOI18N
+
+        cNameRExTField.setToolTipText("<html>Exclude matching columns from relationship analysis to simplify the generated graphs (-x).<br>For example: (book.isbn)|(borrower.address)</html>");
+
+        colExRelCBox.setText("Excluded relationships");
+        colExRelCBox.setToolTipText("<html>Set the columns to exclude from relationship diagrams where<br>the specified columns aren't directly referenced by the focal table. (-X)</html>");
+
+        stylePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(" Style: (Modify the .css to specify HTML fonts) "));
+        stylePanel.setToolTipText("Modify the .css to specify HTML fonts.");
+
+        charsetComBox.setEditable(true);
+        charsetComBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "", "UTF-8", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-10", "ISO-8859-11", "ISO-8859-12", "ISO-8859-13", "ISO-8859-14", "ISO-8859-15" }));
+        charsetComBox.setToolTipText("Default by SchemaSpy: ISO-8859-1 (-charset)");
+
+        lbl_Charset.setText("Charset:");
+
+        lbl_Font.setText("Font Name:");
+
+        fontNameTField.setToolTipText("Default font: \"Helvetica\" (-font). Use the file font name instead of Real name, ej. times or timesb instead of \"Times New Roman\" or \"Times New Roman Bold\"");
+
+        lbl_fontSize.setText("Font size:");
+
+        fontSizeTField.setToolTipText("Fontsize default: 11 (-fontsize)");
+
+        lbl_css.setText("Style css file:");
+
+        cssPathTField.setToolTipText("css file default: schemaSpy.css (-css)");
+
+        jButton1.setText("Choose");
+        jButton1.setToolTipText("Click to choose the path to css file (-css)");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+
+        org.jdesktop.layout.GroupLayout stylePanelLayout = new org.jdesktop.layout.GroupLayout(stylePanel);
+        stylePanel.setLayout(stylePanelLayout);
+        stylePanelLayout.setHorizontalGroup(
+            stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(stylePanelLayout.createSequentialGroup()
+                .add(stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
+                    .add(stylePanelLayout.createSequentialGroup()
+                        .add(lbl_Charset)
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(charsetComBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 136, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(lbl_Font)
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(fontNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 136, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(lbl_fontSize)
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(fontSizeTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 39, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                    .add(stylePanelLayout.createSequentialGroup()
+                        .add(lbl_css)
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(cssPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                        .add(jButton1)))
+                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        stylePanelLayout.setVerticalGroup(
+            stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(stylePanelLayout.createSequentialGroup()
+                .add(stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(lbl_Charset)
+                    .add(charsetComBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_Font)
+                    .add(fontNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_fontSize)
+                    .add(fontSizeTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(lbl_css)
+                    .add(cssPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(jButton1)))
+        );
+
+        metaFilePathButton.setText("Choose"); // NOI18N
+        metaFilePathButton.setToolTipText("Click to choose the path to your Metafile (-meta). You can leave this blank."); // NOI18N
+        metaFilePathButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                metaFilePathButtonActionPerformed(evt);
+            }
+        });
+
+        metaFilePathTField.setToolTipText("Choose the path to your Metafile (-meta)");
+
+        lbl_OutDir1.setText("Metafile Path:"); // NOI18N
+
+        org.jdesktop.layout.GroupLayout outputOptionsPanelLayout = new org.jdesktop.layout.GroupLayout(outputOptionsPanel);
+        outputOptionsPanel.setLayout(outputOptionsPanelLayout);
+        outputOptionsPanelLayout.setHorizontalGroup(
+            outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(outputOptionsPanelLayout.createSequentialGroup()
+                .add(38, 38, 38)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(lbl_Desc)
+                    .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
+                        .add(org.jdesktop.layout.GroupLayout.LEADING, descTAreaScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 517, Short.MAX_VALUE)
+                        .add(org.jdesktop.layout.GroupLayout.LEADING, outputOptionsPanelLayout.createSequentialGroup()
+                            .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
+                                .add(org.jdesktop.layout.GroupLayout.TRAILING, lbl_ColumnRegEx)
+                                .add(org.jdesktop.layout.GroupLayout.TRAILING, lbl_TableExRegEx)
+                                .add(org.jdesktop.layout.GroupLayout.TRAILING, lbl_TableRegEx))
+                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                            .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
+                                .add(tNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 387, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                .add(tNameExRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 387, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                .add(cNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 387, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                                .add(colExRelCBox))))
+                    .add(stylePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                .add(19, 19, 19))
+            .add(outputOptionsPanelLayout.createSequentialGroup()
+                .add(29, 29, 29)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
+                    .add(lbl_Schema)
+                    .add(lbl_OutDir)
+                    .add(lbl_OutDir1))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(metaFilePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 309, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(schemaTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 309, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(pathOutputTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 309, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(metaFilePathButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)
+                    .add(outDirButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)
+                    .add(allSchemasCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
+                .add(28, 28, 28))
+        );
+        outputOptionsPanelLayout.setVerticalGroup(
+            outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(outputOptionsPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(pathOutputTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_OutDir)
+                    .add(outDirButton))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(schemaTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(lbl_Schema)
+                    .add(allSchemasCBox))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(metaFilePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                    .add(metaFilePathButton)
+                    .add(lbl_OutDir1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 14, Short.MAX_VALUE))
+                .add(29, 29, 29)
+                .add(lbl_Desc)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(descTAreaScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 118, Short.MAX_VALUE)
+                .add(18, 18, 18)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+                    .add(lbl_TableRegEx)
+                    .add(tNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(lbl_TableExRegEx)
+                    .add(tNameExRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+                    .add(lbl_ColumnRegEx)
+                    .add(cNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(colExRelCBox)
+                .add(18, 18, 18)
+                .add(stylePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap())
+        );
+
+        jTabbedPane.addTab("Ouput Options", outputOptionsPanel);
+
+        outputPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
+
+        sSpyOutTArea.setEditable(false);
+        sSpyOutTArea.setLineWrap(true);
+        sSpyOutTArea.setWrapStyleWord(true);
+        sSpyOutTAreaScrollPane.setViewportView(sSpyOutTArea);
+
+        org.jdesktop.layout.GroupLayout outputPanelLayout = new org.jdesktop.layout.GroupLayout(outputPanel);
+        outputPanel.setLayout(outputPanelLayout);
+        outputPanelLayout.setHorizontalGroup(
+            outputPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(outputPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .add(sSpyOutTAreaScrollPane)
+                .addContainerGap())
+        );
+        outputPanelLayout.setVerticalGroup(
+            outputPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(org.jdesktop.layout.GroupLayout.TRAILING, outputPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .add(sSpyOutTAreaScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 452, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        jTabbedPane.addTab("SchemaSpy Output", outputPanel);
+
+        fileMenu.setText("File"); // NOI18N
+
+        sParamMenuItem.setText("Save Parameters ..."); // NOI18N
+        sParamMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                sParamMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(sParamMenuItem);
+
+        lParamMenuItem.setText("Load Parameters ..."); // NOI18N
+        lParamMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                lParamMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(lParamMenuItem);
+
+        exitMenuItem.setText("Exit"); // NOI18N
+        exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                exitMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(exitMenuItem);
+
+        mainMenuBar.add(fileMenu);
+
+        infoMenu.setText("Help"); // NOI18N
+
+        helpMenueAboutItem.setText("About"); // NOI18N
+        helpMenueAboutItem.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                helpMenueAboutItemActionPerformed(evt);
+            }
+        });
+        infoMenu.add(helpMenueAboutItem);
+
+        mainMenuBar.add(infoMenu);
+
+        setJMenuBar(mainMenuBar);
+
+        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(jToolBar, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE)
+            .add(jTabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(layout.createSequentialGroup()
+                .add(jToolBar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jTabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 504, Short.MAX_VALUE))
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void sParamMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sParamMenuItemActionPerformed
+        operations.saveParam("Menu");
+}//GEN-LAST:event_sParamMenuItemActionPerformed
+
+    private void lParamMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lParamMenuItemActionPerformed
+        operations.loadParam("Menu");
+}//GEN-LAST:event_lParamMenuItemActionPerformed
+
+    private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
+        operations.systemEnd();
+}//GEN-LAST:event_exitMenuItemActionPerformed
+
+    private void helpMenueAboutItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpMenueAboutItemActionPerformed
+        operations.showAbout(this);
+}//GEN-LAST:event_helpMenueAboutItemActionPerformed
+
+    private void quickLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quickLoadButtonActionPerformed
+        operations.loadParam("Quick");
+}//GEN-LAST:event_quickLoadButtonActionPerformed
+
+    private void quickSaveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quickSaveButtonActionPerformed
+        operations.saveParam("Quick");
+    }//GEN-LAST:event_quickSaveButtonActionPerformed
+
+    private void clearFieldsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearFieldsButtonActionPerformed
+        operations.clearAllFields();
+    }//GEN-LAST:event_clearFieldsButtonActionPerformed
+
+    private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitButtonActionPerformed
+        operations.systemEnd();
+    }//GEN-LAST:event_exitButtonActionPerformed
+
+    private void saveParamFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveParamFileButtonActionPerformed
+        operations.saveParam("Menu");
+}//GEN-LAST:event_saveParamFileButtonActionPerformed
+
+    private void loadParamFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadParamFileButtonActionPerformed
+        operations.loadParam("Menu");
+    }//GEN-LAST:event_loadParamFileButtonActionPerformed
+
+    private void driverButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_driverButtonActionPerformed
+        operations.setPath("driverDirPath");
+}//GEN-LAST:event_driverButtonActionPerformed
+
+    private void sSpyPathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sSpyPathButtonActionPerformed
+        operations.setPath("sSpyFilePath");
+}//GEN-LAST:event_sSpyPathButtonActionPerformed
+
+    private void propertiePathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_propertiePathButtonActionPerformed
+        operations.setPath("propertiePath");
+}//GEN-LAST:event_propertiePathButtonActionPerformed
+
+    private void dbTypeCBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dbTypeCBoxActionPerformed
+        // nothing TODO here at the moment
+    }//GEN-LAST:event_dbTypeCBoxActionPerformed
+
+    private void outDirButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_outDirButtonActionPerformed
+        operations.setPath("outDirPath");
+}//GEN-LAST:event_outDirButtonActionPerformed
+
+    private void allSchemasCBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_allSchemasCBoxStateChanged
+        if (allSchemasCBox.isSelected())
+            schemaTField.setEnabled(false);
+        else schemaTField.setEnabled(true);
+}//GEN-LAST:event_allSchemasCBoxStateChanged
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        operations.setPath("cssPath");
+}//GEN-LAST:event_jButton1ActionPerformed
+
+    private void startSchemaSpyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startSchemaSpyButtonActionPerformed
+        jTabbedPane.setSelectedIndex(2);
+        operations.startSchemaSpy(gui);
+}//GEN-LAST:event_startSchemaSpyButtonActionPerformed
+
+    private void showOutputButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showOutputButtonActionPerformed
+        operations.showOutput();
+    }//GEN-LAST:event_showOutputButtonActionPerformed
+
+    private void metaFilePathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_metaFilePathButtonActionPerformed
+        operations.setPath("metaFilePath");
+}//GEN-LAST:event_metaFilePathButtonActionPerformed
+
+    private void setLookandFeel() {
+        try {
+            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
+        } catch(Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void initParams() {
+        this.gui = this;
+        params = new Properties();
+        operations = new Operations();
+        sSpyPathTField = null;
+        dbDriverPTField = null;
+        pathOutputTField = null;
+        ToolTipManager.sharedInstance().setDismissDelay(12000);
+    }
+
+    public boolean getAutoLaunchInfo() {
+        boolean info = operations.getAutoLaunch();
+        return info;
+    }
+
+    public void setOutputText(String outputText) {
+        operations.setText(outputText);
+    }
+
+    public void startShowOutput() {
+        operations.showOutput();
+    }
+
+    private SchemaSpyGUIApp gui;
+    private Operations operations;
+    private Properties params;
+    private Build build;
+    private RunSchemaSpy op;
+    private Thread t1;
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JCheckBox aHTMLCBox;
+    private javax.swing.JCheckBox allSchemasCBox;
+    private javax.swing.JTextField cNameRExTField;
+    private javax.swing.JComboBox charsetComBox;
+    private javax.swing.JButton clearFieldsButton;
+    private javax.swing.JCheckBox colExRelCBox;
+    private javax.swing.JTextField cssPathTField;
+    private javax.swing.JTextField dbDriverPTField;
+    private javax.swing.JTextField dbHostTField;
+    private javax.swing.JTextField dbNameTField;
+    private javax.swing.JTextField dbPortTField;
+    private javax.swing.JPasswordField dbPwdField;
+    private javax.swing.JComboBox dbTypeCBox;
+    private javax.swing.JTextField dbUserTField;
+    private javax.swing.JTextArea descTArea;
+    private javax.swing.JScrollPane descTAreaScrollPane;
+    private javax.swing.JCheckBox dincFKCBox;
+    private javax.swing.JButton driverButton;
+    private javax.swing.JButton exitButton;
+    private javax.swing.JMenuItem exitMenuItem;
+    private javax.swing.JMenu fileMenu;
+    private javax.swing.JPanel flagsPanel;
+    private javax.swing.JTextField fontNameTField;
+    private javax.swing.JTextField fontSizeTField;
+    private javax.swing.JMenuItem helpMenueAboutItem;
+    private javax.swing.JCheckBox highQuCBox;
+    private javax.swing.JMenu infoMenu;
+    private javax.swing.JButton jButton1;
+    private javax.swing.JToolBar.Separator jSeparator1;
+    private javax.swing.JToolBar.Separator jSeparator2;
+    private javax.swing.JTabbedPane jTabbedPane;
+    private javax.swing.JToolBar jToolBar;
+    private javax.swing.JMenuItem lParamMenuItem;
+    private javax.swing.JLabel lbl_Charset;
+    private javax.swing.JLabel lbl_ColumnRegEx;
+    private javax.swing.JLabel lbl_DBHost;
+    private javax.swing.JLabel lbl_DBName;
+    private javax.swing.JLabel lbl_DBPort;
+    private javax.swing.JLabel lbl_DBPwd;
+    private javax.swing.JLabel lbl_DBType;
+    private javax.swing.JLabel lbl_DBUser;
+    private javax.swing.JLabel lbl_Desc;
+    private javax.swing.JLabel lbl_Font;
+    private javax.swing.JLabel lbl_OutDir;
+    private javax.swing.JLabel lbl_OutDir1;
+    private javax.swing.JLabel lbl_PathSchemSpy;
+    private javax.swing.JLabel lbl_PathtoDBdrvr;
+    private javax.swing.JLabel lbl_PropertiePath;
+    private javax.swing.JLabel lbl_Schema;
+    private javax.swing.JLabel lbl_TableExRegEx;
+    private javax.swing.JLabel lbl_TableRegEx;
+    private javax.swing.JLabel lbl_css;
+    private javax.swing.JLabel lbl_fontSize;
+    private javax.swing.JLabel lbl_prop;
+    private javax.swing.JButton loadParamFileButton;
+    private javax.swing.JCheckBox lowQuCBox;
+    private javax.swing.JMenuBar mainMenuBar;
+    private javax.swing.JButton metaFilePathButton;
+    private javax.swing.JTextField metaFilePathTField;
+    private javax.swing.JCheckBox noAdsCBox;
+    private javax.swing.JCheckBox noHTMLCBox;
+    private javax.swing.JCheckBox noLogoCBox;
+    private javax.swing.JCheckBox noRowsBox;
+    private javax.swing.JButton outDirButton;
+    private javax.swing.JPanel outputOptionsPanel;
+    private javax.swing.JPanel outputPanel;
+    private javax.swing.JTextField pathOutputTField;
+    private javax.swing.JButton propertiePathButton;
+    private javax.swing.JTextField propertiePathTField;
+    private javax.swing.JTextField propertiesTField;
+    private javax.swing.JPanel qualityPanel;
+    private javax.swing.JButton quickLoadButton;
+    private javax.swing.JButton quickSaveButton;
+    private javax.swing.JCheckBox railsCBox;
+    private javax.swing.JPanel reqParamPanel;
+    private javax.swing.JMenuItem sParamMenuItem;
+    private javax.swing.JTextArea sSpyOutTArea;
+    private javax.swing.JScrollPane sSpyOutTAreaScrollPane;
+    private javax.swing.JButton sSpyPathButton;
+    private javax.swing.JTextField sSpyPathTField;
+    private javax.swing.JButton saveParamFileButton;
+    private javax.swing.JCheckBox savePassCBox;
+    private javax.swing.JTextField schemaTField;
+    private javax.swing.JCheckBox showFinishCBox;
+    private javax.swing.JButton showOutputButton;
+    private javax.swing.JCheckBox singleSignCBox;
+    private javax.swing.JButton startSchemaSpyButton;
+    private javax.swing.JPanel stylePanel;
+    private javax.swing.JTextField tNameExRExTField;
+    private javax.swing.JTextField tNameRExTField;
+    // End of variables declaration//GEN-END:variables
+
+    /*
+     * Class for Application Functions like saveParam etc.
+     * */
+    private class Operations {
+        
+        public Operations () {
+            build = new Build();
+        }
+
+        /**
+         * Starts the schema scanning with SchemaSpy in a separate thread
+         * @param gui
+         */
+        private void startSchemaSpy(SchemaSpyGUIApp gui) {
+            String run_command;
+            String displ_command;
+
+            sSpyOutTArea.setText("");
+
+            if (checkPath()) {
+                run_command = build.buildCommand("run");
+                displ_command = build.buildCommand("displ");
+
+                op = new RunSchemaSpy(gui, run_command, displ_command);
+                t1 = new Thread(op);
+                t1.setName("SSpy");
+                t1.start();
+            }
+        }
+
+        /**
+         * Shows the about box
+         * @param frame
+         */
+        private void showAbout(JFrame frame) {
+            JDialog aboutBox = new AboutBox(frame);
+            aboutBox.setVisible(true);
+        }
+        
+        /**
+         * Sets the text in Output Area
+         * @param text
+         */
+        public void setText (String text) {
+            sSpyOutTArea.append(text);
+        }
+
+        private void setPath (String button) {
+            String openDialogDefaultPath = ".";
+
+            if (button.equals("driverDirPath")) {
+                if (!dbDriverPTField.getText().equals("")) {
+                        //openDialogDefaultPath = makePathUsable(dbDriverPTField.getText());
+                        openDialogDefaultPath = dbDriverPTField.getText();
+                }
+            }
+            if (button.equals("outDirPath")) {
+                if (!pathOutputTField.getText().equals("")) {
+                        //openDialogDefaultPath = makePathUsable(pathOutputTField.getText());
+                        openDialogDefaultPath = pathOutputTField.getText();
+                }
+            }
+            if (button.equals("sSpyFilePath")) {
+                if (!sSpyPathTField.getText().equals("")) {
+                        //openDialogDefaultPath = makePathUsable(sSpyPathTField.getText());
+                        openDialogDefaultPath = sSpyPathTField.getText();
+                }
+            }
+            if (button.equals("propertiePath")) {
+                if (!propertiePathTField.getText().equals("")) {
+                        //openDialogDefaultPath = makePathUsable(propertiePathTField.getText());
+                        openDialogDefaultPath = propertiePathTField.getText();
+                }
+            }
+            if (button.equals("cssPath")) {
+                if (!cssPathTField.getText().equals("")) {
+                        //openDialogDefaultPath = makePathUsable(cssPathTField.getText());
+                        openDialogDefaultPath = cssPathTField.getText();
+                }
+            }
+            if (button.equals("metaFilePath")) {
+                if (!metaFilePathTField.getText().equals("")) {
+                        //openDialogDefaultPath = makePathUsable(cssPathTField.getText());
+                        openDialogDefaultPath = metaFilePathTField.getText();
+                }
+            }
+
+            JFileChooser openDialog = new JFileChooser(openDialogDefaultPath);
+
+            if (button.equals("outDirPath")) {
+                openDialog.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+            }
+            else if (button.equals("cssPath")) {
+                openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
+                openDialog.setFileFilter(getCssFilter());
+            }
+            else {
+                openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
+            }
+            /*
+            if (button.equals("driverDirPath")) {
+                openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
+            }
+            if (button.equals("sSpyFilePath")) {
+                openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
+            }
+            if (button.equals("propertiePath")) {
+                openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
+            }
+            */
+            openDialog.setDialogType(JFileChooser.OPEN_DIALOG);
+
+            int returnVal = openDialog.showOpenDialog(gui);
+            if (returnVal == JFileChooser.APPROVE_OPTION) {
+                String path = openDialog.getSelectedFile().getAbsolutePath();
+                if (button.equals("driverDirPath")) {
+                    dbDriverPTField.setText(path);
+                } 
+                if (button.equals("outDirPath")) {
+                    pathOutputTField.setText(path);
+                }
+                if (button.equals("sSpyFilePath")) {
+                    sSpyPathTField.setText(path);
+                }
+                if (button.equals("propertiePath")) {
+                    propertiePathTField.setText(path);
+                }
+                if (button.equals("cssPath")) {
+                    cssPathTField.setText(path);
+                }
+                if (button.equals("metaFilePath")) {
+                    metaFilePathTField.setText(path);
+                }
+            }
+        }
+
+        private String getCBoxString (JCheckBox cBox) {
+            if (cBox.isSelected()) {
+                return "true";
+            } else {
+                return "false";
+            }
+        }
+
+        private FileFilter getXmlFilter() {
+            FileFilter ff = new FileFilter() {
+                @Override
+                public boolean accept(File f) {
+                    return f.getName().toLowerCase().endsWith(".xml")
+                            || f.isDirectory();
+                }
+                @Override
+                public String getDescription() {
+                    return "XML Files";
+                }
+            };
+            return ff;
+        }
+
+        private FileFilter getCssFilter() {
+            FileFilter ff = new FileFilter() {
+                @Override
+                public boolean accept(File f) {
+                    return f.getName().toLowerCase().endsWith(".css")
+                            || f.isDirectory();
+                }
+                @Override
+                public String getDescription() {
+                    return "CSS Files";
+                }
+            };
+            return ff;
+        }
+
+        private void saveParam(String option) {
+            params.setProperty("dbTypeCBox", (String)dbTypeCBox.getSelectedItem());
+            params.setProperty("dbHostTField", dbHostTField.getText());
+            params.setProperty("dbNameTField", dbNameTField.getText());
+            params.setProperty("dbPortTField", dbPortTField.getText());
+            params.setProperty("dbUserTField", dbUserTField.getText());
+            // Save password
+            if (savePassCBox.isSelected()){
+                params.setProperty("dbPwdField", String.valueOf(dbPwdField.getPassword()));
+            }
+            else params.setProperty("dbPwdField", "");
+
+            params.setProperty("dbDriverPTField", dbDriverPTField.getText());
+            params.setProperty("pathOutputTField", pathOutputTField.getText());
+            params.setProperty("sSpyPathTField", sSpyPathTField.getText());
+
+            params.setProperty("propertiePathTField", propertiePathTField.getText());
+            params.setProperty("propertiesTField", propertiesTField.getText());
+            params.setProperty("metaFilePathTField", metaFilePathTField.getText());
+
+            params.setProperty("schemaTField", schemaTField.getText());
+            params.setProperty("allSchemasCBox", getCBoxString(allSchemasCBox));
+            params.setProperty("descTArea", descTArea.getText().replace("\"", "'"));
+            params.setProperty("tNameRExTField", tNameRExTField.getText());
+            params.setProperty("tNameExRExTField", tNameExRExTField.getText());
+            params.setProperty("cNameRExTField", cNameRExTField.getText());
+            params.setProperty("colExRelCBox", getCBoxString(colExRelCBox));
+
+            params.setProperty("charsetComBox", (String)charsetComBox.getSelectedItem());
+            params.setProperty("fontSizeTField", fontSizeTField.getText());
+            params.setProperty("fontNameTField", fontNameTField.getText());
+            params.setProperty("cssPathTField", cssPathTField.getText());
+
+            params.setProperty("aHTMLCBox", getCBoxString(aHTMLCBox));
+            params.setProperty("noRowsBox", getCBoxString(noRowsBox));
+            params.setProperty("dincFKCBox", getCBoxString(dincFKCBox));
+            params.setProperty("noHTMLCBox", getCBoxString(noHTMLCBox));
+            params.setProperty("railsCBox", getCBoxString(railsCBox));
+            // TODO: Single Sign-On (-sso).
+            //params.setProperty("singleSignCBox", getCBoxString(singleSignCBox));
+            // Quality Images
+            params.setProperty("highQuCBox", getCBoxString(highQuCBox));
+            params.setProperty("lowQuCBox", getCBoxString(lowQuCBox));
+            //----------
+            params.setProperty("noAdsCBox", getCBoxString(noAdsCBox));
+            params.setProperty("noLogoCBox", getCBoxString(noLogoCBox));
+
+            params.setProperty("savePassCBox", getCBoxString(savePassCBox));
+            params.setProperty("showFinishCBox", getCBoxString(showFinishCBox));
+
+            String name = "", coment = "";
+            if (option.equals("Quick")) {
+                name = "SSpyGUIQuick.xml";
+                coment = "Saved parameters for SchemaSpyGUI. Load it with: Quick Load Parameters";
+            }
+            // Save JFileChooser
+            else if (option.equals("Menu")) {
+                JFileChooser saveDialog = new JFileChooser(".");
+                saveDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
+                saveDialog.setDialogType(JFileChooser.SAVE_DIALOG);
+                saveDialog.setDialogTitle("Save Parameters ...");
+                saveDialog.setFileFilter(getXmlFilter());
+
+                int returnVal = saveDialog.showOpenDialog(gui);
+                if (returnVal == JFileChooser.APPROVE_OPTION) {
+                    name = saveDialog.getSelectedFile().getAbsolutePath();
+                    coment = "Saved parameters for SchemaSpyGUI. Load it with Load Menu";
+                }
+            }
+            if (!name.equals("")) {
+                // Add xml extension
+                if (!name.endsWith(".xml"))
+                    name += ".xml";
+                try {
+                    FileOutputStream fos = new FileOutputStream(name);
+                    params.storeToXML(fos, coment);
+                    fos.close();
+                } catch (IOException ioe) {
+                    ioe.printStackTrace();
+                }
+            }
+        }
+
+        private void loadParam(String option) {
+            String name = "";
+            if (option.equals("Quick")) {
+                name = "SSpyGUIQuick.xml";
+            }
+            else if (option.equals("Menu")) {
+                JFileChooser openDialog = new JFileChooser(".");
+                openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
+                openDialog.setDialogType(JFileChooser.OPEN_DIALOG);
+                openDialog.setDialogTitle("Load Parameters ...");
+                openDialog.setFileFilter(getXmlFilter());
+
+                int returnVal = openDialog.showOpenDialog(gui);
+                if (returnVal == JFileChooser.APPROVE_OPTION) {
+                    name = openDialog.getSelectedFile().getAbsolutePath();
+                }
+            }
+            File file = new File(name);
+            if (file.exists()) {
+                try {
+                    FileInputStream in = new FileInputStream(file);
+                    params.loadFromXML(in);
+                    in.close();
+                    clearAllFields();
+                    insertInFields();
+                } catch (IOException ioe) {
+                    ioe.printStackTrace();
+                }  
+            }
+        }
+
+        private void insertInFields () {
+            dbTypeCBox.setSelectedItem(params.getProperty("dbTypeCBox"));
+
+            dbHostTField.setText(params.getProperty("dbHostTField"));
+            dbNameTField.setText(params.getProperty("dbNameTField"));
+            dbPortTField.setText(params.getProperty("dbPortTField"));
+            dbUserTField.setText(params.getProperty("dbUserTField"));
+            // Load Password
+            dbPwdField.setText(params.getProperty("dbPwdField"));
+            dbDriverPTField.setText(params.getProperty("dbDriverPTField"));
+            pathOutputTField.setText(params.getProperty("pathOutputTField"));
+            sSpyPathTField.setText(params.getProperty("sSpyPathTField"));
+
+            propertiePathTField.setText(params.getProperty("propertiePathTField"));
+            propertiesTField.setText(params.getProperty("propertiesTField"));
+            metaFilePathTField.setText(params.getProperty("metaFilePathTField"));
+
+            schemaTField.setText(params.getProperty("schemaTField"));
+            if (params.getProperty("allSchemasCBox").equals("true")) {allSchemasCBox.setSelected(true);}
+            descTArea.setText(params.getProperty("descTArea"));
+            tNameRExTField.setText(params.getProperty("tNameRExTField"));
+            tNameExRExTField.setText(params.getProperty("tNameExRExTField"));
+            cNameRExTField.setText(params.getProperty("cNameRExTField"));
+            if (params.getProperty("colExRelCBox").equals("true")) {colExRelCBox.setSelected(true);}
+
+            charsetComBox.setSelectedItem(params.getProperty("charsetComBox"));
+            fontSizeTField.setText(params.getProperty("fontSizeTField"));
+            fontNameTField.setText(params.getProperty("fontNameTField"));
+            cssPathTField.setText(params.getProperty("cssPathTField"));
+
+            if (params.getProperty("aHTMLCBox").equals("true")) {aHTMLCBox.setSelected(true);}
+            if (params.getProperty("noRowsBox").equals("true")) {noRowsBox.setSelected(true);}
+            if (params.getProperty("dincFKCBox").equals("true")) {dincFKCBox.setSelected(true);}
+            if (params.getProperty("noHTMLCBox").equals("true")) {noHTMLCBox.setSelected(true);}
+            if (params.getProperty("railsCBox").equals("true")) {railsCBox.setSelected(true);}
+            // TODO: Single Sign-On (-sso).
+            //if (params.getProperty("singleSignCBox").equals("true")) {singleSignCBox.setSelected(true);}
+            // Quality Images
+            if (params.getProperty("highQuCBox").equals("true")) {highQuCBox.setSelected(true);}
+            if (params.getProperty("lowQuCBox").equals("true")) {lowQuCBox.setSelected(true);}
+            //---------
+            if (params.getProperty("noAdsCBox").equals("true")) {noAdsCBox.setSelected(true);}
+            if (params.getProperty("noLogoCBox").equals("true")) {noLogoCBox.setSelected(true);}
+
+            if (params.getProperty("savePassCBox").equals("true")) {savePassCBox.setSelected(true);}
+            if (params.getProperty("showFinishCBox").equals("true")) {showFinishCBox.setSelected(true);}
+        }
+
+        private void clearAllFields() {
+            dbTypeCBox.setSelectedItem("");
+
+            dbHostTField.setText("");
+            dbNameTField.setText("");
+            dbPortTField.setText("");
+            dbUserTField.setText("");
+            // Password
+            dbPwdField.setText("");
+            dbDriverPTField.setText("");
+            pathOutputTField.setText("");
+            sSpyPathTField.setText("");
+
+            propertiePathTField.setText("");
+            propertiesTField.setText("");
+            metaFilePathTField.setText("");
+
+            schemaTField.setText("");
+            allSchemasCBox.setSelected(false);
+            descTArea.setText("");
+            tNameRExTField.setText("");
+            tNameExRExTField.setText("");
+            cNameRExTField.setText("");
+            colExRelCBox.setSelected(false);
+
+            charsetComBox.setSelectedIndex(0);
+            fontSizeTField.setText("");
+            fontNameTField.setText("");
+            cssPathTField.setText("");
+
+            aHTMLCBox.setSelected(false);
+            noRowsBox.setSelected(false);
+            dincFKCBox.setSelected(false);
+            noHTMLCBox.setSelected(false);
+            railsCBox.setSelected(false);
+            // TODO: Single Sign-On (-sso).
+            //singleSignCBox.setSelected(false);
+            // Quality Images
+            highQuCBox.setSelected(false);
+            lowQuCBox.setSelected(false);
+            //--------------------------
+            noAdsCBox.setSelected(false);
+            noLogoCBox.setSelected(false);
+
+            savePassCBox.setSelected(false);
+            showFinishCBox.setSelected(false);
+        }
+
+        private String makePathUsable(String s) {
+            //s.replace("\\","\\\\"); // This don't work is: s = s.replace("\\","\\\\");
+            // Add " for directories and files with spaces
+            
+            //Bug: Linux doesn't work with "s"
+            //Error: Unable to access jarfile
+            //simple hack but no support for directories with 
+            //spaces currently under Linux
+            if (isWindows()) {s = "\"" + s + "\"";}
+            else{}
+            return s;
+        }
+
+        //TODO: copy from isWindows() of BrowserOutputStart ... pooling?
+        public boolean isWindows() {
+            String os = System.getProperty("os.name");
+            if ( os != null && os.startsWith("Windows")) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+
+        private boolean checkPath() {
+            boolean bool = false;
+            File sSpyPath = new File(sSpyPathTField.getText());
+            File dbDriverPath = new File(dbDriverPTField.getText());
+            File outDirPath = new File(pathOutputTField.getText());
+
+            if (sSpyPath.exists()) {
+                bool = true;
+            } else {
+                setText("This is not a valid path to SchemaSpy: " + sSpyPathTField.getText()+ "\n");
+                if (!sSpyPath.canRead()) {
+                    setText("Jar File ist not readable!\n");
+                }
+            }
+
+            if (dbDriverPTField.getText().equals("")) {
+                setText("You have not specified a driver path. SchemaSpy will try to \n" +
+                        "use the path in internal .properties file.\n" +
+                        "It's possible that these will not work. In this case, please specify a path.\n");
+            } else {
+                if (!dbDriverPath.exists() || !dbDriverPath.canRead()) {
+                    if (bool) {bool = false;}
+                    setText("This is not a valid path to the DB driver: " + dbDriverPTField.getText() + "\n");
+                    if (!dbDriverPath.canRead()) {
+                        setText("File ist not readable!\n");
+                    }
+                }
+            }
+            // SchemaSpy Creates a directory if not exist
+            if (!pathOutputTField.getText().equals("") && !outDirPath.exists()) { // && !outDirPath.canWrite()) {
+                //if (bool){bool = false;}
+                setText("This is not a valid path for the output directory, but SchemaSpy will create it: " + pathOutputTField.getText() + "\n");
+                if (!sSpyPath.canWrite()) {
+                    if (bool){bool = false;}
+                    setText("SchemaSpy can not write!\n");
+                }
+            }
+            return bool;
+        }
+        
+        private String buildOutputDir () {
+                String dirName = dbUserTField.getText() + "_" + dbNameTField.getText()
+                                 + "_" + schemaTField.getText().replace(",", "-");
+                File dir = new File(dirName);
+                if(!dir.exists()) {
+                   dir.mkdir();
+                }
+                String dirPath = dir.getAbsolutePath();
+                pathOutputTField.setText(dirPath);
+                return dirPath;
+        }
+
+        public void showOutput() {
+            if (!pathOutputTField.getText().equals("")) {
+                String url = pathOutputTField.getText() + File.separator + "index.html";
+                BrowserOutputStart show = new BrowserOutputStart(url);
+                show.launch();
+            }
+        }
+
+        /**
+         * Try are the Threads launched by the program are alive
+         * @return Alive
+         */
+        private boolean isThreadAlive() {
+            Boolean tAlive = false;
+            if (t1 != null) {
+                // Search into alive threads the SchemaSpy threads.
+                Set<Thread> set = Thread.getAllStackTraces().keySet();
+                for (Thread at : set) {
+                   if (at.getName().equals("SSpy")||
+                       at.getName().equals("terrOut") ||
+                       at.getName().equals("tinOut")) {
+                       if (at.isAlive()) {
+                           tAlive = true;
+                       }
+                   }
+                }
+            }
+            return tAlive;
+        }
+        
+        public boolean getAutoLaunch() {
+            if (showFinishCBox.isSelected())
+                return true;
+            else return false;
+        }
+
+        private void systemEnd() {
+            // If some alive show Warning message
+            if (isThreadAlive()) {
+                int returnVal = JOptionPane.showConfirmDialog(gui,
+                    "SchemaSpy is Running.\n" +
+                    "Closing SchemaSpyGUI do NOT finalize the SchemaSpy prosses.\n" +
+                    "Do you really want close SchemaSpyGUI?\n",
+                    "Exit SchemaSpyGUI",
+                    JOptionPane.WARNING_MESSAGE,
+                    JOptionPane.YES_NO_OPTION);
+                if (returnVal == JOptionPane.YES_OPTION) {
+                   System.exit(0);
+                } // else do nothing
+            }
+            // No threads alive
+            else {
+                System.exit(0);
+            }
+        }
+
+    }
+
+    /**
+     * Inner Class with Methods to build the command line for SchemaSpy
+     */
+    private class Build {
+
+        /**
+         * Build the commad line to launch SchemaSpy
+         * @param type "displ" returns the Command line without password
+         * @return Command line string for SchemaSpy
+         */
+        private String buildCommand (String type) {
+            //first the path to SchemaSpy.jar
+            String s = "java -jar " + operations.makePathUsable(sSpyPathTField.getText());
+
+            //second the path to the driver for the selected DB type
+            if (!dbDriverPTField.getText().equals("")) {
+                s = s + " -dp " + operations.makePathUsable(dbDriverPTField.getText());
+            }
+
+            //then the needed database type
+            if (!((String)dbTypeCBox.getSelectedItem()).equals("")) {
+                s = s + " -t " + (String)dbTypeCBox.getSelectedItem();
+            }
+
+            //and now the necessary database specific informations
+            //e.g. database name, schema, user, host etc.
+            if (!dbNameTField.getText().equals("")) {
+                s = s + " -db " + dbNameTField.getText();
+            }
+
+            // Select schemas
+            if (allSchemasCBox.isSelected()) {
+                s = s + " -all ";
+            } else if (!schemaTField.getText().equals("")) {
+                // Try remove space before coma
+                String sc = schemaTField.getText().replace(", ", ",");
+                String[] schemas = sc.split(",");
+                if (schemas.length == 1) {
+                    s = s + " -s " + sc;
+                } else {
+                    s = s + " -schemas \"" + sc + "\"";
+                }
+            }
+
+            if (!dbHostTField.getText().equals("")) {
+                s = s + " -host " + dbHostTField.getText();
+            }
+
+            if (!dbPortTField.getText().equals("")) {
+                s = s + " -port " + dbPortTField.getText();
+            }
+            // TODO: Single Sign-On (-sso).
+            if (!dbUserTField.getText().equals("")) {
+                s = s + " -u " + dbUserTField.getText();
+            }
+
+            //now the optional informations like RegEx for columns, tables, etc
+            // Properties database connection
+            if (!propertiePathTField.getText().equals("")) {
+                s = s + " -connprops " + operations.makePathUsable(propertiePathTField.getText());
+            }
+            if (!propertiesTField.getText().equals("")) {
+                s = s + " -connprops " + "\"" + propertiesTField.getText() + "\"";
+            }
+            if (!metaFilePathTField.getText().equals("")) {
+                s = s + " -meta " + operations.makePathUsable(metaFilePathTField.getText());
+            }
+
+            // Columns Exclusions
+            if (!cNameRExTField.getText().equals("")) {
+                if (colExRelCBox.isSelected()) {
+                    s = s + " -X " + operations.makePathUsable(cNameRExTField.getText());
+                } else {
+                    s = s + " -x " + operations.makePathUsable(cNameRExTField.getText());
+                }
+            }
+            // Tables inclusions
+            if (!tNameRExTField.getText().equals("")) {
+                s = s + " -i " + operations.makePathUsable(tNameRExTField.getText());
+            }
+            // Tables Exclusions
+            if (!tNameExRExTField.getText().equals("")) {
+                s = s + " -I " + "\"" + tNameExRExTField.getText() + "\"";
+            }
+
+            if (!((String)charsetComBox.getSelectedItem()).equals("")) {
+                s = s + " -charset " + (String)charsetComBox.getSelectedItem();
+            }
+
+            if (!(fontSizeTField.getText().equals(""))) {
+                s = s + " -fontsize " + fontSizeTField.getText();
+            }
+
+            if (!(fontNameTField.getText().equals(""))) {
+                s = s + " -font " + "\"" + fontNameTField.getText() + "\"";
+            }
+
+            if (!(cssPathTField.getText().equals(""))) {
+                s = s + " -css " + operations.makePathUsable(cssPathTField.getText());
+            }
+
+            if (!descTArea.getText().equals("")) {
+                // For if someone put " instead of '
+                s = s + " -desc " + operations.makePathUsable(descTArea.getText().replace("\"", "'"));
+            }
+
+            if (!pathOutputTField.getText().equals("")) {
+                s = s + " -o " + operations.makePathUsable(pathOutputTField.getText());
+            } else {
+                s = s + " -o " + operations.makePathUsable(operations.buildOutputDir());
+            }
+
+            //now we insert the flags (e.g. Allow HTML in comments) if there are
+            //some checked
+            if (aHTMLCBox.isSelected()) {
+                s = s + " -ahic ";
+            }
+
+            if (noRowsBox.isSelected()) {
+                s = s + " -norows ";
+            }
+
+            if (dincFKCBox.isSelected()) {
+                s = s + " -noimplied ";
+            }
+
+            if (noHTMLCBox.isSelected()) {
+                s = s + " -nohtml ";
+            }
+
+            if (railsCBox.isSelected()) {
+                s = s + " -rails ";
+            }
+
+            if (highQuCBox.isSelected()) {
+                s = s + " -hq ";
+            }
+            if (lowQuCBox.isSelected()) {
+                s = s + " -lq ";
+            }
+
+            //---------------------------
+            if (noAdsCBox.isSelected()) {
+                s = s + " -noads ";
+            }
+
+            if (noLogoCBox.isSelected()) {
+                s = s + " -nologo ";
+            }
+
+            //last but not least String with no password if "displ" is selected
+            //else String + PWD for starting SchemaSpy
+            if (type.equals("displ")) {
+              return s;
+            } else {
+                if (!String.valueOf(dbPwdField.getPassword()).equals("")) {
+                    s = s + " -p " + String.valueOf(dbPwdField.getPassword());
+                }
+                return s;
+            }
+        }
+
+    }
+}

+ 3 - 0
schemaSpyGUI/src/schemaspygui/resources/ReleaseText.properties

@@ -0,0 +1,3 @@
+ReleaseText=<html>  <head>  </head> <body><center>released under Lesser GNU Public License<br>(except the icons in this GUI)<br>by Joachim Uhl;<br>mailto: <a href="mailto:admin@joachim-uhl.de">admin@joachim-uhl.de</a><br>Many improvements are from Jose E. Gimenez;<br> mailto: <a href="mailto:jogios@users.sourceforge.net">jogios@users.sourceforge.net</a><br> Thanks Jose!<p>download and help under:<br><a href="http://www.joachim-uhl.der/projekte/schemaspygui/">http://www.joachim-uhl.der/projekte/schemaspygui/</a><p>The Icons are from FamFamFam (Silk Icons) <a href="http://www.famfamfam.com/lab/icons/silk/">http://www.famfamfam.com/lab/icons/silk/</a><br> and licensed under a Creative Commons Attribution 2.5 License</center>  </body></html>
+ProgramName=SchemaSpyGUI
+VersionInfo=Version 0.99 (20090302)

BIN
schemaSpyGUI/src/schemaspygui/resources/cross.png


BIN
schemaSpyGUI/src/schemaspygui/resources/database_add.png


BIN
schemaSpyGUI/src/schemaspygui/resources/database_connect.png


BIN
schemaSpyGUI/src/schemaspygui/resources/database_go.png


BIN
schemaSpyGUI/src/schemaspygui/resources/disk.png


BIN
schemaSpyGUI/src/schemaspygui/resources/disk_multiple.png


BIN
schemaSpyGUI/src/schemaspygui/resources/door_out.png


BIN
schemaSpyGUI/src/schemaspygui/resources/folder_explore.png


BIN
schemaSpyGUI/src/schemaspygui/resources/folder_page_white.png


BIN
schemaSpyGUI/src/schemaspygui/resources/hourglass_go.png


+ 3 - 0
startSchemaSpyGui

@@ -0,0 +1,3 @@
+#!/bin/sh
+
+java -jar ~/bin/schemaSpyGUI/schemaSpyGUI.jar