List of usage examples for org.apache.wicket.ajax.form OnChangeAjaxBehavior OnChangeAjaxBehavior
public OnChangeAjaxBehavior()
From source file:com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel.java
License:Apache License
public AutoCompleteTextPanel(String id, final IModel<T> model, Class<T> type) { super(id);//from w w w . j av a 2 s . c o m AutoCompleteSettings autoCompleteSettings = createAutoCompleteSettings(); // this has to be copied because the AutoCompleteTextField dies if renderer=null final AutoCompleteTextField<T> input = new AutoCompleteTextField<T>(ID_INPUT, model, type, autoCompleteSettings) { private static final long serialVersionUID = 1L; @Override protected Iterator<T> getChoices(String input) { return getIterator(input); } }; input.setType(type); if (model instanceof LookupPropertyModel) { input.add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { checkInputValue(input, target, (LookupPropertyModel<T>) model); } }); } add(input); }
From source file:com.evolveum.midpoint.gui.api.component.FocusBrowserPanel.java
License:Apache License
private void initLayout(Class<T> type, final List<QName> supportedTypes, final boolean multiselect) { WebMarkupContainer typePanel = new WebMarkupContainer(ID_TYPE_PANEL); typePanel.setOutputMarkupId(true);// w w w. j ava2 s .c o m typePanel.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return supportedTypes.size() != 1; } }); add(typePanel); DropDownChoice<QName> typeSelect = new DropDownChoice(ID_TYPE, typeModel, new ListModel(supportedTypes), new QNameChoiceRenderer()); typeSelect.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { ObjectListPanel<T> listPanel = (ObjectListPanel<T>) get(ID_TABLE); listPanel = createObjectListPanel(qnameToCompileTimeClass(typeModel.getObject()), multiselect); addOrReplace(listPanel); target.add(listPanel); } }); typePanel.add(typeSelect); ObjectListPanel<T> listPanel = createObjectListPanel(type, multiselect); add(listPanel); AjaxButton addButton = new AjaxButton(ID_BUTTON_ADD, createStringResource("userBrowserDialog.button.addButton")) { @Override public void onClick(AjaxRequestTarget target) { List<T> selected = ((PopupObjectListPanel) getParent().get(ID_TABLE)).getSelectedObjects(); QName type = FocusBrowserPanel.this.typeModel.getObject(); FocusBrowserPanel.this.addPerformed(target, type, selected); } }; addButton.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return multiselect; } }); add(addButton); }
From source file:com.evolveum.midpoint.gui.api.component.MultiTypesMemberPopupTabPanel.java
License:Apache License
@Override protected void onInitialize() { super.onInitialize(); WebMarkupContainer typePanel = new WebMarkupContainer(ID_TYPE_SELECT_PANEL); typePanel.setOutputMarkupId(true);/*w ww .j a v a 2s . c om*/ add(typePanel); DropDownChoice<ObjectTypes> typeSelect = new DropDownChoice<>(ID_TYPE, new LoadableModel<ObjectTypes>() { @Override protected ObjectTypes load() { return defaultObjectType; } }, getSupportedTypesList(), new EnumChoiceRenderer<>(this)); typeSelect.add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { defaultObjectType = typeSelect.getModelObject(); MultiTypesMemberPopupTabPanel.this.addOrReplace(initObjectListPanel()); target.add(MultiTypesMemberPopupTabPanel.this); } }); typePanel.add(typeSelect); add(typePanel); }
From source file:com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel.java
License:Apache License
private void initLayout(Class<? extends O> type, final List<QName> supportedTypes, final boolean multiselect) { WebMarkupContainer typePanel = new WebMarkupContainer(ID_TYPE_PANEL); typePanel.setOutputMarkupId(true);//from ww w.ja va2 s . co m typePanel.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return supportedTypes.size() != 1; } }); add(typePanel); DropDownChoice<QName> typeSelect = new DropDownChoice<QName>(ID_TYPE, typeModel, new ListModel<QName>(supportedTypes), new QNameChoiceRenderer()); typeSelect.add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { ObjectListPanel<O> listPanel = (ObjectListPanel<O>) get(ID_TABLE); listPanel = createObjectListPanel(qnameToCompileTimeClass(typeModel.getObject()), multiselect); addOrReplace(listPanel); target.add(listPanel); } }); typePanel.add(typeSelect); ObjectListPanel<O> listPanel = createObjectListPanel(type, multiselect); add(listPanel); AjaxButton addButton = new AjaxButton(ID_BUTTON_ADD, createStringResource("userBrowserDialog.button.addButton")) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { List<O> selected = ((PopupObjectListPanel) getParent().get(ID_TABLE)).getSelectedObjects(); QName type = ObjectBrowserPanel.this.typeModel.getObject(); ObjectBrowserPanel.this.addPerformed(target, type, selected); } }; addButton.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return multiselect; } }); add(addButton); }
From source file:com.evolveum.midpoint.gui.api.component.TypedAssignablePanel.java
License:Apache License
private void initLayout(Class<T> type, final boolean multiselect) { DropDownChoice<QName> typeSelect = new DropDownChoice(ID_TYPE, typeModel, new ListModel(WebComponentUtil.createAssignableTypesList()), new QNameChoiceRenderer()); typeSelect.add(new OnChangeAjaxBehavior() { @Override/*w w w .j a v a 2 s . c o m*/ protected void onUpdate(AjaxRequestTarget target) { target.add(get(ID_TABLES_CONTAINER)); target.add(addOrReplace(createCountContainer())); } }); typeSelect.setOutputMarkupId(true); add(typeSelect); WebMarkupContainer tablesContainer = new WebMarkupContainer(ID_TABLES_CONTAINER); tablesContainer.setOutputMarkupId(true); add(tablesContainer); PopupObjectListPanel<T> listRolePanel = createObjectListPanel(ID_ROLE_TABLE, ID_SELECTED_ROLES, RoleType.COMPLEX_TYPE); tablesContainer.add(listRolePanel); PopupObjectListPanel<T> listResourcePanel = createObjectListPanel(ID_RESOURCE_TABLE, ID_SELECTED_RESOURCES, ResourceType.COMPLEX_TYPE); tablesContainer.add(listResourcePanel); PopupObjectListPanel<T> listOrgPanel = createObjectListPanel(ID_ORG_TABLE, ID_SELECTED_ORGS, OrgType.COMPLEX_TYPE); tablesContainer.add(listOrgPanel); PopupObjectListPanel<T> listServicePanel = createObjectListPanel(ID_SERVICE_TABLE, ID_SELECTED_SERVICES, ServiceType.COMPLEX_TYPE); tablesContainer.add(listServicePanel); WebMarkupContainer countContainer = createCountContainer(); add(countContainer); AjaxButton addButton = new AjaxButton(ID_BUTTON_ASSIGN, createStringResource("userBrowserDialog.button.addButton")) { @Override public void onClick(AjaxRequestTarget target) { List<T> selected = getSelectedData(ID_ROLE_TABLE); selected.addAll(getSelectedData(ID_RESOURCE_TABLE)); selected.addAll(getSelectedData(ID_ORG_TABLE)); selected.addAll(getSelectedData(ID_SERVICE_TABLE)); TypedAssignablePanel.this.addPerformed(target, selected); } }; addButton.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return multiselect; } }); add(addButton); }
From source file:com.evolveum.midpoint.gui.impl.page.admin.configuration.component.NotificationConfigTabPanel.java
License:Apache License
protected void initLayout() { PropertyWrapperFromContainerWrapperModel<MailConfigurationType, NotificationConfigurationType> mailConfig = new PropertyWrapperFromContainerWrapperModel<MailConfigurationType, NotificationConfigurationType>( getModel().getObject(), NotificationConfigurationType.F_MAIL); add(createHeader(ID_MAIL_CONFIG_HEADER, mailConfig.getObject().getItemDefinition().getTypeName().getLocalPart() + ".details")); Form form = new Form<>("form"); mailConfigType = new RealValueFromSingleValuePropertyWrapperModel<MailConfigurationType>(mailConfig) .getObject();/*w w w.j a v a 2 s .c o m*/ if (mailConfigType == null) { mailConfigType = new MailConfigurationType(); ((PrismPropertyValue<MailConfigurationType>) mailConfig.getObject().getValues().get(0).getValue()) .setValue(mailConfigType); } add(new TextFormGroup(ID_DEFAULT_FROM, new PropertyModel<String>(mailConfigType, "defaultFrom"), createStringResource( mailConfig.getObject().getItemDefinition().getTypeName().getLocalPart() + ".defaultFrom"), "", getInputCssClass(), false, true)); add(new TextFormGroup(ID_REDIRECT_TO_FILE, new PropertyModel<String>(mailConfigType, "redirectToFile"), createStringResource(mailConfig.getObject().getItemDefinition().getTypeName().getLocalPart() + ".redirectToFile"), "", getInputCssClass(), false, true)); add(new TextFormGroup(ID_LOG_TO_FILE, new PropertyModel<String>(mailConfigType, "logToFile"), createStringResource( mailConfig.getObject().getItemDefinition().getTypeName().getLocalPart() + ".logToFile"), "", getInputCssClass(), false, true)); add(new TriStateFormGroup(ID_DEBUG, new PropertyModel<Boolean>(mailConfigType, "debug"), createStringResource( mailConfig.getObject().getItemDefinition().getTypeName().getLocalPart() + ".debug"), "", getInputCssClass(), false, true)); add(createHeader(ID_MAIL_SERVER_CONFIG_HEADER, MailServerConfigurationType.COMPLEX_TYPE.getLocalPart() + ".details")); add(initServersTable()); add(createHeader(ID_FILE_CONFIG_HEADER, FileConfigurationType.COMPLEX_TYPE.getLocalPart() + ".details")); PropertyWrapperFromContainerWrapperModel<FileConfigurationType, NotificationConfigurationType> fileConfig = new PropertyWrapperFromContainerWrapperModel<FileConfigurationType, NotificationConfigurationType>( getModel().getObject(), NotificationConfigurationType.F_FILE); WebMarkupContainer files = new WebMarkupContainer(ID_FILE_CONFIG); files.setOutputMarkupId(true); add(files); ListView<ValueWrapper<FileConfigurationType>> values = new ListView<ValueWrapper<FileConfigurationType>>( "values", new PropertyModel<>(fileConfig, "values")) { private static final long serialVersionUID = 1L; @Override protected void populateItem(final ListItem<ValueWrapper<FileConfigurationType>> item) { FileConfigurationType fileConfigType = item.getModelObject().getValue().getRealValue(); item.add(createHeader(ID_VALUE_HEADER, fileConfigType == null || fileConfigType.getName() == null || fileConfigType.getName().isEmpty() ? (FileConfigurationType.COMPLEX_TYPE.getLocalPart() + ".details") : fileConfigType.getName())); AjaxLink removeButton = new AjaxLink(ID_REMOVE_BUTTON) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { ((PrismPropertyValue<FileConfigurationType>) item.getModelObject().getValue()) .setValue(null); item.getParent().remove(item.getId()); target.add(files); } }; item.add(removeButton); TextFormGroup name = new TextFormGroup(ID_FILE_NAME, fileConfigType != null ? new PropertyModel<String>(fileConfigType, "name") : Model.of(""), createStringResource(fileConfigType == null ? "" : (fileConfigType.COMPLEX_TYPE.getLocalPart() + ".name")), "", getInputCssClass(), false, true); name.getField().add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { ((FileConfigurationType) item.getModelObject().getValue().getRealValue()) .setName(name.getModelObject()); } }); item.add(name); TextFormGroup file = new TextFormGroup(ID_FILE_PATH, fileConfigType != null ? new PropertyModel<String>(fileConfigType, "file") : Model.of(""), createStringResource(fileConfigType == null ? "" : (fileConfigType.COMPLEX_TYPE.getLocalPart() + ".file")), "", getInputCssClass(), false, true); file.getField().add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { ((FileConfigurationType) item.getModelObject().getValue().getRealValue()) .setFile(file.getModelObject()); } }); item.add(file); item.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return fileConfigType != null; } }); } }; values.add(new AttributeModifier("class", "col-md-6")); values.setReuseItems(true); files.add(values); AjaxLink addButton = new AjaxLink(ID_ADD_BUTTON) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { ValueWrapper<FileConfigurationType> newValue = fileConfig.getObject().createAddedValue(); ((PrismPropertyValue<FileConfigurationType>) newValue.getValue()) .setValue(new FileConfigurationType()); fileConfig.getObject().getValues().add(newValue); target.add(files); } }; add(addButton); }
From source file:com.evolveum.midpoint.web.component.dialog.DeleteAllDialog.java
License:Apache License
private void initLayout(WebMarkupContainer content) { CheckBox deleteUsersCheckbox = new CheckBox(ID_CHB_USERS, new PropertyModel<Boolean>(model, DeleteAllDto.F_USERS)); deleteUsersCheckbox.add(new OnChangeAjaxBehavior() { @Override/* w w w .j ava 2 s . co m*/ protected void onUpdate(AjaxRequestTarget target) { updateLabelModel(target, ID_TEXT_USERS); } }); content.add(deleteUsersCheckbox); CheckBox deleteOrgsCheckbox = new CheckBox(ID_CHB_ORG, new PropertyModel<Boolean>(model, DeleteAllDto.F_ORGS)); deleteOrgsCheckbox.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { updateLabelModel(target, ID_TEXT_ORGS); } }); content.add(deleteOrgsCheckbox); CheckBox deleteAccountShadowsCheckbox = new CheckBox(ID_CHB_ACCOUNT_SHADOW, new PropertyModel<Boolean>(model, DeleteAllDto.F_ACC_SHADOW)); deleteAccountShadowsCheckbox.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { updateLabelModel(target, ID_TEXT_ACC_SHADOWS); } }); content.add(deleteAccountShadowsCheckbox); CheckBox deleteNonAccountShadowsCheckbox = new CheckBox(ID_CHB_NON_ACCOUNT_SHADOW, new PropertyModel<Boolean>(model, DeleteAllDto.F_NON_ACC_SHADOW)); deleteNonAccountShadowsCheckbox.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { updateLabelModel(target, ID_TEXT_NON_ACC_SHADOW); } }); content.add(deleteNonAccountShadowsCheckbox); Label usersLabel = new Label(ID_TEXT_USERS, new LoadableModel<String>() { @Override protected String load() { return createDeleteUsersMessage(); } }); usersLabel.setOutputMarkupId(true); content.add(usersLabel); Label orgsLabel = new Label(ID_TEXT_ORGS, new LoadableModel<String>() { @Override protected String load() { return createDeleteOrgUnitsMessage(); } }); orgsLabel.setOutputMarkupId(true); content.add(orgsLabel); Label accShadowsLabel = new Label(ID_TEXT_ACC_SHADOWS, new LoadableModel<String>() { @Override protected String load() { return createDeleteAccountShadowsMessage(); } }); accShadowsLabel.setOutputMarkupId(true); content.add(accShadowsLabel); Label nonAccShadowsLabel = new Label(ID_TEXT_NON_ACC_SHADOW, new LoadableModel<String>() { @Override protected String load() { return createDeleteNonAccountShadowsMessage(); } }); nonAccShadowsLabel.setOutputMarkupId(true); content.add(nonAccShadowsLabel); Label countLabel = new Label(ID_TOTAL, new LoadableModel<String>() { @Override protected String load() { return createTotalMessage(); } }); countLabel.setOutputMarkupId(true); content.add(countLabel); AjaxButton yesButton = new AjaxButton(ID_YES, new StringResourceModel("deleteAllDialog.yes", this, null)) { @Override public void onClick(AjaxRequestTarget target) { yesPerformed(target); } }; content.add(yesButton); AjaxButton noButton = new AjaxButton(ID_NO, new StringResourceModel("deleteAllDialog.no", this, null)) { @Override public void onClick(AjaxRequestTarget target) { noPerformed(target); } }; content.add(noButton); }
From source file:com.evolveum.midpoint.web.component.input.RelationDropDownChoicePanel.java
License:Apache License
@Override protected void onInitialize() { super.onInitialize(); if (!allowNull && defaultRelation == null) { defaultRelation = supportedRelations.size() > 0 ? supportedRelations.get(0) : PrismConstants.Q_ANY; }/*from www .ja v a2s .c o m*/ DropDownFormGroup<QName> input = new DropDownFormGroup<QName>(ID_INPUT, Model.of(defaultRelation), new ListModel<>(supportedRelations), getRenderer(), createStringResource("relationDropDownChoicePanel.relation"), "relationDropDownChoicePanel.tooltip.relation", true, "col-md-4", "col-md-8", !allowNull); input.getInput().add(new EmptyOnChangeAjaxFormUpdatingBehavior()); input.getInput().add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { RelationDropDownChoicePanel.this.onValueChanged(target); } }); add(input); setOutputMarkupId(true); setOutputMarkupPlaceholderTag(true); }
From source file:com.evolveum.midpoint.web.page.admin.configuration.component.LoggingConfigPanel.java
License:Apache License
private void initRoot() { DropDownChoice<LoggingLevelType> rootLevel = new DropDownChoice<LoggingLevelType>(ID_ROOT_LEVEL, new PropertyModel<LoggingLevelType>(getModel(), LoggingDto.F_ROOT_LEVEL), WebMiscUtil.createReadonlyModelFromEnum(LoggingLevelType.class)); add(rootLevel);//w w w .j a v a2s . c o m DropDownChoice<String> rootAppender = new DropDownChoice<String>(ID_ROOT_APPENDER, new PropertyModel<String>(getModel(), LoggingDto.F_ROOT_APPENDER), createAppendersListModel()); rootAppender.setNullValid(true); rootAppender.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { rootAppenderChangePerformed(target); } }); add(rootAppender); }
From source file:com.evolveum.midpoint.web.page.admin.configuration.component.NotificationConfigPanel.java
License:Apache License
@Override protected void initLayout() { TextField<String> defaultFromField = WebComponentUtil.createAjaxTextField(ID_DEFAULT_FROM, new PropertyModel<String>(getModel(), "defaultFrom")); CheckBox debugCheck = WebComponentUtil.createAjaxCheckBox(ID_DEBUG, new PropertyModel<Boolean>(getModel(), "debug")); DropDownChoice mailServerConfigChooser = new DropDownChoice<>(ID_MAIL_SERVER, new PropertyModel<MailServerConfigurationTypeDto>(getModel(), NotificationConfigurationDto.F_SELECTED_SERVER), new AbstractReadOnlyModel<List<MailServerConfigurationTypeDto>>() { @Override/*from w ww. ja v a2 s .c o m*/ public List<MailServerConfigurationTypeDto> getObject() { return getModel().getObject().getServers(); } }, new ChoiceableChoiceRenderer<MailServerConfigurationTypeDto>()); mailServerConfigChooser.setNullValid(true); mailServerConfigChooser.add(new AjaxFormSubmitBehavior("click") { @Override protected void onEvent(AjaxRequestTarget target) { getForm().onFormSubmitted(); } }); mailServerConfigChooser.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { preparePasswordFieldPlaceholder(); target.add(NotificationConfigPanel.this); } }); add(mailServerConfigChooser); Label serverConfigTooltip = new Label(ID_MAIL_SERVER_TOOLTIP); serverConfigTooltip.add(new InfoTooltipBehavior()); add(serverConfigTooltip); WebMarkupContainer serverConfigContainer = new WebMarkupContainer(ID_MAIL_SERVER_CONFIG_CONTAINER); serverConfigContainer.setOutputMarkupId(true); serverConfigContainer.setOutputMarkupPlaceholderTag(true); serverConfigContainer.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { if (getModelObject() != null) { return getModelObject().getSelectedServer() != null; } return false; } }); add(serverConfigContainer); TextField<String> hostField = WebComponentUtil.createAjaxTextField(ID_HOST, new PropertyModel<String>(getModel(), "selectedServer.host")); TextField<Integer> portField = WebComponentUtil.createAjaxTextField(ID_PORT, new PropertyModel<Integer>(getModel(), "selectedServer.port")); TextField<String> userNameField = WebComponentUtil.createAjaxTextField(ID_USERNAME, new PropertyModel<String>(getModel(), "selectedServer.username")); PasswordTextField passwordField = new PasswordTextField(ID_PASSWORD, new PropertyModel<String>(getModel(), "selectedServer.password")); passwordField.setRequired(false); passwordField.add(new EmptyOnChangeAjaxFormUpdatingBehavior()); TextField<String> redirectToFileField = WebComponentUtil.createAjaxTextField(ID_REDIRECT_TO_FILE, new PropertyModel<String>(getModel(), "redirectToFile")); DropDownFormGroup transportSecurity = new DropDownFormGroup<>(ID_TRANSPORT_SECURITY, new PropertyModel<MailTransportSecurityType>(getModel(), "selectedServer.mailTransportSecurityType"), WebComponentUtil.createReadonlyModelFromEnum(MailTransportSecurityType.class), new EnumChoiceRenderer<MailTransportSecurityType>(this), createStringResource("SystemConfigPanel.mail.transportSecurity"), ID_LABEL_SIZE, ID_INPUT_SIZE, false); // transportSecurity.add(new EmptyOnChangeAjaxFormUpdatingBehavior()); serverConfigContainer.add(hostField); serverConfigContainer.add(portField); serverConfigContainer.add(userNameField); serverConfigContainer.add(passwordField); serverConfigContainer.add(transportSecurity); add(defaultFromField); add(debugCheck); add(redirectToFileField); AjaxSubmitLink buttonAddNewMailServerConfig = new AjaxSubmitLink(ID_BUTTON_ADD_NEW_MAIL_SERVER_CONFIG) { @Override protected void onSubmit(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) { MailServerConfigurationTypeDto newConfig = new MailServerConfigurationTypeDto(); newConfig.setHost(getString("SystemConfigPanel.mail.config.placeholder")); if (getModelObject() != null) { getModelObject().getServers().add(newConfig); getModelObject().setSelectedServer(newConfig); } preparePasswordFieldPlaceholder(); target.add(NotificationConfigPanel.this, getPageBase().getFeedbackPanel()); } @Override protected void onError(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) { target.add(getPageBase().getFeedbackPanel()); } }; add(buttonAddNewMailServerConfig); AjaxSubmitLink removeMailServerConfig = new AjaxSubmitLink(ID_BUTTON_REMOVE_MAIL_SERVER_CONFIG) { @Override protected void onSubmit(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) { if (getModelObject() != null) { NotificationConfigurationDto notificationConfig = getModelObject(); MailServerConfigurationTypeDto selected = notificationConfig.getSelectedServer(); if (notificationConfig.getServers().contains(selected)) { notificationConfig.getServers().remove(selected); notificationConfig.setSelectedServer(null); } else { warn(getString("SystemConfigPanel.mail.server.remove.warn")); } target.add(NotificationConfigPanel.this, getPageBase().getFeedbackPanel()); } } @Override protected void onError(AjaxRequestTarget target, org.apache.wicket.markup.html.form.Form<?> form) { target.add(getPageBase().getFeedbackPanel()); } }; removeMailServerConfig.add(new AttributeAppender("class", new AbstractReadOnlyModel<String>() { @Override public String getObject() { if (getModelObject() != null && getModelObject().getSelectedServer() != null) { return null; } else { return " disabled"; } } })); add(removeMailServerConfig); }