Example usage for org.apache.wicket.model.util ListModel ListModel

List of usage examples for org.apache.wicket.model.util ListModel ListModel

Introduction

In this page you can find the example usage for org.apache.wicket.model.util ListModel ListModel.

Prototype

public ListModel() 

Source Link

Document

Creates empty model

Usage

From source file:au.org.theark.core.web.component.customfield.form.DetailForm.java

License:Open Source License

/**
 * Constructor/*from  ww w .j a  va  2 s .com*/
 * 
 * @param id
 * @param cpModel
 * @param feedBackPanel
 * @param arkCrudContainerVO
 */
public DetailForm(String id, CompoundPropertyModel<CustomFieldVO> cpModel, FeedbackPanel feedBackPanel,
        ArkCrudContainerVO arkCrudContainerVO) {
    super(id, feedBackPanel, cpModel, arkCrudContainerVO);
    // Initialise the model to be empty for now
    cfGroupDdcListModel = new ListModel<CustomFieldGroup>();
    refreshEntityFromBackend();
    //this.unitTypeDropDownOn=unitTypeDropDownOn;
    //this.subjectCustomField = subjectCustomField;
    Long sessionModuleId = (Long) SecurityUtils.getSubject().getSession()
            .getAttribute(au.org.theark.core.Constants.ARK_MODULE_KEY);
}

From source file:au.org.theark.phenotypic.web.component.phenodatadictionary.form.DetailForm.java

License:Open Source License

/**
 * Constructor//from  www  .  ja  v  a  2s  . c  o  m
 * 
 * @param id
 * @param cpModel
 * @param feedBackPanel
 * @param arkCrudContainerVO
 */
public DetailForm(String id, CompoundPropertyModel<PhenoDataSetFieldVO> cpModel, FeedbackPanel feedBackPanel,
        ArkCrudContainerVO arkCrudContainerVO) {
    super(id, feedBackPanel, cpModel, arkCrudContainerVO);
    cfGroupDdcListModel = new ListModel<PhenoDataSetGroup>();
    refreshEntityFromBackend();
    Long sessionModuleId = (Long) SecurityUtils.getSubject().getSession()
            .getAttribute(au.org.theark.core.Constants.ARK_MODULE_KEY);
    study = cpModel.getObject().getPhenoDataSetField().getStudy();
    //arkFunction=iArkCommonService.getArkFunctionByName(au.org.theark.core.Constants.FUNCTION_KEY_VALUE_SUBJECT_CUSTOM_FIELD_CATEGORY);
}

From source file:ca.travelagency.config.CompanyPage.java

License:Apache License

private Form<Void> uploadForm() {
    Form<Void> form = new Form<Void>(UPLOAD_FORM) {
        private static final long serialVersionUID = 1L;

        @Override//  ww w.  j a va 2 s  .  com
        protected void onSubmit() {
            FileUpload fileUpload = fileUploadField.getFileUpload();
            if (fileUpload == null) {
                return;
            }
            String code = ApplicationProperties.make().getCode();
            File companyLogoFile = UploadUtils.getCompanyLogoFile(code);
            try {
                companyLogoFile.createNewFile();
                fileUpload.writeTo(companyLogoFile);
            } catch (Exception e) {
                throw new RuntimeException("Unable to write logo image", e);
            }
        }
    };
    form.setMultiPart(true);
    form.setMaxSize(Bytes.kilobytes(100));

    form.add(new ComponentFeedbackPanel(FEEDBACK, form));

    fileUploadField = new FileUploadField(UPLOAD_FIELD, new ListModel<FileUpload>());
    form.add(fileUploadField);

    return form;
}

From source file:com.chitek.ignition.drivers.generictcp.meta.config.ui.MessageConfigUI.java

License:Apache License

