Skip to content

Migrate theme to AtlantaFx and ikonli#479

Merged
DropSnorz merged 3 commits into
v2from
chore/new-theme
Jun 15, 2026
Merged

Migrate theme to AtlantaFx and ikonli#479
DropSnorz merged 3 commits into
v2from
chore/new-theme

Conversation

@DropSnorz

Copy link
Copy Markdown
Owner

No description provided.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

This PR completes a comprehensive UI framework migration from JMetro theming to Atlantafx PrimerDark, replaces ControlsFX controls with Atlantafx equivalents, converts image-based icons to FontIcon components, and refactors global stylesheet rules to use new color variable mappings throughout the JavaFX application.

Changes

Atlantafx Theme and Icon System Migration

Layer / File(s) Summary
Theme System Entry Points
owlplug-client/src/main/java/com/owlplug/OwlPlug.java, owlplug-client/src/main/java/com/owlplug/OwlPlugPreloader.java, owlplug-client/src/main/resources/fxml/Preloader.fxml
Application initialization switches from JMetro to Atlantafx PrimerDark; Application.setUserAgentStylesheet() called with PrimerDark in both entry points before Scene creation; Preloader gradient updated to use -color-bg-subtle token instead of hardcoded gray.
Tab and Control Styling
owlplug-client/src/main/java/com/owlplug/core/controllers/MainController.java, owlplug-client/src/main/java/com/owlplug/project/controllers/ProjectsController.java, owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginsController.java, owlplug-client/src/main/resources/fxml/MainView.fxml
Tab pane styling transitions from JMetro UNDERLINE_TAB_PANE to Atlantafx Styles.TABS_BORDER_TOP; MainView header tabs enhanced with FontIcon graphics for Plugins, Explore, Projects, and Options; JMetro imports removed across controllers.
ToggleSwitch Component Migration
owlplug-client/src/main/java/com/owlplug/core/controllers/fragments/PluginPathFragmentController.java, owlplug-client/src/main/java/com/owlplug/explore/controllers/SourceMenuController.java, owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginInfoController.java, owlplug-client/src/main/java/com/owlplug/plugin/ui/RecoveredPluginView.java, owlplug-client/src/main/resources/fxml/fragments/PluginPathFragment.fxml, owlplug-client/src/main/resources/fxml/plugins/PluginInfoView.fxml
ControlsFX ToggleSwitch replaced with Atlantafx variant across all controllers and views; PluginPathFragment.fxml updated with explicit sizing and right-aligned labels; PluginInfoView.fxml imports adjusted for Atlantafx controls.
Scan Control Restructuring with SplitMenuButton
owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginsController.java, owlplug-client/src/main/resources/fxml/plugins/PluginsView.fxml
Scan UI controls unified into SplitMenuButton (scanMenuButton, scanMenuItem); new controller fields and event handlers added for scan telemetry tracking and plugin service invocation; display switch tabs reworked to icon-only floating layout with FontIcon glyphs for list, directories, and table views.
FontIcon Migration Across UI Components
owlplug-client/src/main/resources/fxml/TaskBarView.fxml, owlplug-client/src/main/resources/fxml/plugins/DirectoryInfoView.fxml, owlplug-client/src/main/resources/fxml/plugins/PluginInfoView.fxml, owlplug-client/src/main/resources/fxml/plugins/SymlinkInfoView.fxml, owlplug-client/src/main/resources/fxml/projects/ProjectInfoView.fxml, owlplug-client/src/main/resources/fxml/projects/ProjectsView.fxml
Button and control graphics migrated from ImageView/PNG assets to FontIcon with ikonli literals; TaskBarView footer styling updated to task-bar-footer class with adjusted margins; icons added for gear, menu dots, enable/disable, delete, unlink, open, and sync actions; ProjectsView "All" tab and Projects Sync button now use FontIcon glyphs.
Global CSS Stylesheet Refactoring
owlplug-client/src/main/resources/owlplug.css
Root color mappings updated to Atlantafx -color-* tokens (bg-default, bg-subtle, bg-inset, fg-default, fg-muted, danger-fg); legacy card-pane-* rules removed; theme applied consistently across mainPane, dialog overlays, text, combo-box popups, hyperlinks, drawer panes, context menus, headers, tabs, cards, progress bars, and charts; pane-card drop shadow and TextArea-specific backgrounds removed.
Dialog and Layout Styling Adjustments
owlplug-client/src/main/resources/fxml/dialogs/InstallStepView.fxml, owlplug-client/src/main/resources/fxml/explore/ExploreView.fxml
InstallStepView applies dense styling to preparation, directory selection, and verification step panes; removes pickOnBounds attribute from screenshot pane; ExploreView converts inline background style to search-bar-chip-view class-based styling for header container.

