List of usage examples for org.apache.wicket.markup.html.panel Panel setEnabled
public final Component setEnabled(final boolean enabled)
From source file:gr.interamerican.wicket.markup.html.panel.crud.picker.CrudPickerPanel.java
License:Open Source License
@SuppressWarnings({ "serial", "nls", "unchecked" }) @Override/* ww w . j a v a2s . co m*/ protected void init() { super.init(); beanClass = (Class<B>) getDefinition().getBeanModel().getObject().getClass(); IModel<String> deleteLabel = StringResourceUtils.getResourceModel(WellKnownResourceIds.CPP_DELETE_BTN_LABEL, this, getDefinition().getDeleteLabelModel(), "Delete"); IModel<String> newLabel = StringResourceUtils.getResourceModel(WellKnownResourceIds.CPP_NEW_BTN_LABEL, this, getDefinition().getNewLabelModel(), "New"); IModel<String> editLabel = StringResourceUtils.getResourceModel(WellKnownResourceIds.CPP_EDIT_BTN_LABEL, this, getDefinition().getEditLabelModel(), "Edit"); IModel<String> viewLabel = StringResourceUtils.getResourceModel(WellKnownResourceIds.CPP_VIEW_BTN_LABEL, this, getDefinition().getViewLabelModel(), "View"); CallbackAction deleteAction = getDefinition().getDeleteAction(); CallbackAction updateAction = getDefinition().getUpdateAction(); CallbackAction saveAction = getDefinition().getSaveAction(); /* * We will set the caller of the Edit/New/Delete actions as this panel. * We will not allow the SingleBeanPanel to set itself as the caller of * the Edit/Delete actions, because we need to be able to hide it in case * of a DataException and still show the feedback message. */ if (deleteAction != null) { deleteAction.setCaller(this); } if (updateAction != null) { updateAction.setCaller(this); } if (saveAction != null) { saveAction.setCaller(this); } /* * 1. Retrieve the currently selected item from the radioGroup model. * 2. Set this item as the model object of the beanModel of this definition * 3. If a deleteValidator is supplied, check against it. If it does not pass * stop the form processing here. * 3. Clients of this panel that have supplied the beanModel, may retrieve * the item to be deleted from it. * 4. After the deleteAction provided by the client has been performed, the * EditAction will repaint the results table. */ deleteButton = new CallbackAjaxButton(DELETE_BUTTON_ID, deleteLabel, new RefreshTableAction(new DeleteItemAction(deleteAction)), getFeedBackPanel()) { @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { if (!ServicePanelUtils.authorizedByFlag(getDefinition().getDeleteActionFlag())) { target.add(feedBackPanel); CrudPickerPanel.this.error(getDefinition().getDeleteActionFlag().getDownMessage()); return; } B selection = radioGroup.getModelObject(); if (selection == null) { return; } getDefinition().getBeanModel().setObject(selection); AjaxEnabledCondition<B> deleteValidator = getDefinition().getDeleteValidator(); if (deleteValidator != null && !deleteValidator.check(selection, target)) { return; } super.onSubmit(target, form); } }; if (getDefinition().getRequestConfirmOnDelete()) { AttributeModifier deleteConfirmation = new JavascriptEventConfirmation("onclick", "Are you sure?"); deleteButton.add(deleteConfirmation); } ServicePanelUtils.disableButton(getDefinition(), getDefinition().getDeleteActionFlag(), deleteButton); /* * 1. Retrieve the currently selected item from the radioGroup model. * 2. Copy the item, we do not want to add unsaved changes to our models. * 3. (optional) Read the selected item from the persistence layer. * 4. Set this item as the model object of the beanModel of this definition * 5. Create a new SingleBeanPanel. In the definition of this panel, put * the beanModel, as well as the updateAction received from the client * of the CrudPickerPanel wrapped in an EditItemAction that repaints * the results table. */ editButton = new AjaxButton(EDIT_BUTTON_ID, editLabel) { @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { if (!ServicePanelUtils.authorizedByFlag(getDefinition().getUpdateActionFlag())) { target.add(feedBackPanel); CrudPickerPanel.this.error(getDefinition().getUpdateActionFlag().getDownMessage()); return; } B selection = radioGroup.getModelObject(); if (selection == null) { return; } AjaxEnabledCondition<B> preEditValidator = getDefinition().getPreEditValidator(); if (preEditValidator != null && !preEditValidator.check(selection, target)) { return; } /* * When copying we do not update the definition list. The point * is to leave it intact. If the update succeeds the updated * instance will be properly replaced. If not, the original instance * will still be on the list. */ selection = copyBean(selection); getDefinition().getBeanModel().setObject(selection); /* * the instance might be changed here, so we resynch */ if (getDefinition().getReadBeforeEdit()) { B updatedSelection = selection; updatedSelection = readBean(); resynchDefinition(selection, updatedSelection); } AjaxEnabledCondition<B> formValidator = getDefinition().getUpdateValidator(); SingleBeanPanelDef<B> sbpDef = createSingleBeanPanelDef( new RefreshTableAction(new EditItemAction(getDefinition().getUpdateAction())), formValidator, PanelCreatorMode.EDIT); Panel replacement = new BeanPanel(sbpDef); checkSingleBeanPanelButtonsState(replacement); beanPanel.replaceWith(replacement); beanPanel = replacement; beanPanel.setVisible(true); target.add(CrudPickerPanel.this); } }; ServicePanelUtils.disableButton(getDefinition(), getDefinition().getUpdateActionFlag(), editButton); /* * 1. Retrieve the currently selected item from the radioGroup model. * 2. (optional) Read the selected item from the persistence layer. * 3. Set this item as the model object of the beanModel of this definition * 4. Create a new SingleBeanPanel. In the definition of this panel, put * the beanModel and a null beanAction. Also, disable the fields panel. * * TODO: handle text areas here, so that users do not have to do custom * bean panel disabling in order to add a 'readonly' attribute mod * to TextAreas */ viewButton = new AjaxButton(VIEW_BUTTON_ID, viewLabel) { @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { B selection = radioGroup.getModelObject(); if (selection == null) { return; } if (getDefinition().getReadBeforeEdit()) { getDefinition().getBeanModel().setObject(selection); selection = readBean(); } getDefinition().getBeanModel().setObject(selection); Panel replacement = new BeanPanel(createSingleBeanPanelDef(null, null, PanelCreatorMode.VIEW)); checkSingleBeanPanelButtonsState(replacement); beanPanel.replaceWith(replacement); beanPanel = replacement; if (!getDefinition().getCustomSingleBeanPanelDisabling()) { Form<B> sbpForm = (Form<B>) beanPanel.get(SingleBeanPanel.FORM_ID); Panel sbpFieldsPanel = (Panel) sbpForm.get(SingleBeanPanel.FORM_FIELDS_PANEL_ID); sbpFieldsPanel.setEnabled(false); } beanPanel.setVisible(true); target.add(CrudPickerPanel.this); } }; /* * 1. Create a new bean instance and set it as the model object of the beanModel. * 2. Create a new SingleBeanPanel. In the definition of this panel, put * the beanModel, as well as the saveAction received from the client * of the CrudPickerPanel wrapped in an NewItemAction that repaints * the results table. */ newButton = new AjaxButton(NEW_BUTTON_ID, newLabel) { @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { if (!ServicePanelUtils.authorizedByFlag(getDefinition().getSaveActionFlag())) { target.add(feedBackPanel); CrudPickerPanel.this.error(getDefinition().getSaveActionFlag().getDownMessage()); return; } getDefinition().getBeanModel().setObject(newBean()); AjaxEnabledCondition<B> formValidator = getDefinition().getSaveValidator(); SingleBeanPanelDef<B> sbpDef = createSingleBeanPanelDef( new RefreshTableAction(new NewItemAction(getDefinition().getSaveAction())), formValidator, PanelCreatorMode.CREATE); Panel replacement = new BeanPanel(sbpDef); checkSingleBeanPanelButtonsState(replacement); beanPanel.replaceWith(replacement); beanPanel = replacement; beanPanel.setVisible(true); target.add(CrudPickerPanel.this); } }; ServicePanelUtils.disableButton(getDefinition(), getDefinition().getSaveActionFlag(), newButton); beanPanel = new EmptyPanel(NEW_OR_EDIT_PANEL_ID); if (getDefinition().getSingleBeanFormContainsFileUpload()) { tableForm.setMultiPart(true); tableForm.add(new AttributeModifier("enctype", new Model<String>("multipart/form-data"))); } }
From source file:org.apache.syncope.client.console.wizards.any.ConnObjectPanel.java
License:Apache License
/** * Get panel for attribute value (not remote status). * * @param id component id to be replaced with the fragment content. * @param attrTO remote attribute./*from ww w . ja va 2s .c o m*/ * @return fragment. */ private Panel getValuePanel(final String id, final String schemaName, final AttrTO attrTO) { Panel field; if (attrTO == null) { field = new AjaxTextFieldPanel(id, schemaName, new Model<String>()); } else if (CollectionUtils.isEmpty(attrTO.getValues())) { field = new AjaxTextFieldPanel(id, schemaName, new Model<String>()); } else if (ConnIdSpecialAttributeName.PASSWORD.equals(schemaName)) { field = new AjaxTextFieldPanel(id, schemaName, new Model<>("********")); } else if (attrTO.getValues().size() == 1) { field = new AjaxTextFieldPanel(id, schemaName, new Model<>(attrTO.getValues().get(0))); } else { field = new MultiFieldPanel.Builder<>(new ListModel<>(attrTO.getValues())).build(id, schemaName, new AjaxTextFieldPanel("panel", schemaName, new Model<String>())); } field.setEnabled(false); return field; }