use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.
the class FocusProjectionsPanel method initLayout.
protected void initLayout() {
IModel<Integer> deadShadows = new ReadOnlyModel<>(this::countDeadShadows);
Label label = new Label(ID_DEAD_SHADOWS, deadShadows);
label.add(new VisibleBehaviour(() -> deadShadows.getObject() > 0));
add(label);
MultivalueContainerListPanelWithDetailsPanel<ShadowType> multivalueContainerListPanel = new MultivalueContainerListPanelWithDetailsPanel<ShadowType>(ID_SHADOW_TABLE, ShadowType.class, getPanelConfiguration()) {
private static final long serialVersionUID = 1L;
@Override
protected ISelectableDataProvider<ShadowType, PrismContainerValueWrapper<ShadowType>> createProvider() {
return new ProjectionsListProvider(FocusProjectionsPanel.this, getSearchModel(), loadShadowModel()) {
@Override
protected PageStorage getPageStorage() {
PageStorage storage = getSession().getSessionStorage().getPageStorageMap().get(SessionStorage.KEY_FOCUS_PROJECTION_TABLE);
if (storage == null) {
storage = getSession().getSessionStorage().initPageStorage(SessionStorage.KEY_FOCUS_PROJECTION_TABLE);
}
return storage;
}
};
}
@Override
protected void newItemPerformed(AjaxRequestTarget target, AssignmentObjectRelation relation) {
List<QName> supportedTypes = Arrays.asList(ResourceType.COMPLEX_TYPE);
PageBase pageBase = FocusProjectionsPanel.this.getPageBase();
ObjectBrowserPanel<ResourceType> resourceSelectionPanel = new ObjectBrowserPanel<>(pageBase.getMainPopupBodyId(), ResourceType.class, supportedTypes, true, pageBase) {
private static final long serialVersionUID = 1L;
@Override
protected void addPerformed(AjaxRequestTarget target, QName type, List<ResourceType> selected) {
FocusProjectionsPanel.this.addSelectedAccountPerformed(target, selected);
target.add(getPageBase().getFeedbackPanel());
}
};
resourceSelectionPanel.setOutputMarkupId(true);
pageBase.showMainPopup(resourceSelectionPanel, target);
}
@Override
protected boolean isCreateNewObjectVisible() {
PrismObjectDefinition<F> def = FocusProjectionsPanel.this.getObjectWrapperModel().getObject().getObject().getDefinition();
PrismReferenceDefinition ref = def.findReferenceDefinition(UserType.F_LINK_REF);
return (ref.canRead() && ref.canAdd());
}
@Override
protected IModel<PrismContainerWrapper<ShadowType>> getContainerModel() {
return null;
}
@Override
protected TableId getTableId() {
return TableId.FOCUS_PROJECTION_TABLE;
}
@Override
protected List<IColumn<PrismContainerValueWrapper<ShadowType>, String>> createDefaultColumns() {
return initBasicColumns();
}
@Override
protected List<InlineMenuItem> createInlineMenu() {
return createShadowMenu();
}
@Override
public void editItemPerformed(AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ShadowType>> rowModel, List<PrismContainerValueWrapper<ShadowType>> listItems) {
loadShadowIfNeeded(rowModel, target);
if (listItems != null) {
listItems.forEach(value -> {
if (((ShadowWrapper) value.getParent()).isLoadWithNoFetch()) {
loadFullShadow((PrismObjectValueWrapper) value, target);
}
});
}
super.editItemPerformed(target, rowModel, listItems);
}
@Override
protected Search createSearch(Class<ShadowType> type) {
Search search = super.createSearch(type);
PropertySearchItem<Boolean> defaultDeadItem = search.findPropertySearchItem(ShadowType.F_DEAD);
if (defaultDeadItem != null) {
defaultDeadItem.setVisible(false);
}
addDeadSearchItem(search);
return search;
}
@Override
protected List<SearchItemDefinition> initSearchableItems(PrismContainerDefinition<ShadowType> containerDef) {
List<SearchItemDefinition> defs = new ArrayList<>();
SearchFactory.addSearchRefDef(containerDef, ShadowType.F_RESOURCE_REF, defs, AreaCategoryType.ADMINISTRATION, getPageBase());
SearchFactory.addSearchPropertyDef(containerDef, ShadowType.F_NAME, defs);
SearchFactory.addSearchPropertyDef(containerDef, ShadowType.F_INTENT, defs);
SearchFactory.addSearchPropertyDef(containerDef, ShadowType.F_KIND, defs);
return defs;
}
@Override
protected MultivalueContainerDetailsPanel<ShadowType> getMultivalueContainerDetailsPanel(ListItem<PrismContainerValueWrapper<ShadowType>> item) {
return FocusProjectionsPanel.this.getMultivalueContainerDetailsPanel(item);
}
};
add(multivalueContainerListPanel);
setOutputMarkupId(true);
}
use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.
the class MainMenuPanel method initLayout.
private void initLayout() {
WebMarkupContainer item = new WebMarkupContainer(ID_ITEM);
item.setOutputMarkupId(true);
item.add(AttributeModifier.append("class", new IModel<String>() {
private static final long serialVersionUID = 1L;
@Override
public String getObject() {
MainMenuItem mainMenuItem = getModelObject();
if (mainMenuItem.isMenuActive(getPageBase())) {
return "active";
}
if (mainMenuItem.hasActiveSubmenu(getPageBase())) {
return "active menu-open";
}
return null;
}
}));
add(item);
item.add(AttributeModifier.append("style", new ReadOnlyModel<>(() -> isMenuExpanded() ? "" : "display: none;")));
WebMarkupContainer link = new AjaxLink<Void>(ID_LINK) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
mainMenuPerformed();
}
};
item.add(link);
WebMarkupContainer icon = new WebMarkupContainer(ID_ICON);
icon.add(AttributeModifier.replace("class", new PropertyModel<>(getModel(), MainMenuItem.F_ICON_CLASS)));
link.add(icon);
Label label = new Label(ID_LABEL, new StringResourceModel("${nameModel}", getModel()).setDefaultValue(new PropertyModel<>(getModel(), "nameModel")));
link.add(label);
final PropertyModel<String> bubbleModel = new PropertyModel<>(getModel(), MainMenuItem.F_BUBBLE_LABEL);
Label bubble = new Label(ID_BUBBLE, bubbleModel);
bubble.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return bubbleModel.getObject() != null;
}
});
link.add(bubble);
WebMarkupContainer arrow = new WebMarkupContainer(ID_ARROW);
arrow.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return getModelObject().containsSubMenu() && bubbleModel.getObject() == null;
}
});
link.add(arrow);
WebMarkupContainer submenu = new WebMarkupContainer(ID_SUBMENU);
item.add(submenu);
ListView<MenuItem> subItem = new ListView<MenuItem>(ID_SUB_ITEM, new PropertyModel<>(getModel(), MainMenuItem.F_ITEMS)) {
@Override
protected void populateItem(ListItem<MenuItem> listItem) {
createSubmenu(listItem);
}
};
submenu.add(subItem);
}
use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.
the class UserMenuPanel method loadJpegPhotoModel.
private IModel<AbstractResource> loadJpegPhotoModel() {
return new ReadOnlyModel<>(() -> {
GuiProfiledPrincipal principal = AuthUtil.getPrincipalUser();
if (principal == null) {
return null;
}
CompiledGuiProfile profile = principal.getCompiledGuiProfile();
byte[] jpegPhoto = profile.getJpegPhoto();
if (jpegPhoto == null) {
URL placeholder = UserMenuPanel.class.getClassLoader().getResource("static/img/placeholder.png");
if (placeholder == null) {
return null;
}
try {
jpegPhoto = IOUtils.toByteArray(placeholder);
} catch (IOException e) {
LOGGER.error("Cannot load placeholder for photo.");
return null;
}
}
return new ByteArrayResource("image/jpeg", jpegPhoto);
});
}
use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.
the class CaseWorkItemSummaryPanel method getDisplayNameModel.
@Override
protected IModel<String> getDisplayNameModel() {
return new ReadOnlyModel<>(() -> {
CaseWorkItemType caseWorkItemType = CaseWorkItemSummaryPanel.this.getModelObject();
CaseType caseType = CaseTypeUtil.getCase(caseWorkItemType);
return defaultIfNull(WfGuiUtil.getLocalizedProcessName(caseType != null ? caseType.getApprovalContext() : null, CaseWorkItemSummaryPanel.this), caseWorkItemType != null ? WebComponentUtil.getTranslatedPolyString(caseWorkItemType.getName()) : null);
});
}
use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.
the class CorrelationContextPanel method createCorrelationContextModel.
private IModel<CorrelationContextDto> createCorrelationContextModel() {
return new ReadOnlyModel<>(() -> {
CaseType aCase = getObjectDetailsModels().getObjectType();
CaseCorrelationContextType correlationContext = aCase.getCorrelationContext();
if (correlationContext == null || CorrelationCaseUtil.getOwnerOptions(aCase) == null) {
return null;
}
Task task = getPageBase().createSimpleTask(OP_LOAD);
OperationResult result = task.getResult();
try {
return new CorrelationContextDto(aCase, getPageBase(), task, result);
} catch (Throwable t) {
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load correlation context for {}", t, aCase);
return null;
} finally {
result.computeStatusIfUnknown();
getPageBase().showResult(result, false);
}
});
}
Aggregations