Skip to content

#2097: Configure Ide Plugins in the GUI #2150

Open
KarimALotfy wants to merge 79 commits into
devonfw:mainfrom
KarimALotfy:feature/2097-configure-ide-plugins-in-the-GUI
Open

#2097: Configure Ide Plugins in the GUI #2150
KarimALotfy wants to merge 79 commits into
devonfw:mainfrom
KarimALotfy:feature/2097-configure-ide-plugins-in-the-GUI

Conversation

@KarimALotfy

@KarimALotfy KarimALotfy commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

This PR fixes #2097

depends on #2080

Implemented changes:

  • Extended the tool configuration tree to support IDE plugins: tools whose commandlet is PluginBasedCommandlet-based (currently IDE tools like Eclipse/IntelliJ/VS Code, etc) can now list, enable/disable, and add plugins directly from the GUI.
  • Introduced ToolTreeNode as a marker interface so the settings TreeView can hold both ToolConfiguration (tool rows) and the new PluginConfiguration (plugin rows) as children of a tool.
  • Added PluginConfiguration model representing a single plugin (name, id, active flag, parent tool), with isParentEnabled() so plugin rows can reflect their parent tool's enabled state.
  • Extracted ToolTreeCell out of ToolSettingsController into its own file; it now dispatches rendering by node type — group header, tool row (checkbox | name | edition combo | version combo | error icon), or plugin row (checkbox | name | id).
  • Added an "Add Plugin" button/dialog (onAddPlugin) that lets the user create a new plugin for the selected tool, prompting for plugin ID, name, tags, and URL (when required by the tool), and persists it via ToolSettingsService.createPlugin.
  • Added ToolSettingsService methods: loadPluginsForTool, savePluginActive, isPluginUrlNeeded, createPlugin, backed by PluginBasedCommandlet.
  • Wired plugin active-state changes and new plugins to be persisted on Save/Preview-Save alongside existing tool version/edition changes.
  • Pulled in the tool-version validation and Tool Config UI fixes from Add tool selection and version/edition configuration via GUI #2045 (validation via
  • Added unit tests in ToolSettingsServiceTest covering plugin loading, activation/deactivation, and plugin creation.

Testing instructions

  1. Run the IDEasy GUI and open the Tool Configuration tab.
  2. Expand the IDE group and select a plugin-capable tool (e.g. intellij or eclipse).
  3. Verify the "Add Plugin" button is enabled only when a plugin-capable tool (or one of its plugin rows) is selected, and disabled otherwise.
  4. Expand the selected tool and confirm its existing plugins are listed as child rows with a checkbox, name, and id.
  5. Toggle a plugin's checkbox and click Save (or Preview → Save); reopen the tab and confirm the active state persisted.
  6. Click "Add Plugin", fill in Plugin ID/Name/Tags (and URL if prompted), click OK, and confirm the new plugin appears under the tool and is saved correctly.
  7. Toggle the parent tool's enabled checkbox off and confirm its plugin rows become disabled/dimmed.
  8. Run mvn clean test in the gui module and confirm all tests pass.

Checklist for this PR

Make sure everything is checked before merging this PR. For further info please also see
our DoD.

  • When running mvn clean test locally all tests pass and build is successful
  • PR title is of the form #«issue-id»: «brief summary» (e.g. #921: fixed setup.bat). If no issue ID exists, title only.
  • PR top-level comment summarizes what has been done and contains link to addressed issue(s)
  • PR and issue(s) have suitable labels
  • Issue is set to In Progress and assigned to you or there is no issue (might happen for very small PRs)
  • You followed all coding conventions
  • You have added the issue implemented by your PR in CHANGELOG.adoc unless issue is labeled
    with internal
  • You have formulated clear instructions on how to test your contribution under "Testing instructions"

Checklist for tool commandlets

laim2003 added 30 commits March 27, 2026 17:52
- Added logging to IdeGuiStateManager.
- Added functionality, that selecting a different project now switches the IdeContext to the new project.
- Added logging to IdeGuiStateManager.
- Added functionality, that selecting a different project now switches the IdeContext to the new project.
- Added functionality, that selecting a different project now switches the IdeContext to the new project.
- added DI for IdeGuiStateManager.switchContext
…reading the list of workspaces/projects instead of reading those from the UI
…nager, when switchContext(Path rootDirectory, ...) is called.
…tateManager is now set when calling getInstance(), allowing us to provide a getInstance() method with a DI parameter
KarimALotfy and others added 12 commits July 1, 2026 13:57
      Show plugins as checkable children of IDE-group tools in the tool
      configuration TreeView. Plugin active state is loaded via
      PluginBasedCommandlet#getPlugins() and persisted on Save through a new
      savePluginActive() method on PluginBasedCommandlet. Plugins are grayed out when their parent tool is disabled.
…-slection-and-version-or-edition-configuration-via-gui

# Conflicts:
#	CHANGELOG.adoc
…ol-slection-and-version-or-edition-configuration-via-gui
… the GUI, refactored ToolTreeCell.java to be in its own class file, added tests for the new add plugin feature
…ition-configuration-via-gui" into "feature/2097-configure-ide-plugins-in-the-gui"

and align the changes
@github-project-automation github-project-automation Bot moved this from 🆕 New to ✅ Done in IDEasy board Jul 12, 2026
@KarimALotfy KarimALotfy reopened this Jul 12, 2026
…ion-or-edition-configuration-via-gui

Content was already reconciled in 0cf29a0, which was committed without
recording feature/2045's tip as a second parent, leaving the merge-base
between the two branches stale and inflating PR diffs. This commit fixes
the ancestry without changing any files.
@coveralls

coveralls commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 29214208588

Coverage decreased (-0.7%) to 71.491%

Details

  • Coverage decreased (-0.7%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 47 coverage regressions across 4 files.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

47 previously-covered lines in 4 files lost coverage.

File Lines Losing Coverage Coverage
com/devonfw/ide/gui/MainController.java 29 63.64%
com/devonfw/tools/ide/tool/plugin/PluginBasedCommandlet.java 16 82.95%
com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java 1 78.33%
com/devonfw/tools/ide/version/VersionSegment.java 1 91.08%

Coverage Stats

Coverage Status
Relevant Lines: 17336
Covered Lines: 12919
Line Coverage: 74.52%
Relevant Branches: 7716
Covered Branches: 4991
Branch Coverage: 64.68%
Branches in Coverage %: Yes
Coverage Strength: 3.16 hits per line

💛 - Coveralls

@KarimALotfy KarimALotfy self-assigned this Jul 12, 2026
@KarimALotfy KarimALotfy marked this pull request as ready for review July 12, 2026 23:58
@KarimALotfy KarimALotfy moved this from ✅ Done to 🏗 In progress in IDEasy board Jul 13, 2026
@KarimALotfy KarimALotfy added enhancement New feature or request plugins related to plugins (for Eclipse, Intellij, VSCode, etc.) GUI Graphical User Interface of IDEasy (aka dashboard) build with JavaFx software 3rd party software (tools) labels Jul 13, 2026
@KarimALotfy KarimALotfy moved this from 🏗 In progress to Team Review in IDEasy board Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request GUI Graphical User Interface of IDEasy (aka dashboard) build with JavaFx plugins related to plugins (for Eclipse, Intellij, VSCode, etc.) software 3rd party software (tools)

Projects

Status: Team Review

Development

Successfully merging this pull request may close these issues.

Configure IDE Plugins in Tool Configuration Tree in the GUI

4 participants