diff options
| author | Benjamin Culkin <scorpress@gmail.com> | 2025-09-24 17:40:17 -0400 |
|---|---|---|
| committer | Benjamin Culkin <scorpress@gmail.com> | 2025-09-24 17:40:17 -0400 |
| commit | 35cc451a5c53b23531a46eb2bff901cd63e4df09 (patch) | |
| tree | 0bb1e1d17604aae16d34a5bc255a472a320966c4 /base/src/main/java/bjc/utils/gui/browser/JBrowserModel.java | |
| parent | 16ca6878d9ff246e7f742f1268482b8a51665892 (diff) | |
Add a JBrowser component + example
This adds a JBrowser Swing component that is intended to work similarly
to how the NSBrowser component in Swing works
Diffstat (limited to 'base/src/main/java/bjc/utils/gui/browser/JBrowserModel.java')
| -rw-r--r-- | base/src/main/java/bjc/utils/gui/browser/JBrowserModel.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/gui/browser/JBrowserModel.java b/base/src/main/java/bjc/utils/gui/browser/JBrowserModel.java new file mode 100644 index 0000000..d95badc --- /dev/null +++ b/base/src/main/java/bjc/utils/gui/browser/JBrowserModel.java @@ -0,0 +1,36 @@ +package bjc.utils.gui.browser; + +/** Data model for JBrowser (hierarchical, like TreeModel but simpler). */ +public interface JBrowserModel { + Object getRoot(); + + int getChildCount(Object parent); + + Object getChild(Object parent, int index); + + default int indexOfChild(Object parent, Object child) { + int n = getChildCount(parent); + for (int i = 0; i < n; i++) + if (getChild(parent, i).equals(child)) + return i; + return -1; + } + + boolean isLeaf(Object node); + + /** Display text for nodes (used by default renderer & default filter). */ + default String getText(Object node) { + return String.valueOf(node); + } + + /** True if node can expand (used by default renderer). */ + default boolean isExpandable(Object node) { + return !isLeaf(node); + } + + /** Header text for the column that is showing the children of parentNode. */ + default String getColumnHeader(Object parentNode, int depthFromRoot) { + String t = getText(parentNode); + return (t == null || t.isEmpty()) ? "(root)" : t; + } +}
\ No newline at end of file |
