Example usage for org.apache.wicket.ajax.markup.html AjaxLink add

List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink add

Introduction

In this page you can find the example usage for org.apache.wicket.ajax.markup.html AjaxLink add.

Prototype

public MarkupContainer add(final Component... children) 

Source Link

Document

Adds the child component(s) to this container.

Usage

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));
}