private void addComponents() {

    // Select the first message for initial display
    if (getConfig().messages.isEmpty()) {
        // No messages configured. Create a new message with id=1.
        getConfig().addMessageConfig(new MessageConfig(1));
    }//from  w w  w. j av  a  2 s  . c o  m

    currentMessage = getConfig().getMessageList().get(0);
    currentMessage.calcOffsets(getConfig().getMessageIdType().getByteSize());
    currentMessageId = currentMessage.getMessageId();

    // *******************************************************************************************
    // *** Form for XML import
    final FileUploadField uploadField = new FileUploadField("upload-field", new ListModel<FileUpload>());

    Form<?> uploadForm = new Form<Object>("upload-form") {
        @Override
        protected void onSubmit() {
            try {
                FileUpload upload = uploadField.getFileUpload();
                if (upload != null) {
                    handleOnUpload(upload.getInputStream());
                } else {
                    warn(new StringResourceModel("warn.noFileToUpload", this, null).getString());
                }
            } catch (Exception e) {
                this.error(new StringResourceModel("import.error", this, null).getString() + " Exception: "
                        + e.toString());
            }
        }
    };
    uploadForm.add(uploadField);

    SubmitLink importLink = new SubmitLink("import-link");
    uploadForm.add(importLink);

    add(uploadForm);

    // *******************************************************************************************
    // *** The message configuration
    currentMessageModel = new PropertyModel<MessageConfig>(this, "currentMessage");
    editForm = new Form<MessageConfig>("edit-form",
            new CompoundPropertyModel<MessageConfig>(currentMessageModel)) {
        @Override
        protected void onError() {
            // Validation error - reset the message dropdown to the original value
            // Clear input causes the component to reload the model
            currentMessageIdDropdown.clearInput();
            super.onError();
        }
    };

    editForm.add(new MessageFormValidator());

    WebMarkupContainer tableContainer = new WebMarkupContainer("table-container");

    messageIdTypeDropDown = getMessageIdTypeDropdown();
    tableContainer.add(messageIdTypeDropDown);

    currentMessageIdDropdown = getCurrentMessageIdDropdown();

    tableContainer.add(currentMessageIdDropdown);
    Button buttonNew = new Button("new");
    buttonNew.add(new AjaxFormSubmitBehavior("onclick") {
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            handleNew(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target) {
            handleError(target);
        }
    });
    tableContainer.add(buttonNew);

    Button buttonCopy = new Button("copy");
    buttonCopy.add(new AjaxFormSubmitBehavior("onclick") {
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            handleCopy(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target) {
            handleError(target);
        }
    });
    tableContainer.add(buttonCopy);

    Button deleteButton = new Button("delete");
    deleteButton.add(new AjaxEventBehavior("onclick") {
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            handleDelete(target);
        }
    });
    tableContainer.add(deleteButton);

    messageTypeDropdown = getMessageTypeDropdown();
    tableContainer.add(messageTypeDropdown);

    tableContainer.add(getQueueModeDropdown());

    tableContainer.add(new CheckBox("usePersistance").setOutputMarkupId(true));

    WebMarkupContainer listEditorContainer = new WebMarkupContainer("list-editor");

    messageIdTextField = getMessageIdTextField();
    listEditorContainer.add(messageIdTextField);

    messageAliasTextField = getMessageAliasTextField();
    listEditorContainer.add(messageAliasTextField);

    // Create the list editor
    editor = new ListEditor<TagConfig>("tags",
            new PropertyModel<List<TagConfig>>(currentMessageModel, "tags")) {
        @Override
        protected void onPopulateItem(EditorListItem<TagConfig> item) {

            item.setModel(new CompoundPropertyModel<TagConfig>(item.getModelObject()));

            BinaryDataType dataType = item.getModelObject().getDataType();
            boolean enable = dataType.isSpecial() ? false : true;

            // Offset is displayed only for information
            item.add(new Label("offset").setOutputMarkupId(true));

            if (enable) {
                item.add(getIdTextField());
            } else {
                // The static TextField has no validation. Validation would fail for special tags.
                item.add(getSpecialIdTextField().setEnabled(false));
            }

            item.add(getAliasTextField().setVisible(enable));

            item.add(getSizeTextField().setEnabled(dataType.isArrayAllowed()));

            item.add(getTagLengthTypeDropDown().setEnabled(dataType.supportsVariableLength()));

            item.add(getDataTypeDropdown());

            // Create the edit links to be used in the list editor
            item.add(getInsertLink());
            item.add(getDeleteLink());
            item.add(getMoveUpLink().setVisible(item.getIndex() > 0));
            item.add(getMoveDownLink().setVisible(item.getIndex() < getList().size() - 1));
        }
    };
    listEditorContainer.add(editor);

    Label noItemsLabel = new Label("no-items-label", new StringResourceModel("noitems", this, null)) {
        @Override
        public boolean isVisible() {
            return editor.getList().size() == 0;
        }
    };

    listEditorContainer.add(noItemsLabel);

    listEditorContainer.add(new EditorSubmitLink("add-row-link") {
        @Override
        public void onSubmit() {
            editor.addItem(new TagConfig());

            // Adjust the visibility of the edit links
            updateListEditor(editor);
        }
    });

    listEditorContainer.setOutputMarkupId(true);

    tableContainer.add(listEditorContainer);
    editForm.add(tableContainer);

    // XML export
    SubmitLink exportLink = new SubmitLink("export-link", editForm) {
        @Override
        public void onSubmit() {
            ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(),
                    getFileName());
            handler.setContentDisposition(ContentDisposition.ATTACHMENT);
            handler.setCacheDuration(Duration.NONE);
            getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
        }

        private String getFileName() {
            return String.format("MsgConfig_%s.xml", currentMessageModel.getObject().getMessageId());
        }

        private IResourceStream getResourceStream() {
            String config = currentMessageModel.getObject().toXMLString();
            return new StringResourceStream(config, "text/xml");
        }
    };
    editForm.add(exportLink);

    uploadForm.add(editForm);
}

