From c2c57ded6be3ea78524b287ce071bf56bc461ddd Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Wed, 21 Aug 2024 14:02:21 -0300 Subject: [PATCH 01/11] feat: add option to disable/enable flag rendering --- .../addons/localecombobox/LocaleComboBox.java | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java index 527747f..5d78e59 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java +++ b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java @@ -82,7 +82,12 @@ public enum DisplayMode { private Locale customDisplayLocale = Locale.getDefault(); /** - * Creates a new instance of {@code LocaleComboBox}. + * Indicates whether the flags should be displayed alongside the locale names. + */ + private Boolean hasFlags = true; + + /** + * * Creates a new instance of {@code LocaleComboBox}. */ public LocaleComboBox() { setItemLabelGenerator(item -> item.getDisplayName(getLocaleForDisplay())); @@ -125,6 +130,29 @@ public void setDisplayLocale(Locale displayLocale) { this.customDisplayLocale = displayLocale == null ? Locale.getDefault() : displayLocale; } + /** + * Returns the current flag display status. + * + * @return {@code true} if flags are displayed alongside the locale names, {@code false} otherwise + */ + public Boolean hasFlags() { + return hasFlags; + } + + /** + * Sets whether flags should be displayed alongside locale names. + *

+ * This method updates the internal state to reflect whether flags should be displayed and updates + * the rendering based on the new state. + * + * @param hasFlags A {@code Boolean} indicating whether flags should be displayed or not. + */ + public void setHasFlags(Boolean hasFlags) { + this.hasFlags = hasFlags; + this.setRenderer(this.hasFlags ? getLocaleRenderer() : getLocaleRendererWithoutFlags()); + this.setPrefixFlag(this.hasFlags ? this.getValue() : null); + } + private LitRenderer getLocaleRenderer() { return LitRenderer .of( @@ -140,6 +168,14 @@ private LitRenderer getLocaleRenderer() { .withProperty("displayName", loc -> loc.getDisplayName(getLocaleForDisplay())); } + private LitRenderer getLocaleRendererWithoutFlags() { + return LitRenderer.of(""" + + ${item.displayName} + """).withProperty("layoutClass", loc -> ITEM_LAYOUT_CLASS_NAME) + .withProperty("displayName", loc -> loc.getDisplayName()); + } + private Locale getLocaleForDisplay() { switch (displayMode) { @@ -162,13 +198,22 @@ private String getFlagCode(Locale locale) { } private void onValueChange(ComponentValueChangeEvent, Locale> event) { + + if (!this.hasFlags) + return; + Locale newValue = event.getValue(); - if (newValue == null) { + this.setPrefixFlag(newValue); + } + + private void setPrefixFlag(Locale locale) { + if (locale == null) { setPrefixComponent(null); return; } + Span flagIcon = new Span(); - flagIcon.addClassNames("fi", "fi-" + newValue.getCountry().toLowerCase()); + flagIcon.addClassNames("fi", "fi-" + locale.getCountry().toLowerCase()); setPrefixComponent(flagIcon); } From 2443a33060b90a6ea6ae5277422fd02ff51302ee Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Wed, 21 Aug 2024 14:47:14 -0300 Subject: [PATCH 02/11] refactor(demo): rename LocaleComboBoxDemo to DisplayModeDemo --- .../{LocaleComboBoxDemo.java => DisplayModeDemo.java} | 4 ++-- .../vaadin/addons/localecombobox/LocaleComboBoxDemoView.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/test/java/com/flowingcode/vaadin/addons/localecombobox/{LocaleComboBoxDemo.java => DisplayModeDemo.java} (97%) diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java similarity index 97% rename from src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemo.java rename to src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java index 5388a78..da2dce7 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java @@ -37,9 +37,9 @@ @PageTitle("Display modes") @SuppressWarnings("serial") @Route(value = "demo", layout = LocaleComboBoxDemoView.class) -public class LocaleComboBoxDemo extends Div { +public class DisplayModeDemo extends Div { - public LocaleComboBoxDemo() { + public DisplayModeDemo() { List localeList = Arrays.stream(Locale.getAvailableLocales()).filter(loc -> !loc.getDisplayName().isBlank()) diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java index c27cd70..60f7f01 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java @@ -32,7 +32,7 @@ public class LocaleComboBoxDemoView extends TabbedDemo { public LocaleComboBoxDemoView() { - addDemo(LocaleComboBoxDemo.class); + addDemo(DisplayModeDemo.class); setSizeFull(); } } From e3cf1ce1da007ee38f8b3cafcd55a3a49d7197d5 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Wed, 21 Aug 2024 14:49:45 -0300 Subject: [PATCH 03/11] feat(demo): add base demo class --- .../BaseLocaleComboBoxDemo.java | 44 +++++++++++++++++++ .../localecombobox/DisplayModeDemo.java | 22 +--------- 2 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java new file mode 100644 index 0000000..1f3db62 --- /dev/null +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java @@ -0,0 +1,44 @@ +/*- + * #%L + * LocaleComboBox Add-on + * %% + * Copyright (C) 2024 Flowing Code + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.flowingcode.vaadin.addons.localecombobox; + +import com.vaadin.flow.component.Text; +import com.vaadin.flow.component.html.Div; +import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.component.orderedlayout.HorizontalLayout; +import com.vaadin.flow.component.orderedlayout.FlexComponent.Alignment; +import com.vaadin.flow.component.orderedlayout.FlexComponent.JustifyContentMode; + +@SuppressWarnings("serial") +public class BaseLocaleComboBoxDemo extends Div { + + protected HorizontalLayout createHorizontalContainer(String title, LocaleComboBox combo) { + Span titleSpan = new Span(new Text(title)); + titleSpan.setWidth("300px"); + HorizontalLayout container = new HorizontalLayout(); + container.setWidthFull(); + container.setAlignItems(Alignment.CENTER); + container.setJustifyContentMode(JustifyContentMode.BETWEEN); + container.add(titleSpan, combo); + container.expand(combo); + return container; + } + +} diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java index da2dce7..1fe0129 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java @@ -21,12 +21,6 @@ package com.flowingcode.vaadin.addons.localecombobox; import com.flowingcode.vaadin.addons.demo.DemoSource; -import com.vaadin.flow.component.Text; -import com.vaadin.flow.component.html.Div; -import com.vaadin.flow.component.html.Span; -import com.vaadin.flow.component.orderedlayout.FlexComponent.Alignment; -import com.vaadin.flow.component.orderedlayout.FlexComponent.JustifyContentMode; -import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.Route; import java.util.Arrays; @@ -37,7 +31,7 @@ @PageTitle("Display modes") @SuppressWarnings("serial") @Route(value = "demo", layout = LocaleComboBoxDemoView.class) -public class DisplayModeDemo extends Div { +public class DisplayModeDemo extends BaseLocaleComboBoxDemo { public DisplayModeDemo() { @@ -70,18 +64,4 @@ public DisplayModeDemo() { // show-source add(selectedLocaleCombo); } - // #if vaadin eq 0 - private HorizontalLayout createHorizontalContainer(String title, LocaleComboBox combo) { - Span titleSpan = new Span(new Text(title)); - titleSpan.setWidth("300px"); - HorizontalLayout container = new HorizontalLayout(); - container.setWidthFull(); - container.setAlignItems(Alignment.CENTER); - container.setJustifyContentMode(JustifyContentMode.BETWEEN); - container.add(titleSpan, combo); - container.expand(combo); - return container; - } - // #endif - } From 4ad9db6ce1c76ad9ba04835597aff902295f0148 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Wed, 21 Aug 2024 15:13:35 -0300 Subject: [PATCH 04/11] feat(demo): add flag-rendering demo --- .../BaseLocaleComboBoxDemo.java | 11 ++++ .../localecombobox/DisplayModeDemo.java | 2 +- .../LocaleComboBoxDemoView.java | 1 + .../addons/localecombobox/RenderingDemo.java | 57 +++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java index 1f3db62..5e6ccbb 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java @@ -19,6 +19,7 @@ */ package com.flowingcode.vaadin.addons.localecombobox; +import com.vaadin.flow.component.Component; import com.vaadin.flow.component.Text; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Span; @@ -40,5 +41,15 @@ protected HorizontalLayout createHorizontalContainer(String title, LocaleComboBo container.expand(combo); return container; } + + protected HorizontalLayout createHorizontalContainer(Component component, LocaleComboBox combo) { + HorizontalLayout container = new HorizontalLayout(); + container.setWidthFull(); + container.setAlignItems(Alignment.CENTER); + container.setJustifyContentMode(JustifyContentMode.BETWEEN); + container.add(component, combo); + container.expand(combo); + return container; + } } diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java index 1fe0129..d462782 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java @@ -30,7 +30,7 @@ @DemoSource @PageTitle("Display modes") @SuppressWarnings("serial") -@Route(value = "demo", layout = LocaleComboBoxDemoView.class) +@Route(value = "locale-combo-box/display", layout = LocaleComboBoxDemoView.class) public class DisplayModeDemo extends BaseLocaleComboBoxDemo { public DisplayModeDemo() { diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java index 60f7f01..d76ba70 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemoView.java @@ -33,6 +33,7 @@ public class LocaleComboBoxDemoView extends TabbedDemo { public LocaleComboBoxDemoView() { addDemo(DisplayModeDemo.class); + addDemo(RenderingDemo.class); setSizeFull(); } } diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java new file mode 100644 index 0000000..76a4405 --- /dev/null +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java @@ -0,0 +1,57 @@ +/*- + * #%L + * LocaleComboBox Add-on + * %% + * Copyright (C) 2024 Flowing Code + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.flowingcode.vaadin.addons.localecombobox; + +import com.flowingcode.vaadin.addons.demo.DemoSource; +import com.vaadin.flow.component.checkbox.Checkbox; +import com.vaadin.flow.router.PageTitle; +import com.vaadin.flow.router.Route; +import java.util.Locale; + +@DemoSource +@PageTitle("Flag rendering") +@SuppressWarnings("serial") +@Route(value = "locale-combo-box/rendering", layout = LocaleComboBoxDemoView.class) +public class RenderingDemo extends BaseLocaleComboBoxDemo { + public RenderingDemo() { + + LocaleComboBox defaultLocaleCombo = new LocaleComboBox(); + LocaleComboBox flagsLocaleCombo = new LocaleComboBox(); + Checkbox checkbox = new Checkbox("Render flags"); + + defaultLocaleCombo.setValue(Locale.ITALY); + flagsLocaleCombo.setValue(Locale.ITALY); + checkbox.setValue(true); + + /* + * You can choose whether the flags should be displayed alongside the locale names by using the + * setHasFlag method + */ + checkbox.addValueChangeListener(event -> flagsLocaleCombo.setHasFlags(event.getValue())); + + // #if vaadin eq 0 + add(createHorizontalContainer("Flags are rendered by default:", defaultLocaleCombo)); + add(createHorizontalContainer(checkbox, flagsLocaleCombo)); + // #endif + // show-source add(defaultLocaleCombo); + // show-source add(checkbox, flagsLocaleCombo); + + } +} From 46ac847545449f51f512ec37f0386489212b8620 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Thu, 22 Aug 2024 09:32:13 -0300 Subject: [PATCH 05/11] fix: change hasFlags type to boolean to prevent null values --- .../vaadin/addons/localecombobox/LocaleComboBox.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java index 5d78e59..8cdb717 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java +++ b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java @@ -52,7 +52,7 @@ public class LocaleComboBox extends ComboBox { * These enums can be used in {@link #setDisplayMode(DisplayMode)} to easily switch between the * built-in display modes. */ - public enum DisplayMode { + public enum DisplayMode { /** * Default display mode. @@ -84,7 +84,7 @@ public enum DisplayMode { /** * Indicates whether the flags should be displayed alongside the locale names. */ - private Boolean hasFlags = true; + private boolean hasFlags = true; /** * * Creates a new instance of {@code LocaleComboBox}. @@ -135,7 +135,7 @@ public void setDisplayLocale(Locale displayLocale) { * * @return {@code true} if flags are displayed alongside the locale names, {@code false} otherwise */ - public Boolean hasFlags() { + public boolean hasFlags() { return hasFlags; } @@ -145,9 +145,9 @@ public Boolean hasFlags() { * This method updates the internal state to reflect whether flags should be displayed and updates * the rendering based on the new state. * - * @param hasFlags A {@code Boolean} indicating whether flags should be displayed or not. + * @param hasFlags A {@code boolean} indicating whether flags should be displayed or not. */ - public void setHasFlags(Boolean hasFlags) { + public void setHasFlags(boolean hasFlags) { this.hasFlags = hasFlags; this.setRenderer(this.hasFlags ? getLocaleRenderer() : getLocaleRendererWithoutFlags()); this.setPrefixFlag(this.hasFlags ? this.getValue() : null); From 1244887dc4ffb70bed709270c0a13452d3e66b42 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Thu, 22 Aug 2024 09:37:30 -0300 Subject: [PATCH 06/11] fix: use locale for displayName in getLocaleRendererWithoutFlags --- .../vaadin/addons/localecombobox/LocaleComboBox.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java index 8cdb717..4b54aa8 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java +++ b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java @@ -173,7 +173,7 @@ private LitRenderer getLocaleRendererWithoutFlags() { ${item.displayName} """).withProperty("layoutClass", loc -> ITEM_LAYOUT_CLASS_NAME) - .withProperty("displayName", loc -> loc.getDisplayName()); + .withProperty("displayName", loc -> loc.getDisplayName(getLocaleForDisplay())); } private Locale getLocaleForDisplay() { From 2c8368d5584942731aa57781578528302f119ce1 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Tue, 3 Sep 2024 07:49:20 -0300 Subject: [PATCH 07/11] style: fix code formatting --- .../vaadin/addons/localecombobox/LocaleComboBox.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java index 4b54aa8..36a4aae 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java +++ b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java @@ -52,7 +52,7 @@ public class LocaleComboBox extends ComboBox { * These enums can be used in {@link #setDisplayMode(DisplayMode)} to easily switch between the * built-in display modes. */ - public enum DisplayMode { + public enum DisplayMode { /** * Default display mode. @@ -199,8 +199,9 @@ private String getFlagCode(Locale locale) { private void onValueChange(ComponentValueChangeEvent, Locale> event) { - if (!this.hasFlags) + if (!this.hasFlags) { return; + } Locale newValue = event.getValue(); this.setPrefixFlag(newValue); From e9c378dc3fb8d88121dbe2f5aefefabf1053ef44 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Tue, 3 Sep 2024 07:49:45 -0300 Subject: [PATCH 08/11] style(demo): fix demo code formatting --- .../vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java | 2 +- .../vaadin/addons/localecombobox/DisplayModeDemo.java | 2 +- .../vaadin/addons/localecombobox/RenderingDemo.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java index 5e6ccbb..9e59524 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java @@ -41,7 +41,7 @@ protected HorizontalLayout createHorizontalContainer(String title, LocaleComboBo container.expand(combo); return container; } - + protected HorizontalLayout createHorizontalContainer(Component component, LocaleComboBox combo) { HorizontalLayout container = new HorizontalLayout(); container.setWidthFull(); diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java index d462782..8b1c1fb 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/DisplayModeDemo.java @@ -38,7 +38,7 @@ public DisplayModeDemo() { List localeList = Arrays.stream(Locale.getAvailableLocales()).filter(loc -> !loc.getDisplayName().isBlank()) .sorted((l1, l2) -> l1.getDisplayName().compareTo(l2.getDisplayName())).toList(); - + LocaleComboBox defaultDisplayLocale = new LocaleComboBox(localeList); LocaleComboBox koreanLocaleCombo = new LocaleComboBox(); LocaleComboBox selectedLocaleCombo = new LocaleComboBox(localeList); diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java index 76a4405..652d02e 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java @@ -35,11 +35,11 @@ public RenderingDemo() { LocaleComboBox defaultLocaleCombo = new LocaleComboBox(); LocaleComboBox flagsLocaleCombo = new LocaleComboBox(); Checkbox checkbox = new Checkbox("Render flags"); - + defaultLocaleCombo.setValue(Locale.ITALY); flagsLocaleCombo.setValue(Locale.ITALY); checkbox.setValue(true); - + /* * You can choose whether the flags should be displayed alongside the locale names by using the * setHasFlag method From 6efba764cd2a58cf72ede731b2a098b188fb7ba8 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Tue, 3 Sep 2024 08:01:13 -0300 Subject: [PATCH 09/11] fix(demo): initialize combos on rendering demo --- .../vaadin/addons/localecombobox/RenderingDemo.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java index 652d02e..2d74651 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/RenderingDemo.java @@ -23,6 +23,8 @@ import com.vaadin.flow.component.checkbox.Checkbox; import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.Route; +import java.util.Arrays; +import java.util.List; import java.util.Locale; @DemoSource @@ -32,8 +34,12 @@ public class RenderingDemo extends BaseLocaleComboBoxDemo { public RenderingDemo() { - LocaleComboBox defaultLocaleCombo = new LocaleComboBox(); - LocaleComboBox flagsLocaleCombo = new LocaleComboBox(); + List localeList = + Arrays.stream(Locale.getAvailableLocales()).filter(loc -> !loc.getDisplayName().isBlank()) + .sorted((l1, l2) -> l1.getDisplayName().compareTo(l2.getDisplayName())).toList(); + + LocaleComboBox defaultLocaleCombo = new LocaleComboBox(localeList); + LocaleComboBox flagsLocaleCombo = new LocaleComboBox(localeList); Checkbox checkbox = new Checkbox("Render flags"); defaultLocaleCombo.setValue(Locale.ITALY); From 59fe470c1caf4db768e39cac7b177b463b640f53 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Tue, 3 Sep 2024 08:05:07 -0300 Subject: [PATCH 10/11] refactor(demo): use existing method for creating titled container --- .../addons/localecombobox/BaseLocaleComboBoxDemo.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java index 9e59524..3c65576 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/localecombobox/BaseLocaleComboBoxDemo.java @@ -33,13 +33,7 @@ public class BaseLocaleComboBoxDemo extends Div { protected HorizontalLayout createHorizontalContainer(String title, LocaleComboBox combo) { Span titleSpan = new Span(new Text(title)); titleSpan.setWidth("300px"); - HorizontalLayout container = new HorizontalLayout(); - container.setWidthFull(); - container.setAlignItems(Alignment.CENTER); - container.setJustifyContentMode(JustifyContentMode.BETWEEN); - container.add(titleSpan, combo); - container.expand(combo); - return container; + return createHorizontalContainer(titleSpan, combo); } protected HorizontalLayout createHorizontalContainer(Component component, LocaleComboBox combo) { From d33dacb47a20080629de542a9c01bf5257680c40 Mon Sep 17 00:00:00 2001 From: Tomas Peiretti Date: Tue, 3 Sep 2024 08:05:37 -0300 Subject: [PATCH 11/11] chore: remove unused imports --- .../vaadin/addons/localecombobox/LocaleComboBox.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java index 36a4aae..645cc02 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java +++ b/src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java @@ -25,11 +25,8 @@ import com.vaadin.flow.component.dependency.NpmPackage; import com.vaadin.flow.component.html.Span; import com.vaadin.flow.data.renderer.LitRenderer; -import java.util.Arrays; import java.util.Collection; -import java.util.List; import java.util.Locale; -import java.util.Optional; /** * Vaadin ComboBox extension that allows to choose between multiple locales.