List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink add
public MarkupContainer add(final Component... children)
From source file:org.onexus.website.api.pages.search.SearchPage.java
License:Apache License
public SearchPage(String componentId, IModel<SearchPageStatus> statusModel, boolean showTypes, boolean showLogo) { super(componentId, statusModel); IModel<SearchPageStatus> pageStatusModel = new PropertyModel<SearchPageStatus>(this, "status"); indicator = new WebMarkupContainer("indicator"); indicator.setOutputMarkupId(true);/* www . j ava 2 s . com*/ indicator.add(new Image("loading", OnDomReadyPanel.LOADING_IMAGE)); add(indicator); WebMarkupContainer container = new WebMarkupContainer("container"); container.add(new AttributeModifier("class", showLogo ? "show-logo" : "hide-logo")); Form form = new Form<SearchPageStatus>("form"); form.add(new AjaxButton("submit") { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { setFiltersStatus(null); userFilter = null; SearchPage.this.onSubmit(SearchPage.this.getStatus(), SearchPage.this.getConfig().getWebsiteConfig().getORI().getParent(), userFilter); target.add(SearchPage.this.get("boxes")); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { } }); form.setMultiPart(true); // By default use the first search type List<SearchType> types = getConfig().getTypes(); if (getStatus().getType() == null && !types.isEmpty()) { getStatus().setType(types.get(0)); } search = new TextField<String>("search", new PropertyModel<String>(pageStatusModel, "search")); search.setOutputMarkupId(true); if (!Strings.isEmpty(getStatus().getType().getPlaceholder())) { search.add(new AttributeModifier("placeholder", getStatus().getType().getPlaceholder())); } search.add(new AutoCompleteBehavior<IEntity>(new EntityRenderer(), new AutoCompleteSettings()) { @Override protected Iterator<IEntity> getChoices(String input) { return getAutocompleteChoices(input); } @Override protected String findIndicatorId() { return null; } }); form.add(search); // Filters list modal final WebMarkupContainer widgetModal = new WebMarkupContainer("widgetModal"); widgetModal.setOutputMarkupId(true); widgetModal.add(new Label("header", "")); widgetModal.add(new EmptyPanel("widget")); widgetModal.add(new AjaxLink<String>("close") { @Override public void onClick(AjaxRequestTarget target) { target.appendJavaScript("$('#" + widgetModal.getMarkupId() + "').modal('hide')"); } }); form.add(widgetModal); final AjaxLink<String> list = new AjaxLink<String>("list") { @Override public void onClick(AjaxRequestTarget target) { FiltersWidgetConfig filters = getStatus().getType().getFilters(); if (filters != null) { FiltersWidgetStatus status = filters.createEmptyStatus(); status.setConfig(filters); setFiltersStatus(status); widgetModal.addOrReplace(new Label("header", filters.getTitle())); widgetModal.addOrReplace(new SearchFiltersWidget("widget", new PropertyModel<FiltersWidgetStatus>(SearchPage.this, "filtersStatus")) { @Override protected void applyFilter(FilterConfig filterConfig, AjaxRequestTarget target) { filterConfig.setDeletable(true); search.setModelValue(new String[] { filterConfig.getName() }); target.add(search); userFilter = filterConfig; SearchPage.this.addOrReplace(internalBoxesPanel(filterConfig)); target.add(SearchPage.this.get("boxes")); target.appendJavaScript("$('#" + widgetModal.getMarkupId() + "').modal('hide')"); } }); target.add(widgetModal); target.appendJavaScript("$('#" + widgetModal.getMarkupId() + "').modal('show')"); } } }; list.setOutputMarkupPlaceholderTag(true); form.add(list); FiltersWidgetConfig filters = getStatus().getType().getFilters(); if (filters == null) { list.setVisible(false); } else { list.add(new AttributeModifier("rel", "tooltip")); list.add(new AttributeModifier("title", filters.getTitle())); list.setVisible(true); } setFiltersStatus(null); // Choose type RadioChoice<SearchType> typeSelect = new RadioChoice<SearchType>("type", new PropertyModel<SearchType>(pageStatusModel, "type"), types, new SearchTypeRenderer()); typeSelect.add(new AjaxFormChoiceComponentUpdatingBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { getStatus().setSearch(""); if (!Strings.isEmpty(getStatus().getType().getPlaceholder())) { search.add(new AttributeModifier("placeholder", getStatus().getType().getPlaceholder())); } else { search.add(new AttributeModifier("placeholder", "")); } SearchPage.this.addOrReplace(internalBoxesPanel()); target.add(search); target.add(SearchPage.this.get("container").get("form").get("examplesContainer")); target.add(SearchPage.this.get("boxes")); FiltersWidgetConfig filters = getStatus().getType().getFilters(); if (filters == null) { list.setVisible(false); } else { list.setVisible(true); list.add(new AttributeModifier("title", filters.getTitle())); } setFiltersStatus(null); target.add(list); } }); form.add(typeSelect); typeSelect.setVisible(showTypes); container.add(form); add(container); // Examples WebMarkupContainer examples = new WebMarkupContainer("examplesContainer"); examples.setOutputMarkupId(true); examples.add(new ListView<SearchExample>("examples", new ExamplesModel(new PropertyModel<SearchType>(pageStatusModel, "type"))) { @Override protected void populateItem(ListItem<SearchExample> item) { AjaxLink<SearchExample> link = new AjaxLink<SearchExample>("link", item.getModel()) { @Override public void onClick(AjaxRequestTarget target) { onSearch(target, getModelObject().getQuery()); } }; link.add(new Label("label", new PropertyModel<String>(item.getModel(), "label"))); item.add(link); WebMarkupContainer sep = new WebMarkupContainer("sep"); sep.setVisible(item.getIndex() + 1 != getModelObject().size()); item.add(sep); } }); form.add(examples); add(internalBoxesPanel()); }
From source file:org.onexus.website.api.widgets.tableviewer.NavigationToolbar.java
License:Apache License
@Override protected void onBeforeRender() { WebMarkupContainer span = new WebMarkupContainer("span"); addOrReplace(span);/* w ww .ja v a2s. co m*/ span.add(AttributeModifier.replace("colspan", String.valueOf(getTable().getColumns().size()))); DropDownChoice<Integer> dropDown = new DropDownChoice<Integer>("rowsxpage", new PropertyModel<Integer>(this, "rowsPerPage"), PAGE_OPTIONS, new RowsPerPageChoiceRenderer()); dropDown.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { send(getPage(), Broadcast.BREADTH, EventViewChange.EVENT); } }); span.add(dropDown); span.add(new PrevLink("prev")); span.add(new NextLink("next")); AjaxLink<String> countLink = new IndicatingAjaxLink<String>("count") { @Override public void onClick(AjaxRequestTarget target) { getDataProvider().forceCount(); target.add(getTable()); } }; span.add(countLink); countLink.add(new Label("from", new PropertyModel<Long>(this, "from"))); countLink.add(new Label("to", new PropertyModel<Long>(this, "to"))); countLink.add(new Label("of", new PropertyModel<String>(this, "of"))); super.onBeforeRender(); }
From source file:org.onexus.website.api.widgets.views.ViewsWidget.java
License:Apache License
@Override protected void onBeforeRender() { RepeatingView viewsContainer = new RepeatingView("views"); add(viewsContainer);/*from w w w .ja v a 2s. c o m*/ BrowserPageStatus browserStatus = getPageStatus(); setVisible(false); if (browserStatus != null) { BrowserPageConfig browserConfig = browserStatus.getConfig(); List<ViewConfig> views = browserConfig.getTab(browserStatus.getCurrentTabId()).getViews(); VisiblePredicate predicate = new VisiblePredicate(getPageBaseOri().getParent(), getPageStatus().getEntitySelections()); if (views != null && !views.isEmpty()) { for (ViewConfig view : views) { WebMarkupContainer item = new WebMarkupContainer(viewsContainer.newChildId()); viewsContainer.add(item); AjaxLink<String> link = new AjaxLink<String>("link", Model.of(view.getTitle())) { @Override public void onClick(AjaxRequestTarget target) { BrowserPageStatus browserStatus = getPageStatus(); browserStatus.setCurrentView(getModelObject()); send(getPage(), Broadcast.BREADTH, EventViewChange.EVENT); } }; link.add(new Label("label", view.getTitle())); item.add(link); if (view.getTitle().equals(browserStatus.getCurrentView())) { item.add(new AttributeModifier("class", "active")); } // Disable non-visible views if (!predicate.evaluate(view)) { item.setEnabled(false); String msg = VisiblePredicate.getMessage(view); if (!StringUtils.isEmpty(msg)) { item.add(new AttributeModifier("rel", "tooltip")); item.add(new AttributeModifier("title", msg)); } } else { item.setEnabled(true); } } setVisible(true); } } super.onBeforeRender(); }
From source file:org.openengsb.ui.admin.edb.EdbClient.java
License:Apache License
public EdbClient() { Form<Object> form = new Form<Object>("form"); final DropDownChoice<Class<? extends OpenEngSBModel>> modelSelector = new DropDownChoice<Class<? extends OpenEngSBModel>>( "modelSelector", new Model<Class<? extends OpenEngSBModel>>(), new DomainModelListModel()); modelSelector.add(new AjaxFormComponentUpdatingBehavior("onchange") { private static final long serialVersionUID = -1516333824153580148L; @Override// www . ja va 2s .co m protected void onUpdate(AjaxRequestTarget target) { Class<? extends OpenEngSBModel> convertedInput = modelSelector.getConvertedInput(); queryModel.getObject().setModel(convertedInput); queryField.setEnabled(convertedInput != null); target.add(queryField); } }); modelSelector.setChoiceRenderer(new IChoiceRenderer<Class<?>>() { private static final long serialVersionUID = 805430071751617166L; @Override public Object getDisplayValue(Class<?> object) { return object.getSimpleName(); } @Override public String getIdValue(Class<?> object, int index) { return object.getSimpleName(); } }); form.add(modelSelector); queryField = new AutoCompleteTextField<String>("query") { private static final long serialVersionUID = 5028249986331789802L; @Override protected Iterator<String> getChoices(final String input) { Class<? extends OpenEngSBModel> model = queryModel.getObject().getModel(); BeanInfo beanInfo; try { beanInfo = Introspector.getBeanInfo(model); } catch (IntrospectionException e) { LOGGER.warn("error introspecting {}. Auto-completing won't work." + model); List<String> emptyList = Collections.emptyList(); return emptyList.iterator(); } List<String> allKeys = Lists.transform(Arrays.asList(beanInfo.getPropertyDescriptors()), new Function<PropertyDescriptor, String>() { @Override public String apply(PropertyDescriptor input) { return input.getName() + ":"; } }); if (Strings.isNullOrEmpty(input)) { return allKeys.iterator(); } return Iterators.filter(allKeys.iterator(), new Predicate<String>() { @Override public boolean apply(String item) { return item.contains(input); } }); } }; queryField.setEnabled(false); queryField.setOutputMarkupId(true); queryField.setModel(new PropertyModel<String>(queryModel.getObject(), "query")); form.add(queryField); form.add(new IndicatingAjaxButton("submit") { private static final long serialVersionUID = -5425144434508998591L; @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { EkbQuery query = queryModel.getObject(); List<? extends OpenEngSBModel> models; try { models = ekbQueryInterface.queryForModels(query.getModel(), query.getQuery()); resultModel.setObject(models); info(String.format("Found %s results", models.size())); } catch (Exception e) { error(String.format("Error when querying for models %s (%s)", e.getMessage(), e.getClass().getName())); } target.add(feedback); target.add(resultContainer); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { } }); add(form); List<? extends OpenEngSBModel> emptyList = Collections.emptyList(); resultModel = Model.ofList(emptyList); resultContainer = new WebMarkupContainer("result"); resultContainer.setOutputMarkupId(true); add(resultContainer); resultContainer.add(new ListView<OpenEngSBModel>("list", resultModel) { private static final long serialVersionUID = 5459114215962851286L; @Override protected void populateItem(ListItem<OpenEngSBModel> item) { String idProperty = "id"; Class<? extends OpenEngSBModel> modelClass = queryModel.getObject().getModel(); for (Field m : modelClass.getDeclaredFields()) { if (m.getAnnotation(OpenEngSBModelId.class) != null) { idProperty = m.getName(); break; } } AjaxLink<String> historyLink = new AjaxLink<String>("id", new PropertyModel<String>(item.getModelObject(), idProperty)) { private static final long serialVersionUID = -6539033599615376277L; @Override public void onClick(AjaxRequestTarget target) { this.setResponsePage(new EdbHistoryPanel(getModel().getObject())); } }; historyLink.add(new Label("text", new PropertyModel<String>(item.getModelObject(), idProperty))); item.add(historyLink); MultiLineLabel multiLineLabel = new MultiLineLabel("entries", item.getModelObject().toOpenEngSBModelEntries().toString()); item.add(multiLineLabel); } }); feedback = new FeedbackPanel("feedback"); feedback.setOutputMarkupId(true); form.add(feedback); }
From source file:org.opengeo.data.importer.web.ImportDataPage.java
License:Open Source License
public ImportDataPage(PageParameters params) { Form form = new Form("form"); add(form);//ww w.j av a2 s .c om sourceList = new ListView<Source>("sources", Arrays.asList(Source.values())) { @Override protected void populateItem(final ListItem<Source> item) { final Source source = (Source) item.getModelObject(); AjaxLink link = new AjaxLink("link") { @Override public void onClick(AjaxRequestTarget target) { updateSourcePanel(source); updateModalLinks(this, target); target.addComponent(sourcePanel); } }; link.setOutputMarkupId(true); link.add(new Label("name", source.getName(ImportDataPage.this))); if (item == sourceList.get(0)) { link.add(new AttributeAppender("class", true, new Model("selected"), " ")); } item.add(link); item.add(new Label("description", source.getDescription(ImportDataPage.this))); Image icon = new Image("icon", source.getIcon()); icon.add(new AttributeModifier("alt", true, source.getDescription(ImportDataPage.this))); item.add(icon); if (!source.isAvailable()) { item.setEnabled(false); item.add(new SimpleAttributeModifier("title", "Data source not available. Please " + "install required plug-in and drivers.")); } } }; form.add(sourceList); sourcePanel = new WebMarkupContainer("panel"); sourcePanel.setOutputMarkupId(true); form.add(sourcePanel); Catalog catalog = GeoServerApplication.get().getCatalog(); // workspace chooser workspace = new WorkspaceDetachableModel(catalog.getDefaultWorkspace()); workspaceChoice = new DropDownChoice("workspace", workspace, new WorkspacesModel(), new WorkspaceChoiceRenderer()); workspaceChoice.setOutputMarkupId(true); workspaceChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { updateDefaultStore(target); } }); form.add(workspaceChoice); //store chooser store = new StoreModel(catalog.getDefaultDataStore((WorkspaceInfo) workspace.getObject())); storeChoice = new DropDownChoice("store", store, new EnabledStoresModel(workspace), new StoreChoiceRenderer()) { protected String getNullValidKey() { return ImportDataPage.class.getSimpleName() + "." + super.getNullValidKey(); }; }; storeChoice.setOutputMarkupId(true); storeChoice.setNullValid(true); form.add(storeChoice); // new workspace form.add(new AjaxLink("newWorkspace") { @Override public void onClick(AjaxRequestTarget target) { dialog.setTitle(new ParamResourceModel("newWorkspace", ImportDataPage.this)); dialog.setInitialWidth(400); dialog.setInitialHeight(150); dialog.setMinimalHeight(150); dialog.showOkCancel(target, new DialogDelegate() { String wsName; @Override protected boolean onSubmit(AjaxRequestTarget target, Component contents) { try { Catalog catalog = GeoServerApplication.get().getCatalog(); NewWorkspacePanel panel = (NewWorkspacePanel) contents; wsName = panel.workspace; WorkspaceInfo ws = catalog.getFactory().createWorkspace(); ws.setName(wsName); NamespaceInfo ns = catalog.getFactory().createNamespace(); ns.setPrefix(wsName); ns.setURI("http://opengeo.org/#" + URLEncoder.encode(wsName, "ASCII")); catalog.add(ws); catalog.add(ns); return true; } catch (Exception e) { e.printStackTrace(); return false; } } @Override public void onClose(AjaxRequestTarget target) { Catalog catalog = GeoServerApplication.get().getCatalog(); workspace = new WorkspaceDetachableModel(catalog.getWorkspaceByName(wsName)); workspaceChoice.setModel(workspace); target.addComponent(workspaceChoice); target.addComponent(storeChoice); } @Override protected Component getContents(String id) { return new NewWorkspacePanel(id); } }); } }); form.add(new AjaxSubmitLink("next", form) { protected void onError(AjaxRequestTarget target, Form<?> form) { target.addComponent(feedbackPanel); } protected void onSubmit(AjaxRequestTarget target, Form<?> form) { //first update the button to indicate we are working add(new AttributeAppender("class", true, new Model("button-working icon"), " ")); setEnabled(false); get(0).setDefaultModelObject("Working"); target.addComponent(this); //start a timer to actually do the work, which will allow the link to update // while the context is created final AjaxSubmitLink self = this; this.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(100)) { @Override protected void onTimer(AjaxRequestTarget target) { ImportSourcePanel panel = (ImportSourcePanel) sourcePanel.get("content"); ImportData source; try { source = panel.createImportSource(); } catch (IOException e) { throw new WicketRuntimeException(e); } WorkspaceInfo targetWorkspace = (WorkspaceInfo) (workspace.getObject() != null ? workspace.getObject() : null); StoreInfo targetStore = (StoreInfo) (store.getObject() != null ? store.getObject() : null); Importer importer = ImporterWebUtils.importer(); try { ImportContext imp = importer.createContext(source, targetWorkspace, targetStore); //check the import for actual things to do boolean proceed = !imp.getTasks().isEmpty(); if (proceed) { //check that all the tasks are non-empty proceed = false; for (ImportTask t : imp.getTasks()) { if (!t.getItems().isEmpty()) { proceed = true; break; } } } if (proceed) { imp.setArchive(false); importer.changed(imp); PageParameters pp = new PageParameters(); pp.put("id", imp.getId()); setResponsePage(ImportPage.class, pp); } else { info("No data to import was found"); target.addComponent(feedbackPanel); importer.delete(imp); resetNextButton(self, target); } } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e); error(e); target.addComponent(feedbackPanel); //update the button back to original state resetNextButton(self, target); } finally { stop(); } } }); } }.add(new Label("message", new Model("Next")))); importTable = new ImportContextTable("imports", new ImportContextProvider() { @Override protected List<org.geoserver.web.wicket.GeoServerDataProvider.Property<ImportContext>> getProperties() { return Arrays.asList(ID, CREATED, STATE); } }); importTable.setOutputMarkupId(true); importTable.setFilterable(false); importTable.setSortable(false); form.add(importTable); form.add(new AjaxLink("removeAll") { @Override public void onClick(AjaxRequestTarget target) { Importer importer = ImporterWebUtils.importer(); importer.getStore().removeAll(); target.addComponent(importTable); } }.setVisible(ImporterWebUtils.isDevMode())); add(dialog = new GeoServerDialog("dialog")); updateSourcePanel(Source.SPATIAL_FILES); updateDefaultStore(null); }
From source file:org.opengeo.data.importer.web.ImportDataPage.java
License:Open Source License
void updateModalLinks(AjaxLink selected, AjaxRequestTarget target) { int n = sourceList.getModelObject().size(); for (int i = 0; i < n; i++) { AjaxLink link = (AjaxLink) ((ListItem) sourceList.get(i)).get("link"); if (link == selected) { link.add(new AttributeAppender("class", new Model("selected"), " ")); } else {/*from ww w. j a v a 2 s .c o m*/ link.add(new SimpleAttributeModifier("class", "")); } target.addComponent(link); } }
From source file:org.opensingular.lib.wicket.util.metronic.breadcrumb.MetronicBreadcrumbBar.java
License:Apache License
@Override protected void onInitialize() { super.onInitialize(); ListView<String> breadCrumbsListView = new ListView<String>("crumbs", breadcrumbs) { @Override//from w w w .j a va 2 s.com protected void populateItem(ListItem item) { AjaxLink link = new AjaxLink("link") { @Override public void onClick(AjaxRequestTarget target) { } }; link.add(new Label("linkLabel", item.getModel())); Label label = new Label("label", item.getModel()); link.add($b.visibleIf($m.get(() -> item.getIndex() != breadcrumbs.size() - 1))); label.add($b.visibleIf($m.get(() -> item.getIndex() == breadcrumbs.size() - 1))); item.add(link); item.add(label); } }; add(breadCrumbsListView); }
From source file:org.opensingular.lib.wicket.util.modal.BSModalBorder.java
License:Apache License
public BSModalBorder addLink(ButtonStyle style, IModel<String> label, AjaxLink<?> button) { buttonsContainer.addOrReplace(button.add(newLinkLabel(BUTTON_LABEL, button, label)) .add(new AttributeAppender("class", style.cssClassModel(), " "))); return this; }
From source file:org.patientview.radar.web.pages.admin.AdminPatientsPage.java
License:Open Source License
/** * Build a row in the dataview from the object * * @param item Item<PatientUser> * @param feedback/*from w w w .j a v a 2 s .c o m*/ */ private void builtDataViewRow(final Item<PatientUser> item, final FeedbackPanel feedback) { final PatientUser patientUser = item.getModelObject(); final Patient patient = patientManager.getPatientByRadarNumber(patientUser.getRadarNumber()); item.add(new BookmarkablePageLink<AdminConsultantPage>("edit", AdminPatientPage.class, AdminPatientPage.getPageParameters(patientUser))); // item.add(new Label("radarNo", patientUser.getRadarNumber().toString())); item.add(new Label("forename", patient.getForename())); item.add(new Label("surname", patient.getSurname())); item.add(new Label("dob", patientUser.getDateOfBirth().toString())); String dateRegistered = ""; if (patientUser.getDateRegistered() != null) { dateRegistered = patientUser.getDateRegistered().toString(); } item.add(new Label("dateRegistered", dateRegistered)); item.add(new Label("username", patientUser.getUsername())); AjaxLink deleteLink = new AjaxLink("deleteLink") { public void onClick(AjaxRequestTarget ajaxRequestTarget) { try { userManager.deletePatientUser(patientUser); setResponsePage(AdminPatientsPage.class); } catch (Exception e) { error("Could not delete patient " + e); ajaxRequestTarget.add(feedback); } } }; deleteLink.add(RadarBehaviourFactory.getDeleteConfirmationBehaviour()); item.add(deleteLink); item.add(new AjaxLink("emailLink") { public void onClick(AjaxRequestTarget ajaxRequestTarget) { try { emailManager.sendPatientRegistrationReminderEmail(patientUser); } catch (Exception e) { error("There was an error sending reminder email to patient " + e); ajaxRequestTarget.add(feedback); } } }); }
From source file:org.patientview.radar.web.pages.admin.AdminUserPage.java
License:Open Source License
public AdminUserPage(PageParameters parameters) { super();//from w ww . jav a 2 s . com final ProfessionalUser user; // if id is empty or -1 then its a new user else try pull back record StringValue idValue = parameters.get(PARAM_ID); if (idValue.isEmpty() || idValue.toLong() == -1) { user = new ProfessionalUser(); // if its new user just show edit mode straight away editMode = true; newUser = true; } else { user = userManager.getProfessionalUser(idValue.toLongObject()); } CompoundPropertyModel<ProfessionalUser> professionalUserModel = new CompoundPropertyModel<ProfessionalUser>( user); final FeedbackPanel feedback = new FeedbackPanel("feedback"); feedback.setOutputMarkupId(true); feedback.setOutputMarkupPlaceholderTag(true); add(feedback); final Form<ProfessionalUser> userForm = new Form<ProfessionalUser>("userForm", professionalUserModel) { protected void onSubmit() { try { userManager.saveProfessionalUser(getModelObject()); if (newUser) { setResponsePage(AdminUsersPage.class); } } catch (Exception e) { error("Could not save user"); } } }; add(userForm); UserLabel idLabel = new UserLabel("idLabel", new PropertyModel<Long>(user, "id")); idLabel.setHideable(false); userForm.add(idLabel); userForm.add(new UserLabel("surnameLabel", new PropertyModel<String>(user, "surname"))); userForm.add(new UserTextField("surname")); userForm.add(new UserLabel("forenameLabel", new PropertyModel<String>(user, "forename"))); userForm.add(new UserTextField("forename")); userForm.add(new UserLabel("titleLabel", new PropertyModel<String>(user, "title"))); userForm.add(new UserTextField("title")); userForm.add(new UserLabel("roleLabel", new PropertyModel<String>(user, "role"))); userForm.add(new UserTextField("role")); userForm.add(new UserLabel("emailLabel", new PropertyModel<String>(user, "email"))); userForm.add(new UserTextField("email")); userForm.add(new UserLabel("phoneLabel", new PropertyModel<String>(user, "phone"))); userForm.add(new UserTextField("phone")); userForm.add(new UserLabel("centreLabel", new PropertyModel<Long>(user.getCentre(), "id"))); userForm.add(new UserTextField("centre", new PropertyModel<Long>(user.getCentre(), "id"))); userForm.add(new UserLabel("dateRegisteredLabel", new PropertyModel<Date>(user, "dateRegistered"))); userForm.add(new UserTextField("dateRegistered")); UserLabel usernameLabel = new UserLabel("usernameLabel", user.getUsername()); // hide this field if new user as username will be set to email usernameLabel.setVisible(!newUser); usernameLabel.setHideable(false); userForm.add(usernameLabel); /** * Add a container to hold links for Edit and Delete options * This will show when not in editMode */ WebMarkupContainer userOptions = new WebMarkupContainer("userOptions") { public boolean isVisible() { return !editMode; } }; userForm.add(userOptions); userOptions.add(new AjaxLink("edit") { public void onClick(AjaxRequestTarget ajaxRequestTarget) { editMode = true; ajaxRequestTarget.add(userForm); } }); AjaxLink deleteLink = new AjaxLink("delete") { public void onClick(AjaxRequestTarget ajaxRequestTarget) { try { userManager.deleteProfessionalUser(user); setResponsePage(AdminUsersPage.class); } catch (Exception e) { ajaxRequestTarget.add(feedback); error("Could not delete user: " + e.toString()); } } }; userOptions.add(deleteLink); deleteLink.add(RadarBehaviourFactory.getDeleteConfirmationBehaviour()); /** * Add a container to hold the options for when the page is in edit mode */ WebMarkupContainer editOptions = new WebMarkupContainer("editOptions") { public boolean isVisible() { return editMode; } }; editOptions.add(new AjaxSubmitLink("update") { protected void onSubmit(AjaxRequestTarget ajaxRequestTarget, Form<?> form) { editMode = false; ajaxRequestTarget.add(feedback); ajaxRequestTarget.add(userForm); } protected void onError(AjaxRequestTarget ajaxRequestTarget, Form<?> form) { editMode = true; ajaxRequestTarget.add(feedback); ajaxRequestTarget.add(userForm); } }); editOptions.add(new AjaxLink("cancel") { public void onClick(AjaxRequestTarget ajaxRequestTarget) { editMode = false; // if its a new user then cancel back to list if (newUser) { setResponsePage(AdminUsersPage.class); } else { ajaxRequestTarget.add(userForm); } } }); userForm.add(editOptions); add(new BookmarkablePageLink<AdminUsersPage>("back", AdminUsersPage.class)); }