From source file:com.norconex.jefmon.settings.panels.JobLocationsPanel.java

License:Apache License

private ListMultipleChoice<File> buildLocationsSelect(String markupId) {
    final ListMultipleChoice<File> lc = new ListMultipleChoice<File>(markupId, new ListModel<File>(),
            locations) {//from ww w  .  j  a va  2s.  co  m
        private static final long serialVersionUID = 7754249758151817399L;

        @Override
        protected CharSequence getDefaultChoice(String selected) {
            return "";
        }

        @Override
        protected void appendOptionHtml(AppendingStringBuffer buffer, File file, int index, String selected) {
            super.appendOptionHtml(buffer, file, index, selected);
            if (file == null) {
                return;
            }
            String icon = "nx-file-icon";
            if (file.isDirectory()) {
                icon = "nx-folder-icon";
            }
            buffer.insert(buffer.lastIndexOf("\">") + 1, " class=\"" + icon + "\"");
        }
    };
    lc.setMaxRows(7);
    lc.setOutputMarkupId(true);
    lc.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        private static final long serialVersionUID = -6508661554028761884L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            adjustButtonVisibility(target);
        }
    });

    return lc;
}

From source file:com.tysanclan.site.projectewok.pages.member.admin.TangoImporterPage.java

License:Open Source License

/**
 * //from   ww w  .j a va 2s.  co m
 */
public TangoImporterPage() {
    super("Tango Conversion Page");

    Form<?> uploadForm = new Form<Void>("uploadForm") {
        private static final long serialVersionUID = 1L;

        /**
         * @see org.apache.wicket.markup.html.form.Form#onSubmit()
         */
        @Override
        protected void onSubmit() {
            PasswordTextField keyField = (PasswordTextField) get("masterKey");

            if (userDAO.findAll().isEmpty()) {

                if (keyField.getModelObject().equals(TysanApplication.MASTER_KEY)) {
                    FileUploadField field = (FileUploadField) get("fileUploader");
                    FileUpload upload = field.getFileUpload();

                    if (upload == null) {
                        error("You must upload a file");
                        return;
                    }

                    try {
                        TysanScheduler.getScheduler()
                                .scheduleTask(new TangoImportTask(upload.getInputStream()));
                        info("Tango import background job started");
                    } catch (IOException e) {
                        error("Internal error: Unable to read upload");
                    }

                } else {
                    error("Master key invalid");
                }
            } else {
                error("Import can only be run on an empty database!");
            }

        }

    };
    uploadForm.add(new PasswordTextField("masterKey", new Model<String>("")));
    uploadForm.add(new FileUploadField("fileUploader", new ListModel<FileUpload>()));
    add(uploadForm);

}

