Contains all 11 editor panels plus the two interfaces they implement.
File
Responsibility
Saveable
Interface with a single save() method. All editors implement it so MainWindow can route Ctrl+S to whichever editor is visible.
Undoable
Interface with undo(), redo(), canUndo(), canRedo(). All editors implement it for consistent undo/redo support.
PackBrowserEditor
File-tree view. Detects JSON root key on click and dispatches to the correct editor.
ManifestEditor
Writes manifest.json. Sets PackContext pack name on save.
All other editors
Each manages one content type. Reads from PackContext and DynamicOptions; writes to DynamicOptions and LangRegistry on save.
ui/
File
Responsibility
MainWindow
Top-level JFrame. Owns the left sidebar nav buttons, the CardLayout that switches between editors, the menu bar (File, Edit, View), and the theme toggle. Routes Ctrl+S to the active Saveable.
StyledComponents
Factory for themed Swing widgets β buttons, labels, text fields, combo boxes, spinners β all pre-styled to match the current theme.
TexturePickerPanel
Composite widget used by Materials and Equipment editors. Contains a thumbnail display, a browse button, and the logic to copy the chosen image to assets/textures/.
util/
File
Responsibility
ThemeManager
Holds the dark and light colour palettes. Applies them to the full component tree on toggle using role-based colour classification.
JsonUtil
Builds JSON strings from Java data structures with no external libraries.
JsonParser
Parses JSON strings into Java maps and lists recursively, with no external libraries.
FileUtil
Helpers for the save dialog (pre-fill filename, remember last directory), directory creation, and file reading/writing.
PackContext
Singleton that holds the current pack name. Editors read from it; ManifestEditor writes to it on save.
DynamicOptions
Manages lists of skill IDs, material IDs, and enemy IDs. Editors subscribe as listeners and are notified when a list changes.
LangRegistry
Global set of translation keys. Editors push keys on save; LanguageEditor reads from it for Collect and Retro-fill. Notifies open language editors of new keys in real time.
EditorHistory
A per-editor bounded stack (max 100 entries) of JSON snapshots. Supports undo and redo by restoring prior snapshots.