Commit Graph

34 Commits

Author SHA1 Message Date
Jakub Senohrabek
766beca004 [jewel] Backport Jewel 0.28 APIs to 243
GitOrigin-RevId: 65f34914870df00a6d3c50ff7614cdf0f9748703
2025-04-29 12:20:16 +00:00
Ivan Morgillo
84032509aa [jewel] JEWEL-735 Implement Markdown tables support (GFM extension)
Reference https://github.com/JetBrains/jewel/pull/735

closes https://github.com/JetBrains/intellij-community/pull/2913

(cherry picked from commit ca172d6be3642466b530822f6518eee394f1b81b)


(cherry picked from commit ce7f847ef5a9583f585121950784ca6020a51661)

IJ-MR-155570

GitOrigin-RevId: 63a995b4a7b58b4e6b3b8bc56b9b139bf17aaaaf
2025-03-12 13:07:26 +00:00
Ivan Morgillo
c796546ead [jewel] Extract component showcase module
(cherry picked from commit 85f62aa3d47ecba6dc1753d25e6f701092b947da)


(cherry picked from commit 24244c69716c4ab6f895b82489f960912f1777fb)

IJ-MR-155570

GitOrigin-RevId: e7e4b7c38fbd73d27524c25ab48aec79d886b381
2025-03-12 13:07:25 +00:00
Ivan Morgillo
00b3769c8b [jewel] Rewrite/cleanup/simplify ListComboBox code
Merge after https://github.com/JetBrains/intellij-community/pull/2905

Reference https://github.com/JetBrains/jewel/pull/715/

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

closes https://github.com/JetBrains/intellij-community/pull/2912

(cherry picked from commit d0b2a0cb59088752dde6f53e8ec00bdb0169adc8)


(cherry picked from commit dde7fb4970b3cda5c819b78d6bd6cc20508b9c11)

IJ-MR-155570

GitOrigin-RevId: c0b4da708ff0936fb25e8b7624e78e691ddf6fa6
2025-03-12 13:07:25 +00:00
Ivan Morgillo
8483e7ccda Add SplitButton
reference https://github.com/JetBrains/jewel/pull/733

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
(cherry picked from commit a25d084ed04d880d871ba31912cb4988210d058b)


(cherry picked from commit 02412f9b44c1218c14430aebd97e0f1eea4febd0)

IJ-MR-155570

GitOrigin-RevId: e1898bddd7eb3c563ddfa33c7b4bc87acf4e3d4d
2025-03-12 13:07:25 +00:00
Ivan Morgillo
fb83baa4a1 add inline banner
reference https://github.com/JetBrains/jewel/pull/711

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

closes https://github.com/JetBrains/intellij-community/pull/2906

(cherry picked from commit 3a3f026241884c7ec8a79fc225ea49da1f05d0bc)


(cherry picked from commit 57d931d1ce4f5d2ba00bef6f78a336d7c01136d1)

IJ-MR-155570