From source file:com.tysanclan.site.projectewok.pages.member.ProposeAchievementPage.java

License:Open Source License

public ProposeAchievementPage(int tabIndex) {
    super("Propose Achievement");

    this.tabIndex = tabIndex;

    add(new ListView<AchievementProposal>("proposals", ModelMaker.wrap(achievementProposalDAO.findAll())) {

        private static final long serialVersionUID = 1L;

        @Override// w  ww.j  a v  a2 s .  c o  m
        protected void populateItem(final ListItem<AchievementProposal> item) {
            AchievementProposal proposal = item.getModelObject();

            item.add(new Image("icon", new StoredImageResource(proposal.getIcon().getImage())));

            item.add(new Label("name", proposal.getName()));
            item.add(new Label("description", proposal.getDescription()).setEscapeModelStrings(false));
            item.add(new Label("game", proposal.getGame() != null ? proposal.getGame().getName() : "-"));
            item.add(new Label("group", proposal.getGroup() != null ? proposal.getGroup().getName() : "-"));
        }

    });

    List<AchievementIcon> icons = achievementService.getAvailableIcons(getUser());

    add(getIconListview("icons", icons, new IconClickResponder() {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AchievementIcon icon) {
            setResponsePage(new ProposeAchievementPage2(icon));
        }
    }));

    add(new WebMarkupContainer("noIcons").setVisible(icons.isEmpty()));

    add(getIconListview("approved", getApprovedIcons(getUser()), null));
    add(getIconListview("pending", getPendingIcons(getUser()), null));

    add(getIconListview("rejected", getRejectedIcons(getUser()), new IconClickResponder() {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AchievementIcon icon) {
            achievementService.deleteIcon(getUser(), icon);

            setResponsePage(new ProposeAchievementPage(2));
        }
    }));

    final FileUploadField uploadField = new FileUploadField("file", new ListModel<FileUpload>());
    uploadField.setRequired(true);

    final TextField<String> purposeField = new TextField<String>("purpose", new Model<String>(""));
    purposeField.setRequired(true);

    final CheckBox privateIconBox = new CheckBox("private", new Model<Boolean>(true));

    Form<AchievementIcon> uploadForm = new Form<AchievementIcon>("uploadIcon") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            List<FileUpload> uploads = uploadField.getModelObject();
            String purpose = purposeField.getModelObject();
            Boolean privateIcon = privateIconBox.getModelObject();

            if (uploads != null && !uploads.isEmpty()) {
                FileUpload upload = uploads.get(0);

                AchievementIcon icon = achievementService.uploadAchievementIcon(getUser(), upload.getBytes(),
                        purpose, privateIcon);

                if (icon != null) {
                    setResponsePage(new ProposeAchievementPage(2));
                } else {
                    error("Invalid image type, or not a 48x48 pixel image");
                }
            } else {
                error("No valid file uploaded");
            }

        }

    };

    uploadForm.setMultiPart(true);

    uploadForm.add(uploadField);
    uploadForm.add(purposeField);
    uploadForm.add(privateIconBox);

    add(uploadForm);

}

From source file:com.tysanclan.site.projectewok.pages.member.RequestAchievementPage2.java

License:Open Source License

