use of org.apache.wicket.markup.html.panel.Panel in project midpoint by Evolveum.
the class SingleContainerPanel method initLayout.
private void initLayout() {
try {
ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(wrapper -> getVisibility(wrapper)).editabilityHandler(getEditabilityHandler()).mandatoryHandler(getMandatoryHandler());
if (config == null) {
Panel panel = getPageBase().initItemPanel(ID_CONTAINER, getTypeName(), getModel(), builder.build());
add(panel);
} else {
RepeatingView view = new RepeatingView(ID_CONTAINER);
List<VirtualContainersSpecificationType> virtualContainers = config.getContainer();
for (VirtualContainersSpecificationType virtualContainer : virtualContainers) {
if (!WebComponentUtil.getElementVisibility(virtualContainer.getVisibility())) {
continue;
}
IModel<PrismContainerWrapper<C>> virtualContainerModel = createVirtualContainerModel(virtualContainer);
if (virtualContainerModel == null) {
continue;
}
ItemPanelSettings settings = builder.build();
Panel virtualPanel = new PrismContainerPanel<>(view.newChildId(), virtualContainerModel, settings);
view.add(virtualPanel);
}
QName typeName = getTypeName();
if (typeName != null) {
Panel panel = getPageBase().initItemPanel(view.newChildId(), typeName, getModel(), builder.build());
view.add(panel);
}
add(view);
}
} catch (SchemaException e) {
LOGGER.error("Cannot create panel for {}, {}", getTypeName(), e.getMessage(), e);
// TODO opertion result? localization?
getSession().error("Cannot create panel for " + getTypeName());
}
}
use of org.apache.wicket.markup.html.panel.Panel in project midpoint by Evolveum.
the class DefaultContainerablePanel method populateNonContainer.
private void populateNonContainer(ListItem<? extends ItemWrapper<?, ?>> item) {
item.setOutputMarkupId(true);
ItemWrapper<?, ?> itemWrapper = item.getModelObject();
try {
QName typeName = itemWrapper.getTypeName();
if (item.getModelObject() instanceof ResourceAttributeWrapper) {
typeName = new QName("ResourceAttributeDefinition");
}
ItemPanelSettings settings = getSettings() != null ? getSettings().copy() : null;
Panel panel = getPageBase().initItemPanel("property", typeName, item.getModel(), settings);
panel.setOutputMarkupId(true);
item.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return itemWrapper.isVisible(getModelObject(), getVisibilityHandler());
}
});
item.add(panel);
} catch (SchemaException e1) {
throw new SystemException("Cannot instantiate " + itemWrapper.getTypeName());
}
}
use of org.apache.wicket.markup.html.panel.Panel in project midpoint by Evolveum.
the class DefaultContainerablePanel method populateContainer.
private void populateContainer(ListItem<PrismContainerWrapper<?>> container) {
PrismContainerWrapper<?> itemWrapper = container.getModelObject();
try {
ItemPanelSettings settings = getSettings() != null ? getSettings().copy() : null;
Panel panel = getPageBase().initItemPanel("container", itemWrapper.getTypeName(), container.getModel(), settings);
panel.setOutputMarkupId(true);
container.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return itemWrapper.isVisible(getModelObject(), getVisibilityHandler());
}
@Override
public boolean isEnabled() {
// TODO hack isMetadata - beacuse all links are then disabled.
return !itemWrapper.isReadOnly() || itemWrapper.isMetadata();
}
});
container.add(panel);
} catch (SchemaException e) {
throw new SystemException("Cannot instantiate panel for: " + itemWrapper.getDisplayName());
}
}
use of org.apache.wicket.markup.html.panel.Panel in project midpoint by Evolveum.
the class ShadowPanel method initLayout.
private void initLayout() {
try {
if (config != null) {
SingleContainerPanel attributesContainer = new SingleContainerPanel(ID_ATTRIBUTES, getModel(), config) {
@Override
protected ItemVisibility getVisibility(ItemWrapper itemWrapper) {
return checkShadowContainerVisibility(itemWrapper, ShadowPanel.this.getModel());
}
};
add(attributesContainer);
} else {
ItemPanelSettingsBuilder attributesSettingsBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel()));
Panel attributesPanel = getPageBase().initItemPanel(ID_ATTRIBUTES, ShadowAttributesType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ShadowType.F_ATTRIBUTES), attributesSettingsBuilder.build());
add(attributesPanel);
}
ItemPanelSettingsBuilder associationBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel()));
Panel associationsPanel = getPageBase().initItemPanel(ID_ASSOCIATIONS, ShadowAssociationType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ShadowType.F_ASSOCIATION), associationBuilder.build());
associationsPanel.add(new VisibleBehaviour(() -> checkAssociationsVisibility()));
add(associationsPanel);
ItemPanelSettingsBuilder activationBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel()));
Panel activationPanel = getPageBase().initItemPanel(ID_ACTIVATION, ActivationType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ShadowType.F_ACTIVATION), activationBuilder.build());
activationPanel.add(new VisibleBehaviour(() -> isActivationSupported()));
add(activationPanel);
ItemPanelSettingsBuilder passwordSettingsBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel()));
Panel passwordPanel = getPageBase().initItemPanel(ID_PASSWORD, PasswordType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ItemPath.create(ShadowType.F_CREDENTIALS, CredentialsType.F_PASSWORD)), passwordSettingsBuilder.build());
passwordPanel.add(new VisibleBehaviour(() -> isCredentialsSupported()));
add(passwordPanel);
} catch (SchemaException e) {
getSession().error("Cannot create panels for shadow, reason: " + e.getMessage());
LOGGER.trace("Cannot create panels for shadow, reason: {}", e.getMessage(), e);
}
}
use of org.apache.wicket.markup.html.panel.Panel in project midpoint by Evolveum.
the class PrismValuePanel method createInputComponent.
private Panel createInputComponent(String id, IModel<String> labelModel, Form form) {
ValueWrapper valueWrapper = valueWrapperModel.getObject();
ObjectWrapper objectWrapper = null;
if (valueWrapper.getItem().getContainer() != null) {
objectWrapper = valueWrapper.getItem().getContainer().getObject();
}
Item property = valueWrapper.getItem().getItem();
boolean required = property.getDefinition().getMinOccurs() > 0;
Panel component = createTypedInputComponent(id);
if (component instanceof InputPanel) {
InputPanel inputPanel = (InputPanel) component;
//adding valid from/to date range validator, if necessary
ItemPath activation = new ItemPath(UserType.F_ACTIVATION);
if (ActivationType.F_VALID_FROM.equals(property.getElementName())) {
DateValidator validator = WebComponentUtil.getRangeValidator(form, activation);
validator.setDateFrom((DateTimeField) inputPanel.getBaseFormComponent());
} else if (ActivationType.F_VALID_TO.equals(property.getElementName())) {
DateValidator validator = WebComponentUtil.getRangeValidator(form, activation);
validator.setDateTo((DateTimeField) inputPanel.getBaseFormComponent());
}
final List<FormComponent> formComponents = inputPanel.getFormComponents();
for (FormComponent formComponent : formComponents) {
formComponent.setLabel(labelModel);
formComponent.setRequired(required);
if (formComponent instanceof TextField) {
formComponent.add(new AttributeModifier("size", "42"));
}
formComponent.add(new AjaxFormComponentUpdatingBehavior("blur") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
}
});
// Validation occurs when submitting the form
// if (form != null) {
// AjaxFormValidatingBehavior validator = new AjaxFormValidatingBehavior(form, "Blur");
//
// formComponent.add(validator);
// }
}
}
if (component == null) {
throw new RuntimeException("Cannot create input component for item " + property + " (" + valueWrapper + ") in " + objectWrapper);
}
return component;
}
Aggregations