GitOrigin-RevId: e7f1628ed448a6ad77074a67b86825b86ef63eb3
2025-03-12 13:07:25 +00:00
Ivan Morgillo
616716296b Banners (#688)
* start working on Banner

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* InformationBanner PoC (#689)

* add InformationBanner PoC

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove unnecessary LocalOutlinedBannerStyle

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* rework InformationBanner

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add InformationBanner theme and showcase for IDE

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make formatter and linter happy

* rework BannerColors and add SuccessBanner

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make formatter and linter happy

* fix typo in ComponentsShowcaseTab2

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* split factories in IntUIBannerStyling

reference https://github.com/JetBrains/jewel/pull/689#discussion_r1848839928

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* skip icon area when icon is null

reference https://github.com/JetBrains/jewel/pull/689#discussion_r1853701496

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix old string in BannerStyling

reference https://github.com/JetBrains/jewel/pull/689#discussion_r1853705285

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove fillMaxWidth from BannerImpl

reference https://github.com/JetBrains/jewel/pull/689#discussion_r1853703743

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make formatter and linter happy

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* Add all remaing banners (#697)

* add InformationBanner PoC

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* rework InformationBanner

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add InformationBanner theme and showcase for IDE

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make formatter and linter happy

* fix typo in ComponentsShowcaseTab2

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add WarningBanner

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add ErrorBanner

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix wrong region comment syntax

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* check for null actions in Action slot API

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make formatter and linter happy

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix Divider in Banner

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make formatter and linter happy

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
GitOrigin-RevId: dbad1247ec8012533b4168aa5629cfabb430267c
2024-11-25 15:08:00 +00:00
Ivan Morgillo
03307549ae Add ListComboBox (#627)
* integrate ComboBox in Standalone

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add ComboBoxes to SwingComparisonTabPanel

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix text color in ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add a bit of space below combobox in IDE example

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* tune ComboBox popup padding

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix ComboBox field background color

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* extract textStyle in ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make the formatter happy

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix ComboBox border

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* tune ComboBox focus

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* Revert "tune ComboBox focus"

This reverts commit f336503db3c9bbedd2fb816fe6bf9f8bcd676cbf.

* iterate on focus

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* reformat

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove cursorBrush style

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add isEditable flag to ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make the formatter happy

* tune ComboBox menu horizontal padding

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove offset from Standalone style

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix a couple of paddings in the menu

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make linter and formatter happy

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make the formatter happy

* add not-editable ComboBox to Standalone

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix focus on not-editable ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* rearrange ComboBox params to make ktlint happy

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix single line on not-editable ComboBox

reference: https://github.com/JetBrains/jewel/pull/601#pullrequestreview-2316763917
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* prevent the ComboBox from expanding

reference: https://github.com/JetBrains/jewel/pull/601#pullrequestreview-2316763917
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on colors

reference: https://github.com/JetBrains/jewel/pull/601#discussion_r1767606530
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* address a couple of feedbacks

reference: https://github.com/JetBrains/jewel/pull/601#discussion_r1767622814
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on focus management on ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* reformat and update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix focus on click for not-editable ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* inline a few variables to reduce clutter

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add different states for different ComboBoxes

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* reformat things

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* introduce ComboBoxStyle

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* restore DropdownStyle

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* split ComboBoxes states in Standalone sample

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* tune old DropDown style for IDE

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* tune ComboBox focus once more

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix ComboBox popup expand

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove focused padding for ComboBox divider

It's not happening in the IDE sample

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on ComboBox focus

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on ComboBox focus

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add ui-tests module

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* start adding tests to ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add more tests for ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* massive WIP commit because I'm getting paranoid

I know there is IntelliJ local history. Give me a break!

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* clean up and initial restoration of ComboBox features

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* rework ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add enabled/disabled chevron click tests

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add click management to chevron

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix popup open/close when not-editable

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add another batch of tests for ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add maxPopupHeight to ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* add onPopupStateChange

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* extract NotEditableComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on ListComboBox item selection

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* improve TAB navigation on NotEditableComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update IDE plugin example

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* reformat SwingComparisonTabPanel

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on ListComboBox scroll

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove debug border

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* reuse PointerInputScope.detectPressAndCancel

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* extract PopupContainerStyle

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on IntUiBridge.SimpleListItemStyle

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* ensure 100% tests are passing

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* move ListComboBox item selection with hover

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on hover and selection for SimpleListItem

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* have Esc to close an open popup

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on ListComboBox height

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix SimpleListItemColors.dark background color

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on Enter key press

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* close popup on click

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix *ComboBox arrow and arrow area size

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove unnecessary box

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* Update ktlint plugin config to also support 0.25 beta

They changed the config and didn't implement a migration of the old
config to the new config 🤦

* Cleanup code and refactor

Stuff is still broken, maybe more than before :P

* Remove duplicated focused handling

* Rename flag in ComboBox

* Remove Text from EditableComboBox

* Fix KotlinC woes

* Fix chevron alignment in EditableComboBox

* restore basic onHover behavior for ListComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix missing plugin in :ui-tests

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* Fix missing ⬇️ event on editable ComboBox (#635)

* rename a bunch of lambdas to make the linter happy

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* 

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* stitch broken tests

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* stitch IDE sample

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make the formatter happy

* renamed a bunch of lambdas and shushed the linter

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* format EditableComboBox

* improve test for disabled ComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
Co-authored-by: morgillo <morgillo@google.com>

* Remove rounderd corner from SimpleListItemStyle in bridge (#651)

* remove rounded corner from IntUiBridge SimpleListItemMetrics

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make the formatter happy

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* Iterate on ListComboBox and SimpleListItem metrics (#658)

* tune the SimpleListItemStyle

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files and format

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* stitch ListComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on the SwingComparisonTabPanel ComboBox example

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on *ComboBox colors

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on *ComboBox colors and chevron positioning

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix warning in ListComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* stitch IntUiBridge

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* Fix ListComboBox hover (#659)

* massive WIP commit because I'm getting paranoid

I know there is IntelliJ local history. Give me a break!

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update IDE plugin example

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* improve hover management for ListComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on ListComboBox item selection on hover

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix missing click event on ComboBox.PopupContainer

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* refactor ListComboBox.hoverItemIndex

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make the formatter happy

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* stitch ComboBoxStyling

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* iterate on ListComboBox item selection on hover

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* update API files

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make ListComboBox.hoverItemIndex nullable

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove redundant variable ListComboBox.lastHoveredIndex

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove redundant variable ListComboBox.previewSelection

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make the formatter happy

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
Co-authored-by: morgillo <morgillo@google.com>

* Split IntUiBridge into separate files according to components (#670)

* extract IntUiBridgeCheckbox

Signed-off-by: morgillo <morgillo@google.com>

* extract IntUiBridgeRadioButton

Signed-off-by: morgillo <morgillo@google.com>

* extract IntUiBridgeCircularProgress

Signed-off-by: morgillo <morgillo@google.com>

* extract IntUiBridgeButton

Signed-off-by: morgillo <morgillo@google.com>

* extract IntUiBridgeChip

Signed-off-by: morgillo <morgillo@google.com>

* extract IntUiBridgeComboBox

Signed-off-by: morgillo <morgillo@google.com>

* extract IntUiBridgeDropDown

Signed-off-by: morgillo <morgillo@google.com>

* extract IntUiBridgeSimpleListItem

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeProgress

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeLink

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeMenu

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgePopupContainer

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeSegmentedControl

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeSlider

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeTextArea

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeTextField

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeLazyTree

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeTab

Signed-off-by: morgillo <morgillo@google.com>

* iterate on IntUiBridgeButton

Signed-off-by: morgillo <morgillo@google.com>

* extract on IntUiBridgeTooltip

Signed-off-by: morgillo <morgillo@google.com>

* extract on IntUiBridgeGroupHeader

Signed-off-by: morgillo <morgillo@google.com>

* extract on IntUiBridgeSelectableLazyColumn

Signed-off-by: morgillo <morgillo@google.com>

* extract on IntUiBridgeDivider

Signed-off-by: morgillo <morgillo@google.com>

* extract on IntUiBridgeText

Signed-off-by: morgillo <morgillo@google.com>

* reformat all the IntUiBridge* files

Signed-off-by: morgillo <morgillo@google.com>

---------

Signed-off-by: morgillo <morgillo@google.com>
Co-authored-by: morgillo <morgillo@google.com>

* Reduce duplication in ListComboBox (#669)

* extract ListComboBox.onSelectedIndexesChange()

Signed-off-by: morgillo <morgillo@google.com>

* extract common parts in ListComboBox

Signed-off-by: morgillo <morgillo@google.com>

* reformat ListComboBox

Signed-off-by: morgillo <morgillo@google.com>

* refactor ListComboBox.contentItems

reference https://github.com/JetBrains/jewel/pull/669#discussion_r1826536827

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* extract ComboBoxMetrics.popupContentPadding

reference https://github.com/JetBrains/jewel/pull/669#discussion_r1826537016

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* make formatter happy

* rebase ListComboBox

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

---------

Signed-off-by: morgillo <morgillo@google.com>
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
Co-authored-by: morgillo <morgillo@google.com>

* In ListComboBox prevents caret from moving on key up/down pressed (#692)

* prevent caret moving on key up/down pressed

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* simplify when in EditableComboBox

reference https://github.com/JetBrains/jewel/pull/692#discussion_r1847000876

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* properly notify event processing in EditableComboBox

reference https://github.com/JetBrains/jewel/pull/692#discussion_r1847002954

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
Signed-off-by: morgillo <morgillo@google.com>
Co-authored-by: morgillo <morgillo@google.com>
Co-authored-by: Sebastiano Poggi <poggos@gmail.com>
GitOrigin-RevId: e5d034017a3d11a40c1abafffe8e178e73157760
2024-11-19 15:45:31 +00:00
Sebastiano Poggi
834ee1d926 Reimplement/fix/complete implementation of scrollbars (#554)
* Fix Scrollbars [part 1/n]

* Implement TrackClickBehaviors correctly
* Fix macOS scrollbar styling
* Provide ScrollableContainers for a simple, turn-key scrollbar API
* Make expanded scrollbar not hide while the mouse moves over the
  scrollable composable
* Fix the expanding behaviour and animation on macOS
* Fix the visibility logic on macOS
* Resolve a number of inconsistencies with Swing implementations
* Simplify and consolidate internal implementation
* Separate tabStrip scrollbar styling

* Fix Scrollbars [part 2/n]

* Fix thumb colour fade in AlwaysVisible mode
* Move sample border to Outside so it doesn't overlap the scrollbar

* Fix Scrollbars [part 4/n]

* Rework layout/draw logic to finally align with Swing, in dark mode too
* Switch to custom drawing for the thumb for more control

* Fix Scrollbars [part 5/n]

* Cleanup code
* Update API definitions

* Fix Scrollbars [part 6/n]

* Make bridge compile
* Fix styling in bridge
* Update bridge samples
* Fix TextArea scrollbars

* Fix Scrollbars [part 7/n]

* Fix bug in ScrollableContainer
* Improve ReleasesSampleCompose

* Fix Scrollbars [part 8/n]

* Rewrite MacScrollbarHelper to avoid native crashes

* Fix Scrollbars [part 10/n]

* Add decorationModifier to TextArea API (useful e.g., for padding when
  there are scrollbars)
* Fix ScrollableContainerImpl layout logic and bugs
* Fix one HorizontallyScrollableContainer using vScroll by mistake
* Use HorizontallyScrollableContainer in Markdown block renderer
* Update standalone sample Markdown with new APIs

* Fix Scrollbars [part 11/n]

* Add mouse move linger behaviour to all ScrollableContainers
* Add horizontal scrolling example to standalone sample
* Fix ScrollableContainerImpl layout bug with WhenScrolling

* Fix Scrollbars [part 12/n]

* Remove debug bg from Scrollbars sample
* Fix thumb appearing/disappearing animation
* Fix colour animations
* Keep AlwaysVisible thumb "hovered" while dragging
* Fix styling in the bridge

* Fix Scrollbars [part 13/n]

* Fix InputField ignoring provided scrollbar style
* Remove useless KDocs from TextArea/TextField
* Clean up code
* Mark non-state-based TextArea/TextField as scheduled for removal

* Fix Scrollbars [part 14/n]

* Fix native crash when TextField/TextArea don't have a fixed width
* Redo the entire BTF2-based InputField implementation, better
* Expose all the new parameters that BTF2-based InputField has to the
  users of TextField and TextArea
* Fix TextArea decoration and scrollbars

* Fix Scrollbars [part 15/n]

* Fix scrollbars on Windows and Linux
* Fix TextArea end padding to account for scrollbar

* Fix Scrollbars [part 16/16]

* Clean up code
* Add scrollbar to undecorated TextAreas
GitOrigin-RevId: 3cfeadb7e17d05f76b25a38c4a1ed9062bcbc8d3
2024-08-26 14:56:04 +02:00
Ivan Morgillo
74c259c165 Clean up work on scrollbars (#521)
* # Conflicts:
#	samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/view/component/Scrollbars.kt

* stitch wrong import after rebase

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* reformat according to feedback

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
GitOrigin-RevId: ed31952efb8444b91269869cc0b1490d92a00ddc
2024-08-07 10:51:07 +00:00
Ivan Morgillo
38fa7f8f62 New iteration on scrollbars (#515)
* iterate on scrollbars

* update API files

* add Scrollbars demo to Standalone

* fix popup border width regression

Reference https://github.com/JetBrains/jewel/pull/515#discussion_r1704184163

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* remove unnecessary platform check in ScrollbarBridge

Reference https://github.com/JetBrains/jewel/pull/515#discussion_r1704190394

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

* fix wrong thumb background color

Reference https://github.com/JetBrains/jewel/pull/515#discussion_r1704209751

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>

---------

Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
GitOrigin-RevId: f4b1a2367e0b781311491bd41d006f4fe001b87f
2024-08-05 17:07:21 +02:00
Sebastiano Poggi
77cc8dccb0 Add underline style to links (#492)
* Add LinkUnderlineBehavior to link styling

* Update API signatures
GitOrigin-RevId: 79aa9ca07081c449b8dba96536e73bfa057f5ff2
2024-07-24 12:19:36 +02:00
Sebastiano Poggi
dbe6977784 Remove TextStyles from stylings (#490)
* Remove textStyle from DropdownStyle

* Remove textStyle from InputFieldStyle and implementers

* Remove LinkTextStyles

* Update API definitions

* Address static analysis
GitOrigin-RevId: 9aed92fe190979bad9a10b71d5fd5017a9a21d18
2024-07-24 10:51:51 +02:00
Rivan Parmar
bd703f35e9 Add segmented controls (#387)
* Add segmented controls

* Fix colors and focus behaviour of segmented controls

* Modify focus behaviour and colors of segmented controls

* Add segmented controls

* Fix colors and focus behaviour of segmented controls

* Modify focus behaviour and colors of segmented controls

* Tweak implementation to match actual impl/behaviour

The one thing that is still TODO is avoid focusing the control when it's
clicked. I removed the previous "clear focus" behaviour because it
clears the focus on click even when it shouldn't. I'll come up with a
better solution as soon as I can.

* Change focus behaviour to match Swing's

We made the buttons not focusable anymore, to prevent unwanted focus
movement. There is a bit of focus dark magic, but it now works as we'd
expect.

* Update segmented controls api

---------

Co-authored-by: Sebastiano Poggi <sebp@google.com>
GitOrigin-RevId: 3e847ba84adc08a489518d73ecdc8bd9410b483b
2024-07-16 12:07:14 +00:00
Sebastiano Poggi
323a39365b Replace icon paths with keys (#439)
* Replace icon paths with keys

* Clean up lint warnings
GitOrigin-RevId: bc7ccb8ef8d490dea692fa756b653004cfbaf2e8
2024-07-09 11:16:05 +02:00
Sebastiano Poggi
c21185c281 Fix default button focus outline & chip colors (#420)
* The default button was missing spacing between its bg and the focus
  outline. Outlined buttons are unaffected.
* The chips were drawing a double-outline when focused and selected. Now
  they only draw the selected outline if they are both focused and
  selected.
* The chips didn't clearly signal the pressed and selected states. The
  background now reflects these states better (standalone only).
  There are no specs so we're going with a bit more freedom in the
  standalone version, as the Swing impl is quite lacking in polish still
GitOrigin-RevId: f57eba2a16493454cfd978f0a6dedc73e30848bb
2024-07-01 14:54:53 +02:00
Sebastiano Poggi
7b443ac9b1 Add editor & console text styles, use them in Markdown (#393)
The IDE also has an editor and a console text style, which come from the
editor color scheme. We weren't using them until now, but we now fully
comply to it in the Markdown rendering, too.
GitOrigin-RevId: 6732d567e0a22155ac6b3b0a05c8ab5e371296a3
2024-06-05 08:35:55 +00:00
Sebastiano Poggi
5039d186ad Improve Markdown styling (#392)
* Fix wrong block content colour on bridge MD style

* Allow specifying default text style in standalone

* Update API dumps
GitOrigin-RevId: e0bfcce3cb378713801fc851e4b01e4d52ed999e
2024-06-04 21:51:03 +02:00
Sebastiano Poggi
65e8b934be Add text colours to GlobalColors (#381)
It's practical to have the "base" text colours in GlobalColors:

 * Normal
 * Selected
 * Disabled
 * Info
 * Error

They apply to labels and most components, but not every component
(e.g., default buttons have "inverted" text colors).

Note that the text colour is used as content colour, but not directly
in the styling. Besides, when initialising the stylings, we can't
really read these values as they haven't been init yet.

This is mostly a convenience for users that want to set a content colour
(e.g., to visually show some text as disabled/error).

Note: GlobalColors.paneBackground was renamed to panelBackground for
consistency with the Swing color key naming.
GitOrigin-RevId: 76d7dc9a3d33d4b82c9a5d2605ca6174efa55751
2024-05-09 12:24:58 +00:00
Sebastiano Poggi
2c738a1199 Fix menu dividers in bridge (#361)
The main root cause was a missing return statement in retrieveIntAsDp(),
but we also had terribly inconsistent values for the menus compared to
the actual appearance. I have tweaked the bridge menu style defaults to
align better, but we'll have to come back to revisit the whole menu
implementation to actually use the right values in the right way. The
current implementation is not satisfactory.
GitOrigin-RevId: 5ffff1124420179750630370aaa33888f88506f2
2024-04-22 09:22:32 +01:00
Sebastiano Poggi
c96ce4ebb4 Address static analysis errors
GitOrigin-RevId: 1cf09788567c3de77932f5a292c31a6bb319cb7c
2024-03-19 16:18:26 +01:00
Sebastiano Poggi
64f7b09ead 🔀 Rename textStyle -> defaultTextStyle (#309)
* Update standalone bundled Inter font to 4.0

* Rename textStyle -> defaultTextStyle

This makes the extension function on JewelTheme clearer in its intent of
accessing the default TextStyle from the composition locals.

The former defaultTextStyle has been transformed to a function, which is
also making clearer it's a creation and not a field access. It has
contextually been renamed to createDefaultTextStyle().
GitOrigin-RevId: a893d03baad34a2912b632aedad16c257019581e
2024-02-21 12:42:00 +08:00
Sebastiano Poggi
372242e6b5 #291 — Fix icons patching and theming issues in 241 (#293)
Fix icon loading and errors in bridge for 241
GitOrigin-RevId: 4df0132cdadf2d8297fd0fa57573f5630c481ddf
2024-02-08 11:42:36 +01:00
Fabrizio Scarponi
d11c7dbec3 Extend TabStrip API to support custom behaviours (#276)
* Update TabData for flexible content

* Update ui/src/main/kotlin/org/jetbrains/jewel/ui/component/TabStrip.kt

Co-authored-by: Sebastiano Poggi <rock3r@users.noreply.github.com>

* Update ui/src/main/kotlin/org/jetbrains/jewel/ui/component/TabStrip.kt

Co-authored-by: Sebastiano Poggi <rock3r@users.noreply.github.com>

* review

* review

* Add tab content spacing to the user interface

The user interface has been updated to include tab content spacing. This is established by adding a new parameter, `tabContentSpacing`, in TabMetrics and adjusting and testing its implementation across various files like `IntUiTabStyling.kt`, `IntUiBridge.kt`, and `Tabs.kt`. This modification will ensure more consistency and control over the user interface design. The user interface api file has also been updated to reflect this change.

* lint

* api fix

* Update int-ui-standalone APIs
GitOrigin-RevId: 7e61aafa34113649798ccad1e3d3fc6208390a01
2023-12-28 11:03:58 +01:00
Fabrizio Scarponi
05c9d007b6 Dropdown support for leading icons (#269)
* Update dropdown item with icons and keybindings

* Fix minor issues (typos, formatting)

* Make the CI pass

The API check works locally, but not on the CI. Not sure why.

* api dump

* Run apiDump on Linux, because.

---------

Co-authored-by: Sebastiano Poggi <sebp@google.com>
Co-authored-by: Sebastiano Poggi <poggos@gmail.com>
GitOrigin-RevId: 0db2d4b906939f8b0a21e71e758509525bba7c12
2023-12-14 22:59:43 +01:00
Sebastiano Poggi
fb31ac7ec1 Create Slider component (#270)
Introduce Slider component following general IntUI style
GitOrigin-RevId: 58b0402c3576be8fd2fe756626f661dde569c2b8
2023-12-12 09:26:33 +01:00
Sebastiano Poggi
937f0b7393 Remove LabelledTextField and its styling (#230)
GitOrigin-RevId: 0712a4963a2aa3d2f5b4f5a89e23243d995b76f4
2023-11-01 09:55:15 +08:00
Kanro
64120a635f 🔀 Stroke hint, ExtensionComponentStyling api and Unfocusable IconButton/Tab (#213)
* Make icon button and tabs unfocusable

* Stroke hint with svg patcher

* Stroke hint with svg patcher

* Fix light header switching

* Update api

* DynamicComponentStyling support

* Rename to LazyComponentStyling

* Make ComponentStyling.defaultComponentStyle as a LazyComponentStyling

* Simplify function name

* Update api

* Make ktlint happy

* Update api

* Update api

* Activation, SelectableIconButton support and new standalone sample

* Fix comment

* Make linters happy

* Fix comments

* Update API

* Make ktlint happy

* Fix comments

* Fix comments, outline button dark disabled style

* Update api

* Make ktlint happy
GitOrigin-RevId: 6dfacea4195d9bcd275797e1d3fd1b2464d7ed7c
2023-10-31 17:36:15 +00:00
Kanro
17ce9ecd13 Refactor component styling API for extension components (#210)
* Refactor component styling API for extension components

* Make detekt happy

* Make detekt happy
GitOrigin-RevId: 21d3aa4ae014b429449ba0c491b5521a5236d876
2023-10-28 14:24:04 +08:00
Sebastiano Poggi
9fc924b3ce Update docs, cleanup code after refactor (#199)
* Clean up code, add simple IntUiTheme entry point

Moved foundation.tree into foundation.lazy, too.

* Update README for 0.8.0

Added code samples, updated project structure, added sections on custom
window decoration and icon runtime patching.

* Add getting started section
GitOrigin-RevId: 7e69d32bda849d252fcf4a013fe8ebebb6ca1777
2023-10-22 22:00:08 +08:00
Sebastiano Poggi
02f56077d6 The big refactor — part 4: Marie Kondo edition (#198)
* Move core components to core.component package

Includes moving their styling to a subpackage

* Move state to core.state package

* Move other bits to core and foundation packages

* Move basic theme stuff to foundation package

The foundation package doesn't depend on core anymore!

* Rename core package to ui

* Remove int-ui-core module

Its few files have been moved to ui and intui-standalone

* Rename core module to ui

* Split foundation module out of ui module

* Add missing foundation.api file

* Remove unnecessary FQNs
GitOrigin-RevId: 7cc69fd7345c6ead217f79d658b50944d5e90581
2023-10-22 12:12:43 +08:00
Sebastiano Poggi
a4c7b82315 The big refactor — part 3: more interfaces (#195)
* Collapse Global* interfaces

* Collapse IconData interface, update generator

* Collapse ThemeColorPalette interface, update generator

* Collapse ThemeDefinition interface, update generator

* Renamed theme to JewelTheme

Cannot collapse the theme into JewelTheme since we get some
nasty classloading issue with Composer. Will investigate
separately.

* Cleanup some more code

* Rename ComponentStyling

* Rename ContextMenuRepresentation

* Clean up decorated window code, too

* Final cleanup pass

* Get rid of BaseIntUiTheme and IntUiTheme

One theme to rule them all!
GitOrigin-RevId: f9f9c42d11c682220b7c3bf4b3652e72d2e01db4
2023-10-21 14:03:39 +08:00
Sebastiano Poggi
75a0399c28 The big refactor — part 2 (#193)
* ButtonStyle refactor

* CheckboxStyle refactor

* ChipStyle refactor

* CircularProgressStyle refactor

* DividerStyle refactor

* DropdownStyle refactor

* GroupHeaderStyle refactor, simplify other styling

* HorizontalProgressBarStyle refactor

* IconButtonStyle refactor

* LazyTreeStyle refactor

* LinkStyle refactor

* MenuStyle refactor

* RadioButtonStyle refactor

* ScrollbarStyle refactor

* Fix IntUiButtonStyling

* TabStyle refactor

* InputFieldStyle & co refactor

* TooltipStyle refactor

* Update API dump

* Fix dropdown menu and fallback rule (#194)

* Fix dropdown menu and fallback rule

* Fix tooltip

* Fix tooltip

* 🔀 Apply suggestions from code review

Co-authored-by: Sebastiano Poggi <rock3r@users.noreply.github.com>

* 🔀 Apply suggestions from code review

---------

Co-authored-by: Sebastiano Poggi <rock3r@users.noreply.github.com>

* Fix issues

---------

Co-authored-by: Kanro <higan@live.cn>
GitOrigin-RevId: f0fbce89d0600c80d47dc5939a8e4f2a89619800
2023-10-20 19:10:11 +00:00
Sebastiano Poggi
2a6393f5b9 The big refactor — step 1: prep work (#192)
* Cleanup code, remove compiler warnings

* Add API validation to check task

1. Running binary-compatibility-validator on code
2. Flagging public data classes and failing build
3. Running Poko to autogen equals/hashcode/toString

* Remove all public data classes, add API dumps
GitOrigin-RevId: f90d8a9a992737b176f1c7d83409798628a629c1
2023-10-20 17:47:16 +08:00