public RequestAchievementPage2(Achievement achievement) {
    super("Request achievement " + achievement.getName());

    achievementModel = ModelMaker.wrap(achievement);

    final FileUploadField uploadField = new FileUploadField("screenshot", new ListModel<FileUpload>());
    final TextArea<String> evidenceField = new BBCodeTextArea("evidence", "");

    Form<Achievement> form = new Form<Achievement>("evidenceForm") {
        private static final long serialVersionUID = 1L;

        @SpringBean//from  w  w  w.j  a va 2  s .c  om
        private AchievementService service;

        @Override
        protected void onSubmit() {
            FileUpload upload = uploadField.getFileUpload();
            String evidence = evidenceField.getModelObject();

            if (upload != null) {
                if (!ImageUtil.isGIFImage(upload.getBytes()) && !ImageUtil.isPNGImage(upload.getBytes())
                        && !ImageUtil.isJPEGImage(upload.getBytes())) {
                    error("Please supply a valid JPG, GIF or PNG image");
                    return;
                }
            } else {
                if (evidence == null || evidence.isEmpty()) {
                    error("Please provide either a screenshot or a textual description of why you qualify for this achievement");
                    return;
                }
            }

            AchievementRequest request = service.requestAchievement(getUser(), achievementModel.getObject(),
                    upload != null ? upload.getBytes() : null, evidence);
            if (request != null) {
                setResponsePage(new RequestAchievementPage());
            } else {
                error("Failed to create request");
            }

        }
    };

    form.setMultiPart(true);

    form.add(uploadField);
    form.add(evidenceField);

    add(form);

    form.add(new Label("name", achievement.getName()));

    Game game = achievement.getGame();

    form.add(new Image("icon", new StoredImageResource(achievement.getIcon().getImage())));
    form.add(new Image("game", new StoredImageResource(game != null ? game.getImage() : new byte[0]))
            .setVisible(game != null));

    boolean hasGroup = achievement.getGroup() != null;

    form.add(new Label("group", hasGroup ? achievement.getGroup().getName() : "-").setVisible(hasGroup));
    form.add(new Label("description", achievement.getDescription()).setEscapeModelStrings(false));
}

From source file:cz.zcu.kiv.eegdatabase.wui.ui.experiments.forms.ScenarioForm.java

License:Apache License

