srecord noeq G22ProjectOverviewPanel(G22Utils g22utils) { JSyntaxTextFileEditor storyView; JLabel lblStats; void updateStats { setText(lblStats, "Database core size: " + str_toKB(fileSize(g22utils.concepts().conceptsFile()))); } cachedVisualize { var conceptsFile = g22utils.concepts().conceptsFile(); lblStats = rightAlignedLabel(); IVF1 fileListener = file -> { if (sameFile(file, conceptsFile)) updateStats(); }; bindToComponent(lblStats, -> { g22utils.onProjectFileChanged(fileListener); updateStats(); }, -> g22utils.removeProjectFileChangedListener(fileListener)); storyView = new JSyntaxTextFileEditor(g22utils.projectStoryTextFile()) .uneditable(true); storyView.adaptSyntaxTextArea = textArea -> g22_adaptSyntaxTextAreaForHashRefs(textArea, g22utils); addInFront(storyView.buttons(), jImageButtonScaledToWidth(16, #1103068, "Edit", rThread { //g22utils.projectActions.editProjectStory(); storyView.uneditable(false); })); // LAYOUT S title = "Project " + quote(g22utils.projectName()) + " Overview"; ret withTopAndBottomMargin(jRaisedCenteredSection(title, jhsplit(0.75, jCenteredSection("Project Story", centerAndSouthWithMargin( storyView.visualize(), centerAndEastWithMargin(lblStats, jFilePathButton(conceptsFile)) )), northAndCenterWithMargin( new G22AutoStartPanel(g22utils), new G22VariablesPanel(g22utils).compactView(false) )) )); } }