[Task]: Implement GuiWidgetGroupType.BOXES in GuiCompositeWidgets
- 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
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