public ScenarioForm(String id, final ModalWindow window) {
    super(id, new CompoundPropertyModel<Scenario>(new Scenario()));

    add(new Label("addScenarioHeader", ResourceUtils.getModel("pageTitle.addScenario")));

    final FeedbackPanel feedback = new FeedbackPanel("feedback");
    feedback.setOutputMarkupId(true);//from   w  ww  .j  a va  2s .  c  om
    add(feedback);

    setMultiPart(true);

    Person owner = getModel().getObject().getPerson();
    if (owner == null)
        owner = EEGDataBaseSession.get().getLoggedUser();

    getModel().getObject().setPerson(owner);

    List<ResearchGroup> choices = researchGroupFacade.getResearchGroupsWhereAbleToWriteInto(owner);
    if (choices == null || choices.isEmpty())
        choices = Arrays.asList(getModel().getObject().getResearchGroup());

    DropDownChoice<ResearchGroup> groups = new DropDownChoice<ResearchGroup>("researchGroup", choices,
            new ChoiceRenderer<ResearchGroup>("title"));
    groups.setRequired(true);

    TextField<String> title = new TextField<String>("title");
    title.setLabel(ResourceUtils.getModel("label.scenarioTitle"));
    title.setRequired(true);
    // title.add(new TitleExistsValidator());

    TextField<Integer> length = new TextField<Integer>("scenarioLength", Integer.class);
    length.setRequired(true);
    length.add(RangeValidator.minimum(0));

    TextArea<String> description = new TextArea<String>("description");
    description.setRequired(true);
    description.setLabel(ResourceUtils.getModel("label.scenarioDescription"));

    final WebMarkupContainer fileContainer = new WebMarkupContainer("contailer");
    fileContainer.setVisibilityAllowed(false);
    fileContainer.setOutputMarkupPlaceholderTag(true);

    /*
     * TODO file field for xml was not visible in old portal. I dont know why. So I hided it but its implemented and not tested.
     */
    // hidded line in old portal
    final DropDownChoice<ScenarioSchemas> schemaList = new DropDownChoice<ScenarioSchemas>("schemaList",
            new Model<ScenarioSchemas>(), scenariosFacade.getListOfScenarioSchemas(),
            new ChoiceRenderer<ScenarioSchemas>("schemaName", "schemaId"));
    schemaList.setOutputMarkupPlaceholderTag(true);
    schemaList.setRequired(true);
    schemaList.setLabel(ResourceUtils.getModel("label.scenarioSchema"));
    schemaList.setVisibilityAllowed(false);

    final FileUploadField file = new FileUploadField("file", new ListModel<FileUpload>());
    file.setOutputMarkupId(true);
    file.setLabel(ResourceUtils.getModel("description.fileType.dataFile"));
    file.setOutputMarkupPlaceholderTag(true);

    // hidded line in old portal
    final FileUploadField xmlfile = new FileUploadField("xmlfile", new ListModel<FileUpload>());
    xmlfile.setOutputMarkupId(true);
    xmlfile.setLabel(ResourceUtils.getModel("label.xmlDataFile"));
    xmlfile.setOutputMarkupPlaceholderTag(true);
    xmlfile.setVisibilityAllowed(false);

    // hidded line in old portal
    final RadioGroup<Boolean> schema = new RadioGroup<Boolean>("schema", new Model<Boolean>(Boolean.FALSE));
    schema.add(new Radio<Boolean>("noschema", new Model<Boolean>(Boolean.FALSE), schema));
    schema.add(new Radio<Boolean>("fromschema", new Model<Boolean>(Boolean.TRUE), schema));
    schema.setOutputMarkupPlaceholderTag(true);
    schema.setVisibilityAllowed(false);
    schema.add(new AjaxFormChoiceComponentUpdatingBehavior() {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            schemaList.setVisibilityAllowed(schema.getModelObject());
            xmlfile.setRequired(!xmlfile.isRequired());

            target.add(xmlfile);
            target.add(schemaList);
        }
    });

    CheckBox privateCheck = new CheckBox("privateScenario");
    final CheckBox dataAvailable = new CheckBox("dataAvailable", new Model<Boolean>());
    dataAvailable.add(new AjaxFormComponentUpdatingBehavior("onChange") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {

            fileContainer.setVisibilityAllowed(dataAvailable.getModelObject());
            file.setRequired(!file.isRequired());
            target.add(fileContainer);
        }
    });

    fileContainer.add(file, xmlfile, schema, schemaList);

    add(groups, title, length, description, privateCheck, dataAvailable, fileContainer);

    add(new AjaxButton("submitForm", this) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {

            FileUpload uploadedFile = file.getFileUpload();
            Scenario scenario = ScenarioForm.this.getModelObject();

            if (!scenariosFacade.canSaveTitle(scenario.getTitle(), scenario.getScenarioId())) {
                error(ResourceUtils.getString("error.titleAlreadyInDatabase"));
                target.add(feedback);
                return;
            } else {
                // loading non-XML scenario file
                if ((uploadedFile != null) && (!(uploadedFile.getSize() == 0))) {

                    String name = uploadedFile.getClientFileName();
                    // when uploading from localhost some browsers will specify the entire path, we strip it
                    // down to just the file name
                    name = Strings.lastPathComponent(name, '/');
                    name = Strings.lastPathComponent(name, '\\');

                    // File uploaded
                    String filename = name.replace(" ", "_");
                    scenario.setScenarioName(filename);

                    scenario.setMimetype(uploadedFile.getContentType());
                    try {
                        scenario.setFileContentStream(uploadedFile.getInputStream());
                    } catch (IOException e) {
                        log.error(e.getMessage(), e);
                        error("Error while saving data.");
                        target.add(feedback);
                    }
                }

                // Creating new
                scenariosFacade.create(scenario);

                /*
                 * clean up after upload file, and set model to null or will be problem with page serialization when redirect start - DON'T DELETE IT !
                 */
                ScenarioForm.this.setModelObject(null);

                window.close(target);
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {

            target.add(feedback);
        }
    });

    add(new AjaxButton("closeForm", ResourceUtils.getModel("button.close")) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            window.close(target);
        }
    }.setDefaultFormProcessing(false));

    setOutputMarkupId(true);
}