Sequence Diagram

sequenceDiagram
  participant OwlPlugApp as OwlPlug/Preloader
  participant Application as JavaFX Application
  participant PrimerDark as Atlantafx PrimerDark
  participant Scene as Scene
  participant Stylesheet as CSS Engine
  
  OwlPlugApp->>Application: setUserAgentStylesheet(PrimerDark.getUserAgentStylesheet())
  Application->>PrimerDark: Get stylesheet URL
  PrimerDark-->>Application: Base theme stylesheet
  OwlPlugApp->>Scene: Create primary Scene
  OwlPlugApp->>Scene: Add owlplug.css stylesheet
  OwlPlugApp->>Scene: Add owlplug-controls.css stylesheet
  Scene->>Stylesheet: Apply all stylesheets in order
  Stylesheet->>Stylesheet: Merge Atlantafx base + custom overrides
  Note over Stylesheet: Theme variables (-color-*) and custom rules now active
Loading

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • DropSnorz/OwlPlug#301: Both PRs modify owlplug.css and owlplug-controls.css stylesheets; this PR explicitly applies those stylesheets via Scene and refactors them to use new Atlantafx color variables while the previous PR made earlier stylesheet tweaks.
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive No description was provided by the author, but the PR objectives clearly indicate this is a theme migration (JMetro to Atlantafx) with Ikonli icon support and CSS cleanup. Consider adding a description explaining the motivation for the theme migration and any breaking changes or migration notes for developers.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The PR title accurately describes the main changeset: migrating the application's UI theme from JMetro to Atlantafx and adding Ikonli icon support.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/new-theme

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@DropSnorz

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@DropSnorz DropSnorz added this to the 2.0.0 milestone Jun 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
owlplug-client/src/main/resources/fxml/plugins/PluginsView.fxml (1)

63-80: ⚡ Quick win

Add labels (or tooltips) for icon-only display tabs.

These tabs now rely on glyphs only, which hurts discoverability and accessibility. Please add per-tab Tooltip text (at minimum) so users can identify List/Directories/Table modes reliably.

Suggested FXML adjustment
+<?import javafx.scene.control.Tooltip?>
 ...
                 <Tab fx:id="displayListTab" closable="false">
+                    <tooltip>
+                        <Tooltip text="List view" />
+                    </tooltip>
                     <graphic>
                         <FontIcon iconLiteral="mdi2f-format-list-bulleted" />
                     </graphic>
                 </Tab>
                 <Tab fx:id="displayDirectoriesTab" closable="false">
+                    <tooltip>
+                        <Tooltip text="Directory view" />
+                    </tooltip>
                     <graphic>
                         <FontIcon iconLiteral="mdi2f-file-tree" />
                     </graphic>
                 </Tab>
                 <Tab fx:id="displayTableTab" closable="false">
