use of com.evolveum.midpoint.gui.api.component.LabelWithHelpPanel in project midpoint by Evolveum.
the class ChangePasswordPanel method initColumns.
private List<IColumn<PasswordAccountDto, String>> initColumns() {
List<IColumn<PasswordAccountDto, String>> columns = new ArrayList<>();
columns.add(new CheckBoxColumn<>(Model.of(""), Selectable.F_SELECTED) {
@Override
protected IModel<Boolean> getEnabled(IModel<PasswordAccountDto> rowModel) {
return () -> {
PasswordAccountDto passwordAccountDto = rowModel.getObject();
if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordCapabilityEnabled()) {
passwordAccountDto.setSelected(false);
return false;
}
if (CredentialsPropagationUserControlType.ONLY_MAPPING.equals(getModelObject().getPropagation())) {
if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordOutbound()) {
passwordAccountDto.setSelected(false);
}
return false;
}
if (passwordAccountDto.isMidpoint() && CredentialsPropagationUserControlType.IDENTITY_MANAGER_MANDATORY.equals(getModelObject().getPropagation())) {
return false;
}
if (!passwordAccountDto.isMidpoint() && midpointAccountSelected.getObject() && passwordAccountDto.isPasswordOutbound()) {
passwordAccountDto.setSelected(true);
return false;
}
return true;
};
}
@Override
protected void processBehaviourOfCheckBox(IsolatedCheckBoxPanel check, IModel<PasswordAccountDto> rowModel) {
super.processBehaviourOfCheckBox(check, rowModel);
IModel<String> titleModel = () -> {
PasswordAccountDto passwordAccountDto = rowModel.getObject();
if (!getEnabled(rowModel).getObject()) {
String key;
if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordCapabilityEnabled()) {
key = "ChangePasswordPanel.legendMessage.no.password.capability";
} else {
key = "ChangePasswordPanel.legendMessage.policy";
}
return createStringResource(key).getString();
}
return "";
};
check.add(AttributeAppender.append("title", titleModel));
}
@Override
protected void onUpdateRow(AjaxRequestTarget target, DataTable table, IModel<PasswordAccountDto> rowModel, IModel<Boolean> selected) {
super.onUpdateRow(target, table, rowModel, selected);
if (rowModel.getObject().isMidpoint()) {
table.visitChildren(IsolatedCheckBoxPanel.class, (IVisitor<IsolatedCheckBoxPanel, IsolatedCheckBoxPanel>) (panel, iVisit) -> {
target.add(panel);
});
}
}
});
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.name")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> item, String componentId, final IModel<PasswordAccountDto> rowModel) {
item.add(new Label(componentId, new IModel<>() {
private static final long serialVersionUID = 1L;
@Override
public String getObject() {
PasswordAccountDto dto = rowModel.getObject();
return dto.getDisplayName();
}
}));
}
});
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.resourceName")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> item, String componentId, final IModel<PasswordAccountDto> rowModel) {
IModel<String> helpModel = () -> {
String title = "";
if (!rowModel.getObject().isMidpoint() && !rowModel.getObject().isPasswordCapabilityEnabled()) {
title = createStringResource("ChangePasswordPanel.legendMessage.no.password.capability").getString();
}
if (rowModel.getObject().isMaintenanceState()) {
title = title + (StringUtils.isEmpty(title) ? "" : " ") + createStringResource("ChangePasswordPanel.legendMessage.maintenance").getString();
}
return title;
};
item.add(new LabelWithHelpPanel(componentId, new IModel<>() {
private static final long serialVersionUID = 1L;
@Override
public String getObject() {
PasswordAccountDto dto = rowModel.getObject();
return dto.getResourceName();
}
}) {
@Override
protected IModel<String> getHelpModel() {
return helpModel;
}
});
}
});
IconColumn enabled = new IconColumn<PasswordAccountDto>(createStringResource("ChangePasswordPanel.enabled")) {
@Override
protected DisplayType getIconDisplayType(IModel<PasswordAccountDto> rowModel) {
String cssClass = "fa fa-question text-info";
String tooltip = "ActivationStatusType.null";
if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().isEnabled() != null) {
if (rowModel.getObject().isEnabled()) {
cssClass = GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_APPROVED_COLORED;
tooltip = "ActivationStatusType.ENABLED";
} else {
cssClass = GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_REJECTED_COLORED;
tooltip = "ActivationStatusType.DISABLED";
}
}
return GuiDisplayTypeUtil.createDisplayType(cssClass + " fa-fw fa-lg", "", createStringResource(tooltip).getString());
}
@Override
public String getCssClass() {
return "col-lg-1";
}
};
columns.add(enabled);
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.passwordValidation")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> cellItem, String componentId, IModel<PasswordAccountDto> rowModel) {
IModel<List<StringLimitationResult>> limitationsModel = () -> {
String policyOid = rowModel.getObject().getPasswordValuePolicyOid();
if (StringUtils.isEmpty(policyOid) || !getModelObject().getPasswordPolicies().containsKey(policyOid)) {
return new ArrayList<>();
}
if (limitationsByPolicyOid.containsKey(policyOid)) {
return limitationsByPolicyOid.get(policyOid);
}
ValuePolicyType policyType = getModelObject().getPasswordPolicies().get(policyOid);
PrismObject<? extends ObjectType> object = rowModel.getObject().getObject();
List<StringLimitationResult> limitations = getPasswordPanel().getLimitationsForActualPassword(policyType, object);
limitationsByPolicyOid.put(policyOid, limitations);
return limitations;
};
PasswordPolicyValidationPanel validationPanel = new PasswordPolicyValidationPanel(componentId, limitationsModel);
validationPanel.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return !limitationsModel.getObject().isEmpty();
}
});
cellItem.add(validationPanel);
}
@Override
public String getCssClass() {
return "col-lg-2";
}
});
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.propagationResult")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> cellItem, String componentId, IModel<PasswordAccountDto> rowModel) {
LoadableModel<OperationResult> resultStatusModel = new LoadableModel<OperationResult>() {
@Override
protected OperationResult load() {
if (getModelObject().getProgress() == null || getModelObject().getProgress().getProgressReportActivities().isEmpty()) {
return null;
}
for (ProgressReportActivityDto progressActivity : getModelObject().getProgress().getProgressReportActivities()) {
if (rowModel.getObject().isSelected() && progressActivity.getStatus() != null && rowModel.getObject().isMidpoint() && (ProgressInformation.ActivityType.FOCUS_OPERATION.equals(progressActivity.getActivityType()) || (ProgressInformation.ActivityType.PROJECTOR.equals(progressActivity.getActivityType()) && !OperationResultStatusType.SUCCESS.equals(progressActivity.getStatus())))) {
return progressActivity.getOperationResult();
} else if (progressActivity.getStatus() != null && !rowModel.getObject().isMidpoint() && ProgressInformation.ActivityType.RESOURCE_OBJECT_OPERATION.equals(progressActivity.getActivityType()) && progressActivity.getResourceOperationResultList() != null && !progressActivity.getResourceOperationResultList().isEmpty()) {
String resourceOid = rowModel.getObject().getResourceOid();
if (StringUtils.isNotEmpty(resourceOid) && progressActivity.getResourceShadowDiscriminator() != null && resourceOid.equals(progressActivity.getResourceShadowDiscriminator().getResourceOid())) {
return progressActivity.getOperationResult();
}
}
}
return new OperationResult("Empty result");
}
};
ColumnResultPanel resultPanel = new ColumnResultPanel(componentId, resultStatusModel) {
@Override
protected boolean isProjectionResult() {
return !rowModel.getObject().isMidpoint();
}
@Override
protected DisplayType getDisplayForEmptyResult() {
String policyOid = rowModel.getObject().getPasswordValuePolicyOid();
if (StringUtils.isNotEmpty(policyOid) && ChangePasswordPanel.this.getModelObject().getPasswordPolicies().containsKey(policyOid)) {
if (limitationsByPolicyOid.get(policyOid) != null) {
var ref = new Object() {
boolean result = true;
};
limitationsByPolicyOid.get(policyOid).forEach((limit) -> {
if (ref.result && !limit.isSuccess()) {
ref.result = false;
}
});
if (!ref.result && rowModel.getObject().isSelected()) {
return GuiDisplayTypeUtil.createDisplayType("fa-fw fa fa-times-circle text-muted fa-lg", "", createStringResource("ChangePasswordPanel.result.validationError").getString());
}
}
}
return null;
}
};
resultPanel.setOutputMarkupId(true);
cellItem.add(resultPanel);
}
@Override
public String getCssClass() {
return "col-lg-2";
}
});
return columns;
}
use of com.evolveum.midpoint.gui.api.component.LabelWithHelpPanel in project midpoint by Evolveum.
the class StringLimitationPanel method initLayout.
private void initLayout() {
Label icon = new Label(ID_ICON);
icon.add(AttributeModifier.append("class", (IModel<String>) () -> {
String cssClass;
if (Boolean.TRUE.equals(getModelObject().isSuccess())) {
cssClass = " fa-check";
} else {
cssClass = " fa-times";
}
return cssClass;
}));
icon.setOutputMarkupId(true);
add(icon);
LabelWithHelpPanel label = new LabelWithHelpPanel(ID_NAME, Model.of(WebComponentUtil.getTranslatedPolyString(getModelObject().getName()))) {
@Override
protected IModel<String> getHelpModel() {
return Model.of(WebComponentUtil.getTranslatedPolyString(StringLimitationPanel.this.getModelObject().getHelp()));
}
};
label.setOutputMarkupId(true);
add(label);
IModel<String> rulesModel = getRulesModel();
Label rules = new Label(ID_RULES, rulesModel);
rules.setOutputMarkupId(true);
rules.add(new VisibleBehaviour(() -> StringUtils.isNotEmpty(rulesModel.getObject())));
add(rules);
}
Aggregations