Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Sep 14, 2022
2 parents 8675c7a + 2f86950 commit 52472e6
Show file tree
Hide file tree
Showing 21 changed files with 429 additions and 157 deletions.
11 changes: 9 additions & 2 deletions gui/admin-gui/src/frontend/scss/_tiles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@
@mixin selectable-tile {
cursor: pointer;

&:hover,
&:hover {
border: 2px solid $input-border-color;
border-radius: $border-radius;
}

&.active {
border: 2px solid $primary;
border-radius: $border-radius;
Expand All @@ -40,7 +44,10 @@
}

@mixin selectable-tile-dark-mode {
&:hover,
&:hover {
border-color: $gray-400;
}

&.active {
border-color: $primary-alt;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,11 +205,6 @@ public void previous() {
}

public WizardStep getNextPanel() {
int nextIndex = activeStepIndex + 1;
if (steps.size() <= nextIndex) {
return null;
}

return steps.get(nextIndex);
return findNextStep();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

import com.evolveum.midpoint.xml.ns._public.common.common_3.GuiObjectListViewType;

import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceObjectFocusSpecificationType;

import org.apache.wicket.model.Model;
import org.springframework.stereotype.Component;

Expand Down Expand Up @@ -44,7 +46,8 @@ public void register() {
@Override
protected InputPanel getPanel(PrismPropertyPanelContext<QName> panelCtx) {
List<QName> typesList;
if (AssignmentType.F_FOCUS_TYPE.equals(panelCtx.getDefinitionName())) {
if (AssignmentType.F_FOCUS_TYPE.equals(panelCtx.getDefinitionName())
|| ResourceObjectFocusSpecificationType.F_TYPE.equals(panelCtx.getDefinitionName())) {
typesList = WebComponentUtil.createFocusTypeList();
} else if ((ObjectCollectionType.F_TYPE.equals(panelCtx.getDefinitionName()) || GuiObjectListViewType.F_TYPE.equals(panelCtx.getDefinitionName()))
&& panelCtx.unwrapWrapperModel().getParent().getDefinition() != null &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public void register() {
if (!(object instanceof ResourceType)) {
return false;
}
return wrapper.getPath().lastName().equivalent(ResourceObjectTypeDefinitionType.F_OBJECT_CLASS);
return wrapper.getPath().lastName().equivalent(ResourceObjectTypeDefinitionType.F_OBJECT_CLASS)
|| wrapper.getPath().lastName().equivalent(ResourceObjectTypeDefinitionType.F_AUXILIARY_OBJECT_CLASS);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.evolveum.midpoint.gui.impl.page.admin.component.ResourceOperationalButtonsPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.ResourceWizardPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.basic.BasicResourceWizardPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.objectType.ResourceObjectTypeWizardPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.objectType.attributeMapping.AttributeMappingWizardPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.objectType.synchronization.SynchronizationConfigWizardPanel;
import com.evolveum.midpoint.prism.PrismObject;
Expand Down Expand Up @@ -193,6 +194,29 @@ protected void onExitPerformed(AjaxRequestTarget target) {
target.add(fragment);
}

public void showObjectTypeWizard(AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
Fragment fragment = new Fragment(ID_DETAILS_VIEW, ID_WIZARD_FRAGMENT, PageResource.this);
fragment.setOutputMarkupId(true);
addOrReplace(fragment);
ResourceObjectTypeWizardPanel wizard = new ResourceObjectTypeWizardPanel(ID_WIZARD, getObjectDetailsModels(), valueModel) {

@Override
protected boolean isSavedAfterDetailsWizard() {
return false;
}

@Override
protected void onExitPerformed(AjaxRequestTarget target) {
DetailsFragment detailsFragment = createDetailsFragment();
PageResource.this.addOrReplace(detailsFragment);
target.add(detailsFragment);
}
};
wizard.setOutputMarkupId(true);
fragment.add(wizard);
target.add(fragment);
}

public void showAttributeMappingWizard(AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
Fragment fragment = new Fragment(ID_DETAILS_VIEW, ID_WIZARD_FRAGMENT, PageResource.this);
fragment.setOutputMarkupId(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,10 @@ protected void collectVirtualContainers(@NotNull Collection<ContainerPanelConfig
|| (pageResource.isEditObject()
&& OperationTypeType.MODIFY.equals(panelConfig.getApplicableForOperation()))
|| (!pageResource.isEditObject()
&& OperationTypeType.ADD.equals(panelConfig.getApplicableForOperation()))) {
&& OperationTypeType.ADD.equals(panelConfig.getApplicableForOperation()))
|| ("delineationResourceObjectTypeWizard".equals(panelConfig.getIdentifier())
|| "basicResourceObjectTypeWizard".equals(panelConfig.getIdentifier())
|| "focusResourceObjectTypeWizard".equals(panelConfig.getIdentifier()))) { // UGLY HACK we need define visibility of panel in menu
virtualContainers.addAll(panelConfig.getContainer());
collectVirtualContainers(panelConfig.getPanel(), virtualContainers);
}
Expand All @@ -230,6 +233,9 @@ protected void collectVirtualContainers(@NotNull Collection<ContainerPanelConfig
ctx.setCreateIfEmpty(true);
ctx.setDetailsPageTypeConfiguration(getPanelConfigurations());
ctx.setConfigureMappingType(true);
if (getModelServiceLocator() instanceof PageResource) {
ctx.setShowEmpty(!((PageResource)getModelServiceLocator()).isEditObject());
}
return ctx;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ protected void onUpdate(AjaxRequestTarget target) {
updateResourceContentSearch();
mainForm.addOrReplace(initTable(getObjectWrapperModel()));
target.add(mainForm);
target.add(get(ID_TOP_TABLE_BUTTONS_CONTAINER));
target.add(ResourceContentPanel.this.get(ID_TOP_TABLE_BUTTONS_CONTAINER));

}
});
Expand Down Expand Up @@ -253,7 +253,7 @@ protected void onChange(AjaxRequestTarget target) {
LOGGER.trace("Object class panel update: {}", isUseObjectClass());
updateResourceContentSearch();
mainForm.addOrReplace(initTable(getObjectWrapperModel()));
target.add(get(ID_TOP_TABLE_BUTTONS_CONTAINER));
target.add(ResourceContentPanel.this.get(ID_TOP_TABLE_BUTTONS_CONTAINER));
target.add(mainForm);
}

Expand Down Expand Up @@ -393,7 +393,7 @@ private IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> get
String searchIntent = resourceContentSearch.getObject().getIntent();
if (!isUseObjectClass()
&& (searchKind.equals(objectTypeDefinition.getKind()))
|| kind.equals(objectTypeDefinition.getKind())) {
|| (kind != null && kind.equals(objectTypeDefinition.getKind()))) {
if (searchIntent != null
&& searchIntent.equals(objectTypeDefinition.getIntent())) {
foundValue = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,44 +133,63 @@ public void editItemPerformed(AjaxRequestTarget target, IModel<PrismContainerVal
super.editItemPerformed(target, rowModel, listItems);
return;
}
ResourceSchemaHandlingPanel.this.editItemPerformed(target, rowModel, listItems, parent);
if ((listItems != null && !listItems.isEmpty()) || rowModel != null) {
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel;
if (rowModel == null) {
valueModel = () -> listItems.iterator().next();
} else {
valueModel = rowModel;
}
onEditValue(valueModel, target);
} else {
warn(createStringResource("MultivalueContainerListPanel.message.noItemsSelected").getString());
target.add(getPageBase().getFeedbackPanel());
}
}
};
form.add(objectTypesPanel);
}

protected void onEditValue(IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel, AjaxRequestTarget target) {
if (valueModel != null) {
getObjectDetailsModels().getPageResource().showObjectTypeWizard(
target,
valueModel);
}
}

protected boolean isCreateNewObjectVisible() {
return true;
}

protected void editItemPerformed(
AjaxRequestTarget target,
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> rowModel,
List<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> listItems,
AbstractPageObjectDetails parent) {

ContainerPanelConfigurationType detailsPanel = new ContainerPanelConfigurationType();
detailsPanel.setPanelType("schemaHandlingDetails");

PrismContainerValueWrapper<ResourceObjectTypeDefinitionType> objectTypeDef;
if (rowModel != null) {
objectTypeDef = rowModel.getObject();
} else {
objectTypeDef = listItems.iterator().next();
}
detailsPanel.setPath(new ItemPathType(objectTypeDef.getPath()));

detailsPanel.setIdentifier("schemaHandlingDetails");
DisplayType displayType = new DisplayType();
displayType.setLabel(getObjectTypeDisplayName(objectTypeDef.getNewValue().asContainerable()));
detailsPanel.setDisplay(displayType);

getPageBase().getSessionStorage().setObjectDetailsStorage("details" + parent.getType().getSimpleName(), detailsPanel);

ResourceSchemaHandlingPanel.this.getPanelConfiguration().getPanel().add(detailsPanel);
target.add(parent);
parent.replacePanel(detailsPanel, target);
}
// protected void editItemPerformed(
// AjaxRequestTarget target,
// IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> rowModel,
// List<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> listItems,
// AbstractPageObjectDetails parent) {
//
// ContainerPanelConfigurationType detailsPanel = new ContainerPanelConfigurationType();
// detailsPanel.setPanelType("schemaHandlingDetails");
//
// PrismContainerValueWrapper<ResourceObjectTypeDefinitionType> objectTypeDef;
// if (rowModel != null) {
// objectTypeDef = rowModel.getObject();
// } else {
// objectTypeDef = listItems.iterator().next();
// }
// detailsPanel.setPath(new ItemPathType(objectTypeDef.getPath()));
//
// detailsPanel.setIdentifier("schemaHandlingDetails");
// DisplayType displayType = new DisplayType();
// displayType.setLabel(getObjectTypeDisplayName(objectTypeDef.getNewValue().asContainerable()));
// detailsPanel.setDisplay(displayType);
//
// getPageBase().getSessionStorage().setObjectDetailsStorage("details" + parent.getType().getSimpleName(), detailsPanel);
//
// ResourceSchemaHandlingPanel.this.getPanelConfiguration().getPanel().add(detailsPanel);
// target.add(parent);
// parent.replacePanel(detailsPanel, target);
// }

private PolyStringType getObjectTypeDisplayName(ResourceObjectTypeDefinitionType resourceObjectTypeDefinitionType) {
String displayName = resourceObjectTypeDefinitionType.getDisplayName();
Expand All @@ -184,7 +203,7 @@ private PolyStringType getObjectTypeDisplayName(ResourceObjectTypeDefinitionType
return polyStringType;
}

private MultivalueContainerListPanelWithDetailsPanel<ResourceObjectTypeDefinitionType> getMultivalueContainerListPanel(){
private MultivalueContainerListPanelWithDetailsPanel<ResourceObjectTypeDefinitionType> getMultivalueContainerListPanel() {
return ((MultivalueContainerListPanelWithDetailsPanel<ResourceObjectTypeDefinitionType>) get(getPageBase().createComponentPath(ID_FORM, ID_TABLE)));
}

Expand Down Expand Up @@ -218,7 +237,7 @@ protected DisplayNamePanel<ResourceObjectTypeDefinitionType> createDisplayNamePa

@Override
protected IModel<String> createHeaderModel() {
return new ReadOnlyModel<>(() -> loadHeaderModel(getModelObject()) );
return new ReadOnlyModel<>(() -> loadHeaderModel(getModelObject()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public abstract class AbstractResourceWizardPanel<C extends Containerable> exten
private static final String ID_WIZARD = "wizard";

private final ResourceDetailsModel resourceModel;

public AbstractResourceWizardPanel(
String id,
ResourceDetailsModel model) {
Expand Down Expand Up @@ -99,18 +100,26 @@ protected void onExitPerformed(AjaxRequestTarget target) {
}

protected IModel<PrismContainerValueWrapper<C>> createModelOfNewValue(ItemPath path) {
try {
PrismContainerWrapper<C> container = findContainer(path);
PrismContainerValue<C> newItem = container.getItem().createNewValue();
PrismContainerValueWrapper<C> newItemWrapper = WebPrismUtil.createNewValueWrapper(
container, newItem, getPageBase(), getWrapperContext(container));
container.getValues().add(newItemWrapper);
return () -> newItemWrapper;

} catch (SchemaException e) {
LOGGER.error("Cannot find wrapper: {}", e.getMessage());
}
return null;
return new IModel() {

private PrismContainerValueWrapper<C> newItemWrapper;

@Override
public Object getObject() {
if (newItemWrapper == null) {
try {
PrismContainerWrapper<C> container = findContainer(path);
PrismContainerValue<C> newItem = container.getItem().createNewValue();
newItemWrapper = WebPrismUtil.createNewValueWrapper(
container, newItem, getPageBase(), getWrapperContext(container));
container.getValues().add(newItemWrapper);
} catch (SchemaException e) {
LOGGER.error("Cannot find wrapper: {}", e.getMessage());
}
}
return newItemWrapper;
}
};
}

private WrapperContext getWrapperContext(PrismContainerWrapper<C> container) {
Expand Down

0 comments on commit 52472e6

Please sign in to comment.