+                    <tooltip>
+                        <Tooltip text="Table view" />
+                    </tooltip>
                     <graphic>
                         <FontIcon iconLiteral="mdi2v-view-module-outline" />
                     </graphic>
                 </Tab>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@owlplug-client/src/main/resources/fxml/plugins/PluginsView.fxml` around lines
63 - 80, The three icon-only tabs (Tabs with fx:id displayListTab,
displayDirectoriesTab, displayTableTab) lack accessible labels—add a Tooltip to
each Tab (e.g., set the tooltip property on displayListTab,
displayDirectoriesTab, displayTableTab) with descriptive text like "List",
"Directories", and "Table" respectively; alternatively set an accessibleText or
text attribute if you prefer visible labels, but ensure each Tab has a Tooltip
so users can discover the mode.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@owlplug-client/src/main/resources/fxml/plugins/PluginsView.fxml`:
- Around line 63-80: The three icon-only tabs (Tabs with fx:id displayListTab,
displayDirectoriesTab, displayTableTab) lack accessible labels—add a Tooltip to
each Tab (e.g., set the tooltip property on displayListTab,
displayDirectoriesTab, displayTableTab) with descriptive text like "List",
"Directories", and "Table" respectively; alternatively set an accessibleText or
text attribute if you prefer visible labels, but ensure each Tab has a Tooltip
so users can discover the mode.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a72e5750-a759-48ce-9617-c05182266a84

📥 Commits

Reviewing files that changed from the base of the PR and between 8134cea and e87ca38.

⛔ Files ignored due to path filters (10)
  • owlplug-client/pom.xml is excluded by !**/*.xml
  • owlplug-client/src/main/resources/icons/chart-white-16.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/icons/connect-white-16.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/icons/eye-white-16.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/icons/eye2-white-16.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/icons/menudot-white-64.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/icons/share-white-16.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/icons/trash-white-16.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/media/plugin-placeholder.png is excluded by !**/*.png, !**/*.png
  • owlplug-client/src/main/resources/media/plugin-placeholder.svg is excluded by !**/*.svg, !**/*.svg
📒 Files selected for processing (22)
  • owlplug-client/src/main/java/com/owlplug/OwlPlug.java
  • owlplug-client/src/main/java/com/owlplug/OwlPlugPreloader.java
  • owlplug-client/src/main/java/com/owlplug/core/controllers/MainController.java
  • owlplug-client/src/main/java/com/owlplug/core/controllers/fragments/PluginPathFragmentController.java
  • owlplug-client/src/main/java/com/owlplug/explore/controllers/SourceMenuController.java
  • owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginInfoController.java
  • owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginsController.java
  • owlplug-client/src/main/java/com/owlplug/plugin/ui/RecoveredPluginView.java
  • owlplug-client/src/main/java/com/owlplug/project/controllers/ProjectsController.java
  • owlplug-client/src/main/resources/fxml/MainView.fxml
  • owlplug-client/src/main/resources/fxml/Preloader.fxml
  • owlplug-client/src/main/resources/fxml/TaskBarView.fxml
  • owlplug-client/src/main/resources/fxml/dialogs/InstallStepView.fxml
  • owlplug-client/src/main/resources/fxml/explore/ExploreView.fxml
  • owlplug-client/src/main/resources/fxml/fragments/PluginPathFragment.fxml
  • owlplug-client/src/main/resources/fxml/plugins/DirectoryInfoView.fxml
  • owlplug-client/src/main/resources/fxml/plugins/PluginInfoView.fxml
  • owlplug-client/src/main/resources/fxml/plugins/PluginsView.fxml
  • owlplug-client/src/main/resources/fxml/plugins/SymlinkInfoView.fxml
  • owlplug-client/src/main/resources/fxml/projects/ProjectInfoView.fxml
  • owlplug-client/src/main/resources/fxml/projects/ProjectsView.fxml
  • owlplug-client/src/main/resources/owlplug.css
💤 Files with no reviewable changes (1)
  • owlplug-client/src/main/java/com/owlplug/project/controllers/ProjectsController.java

@DropSnorz DropSnorz merged commit a79f80b into v2 Jun 15, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant