Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/simulations
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Nov 14, 2022
2 parents 981ea43 + df63ce1 commit f93d4bb
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ public void setItems(List<ListGroupMenuItem<T>> items) {
}

public void onItemChevronClickPerformed(ListGroupMenuItem item) {
if (item.isEmpty()) {
if (item.getItems().isEmpty()) { // force load of items, calling item.isEmpty() would return false if items are not loaded
item.setOpen(false);
return;
}

Expand All @@ -44,37 +45,28 @@ public void onItemClickPerformed(ListGroupMenuItem item) {
item.setActive(true);
}

public void activateFirstAvailableItem() {
for (ListGroupMenuItem i : getItems()) {
if (activateFirstAvailableItem(i)) {
i.setOpen(true);
break;
}
}
}

public boolean activateFirstAvailableItem(ListGroupMenuItem item) {
List<ListGroupMenuItem> items = item.getItems();
if (items.isEmpty() && !item.isDisabled()) {
item.setActive(true);

return true;
public ListGroupMenuItem<T> activateFirstAvailableItem() {
List<ListGroupMenuItem<T>> items = getItems();
if (items.isEmpty()) {
return null;
}

for (ListGroupMenuItem i : items) {
if (activateFirstAvailableItem(i)) {
i.setOpen(true);
return true;
for (ListGroupMenuItem<T> i : items) {
if (!i.isDisabled()) {
i.setActive(true);
return i;
}
}

return false;
return null;
}

private void deactivateItem(ListGroupMenuItem<T> item) {
item.setActive(false);

item.getItems().forEach(this::deactivateItem);
if (item.isLoaded()) {
item.getItems().forEach(this::deactivateItem);
}
}

public ListGroupMenuItem<T> getActiveMenu() {
Expand All @@ -93,6 +85,10 @@ private ListGroupMenuItem getActiveMenu(ListGroupMenuItem<T> item) {
return item;
}

if (!item.isLoaded()) {
return null;
}

for (ListGroupMenuItem i : item.getItems()) {
ListGroupMenuItem active = getActiveMenu(i);
if (active != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
import java.util.ArrayList;
import java.util.List;

import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.model.LoadableModel;

/**
* Created by Viliam Repan (lazyman).
*/
Expand All @@ -36,7 +36,13 @@ public class ListGroupMenuItem<T extends Serializable> implements Serializable {

private T value;

private IModel<List<ListGroupMenuItem<T>>> items = Model.ofList(new ArrayList<>());
private LoadableModel<List<ListGroupMenuItem<T>>> items = new LoadableModel<>() {

@Override
protected List<ListGroupMenuItem<T>> load() {
return new ArrayList<>();
}
};

public ListGroupMenuItem() {
}
Expand Down Expand Up @@ -114,11 +120,7 @@ public void setItems(List<ListGroupMenuItem<T>> items) {
this.items.setObject(items);
}

public IModel<List<ListGroupMenuItem<T>>> getItemsModel() {
return this.items;
}

public void setItemsModel(@NotNull IModel<List<ListGroupMenuItem<T>>> items) {
public void setItemsModel(@NotNull LoadableModel<List<ListGroupMenuItem<T>>> items) {
this.items = items;
}

Expand All @@ -138,7 +140,11 @@ public void setOpen(boolean open) {
this.open = open;
}

public boolean isLoaded() {
return items.isLoaded();
}

public boolean isEmpty() {
return getItems().isEmpty();
return items.isLoaded() && getItems().isEmpty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ protected void onChevronClickPerformed(AjaxRequestTarget target, ListGroupMenuIt

WebMarkupContainer itemsContainer = new WebMarkupContainer(ID_ITEMS_CONTAINER);
itemsContainer.add(AttributeAppender.append("style", () -> !getModelObject().isOpen() ? "display: none;" : null));
itemsContainer.add(new VisibleBehaviour(() -> !getModelObject().isEmpty()));
itemsContainer.add(new VisibleBehaviour(() -> getModelObject().isOpen() && !getModelObject().isEmpty()));
add(itemsContainer);

ListView<ListGroupMenuItem<T>> items = new ListView<>(ID_ITEMS, () -> getModelObject().getItems()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,6 @@ protected void onBeforeRender() {
throw new RestartResponseException(new PageRequestAccess(params, getWizard()));
}

ListGroupMenu menu = menuModel.getObject();
if (menu.getActiveMenu() == null) {
menu.activateFirstAvailableItem();
}

ListGroupMenuItem<RoleCatalogQueryItem> active = menu.getActiveMenu();
updateQueryModel(active);

super.onBeforeRender();
}

Expand Down Expand Up @@ -346,7 +338,12 @@ protected Search<? extends ObjectType> load() {

@Override
protected ListGroupMenu<RoleCatalogQueryItem> load() {
return loadRoleCatalogMenu();
ListGroupMenu<RoleCatalogQueryItem> menu = loadRoleCatalogMenu();

ListGroupMenuItem<RoleCatalogQueryItem> active = menu.activateFirstAvailableItem();
updateQueryModel(active);

return menu;
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ protected void filterConfiguredPerformed(ObjectFilter configuredFilter, AjaxRequ
return;
}
SearchFilterConfigurationPanel.this.getModel().setObject(SearchFilterConfigurationPanel.this.getPageBase().getQueryConverter().createSearchFilterType(configuredFilter));
target.add(get(ID_CONTAINER));
target.add(SearchFilterConfigurationPanel.this.get(ID_CONTAINER));
target.add(getPageBase().getFeedbackPanel());
} catch (SchemaException e) {
LoggingUtils.logUnexpectedException(LOGGER, "Cannot serialize filter", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ public class PagePostAuthentication extends PageAbstractFlow {
private IModel<UserType> userModel;
private PrismObjectWrapper<UserType> objectWrapper;

public PagePostAuthentication() {
super(null);
}

public PagePostAuthentication(PageParameters pageParameters) {
super(pageParameters);
}
Expand Down

0 comments on commit f93d4bb

Please sign in to comment.