apache / apache/hop

[Task]: Implement GuiWidgetGroupType.BOXES in GuiCompositeWidgets

Open
#8,117 0 comments 0 reactions 0 assignees View on GitHub
awaiting triage Hop Gui P3
Dominant language
Java
Stars
1.5k
Forks
476
Avg merge
18h 32m
Merged PRs (30d)
216

Description

### What needs to happen?

`GuiWidgetGroupType` already defines `BOXES` (alongside `TABS` and `LIST`), and `@GuiWidgetElement` fields can set `group` + `groupType = GuiWidgetGroupType.BOXES`. `GuiCompositeWidgets.layoutElements()` does not implement that layout yet: any non-`TABS` group type logs *"is not implemented yet; showing tabs"* and always calls `layoutTabs()`.

BOXES should stack one SWT `Group` per annotated `group`, filling the space between the dialog header and the button bar, with a `ScrolledComposite` inside each box (same fill-and-scroll idea as tabs, without a tab folder). That keeps OK/Cancel pinned to the bottom of a resizable dialog instead of overlapping the lower widgets.

This is a small, localized change:

- Add `layoutBoxes()` next to `layoutTabs()` in `ui/.../GuiCompositeWidgets.java`.
- Branch on `GuiWidgetGroups.typeOf(...)` in `layoutElements()` instead of always falling through to tabs.
- Reuse `addCompositeWidgets()` and `registerExtraGroup()` extras per group.
- Cover it in `GuiCompositeWidgetsGroupTest` (BOXES should produce `org.eclipse.swt.widgets.Group`, not `CTabFolder`).

`DataSetOutputMeta` already annotates its dialog fields with `groupType = BOXES` and `group = "Data Set"` and can be used as a visual check once this lands. `LIST` can stay a later follow-up.

### Issue Priority

Priority: 3

### Issue Component

Component: Hop Gui

Contributor guide

Open the contributing guide

Research direction

Start in ui/.../GuiCompositeWidgets.java by reading layoutElements(), layoutTabs(), addCompositeWidgets(), and registerExtraGroup(), then run GuiCompositeWidgetsGroupTest. Implement the BOXES branch and verify that each group produces an SWT Group with a ScrolledComposite while the dialog buttons remain below the grouped content. Use DataSetOutputMeta as the visual check.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
desktop
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
84/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.