Skip to content

Commit

Permalink
sort choices for lifecycle state panel and use this panel in generate…
Browse files Browse the repository at this point in the history
…d forms
  • Loading branch information
skublik committed Aug 22, 2023
1 parent a001273 commit b44584d
Show file tree
Hide file tree
Showing 8 changed files with 139 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStatePanel;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright (C) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.impl.component.input;

import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.api.util.DisplayableChoiceRenderer;
import com.evolveum.midpoint.gui.api.util.LocalizationUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.search.SearchValue;
import com.evolveum.midpoint.prism.impl.binding.AbstractMutableContainerable;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.input.DisplayableValueChoiceRenderer;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableRowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.string.AppendingStringBuffer;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;

public class LifecycleStateFormPanel extends LifecycleStatePanel {

public LifecycleStateFormPanel(String id, IModel<PrismPropertyWrapper<String>> model) {
super(id, model);
}

@Override
protected String customCssClassForInputField() {
return "w-100";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.impl.page.admin.resource.component;
package com.evolveum.midpoint.gui.impl.component.input;

import com.evolveum.midpoint.gui.api.util.DisplayableChoiceRenderer;
import com.evolveum.midpoint.gui.api.util.LocalizationUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.search.SearchValue;
import com.evolveum.midpoint.prism.impl.binding.AbstractMutableContainerable;
import com.evolveum.midpoint.util.DisplayableValue;

import com.evolveum.midpoint.web.component.input.DisplayableValueChoiceRenderer;
Expand All @@ -31,25 +32,26 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.string.AppendingStringBuffer;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;

public class LifecycleStatePanel extends BasePanel<PrismPropertyWrapper<String>> {
public class LifecycleStatePanel extends InputPanel {

private static final Trace LOGGER = TraceManager.getTrace(LifecycleStatePanel.class);

private static final String ID_PANEL = "panel";

private final IModel<PrismPropertyWrapper<String>> model;

enum DisplayForOption {

ACTIVE("SimulationModePanel.option.active", "colored-form-success"),
Expand All @@ -59,6 +61,7 @@ enum DisplayForOption {

private final String label;
private final String cssClass;

DisplayForOption(String label, String cssClass) {
this.label = label;
this.cssClass = cssClass;
Expand All @@ -85,7 +88,8 @@ private static DisplayForOption valueOfOrDefault(String name) {
}

public LifecycleStatePanel(String id, IModel<PrismPropertyWrapper<String>> model) {
super(id, model);
super(id);
this.model = model;
}

@Override
Expand Down Expand Up @@ -232,6 +236,10 @@ protected void onUpdate(AjaxRequestTarget target) {
add(input);
}

private PrismPropertyWrapper<String> getModelObject() {
return this.model.getObject();
}

protected String customCssClassForInputField() {
return "";
}
Expand All @@ -248,18 +256,23 @@ private List getChoices() {
return choices;
}

List<LookupTableRowType> rows = lookupTable.getRow();
List<LookupTableRowType> rows = new ArrayList(lookupTable.getRow());

rows.sort(Comparator.comparingLong(AbstractMutableContainerable::getId));

for (LookupTableRowType row : rows) {
String value = com.evolveum.midpoint.gui.api.util.LocalizationUtil.translateLookupTableRowLabel(row);
DisplayableValue<String> display = new SearchValue<>(row.getKey(), value);
choices.add(display);
}



return choices;
}

protected FormComponent getBaseFormPanel(){
@Override
public FormComponent getBaseFormComponent(){
return (FormComponent) get(ID_PANEL);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Copyright (C) 2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.factory.panel;

import javax.xml.datatype.XMLGregorianCalendar;

import com.evolveum.midpoint.gui.impl.component.input.LifecycleStateFormPanel;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStatePanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper;
import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.web.component.input.DatePanel;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.web.util.DateValidator;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ScheduleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;

@Component
public class LifecycleStatePanelFactory extends AbstractInputGuiComponentFactory<String> {

@Autowired private GuiComponentRegistry registry;

@PostConstruct
public void register() {
registry.addToRegistry(this);
}

@Override
public <IW extends ItemWrapper<?, ?>, VW extends PrismValueWrapper<?>> boolean match(IW wrapper, VW valueWrapper) {
return ObjectType.F_LIFECYCLE_STATE.equals(wrapper.getItemName());
}

@Override
protected InputPanel getPanel(PrismPropertyPanelContext<String> panelCtx) {
return new LifecycleStateFormPanel(panelCtx.getComponentId(), panelCtx.getItemWrapperModel());
}

@Override
public Integer getOrder() {
return 1000;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import com.evolveum.midpoint.gui.api.GuiStyleConstants;

import com.evolveum.midpoint.gui.impl.page.admin.resource.component.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStatePanel;
import com.evolveum.midpoint.web.component.AjaxIconButton;

import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
Expand Down Expand Up @@ -119,7 +119,7 @@ private void initLifecycleStatePanel(String id) {
@Override
protected void onInitialize() {
super.onInitialize();
getBaseFormPanel().add(new OnChangeAjaxBehavior() {
getBaseFormComponent().add(new OnChangeAjaxBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget target) {
WebComponentUtil.saveObjectLifeCycle(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.basic.ResourceTilePanel;
import com.evolveum.midpoint.prism.Containerable;

Expand Down Expand Up @@ -65,19 +65,7 @@ private void initLifeCycleStatePanel() {
return null;
};

LifecycleStatePanel panel = new LifecycleStatePanel(ID_LIFECYCLE_STATE, model);
// Panel panel = getPageBase().initItemPanel(
// ID_LIFECYCLE_STATE,
// model.getObject().getTypeName(),
// model,
// new ItemPanelSettingsBuilder()
// .headerVisibility(false)
// .displayedInColumn(true)
// .build());
add(panel);
// } catch (SchemaException e) {
// LOGGER.debug("Couldn't find panel factory for property " + MappingType.F_LIFECYCLE_STATE);
// }
add(new LifecycleStatePanel(ID_LIFECYCLE_STATE, model));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
package com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.objectType.attributeMapping;

import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStateFormPanel;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.prism.panel.vertical.form.VerticalFormPrismPropertyHeaderPanel;

import com.evolveum.midpoint.util.exception.SchemaException;
Expand Down Expand Up @@ -72,12 +73,7 @@ protected void onInitialize() {
private void initLayout() {
add(new VerticalFormPrismPropertyHeaderPanel<>(ID_HEADER, firstWrapper));

add(new LifecycleStatePanel(ID_INPUT, firstWrapper) {
@Override
protected String customCssClassForInputField() {
return "w-100";
}
});
add(new LifecycleStateFormPanel(ID_INPUT, firstWrapper));
}

private void initFooter() {
Expand Down

0 comments on commit b44584d

Please sign in to comment.