Skip to content

Commit

Permalink
refactoring of saving for created of migrated role (moving code for s…
Browse files Browse the repository at this point in the history
…ave from wizard panel to role page)
  • Loading branch information
skublik committed Nov 7, 2023
1 parent 9ddaa6a commit 07f0aed
Show file tree
Hide file tree
Showing 10 changed files with 372 additions and 296 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

import com.evolveum.midpoint.gui.impl.component.search.SearchContext;

import com.evolveum.midpoint.gui.impl.component.tile.SingleSelectTileTablePanel;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
Expand All @@ -28,121 +31,113 @@
public abstract class MultiSelectTileWizardStepPanel<SI extends Serializable, O extends ObjectType, ODM extends ObjectDetailsModels, V extends Containerable>
extends SelectTileWizardStepPanel<O, ODM, V> {

private static final String ID_TABLE = "table";

public MultiSelectTileWizardStepPanel(ODM model) {
super(model);
}

@Override
protected void onInitialize() {
super.onInitialize();
initLayout();
}

private void initLayout() {
MultiSelectTileTablePanel<SI, O> tilesTable =
new MultiSelectTileTablePanel<>(
ID_TABLE,
getDefaultViewToggle(),
UserProfileStorage.TableId.PANEL_ACCESS_WIZARD_STEP) {

@Override
protected void deselectItem(SI entry) {
MultiSelectTileWizardStepPanel.this.deselectItem(entry);
}

@Override
protected IModel<String> getItemLabelModel(SI entry) {
return MultiSelectTileWizardStepPanel.this.getItemLabelModel(entry);
}

@Override
protected boolean isSelectedItemsPanelVisible() {
return MultiSelectTileWizardStepPanel.this.isSelectedItemsPanelVisible();
}

@Override
protected IModel<List<SI>> getSelectedItemsModel() {
return MultiSelectTileWizardStepPanel.this.getSelectedItemsModel();
}

@Override
protected void processSelectOrDeselectItem(SelectableBean<O> value, AjaxRequestTarget target) {
MultiSelectTileWizardStepPanel.this.processSelectOrDeselectItem(value, target);
}

@Override
protected ObjectQuery getCustomQuery() {
return MultiSelectTileWizardStepPanel.this.getCustomQuery();
}

@Override
protected Collection<SelectorOptions<GetOperationOptions>> getSearchOptions() {
return MultiSelectTileWizardStepPanel.this.getSearchOptions();
}

@Override
protected SearchContext getAdditionalSearchContext() {
return MultiSelectTileWizardStepPanel.this.getAdditionalSearchContext();
}

@Override
protected ContainerPanelConfigurationType getContainerConfiguration() {
return MultiSelectTileWizardStepPanel.this.getContainerConfiguration(getPanelType());
}

@Override
protected Class<O> getType() {
return MultiSelectTileWizardStepPanel.this.getType();
}

@Override
protected SelectableBeanObjectDataProvider<O> createProvider() {
return MultiSelectTileWizardStepPanel.this.createProvider(super.createProvider());
}

@Override
protected TemplateTile<SelectableBean<O>> createTileObject(SelectableBean<O> object) {
TemplateTile<SelectableBean<O>> tile = super.createTileObject(object);
MultiSelectTileWizardStepPanel.this.customizeTile(object, tile);
return tile;
}

@Override
protected void customizeNewRowItem(SelectableBean<O> value) {
MultiSelectTileWizardStepPanel.this.customizeTile(value, null);
}

@Override
public void refresh(AjaxRequestTarget target) {
super.refresh(target);
refreshSubmitAndNextButton(target);
target.add(this);
}

@Override
protected boolean isTogglePanelVisible() {
return MultiSelectTileWizardStepPanel.this.isTogglePanelVisible();
}

@Override
protected List<IColumn<SelectableBean<O>, String>> createColumns() {
return MultiSelectTileWizardStepPanel.this.createColumns();
}

@Override
protected WebMarkupContainer createTableButtonToolbar(String id) {
return MultiSelectTileWizardStepPanel.this.createTableButtonToolbar(id);
}

@Override
protected boolean skipSearch() {
return MultiSelectTileWizardStepPanel.this.skipSearch();
}
};
protected SingleSelectTileTablePanel createTable(String idTable) {
MultiSelectTileTablePanel<SI, O> tilesTable = new MultiSelectTileTablePanel<>(
ID_TABLE,
getDefaultViewToggle(),
UserProfileStorage.TableId.PANEL_ACCESS_WIZARD_STEP) {

@Override
protected void deselectItem(SI entry) {
MultiSelectTileWizardStepPanel.this.deselectItem(entry);
}

@Override
protected IModel<String> getItemLabelModel(SI entry) {
return MultiSelectTileWizardStepPanel.this.getItemLabelModel(entry);
}

@Override
protected boolean isSelectedItemsPanelVisible() {
return MultiSelectTileWizardStepPanel.this.isSelectedItemsPanelVisible();
}

@Override
protected IModel<List<SI>> getSelectedItemsModel() {
return MultiSelectTileWizardStepPanel.this.getSelectedItemsModel();
}

@Override
protected void processSelectOrDeselectItem(SelectableBean<O> value, AjaxRequestTarget target) {
MultiSelectTileWizardStepPanel.this.processSelectOrDeselectItem(value, target);
}

@Override
protected ObjectQuery getCustomQuery() {
return MultiSelectTileWizardStepPanel.this.getCustomQuery();
}

@Override
protected Collection<SelectorOptions<GetOperationOptions>> getSearchOptions() {
return MultiSelectTileWizardStepPanel.this.getSearchOptions();
}

@Override
protected SearchContext getAdditionalSearchContext() {
return MultiSelectTileWizardStepPanel.this.getAdditionalSearchContext();
}

@Override
protected ContainerPanelConfigurationType getContainerConfiguration() {
return MultiSelectTileWizardStepPanel.this.getContainerConfiguration(getPanelType());
}

@Override
protected Class<O> getType() {
return MultiSelectTileWizardStepPanel.this.getType();
}

@Override
protected SelectableBeanObjectDataProvider<O> createProvider() {
return MultiSelectTileWizardStepPanel.this.createProvider(super.createProvider());
}

@Override
protected TemplateTile<SelectableBean<O>> createTileObject(SelectableBean<O> object) {
TemplateTile<SelectableBean<O>> tile = super.createTileObject(object);
MultiSelectTileWizardStepPanel.this.customizeTile(object, tile);
return tile;
}

@Override
protected void customizeNewRowItem(SelectableBean<O> value) {
MultiSelectTileWizardStepPanel.this.customizeTile(value, null);
}

@Override
public void refresh(AjaxRequestTarget target) {
super.refresh(target);
refreshSubmitAndNextButton(target);
target.add(this);
}

@Override
protected boolean isTogglePanelVisible() {
return MultiSelectTileWizardStepPanel.this.isTogglePanelVisible();
}

@Override
protected List<IColumn<SelectableBean<O>, String>> createColumns() {
return MultiSelectTileWizardStepPanel.this.createColumns();
}

@Override
protected WebMarkupContainer createTableButtonToolbar(String id) {
return MultiSelectTileWizardStepPanel.this.createTableButtonToolbar(id);
}

@Override
protected boolean skipSearch() {
return MultiSelectTileWizardStepPanel.this.skipSearch();
}
};
tilesTable.setOutputMarkupId(true);
add(tilesTable);
return tilesTable;
}

protected boolean skipSearch() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,19 @@
<div wicket:id="feedback" class="messagePanel"/>
</div>

<div class="col-12 p-0 card">
<div class="card-header py-2">
<div wicket:id="body"/>
<wicket:child/>

<wicket:fragment wicket:id="bodyFragment">
<div class="col-12 p-0 card">
<div class="card-header py-2">
<span>
<i wicket:id="icon"/>
<span wicket:id="title"/>
</span>
</div>
<div wicket:id="table" class="col-12 p-0 "/>
</div>
<div wicket:id="table" class="col-12 p-0 "/>
</div>
</wicket:fragment>
</wicket:extend>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.tile.SingleSelectTileTablePanel;
import com.evolveum.midpoint.gui.impl.component.tile.TileTablePanel;
import com.evolveum.midpoint.gui.impl.component.tile.ViewToggle;
import com.evolveum.midpoint.gui.impl.page.admin.ObjectDetailsModels;
Expand All @@ -22,11 +23,13 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

Expand All @@ -42,6 +45,11 @@ public abstract class SelectTileWizardStepPanel<O extends ObjectType, ODM extend

private static final String ID_TITLE = "title";
private static final String ID_ICON = "icon";

private static final String ID_BODY_FRAGMENT = "bodyFragment";

private static final String ID_BODY = "body";

static final String ID_TABLE = "table";

public SelectTileWizardStepPanel(ODM model) {
Expand All @@ -51,16 +59,21 @@ public SelectTileWizardStepPanel(ODM model) {
@Override
protected void onInitialize() {
super.onInitialize();
initLayout();
add(createFragment(ID_BODY));
}

private void initLayout() {
protected Fragment createFragment(String id) {
Fragment body = new Fragment(id, ID_BODY_FRAGMENT, SelectTileWizardStepPanel.this);
WebMarkupContainer icon = new WebMarkupContainer(ID_ICON);
icon.add(AttributeAppender.append("class", () -> getIcon()));
add(icon);
add(new Label(ID_TITLE, getTitle()));
body.add(icon);
body.add(new Label(ID_TITLE, getTitle()));
body.add(createTable(ID_TABLE));
return body;
}

protected abstract SingleSelectTileTablePanel createTable(String idTable);

protected String getIcon() {
return "fa fa-circle";
}
Expand Down Expand Up @@ -88,12 +101,12 @@ public String getStepId() {
}

protected TileTablePanel<TemplateTile<SelectableBean<O>>, SelectableBean<O>> getTable() {
return (TileTablePanel) get(ID_TABLE);
return (TileTablePanel) get(getPageBase().createComponentPath(ID_BODY, ID_TABLE));
}

@Override
public String appendCssToWizard() {
return "mt-5 mx-auto col-11";
return "mt-5 mx-auto col-12";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;

Expand All @@ -47,12 +48,6 @@ public SingleTileWizardStepPanel(ODM model) {
initValueModel(null);
}

@Override
protected void onInitialize() {
super.onInitialize();
initLayout();
}

private void initValueModel(IModel<PrismContainerValueWrapper<V>> valueModel) {
if (valueModel == null) {
this.valueModel = createValueModel();
Expand Down Expand Up @@ -91,7 +86,8 @@ public void setValueModel(IModel<PrismContainerValueWrapper<V>> valueModel) {
this.valueModel = valueModel;
}

protected void initLayout() {
@Override
protected SingleSelectTileTablePanel createTable(String idTable) {
SingleSelectTileTablePanel<O> tilesTable =
new SingleSelectTileTablePanel<>(
ID_TABLE,
Expand Down Expand Up @@ -134,7 +130,8 @@ public void refresh(AjaxRequestTarget target) {
refreshSubmitAndNextButton(target);
}
};
add(tilesTable);
tilesTable.setOutputMarkupId(true);
return tilesTable;
}

protected void performSelectedObjects() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,12 +320,19 @@ public Collection<ObjectDeltaOperation<? extends ObjectType>> saveOrPreviewPerfo
if (!isShowedByWizard()) {
postProcessResult(result, executedDeltas, target);
} else {
reloadObject(result, executedDeltas, target);
postProcessResultForWizard(result, executedDeltas, target);
}

return executedDeltas;
}

protected void postProcessResultForWizard(
OperationResult result,
Collection<ObjectDeltaOperation<? extends ObjectType>> executedDeltas,
AjaxRequestTarget target) {
reloadObject(result, executedDeltas, target);
}

private void reloadObject(OperationResult result, Collection<ObjectDeltaOperation<? extends ObjectType>> executedDeltas, AjaxRequestTarget target) {
if (!result.isError()) {
if (executedDeltas != null) {
Expand Down

0 comments on commit 07f0aed

Please sign in to comment.