From source file:cz.zcu.kiv.eegdatabase.wui.ui.pricing.PriceListPage.java

License:Apache License

private void setupComponents() {

    person = EEGDataBaseSession.get().getLoggedUser();
    selectModel = new Model<ResearchGroup>();
    packagesModel = new ListModel<ExperimentPackage>();

    final WebMarkupContainer experimentsContainer = new WebMarkupContainer("experimentsContainer");
    experimentsContainer.setOutputMarkupId(true);

    Label emptyExperiments = new Label("emptyExperimentsLabel",
            ResourceUtils.getModel("label.myexperiments.empty")) {

        private static final long serialVersionUID = 1L;

        @Override/*from w w  w .  j av a 2  s. co  m*/
        public boolean isVisible() {
            return experimentProvider.size() == 0;
        }
    };
    experimentProvider = new ListExperimentsDataProvider(experimentFacade, person, true, false);
    DefaultDataTable<Experiment, String> list = new DefaultDataTable<Experiment, String>("list",
            createListColumns(experimentsContainer), experimentProvider, ITEMS_PER_PAGE) {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            return experimentProvider.size() != 0;
        }
    };
    experimentsContainer.add(list, emptyExperiments);

    final WebMarkupContainer priceListForPackageContainer = new WebMarkupContainer("expPackagesContainer");
    priceListForPackageContainer.setOutputMarkupId(true);
    priceListForPackageContainer.setVisibilityAllowed(securityFacade.userIsGroupAdmin());

    List<ResearchGroup> selectGroupChoice = groupFacade.getResearchGroupsWhereUserIsGroupAdmin(person);
    final DropDownChoice<ResearchGroup> selectGroup = new DropDownChoice<ResearchGroup>("selectGroup",
            selectModel, selectGroupChoice);
    selectGroup.add(new AjaxFormComponentUpdatingBehavior("onChange") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            ResearchGroup selection = selectModel.getObject();
            List<ExperimentPackage> selectPackages = expPackageFacade.listExperimentPackagesByGroup(selection);
            packagesModel.setObject(selectPackages);
            target.add(priceListForPackageContainer);
        }

    });
    priceListForPackageContainer.add(selectGroup);

    PageableListView<ExperimentPackage> packageList = new PageableListView<ExperimentPackage>("packageList",
            packagesModel, ITEMS_PER_PAGE) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<ExperimentPackage> item) {
            item.setModel(new CompoundPropertyModel<ExperimentPackage>(item.getModel()));
            item.add(new Label("experimentPackageId"));
            item.add(new Label("name"));
            item.add(new Label("price"));
            item.add(new PriceChangePanel("changePrice",
                    new PropertyModel<BigDecimal>(item.getModel(), "price"), getFeedback(), "width: 80px;") {

                private static final long serialVersionUID = 1L;

                @Override
                void onUpdate(AjaxRequestTarget target) {
                    ExperimentPackage experimentPackage = item.getModelObject();
                    expPackageFacade.update(experimentPackage);
                    target.add(priceListForPackageContainer);
                }

            });
        }

        @Override
        public boolean isVisible() {
            List<ExperimentPackage> list = packagesModel.getObject();
            return list != null && !list.isEmpty();
        }
    };

    Label emptyListLabel = new Label("emptyListLabel",
            ResourceUtils.getModel("label.experimentPackage.select.empty")) {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            List<ExperimentPackage> list = packagesModel.getObject();
            return selectModel.getObject() != null && !(list != null && !list.isEmpty());
        }
    };

    priceListForPackageContainer.add(emptyListLabel);
    priceListForPackageContainer.add(packageList);
    add(priceListForPackageContainer, experimentsContainer);
}