diff --git a/core/src/cz/nic/tablexia/menu/main/locale/LocaleSelectBox.java b/core/src/cz/nic/tablexia/menu/main/locale/LocaleSelectBox.java index 9bfc0eccefb2e976b0d42fc04f7de43d09db3fff..ee906b0302e38f24dc668546fe301941deef1ead 100644 --- a/core/src/cz/nic/tablexia/menu/main/locale/LocaleSelectBox.java +++ b/core/src/cz/nic/tablexia/menu/main/locale/LocaleSelectBox.java @@ -71,6 +71,7 @@ public class LocaleSelectBox extends AbstractTablexiaSelectBox<LocaleSelectBox.L public LocaleSelectBox(float itemHeight) { super(itemHeight); ApplicationBus.getInstance().subscribe(this); + setCheckValidity(false); prepareLocales(); } @@ -81,10 +82,12 @@ public class LocaleSelectBox extends AbstractTablexiaSelectBox<LocaleSelectBox.L List<LocaleItem> localeItems = new ArrayList<LocaleItem>(); for (TablexiaSettings.LocaleDefinition localeDefinition: TablexiaSettings.LocaleDefinition.getEnabledLocaleDefinitions()) { LocaleItem localeItem = new LocaleItem(localeDefinition); - localeItems.add(localeItem); if (localeDefinition.equals(TablexiaSettings.getInstance().getLocaleDefinition())) { selectedLocaleItem = localeItem; } + else { + localeItems.add(localeItem); + } } setItems(localeItems.toArray(new LocaleItem[]{})); if (selectedLocaleItem != null) { @@ -93,6 +96,13 @@ public class LocaleSelectBox extends AbstractTablexiaSelectBox<LocaleSelectBox.L addCaptureListener(changeListener); } + @Override + public boolean onSelectBoxItemSelected(LocaleItem item) { + getSelectBoxList().changeToSelected(); + prepareLocales(); + return true; + } + @Override protected void drawSelectedItem(Batch batch, float parentAlpha, LocaleItem selected, float width, float height) { selected.setBounds(getX(), getY(), width, height); diff --git a/core/src/cz/nic/tablexia/menu/main/user/UserSelectBox.java b/core/src/cz/nic/tablexia/menu/main/user/UserSelectBox.java index 6ecc26932496c5d62ac602062eadfc0f77b78daa..193420267bd8d68534bbd6a5a093657fb36fb9fe 100644 --- a/core/src/cz/nic/tablexia/menu/main/user/UserSelectBox.java +++ b/core/src/cz/nic/tablexia/menu/main/user/UserSelectBox.java @@ -69,6 +69,7 @@ public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.UserS } }; + setCheckValidity(false); prepareActiveUsers(); } @@ -78,12 +79,14 @@ public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.UserS List<UserSelectBoxItem> userItems = new ArrayList<UserSelectBoxItem>(); for (User user: UserDAO.selectActiveUsers()) { UserMenuSelectBoxItemGroup userItem = new UserMenuSelectBoxItemGroup(new UserMenuItem(user), getWidth()); - userItems.add(userItem); if (user.equals(TablexiaSettings.getInstance().getSelectedUser())) { selectedUserItem = userItem; } + else { + userItems.add(userItem); + } } - userItems.add(new UserMenuNewSelectBoxItemGroup() { + UserMenuNewSelectBoxItemGroup newUserItem = new UserMenuNewSelectBoxItemGroup() { @Override public void performAction() { TablexiaSettings.getInstance().changeUser(null, new TablexiaSettings.LogoutAcceptListener() { @@ -98,11 +101,16 @@ public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.UserS public User getUser() { return null; } - }); + }; + userItems.add(newUserItem); + setItems(userItems.toArray(new UserSelectBoxItem[]{})); if (selectedUserItem != null) { setSelected(selectedUserItem); } + else { + setSelected(newUserItem); + } addCaptureListener(changeListener); } diff --git a/core/src/cz/nic/tablexia/util/ui/AbstractTablexiaSelectBox.java b/core/src/cz/nic/tablexia/util/ui/AbstractTablexiaSelectBox.java index ac0ca4ac1d47609d1f5cb098aeeabfd7196915a3..7cb258fb9627245b83c377da336af2d987eb46c2 100644 --- a/core/src/cz/nic/tablexia/util/ui/AbstractTablexiaSelectBox.java +++ b/core/src/cz/nic/tablexia/util/ui/AbstractTablexiaSelectBox.java @@ -42,6 +42,7 @@ public abstract class AbstractTablexiaSelectBox<T> extends Widget implements Dis private float prefWidth, prefHeight; private ClickListener clickListener; boolean disabled; + boolean checkValidity = true; public AbstractTablexiaSelectBox(float itemHeight) { setSize(getPrefWidth(), itemHeight); @@ -167,12 +168,17 @@ public abstract class AbstractTablexiaSelectBox<T> extends Widget implements Dis /** Sets the selection to only the passed item, if it is a possible choice, else selects the first item. */ public void setSelected (T item) { - if (items.contains(item, false)) + if (!isCheckValidity()) { selection.set(item); - else if (items.size > 0) - selection.set(items.first()); - else - selection.clear(); + } + else { + if (items.contains(item, false)) + selection.set(item); + else if (items.size > 0) + selection.set(items.first()); + else + selection.clear(); + } } /** @return The index of the first selected item. The top item has an index of 0. Nothing selected has an index of -1. */ @@ -191,6 +197,14 @@ public abstract class AbstractTablexiaSelectBox<T> extends Widget implements Dis this.disabled = disabled; } + public void setCheckValidity(boolean checkValidity) { + this.checkValidity = checkValidity; + } + + public boolean isCheckValidity() { + return checkValidity; + } + public boolean isDisabled () { return disabled; }