sclass G22DatabasesPanel { G22Utils g22utils; Concepts concepts; JObjectTable table; *(G22Utils *g22utils, Concepts *concepts) {} record GazelleDB(S name, File dir) { simplyCached bool loaded() { ret sameFile(dir, concepts.conceptsDir()); } } visualize { table = swing(-> new JObjectTable); table.itemToMap = db -> litorderedmap( "Name" := db.name, "Directory" := f2s(db.dir), "Loaded" := db.loaded() ? "Yes" : "No" ); new L dbs; dbs.add(new GazelleDB("Legacy DB", programDir())); for (File dir : listDirsContainingFileNamed(g22utils.databasesMotherDir(), "concepts.structure.gz")) dbs.add(new GazelleDB(fileName(dir), dir)); table.setList(dbs); var tbl = table.visualize(); ret withTopAndBottomMargin(jCenteredRaisedSection("Gazelle Databases", northAndCenterWithMargins( jline( toolTip("Create a new Gazelle database", jbutton("New database...", rThread newDatabase)) ), centerAndEastWithMargin( tbl, vstackWithSpacing( tableDependentButton(table.table, "Open"), tableDependentButton(table.table, "Delete"), ))))); } void newDatabase { temp g22utils.enter(); //inputText(); //isValidFileName } }