Skip to content

Configure IDE Plugins in Tool Configuration Tree in the GUI #2097

Description

@KarimALotfy

Task summary

User Story

As a user
I want to manage plugins for supported IDE tools directly inside the tool configuration tree
So that plugin configuration is visually grouped under the related IDE or tool.

Context

The Tool Settings Configuration editor displays tool configurations as a tree view, plugin configuration could be integrated into the existing tree structure. For tools that support plugins (e.g., IDEs or PluginBasedCommandlets), plugins should be shown as child tree items below the related tool entry.

Example Tree Structure

Tools
└── intellij
    └── Plugins
        ├── lombok
        └── plant4uml
└── vscode
    └── Plugins
        └── some-plugin
└── eclipse

In JavaFX terms, the tools are parent TreeItems, and the plugin entries are child TreeItems.


Expected Behavior

  • Tree Hierarchy: The tool configuration is displayed as a TreeView. Each tool is represented as a parent tree item.
  • Plugin Nodes: If a tool supports plugins, a Plugins child item must be shown below the tool. Existing plugins are listed as child items below this Plugins folder item.
  • State Cascading:
    • If a tool is disabled, the related plugin tree items must be disabled or visually grayed out, and plugin configuration must not be editable.
    • If a tool is enabled, the related plugin tree items must become active and editable.

Plugin Interaction

Each individual plugin tree item must allow the user to:

  • View the plugin name.
  • View the plugin ID (if available).
  • Enable or disable the plugin via a checkbox.
  • This should then update the plugin activation state in settings/«ide»/plugins/«plugin-name».properties
    (active=true if checked, active=false if unchecked).

Add Plugin Flow

For tools supporting plugins, the Plugins tree item must provide an Add or + action. Clicking this opens a dialog where the user enters:

  1. Plugin ID
  2. Plugin Name (used for the properties file naming)
  • File Creation: After confirmation, a new plugin properties file must be created under: settings/<ide>/plugins/<plugin-name>.properties

  • Default State: The new plugin must be active by default (active=true).

  • UI Update: The new plugin must immediately appear as a child tree item under the related tool's Plugins node.

  • Enhancement:* The plugin name may be auto-suggested from the entered plugin ID using a simple naming algorithm (e.g., ID com.example.my-plugin suggests Name my-plugin).


Technical Notes

  • Phase: This must be implemented as a follow-up iteration after the basic tool configuration editor PR Add tool selection and version/edition configuration via GUI #2045.
  • UI Framework: Use JavaFX TreeView to represent the hierarchy. Reuse the same general UI approach as the basic tool configuration tree.
  • Scope Restriction: Plugin support must only be shown for IDEs or plugin-based tools.

Acceptance Criteria

  • Tool configurations are displayed in a TreeView structure.
  • Plugin-supporting tools display a Plugins child tree item.
  • Existing plugins are correctly discovered and displayed below the related tool node.
  • Plugin entries can be toggled (enabled/disabled) via a checkbox UI element.
  • Disabling a parent tool disables all of its underlying plugin configuration items.
  • New plugins can be added through an interactive dialog launched from the Plugins node.
  • Adding a plugin successfully creates a properties file at settings/<ide>/plugins/<plugin-name>.properties.
  • Newly added plugins default to active=true.
  • Invalid plugin input in the dialog triggers clear validation feedback (red icon + explanatory tooltip).

Additional context

No response

Metadata

Metadata

Assignees

Labels

GUIGraphical User Interface of IDEasy (aka dashboard) build with JavaFxenhancementNew feature or requestready-to-implementsettingside-settings repo and replated processes and featuressoftware3rd party software (tools)

Type

Fields

No fields configured for Task.

Projects

Status
🏗 In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions