Example usage for org.apache.wicket.markup.html WebMarkupContainer getMarkupId

List of usage examples for org.apache.wicket.markup.html WebMarkupContainer getMarkupId

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html WebMarkupContainer getMarkupId.

Prototype

public String getMarkupId(boolean createIfDoesNotExist) 

Source Link

Document

Retrieves id by which this component is represented within the markup.

Usage

From source file:org.dcm4chee.web.war.tc.TCDocumentsView.java

License:LGPL

public TCDocumentsView(final String id, IModel<? extends TCObject> model, final boolean editing) {
    super(id, model);

    this.editing = editing;

    final TCModalDialog removeDocDlg = TCModalDialog.getOkCancel("remove-doc-dialog",
            TCUtilities.getLocalizedString("tc.documents.removedialog.msg"), null);
    removeDocDlg.setInitialHeight(100);/*from   ww w.  j  a va2 s. c  o  m*/
    removeDocDlg.setInitialWidth(420);
    removeDocDlg.setUseInitialHeight(true);

    final WebMarkupContainer items = new WebMarkupContainer("document-items");
    items.setOutputMarkupId(true);
    items.add(new ListView<TCDocumentObject>("document-item", new ListModel<TCDocumentObject>() {
        @Override
        public List<TCDocumentObject> getObject() {
            return getTC().getReferencedDocumentObjects();
        }
    }) {
        @Override
        protected void populateItem(final ListItem<TCDocumentObject> item) {
            final TCDocumentObject doc = item.getModelObject();

            // compile text
            MimeType mimeType = doc.getMimeType();
            Date addedDate = doc.getDocumentAddedDate();
            String docDescription = doc.getDocumentDescription();
            if (docDescription == null) {
                docDescription = doc.getDocumentName();
            }

            StringBuilder sbuilder = new StringBuilder();
            if (docDescription != null) {
                sbuilder.append(docDescription).append("\n");
            }
            sbuilder.append("<i>");
            sbuilder.append(mimeType.getDocumentType().getHumanReadableName());
            sbuilder.append("; ");
            sbuilder.append(TCUtilities.getLocalizedString("tc.documents.addedon.text")).append(" ");
            sbuilder.append(DateFormat.getDateInstance(DateFormat.MEDIUM).format(addedDate));
            sbuilder.append("</i>");

            // add components
            final WebMarkupContainer actions = new WebMarkupContainer("document-item-actions");
            actions.setOutputMarkupId(true);
            actions.setOutputMarkupPlaceholderTag(true);
            actions.add(new ResourceLink<Void>("document-item-download-btn", doc.getDocumentContent(true))
                    .add(new TCHoverImage("document-item-download-image", ImageManager.IMAGE_TC_DISK_MONO,
                            ImageManager.IMAGE_TC_DISK)
                                    .add(new ImageSizeBehaviour(20, 20, "vertical-align: middle;"))
                                    .add(new TooltipBehaviour("tc.documents.", "download"))));
            actions.add(new AjaxLink<Void>("document-item-remove-btn") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    try {
                        if (editing) {
                            removeDocDlg.setCallback(new ModalDialogCallbackAdapter() {
                                @Override
                                public void dialogAcknowledged(AjaxRequestTarget target) {
                                    getEditableTC().removeReferencedDocument(doc);
                                    target.addComponent(items);
                                }
                            });

                            removeDocDlg.show(target);
                        }
                    } catch (Exception e) {
                        log.error("Removing referenced document from teaching-file failed!", e);
                    }
                }

                @Override
                public boolean isVisible() {
                    return editing;
                }
            }.add(new TCHoverImage("document-item-remove-image", ImageManager.IMAGE_TC_CANCEL_MONO,
                    ImageManager.IMAGE_TC_CANCEL).add(new ImageSizeBehaviour(20, 20, "vertical-align: middle;"))
                            .add(new TooltipBehaviour("tc.documents.", "remove"))));

            item.add(new AttributeModifier("onmouseover", true,
                    new Model<String>("$('#" + actions.getMarkupId(true) + "').show();")));
            item.add(new AttributeModifier("onmouseout", true,
                    new Model<String>("$('#" + actions.getMarkupId(true) + "').hide();")));

            item.add(new ResourceLink<Void>("document-item-view-link", doc.getDocumentContent(false))
                    .add(new NonCachingImage("document-item-image", doc.getDocumentThumbnail())
                            .add(new TCMaxImageSizeBehavior(32, 32).setAdditionalCSS("vertical-align:middle")))
                    .add(new TooltipBehaviour("tc.documents.", "view"))
                    .add(new AttributeAppender("target", true, new Model<String>("_blank"), " ")));
            item.add(new MultiLineLabel("document-item-text", sbuilder.toString()) {
                @Override
                protected void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
                    final CharSequence body = Strings.toMultilineMarkup(getDefaultModelObjectAsString());

                    replaceComponentTagBody(markupStream, openTag,
                            body.toString().replaceFirst("<p>", "<p style=\"margin:0px\">"));
                }
            }.setEscapeModelStrings(false));
            item.add(actions);
        }
    });

    final FileUploadField uploadField = new FileUploadField("file-upload-field") {
        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);

            MimeType[] types = MimeType.values();
            if (types != null && types.length > 0) {
                StringBuilder accept = new StringBuilder();
                accept.append(types[0].getMimeTypeString());
                for (int i = 1; i < types.length; i++) {
                    accept.append(",").append(types[i].getMimeTypeString());
                }
                tag.put("accept", accept.toString());
            }
        }
    };
    final long maxUploadSize = Bytes.megabytes(25).bytes();
    final TextArea<String> uploadDescription = new TextArea<String>("file-upload-description-text",
            new Model<String>());
    final Form<Void> uploadForm = new Form<Void>("file-upload-form");
    uploadForm.setMultiPart(true);
    uploadForm.setMaxSize(Bytes.megabytes(25)); // seems that this doesn't work because of a bug in WICKET 1.4
    uploadForm.add(new Label("file-upload-label", TCUtilities.getLocalizedString("tc.documents.upload.text")));
    uploadForm.add(new Label("file-upload-description-label",
            TCUtilities.getLocalizedString("tc.documents.upload.description.text")));
    uploadForm.add(uploadField);
    uploadForm.add(uploadDescription);
    uploadForm.add(new AjaxButton("file-upload-btn") {
        @Override
        public void onSubmit(AjaxRequestTarget target, Form<?> form) {
            final FileUpload upload = uploadField.getFileUpload();
            if (upload != null) {
                String contentType = null, fileName = null;
                final long totalBytes = upload.getSize();
                try {
                    if (totalBytes > 0) {
                        if (totalBytes <= maxUploadSize) {
                            getEditableTC().addReferencedDocument(
                                    MimeType.get(contentType = upload.getContentType()),
                                    fileName = upload.getClientFileName(), upload.getInputStream(),
                                    uploadDescription.getModelObject());
                        } else {
                            log.warn("File upload denied: Max upload size is " + maxUploadSize + " bytes!");
                        }
                    }

                    target.addComponent(items);
                } catch (Exception e) {
                    log.error("Unable to upload teaching-file referenced document (content-type='" + contentType
                            + "', file-name='" + fileName + "')!", e);
                } finally {
                    upload.closeStreams();

                    uploadField.clearInput();
                    uploadDescription.clearInput();
                    uploadDescription.setModelObject(null);

                    target.addComponent(uploadForm);
                }
            }
        }

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

        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            return new TCMaskingAjaxDecorator(true, true);
        }
    }.add(new Label("file-upload-btn-text", TCUtilities.getLocalizedString("tc.documents.upload.start.text"))));

    add(items);
    add(removeDocDlg);
    add(new WebMarkupContainer("file-upload") {
        @Override
        public boolean isVisible() {
            return editing;
        }
    }.add(new Image("file-upload-info-img", ImageManager.IMAGE_TC_INFO) {
        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);

            StringBuilder sbuilder = new StringBuilder();
            sbuilder.append(
                    MessageFormat.format(TCUtilities.getLocalizedString("tc.documents.upload.maxsize.text"),
                            Bytes.bytes(maxUploadSize).megabytes()));
            sbuilder.append("\n");

            MimeType[] mimeTypes = MimeType.values();
            if (mimeTypes != null) {
                boolean firstExt = true;
                int nExtPerLine = 8;
                int nExtInLine = 0;
                for (MimeType type : mimeTypes) {
                    String[] exts = type.getSupportedFileExtensions();
                    if (exts != null) {
                        for (String ext : exts) {
                            String s = "*." + ext;
                            if (firstExt) {
                                sbuilder.append(
                                        TCUtilities.getLocalizedString("tc.documents.upload.files.text"));
                                sbuilder.append("\n");
                                sbuilder.append(s);
                                firstExt = false;
                                nExtInLine++;
                            } else {
                                if (!sbuilder.toString().contains(s)) {
                                    if (nExtInLine == nExtPerLine) {
                                        sbuilder.append("\n");
                                        nExtInLine = 0;
                                    } else {
                                        sbuilder.append(", ");
                                    }
                                    sbuilder.append(s);
                                    nExtInLine++;
                                }
                            }
                        }
                    }
                }
            }
            tag.put("title", sbuilder.toString());
        }
    }.add(new ImageSizeBehaviour(16, 16, "vertical-align:middle;margin:5px;"))).add(uploadForm)
            .setMarkupId("documents-file-upload"));
}

From source file:org.dcm4chee.web.war.tc.TCLinksView.java

License:LGPL

public TCLinksView(final String id, IModel<? extends TCObject> model,
        final TCAttributeVisibilityStrategy attrVisibility, final boolean editing) {
    super(id, model);

    this.editing = editing;

    final TCModalDialog removeDlg = TCModalDialog.getOkCancel("remove-link-dialog",
            TCUtilities.getLocalizedString("tc.links.removedialog.msg"), null);
    removeDlg.setInitialHeight(100);/*  w ww.j  ava2  s . c  om*/
    removeDlg.setInitialWidth(420);
    removeDlg.setUseInitialHeight(true);
    add(removeDlg);

    final WebMarkupContainer links = new WebMarkupContainer("links");
    links.setOutputMarkupId(true);
    links.add(new ListView<TCLink>("link", new ListModel<TCLink>() {
        @Override
        public List<TCLink> getObject() {
            List<TCLink> list = new ArrayList<TCLink>(getTC().getLinks());
            for (Iterator<TCLink> it = list.iterator(); it.hasNext();) {
                TCLink link = it.next();
                if (!link.isPermitted() || link.getLinkedCase() == null) {
                    it.remove();
                }
            }
            return list;
        }
    }) {
        @Override
        protected void populateItem(final ListItem<TCLink> item) {
            final TCLink link = item.getModelObject();
            final TCEditableObject tc = link.getLinkedCase();

            //relationship
            item.add(new Label("link-relationship", link.getLinkRelationship().toString())
                    .add(new AttributeAppender("style", true,
                            new Model<String>(!isShownInDialog() ? "float:right" : ""), ";")));

            //title link
            item.add(new AjaxLink<Void>("link-title-link") {
                @Override
                public boolean isEnabled() {
                    return !editing;
                }

                @Override
                public void onClick(AjaxRequestTarget target) {
                    try {
                        if (!openLinkInDialog(target, link)) {
                            PageParameters params = new PageParameters();
                            params.put("uid", link.getLinkedCaseUID());
                            setResponsePage(new TCCaseViewPage(params));
                        }
                    } catch (Exception e) {
                        log.error("Unable to open teaching-file link!", e);
                    }
                }
            }.add(new Label("link-title", new AbstractReadOnlyModel<String>() {
                @Override
                public String getObject() {
                    if (!attrVisibility.isAttributeVisible(TCAttribute.Title)) {
                        return TCUtilities.getLocalizedString("tc.case.text") + " "
                                + link.getLinkedCase().getId();
                    }
                    return link.getLinkedCase().getTitle();
                }
            }) {
                @Override
                protected void onComponentTag(ComponentTag tag) {
                    super.onComponentTag(tag);
                    if (!editing) {
                        tag.put("onmouseout", "$(this).siblings('img').hide();");
                        tag.put("onmouseover", "$(this).siblings('img').show();");
                    }
                }
            }).add(new Image("link-follow-image", ImageManager.IMAGE_TC_EYE_MONO)
                    .add(new AttributeAppender("style", true, new Model<String>("display:none"), ";")))
                    .add(new TCToolTipAppender("tc.case.open.text") {
                        @Override
                        public boolean isEnabled(Component c) {
                            return !editing;
                        }
                    }));

            //image link
            item.add(new TCWadoImage("link-image", new Model<TCImageViewImage>() {
                @Override
                public TCImageViewImage getObject() {
                    List<TCReferencedImage> refImages = tc.getReferencedImages();
                    return refImages != null && !refImages.isEmpty() ? refImages.get(0) : null;
                }
            }, TCWadoImageSize.createWidthInstance(64)) {
                @Override
                protected LocalizedImageResource createEmptyImage() {
                    LocalizedImageResource emptyImage = new LocalizedImageResource(this);
                    emptyImage.setResourceReference(ImageManager.IMAGE_TC_IMAGE_SQUARE);
                    return emptyImage;
                }
            });

            //abstract
            item.add(new TCMultiLineLabel("link-abstract", new AbstractReadOnlyModel<String>() {
                @Override
                public String getObject() {
                    if (!attrVisibility.isAttributeVisible(TCAttribute.Abstract)) {
                        return TCUtilities.getLocalizedString("tc.obfuscation.text");
                    }
                    return link.getLinkedCase().getAbstr();
                }
            }, new AutoClampSettings(40)).setEscapeModelStrings(false));

            //comment
            item.add(new TCMultiLineLabel("link-comment", new AbstractReadOnlyModel<String>() {
                @Override
                public String getObject() {
                    StringBuilder comment = new StringBuilder();
                    comment.append(TCUtilities.getLocalizedString("tc.links.comment.text"));
                    comment.append("&nbsp;");
                    comment.append(link.getLinkComment());
                    return comment.toString();
                }
            }) {
                @Override
                public boolean isVisible() {
                    return link.getLinkComment() != null && !link.getLinkComment().isEmpty();
                }

            }.setEscapeModelStrings(false).setOutputMarkupPlaceholderTag(true));

            //actions
            final WebMarkupContainer actions = new WebMarkupContainer("link-actions");
            actions.setOutputMarkupId(true);
            actions.setOutputMarkupPlaceholderTag(true);
            actions.add(new AjaxLink<Void>("link-remove-btn") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    try {
                        if (editing) {
                            removeDlg.setCallback(new ModalDialogCallbackAdapter() {
                                @Override
                                public void dialogAcknowledged(AjaxRequestTarget target) {
                                    getEditableTC().removeLink(link);
                                    target.addComponent(links);
                                }
                            });

                            removeDlg.show(target);
                        }
                    } catch (Exception e) {
                        log.error("Removing link from teaching-file failed!", e);
                    }
                }

                @Override
                public boolean isVisible() {
                    return editing;
                }
            }.add(new TCHoverImage("link-remove-image", ImageManager.IMAGE_TC_CANCEL_MONO,
                    ImageManager.IMAGE_TC_CANCEL).add(new ImageSizeBehaviour(20, 20, "vertical-align: middle;"))
                            .add(new TooltipBehaviour("tc.links.", "remove"))));

            item.add(new AttributeModifier("onmouseover", true,
                    new Model<String>("$('#" + actions.getMarkupId(true) + "').show();")));
            item.add(new AttributeModifier("onmouseout", true,
                    new Model<String>("$('#" + actions.getMarkupId(true) + "').hide();")));

            item.add(actions);
        }
    });

    add(links);

    final WebMarkupContainer search = new WebMarkupContainer("link-search") {
        @Override
        public boolean isVisible() {
            return editing;
        }
    };

    search.add(new Image("link-search-info-img", ImageManager.IMAGE_TC_INFO) {
        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);

            tag.put("title", TCUtilities.getLocalizedString("tc.links.info.text"));
        }
    }.add(new ImageSizeBehaviour(16, 16, "vertical-align:middle;margin:5px;")));

    final ListModel<Instance> searchModel = new ListModel<Instance>(new ArrayList<Instance>());
    final WebMarkupContainer searchResults = new WebMarkupContainer("link-search-case-results");

    // link case search result
    search.add(
            new Label("link-search-case-label", TCUtilities.getLocalizedString("tc.links.search.case.text")));

    // link relationship
    final TCAjaxComboBox<TCLinkRelationship> relationshipCBox = new TCAjaxComboBox<TCLinkRelationship>(
            "link-search-relationship-select", Arrays.asList(TCLinkRelationship.values()),
            TCLinkRelationship.RELATES_TO) {
        private final int MAX_RESULTS = 20;
        final EnumSet<TCLinkRelationship> patientCases = EnumSet.of(TCLinkRelationship.ANTERIOR,
                TCLinkRelationship.POSTERIOR);
        final EnumSet<TCLinkRelationship> searchCases = EnumSet.complementOf(patientCases);

        @Override
        protected TCLinkRelationship convertValue(String value) throws Exception {
            return TCLinkRelationship.valueOfLocalized(value);
        }

        @Override
        protected void valueChanged(TCLinkRelationship value, TCLinkRelationship oldValue,
                AjaxRequestTarget target) {
            boolean changedToSearchCases = patientCases.contains(oldValue) && searchCases.contains(value);
            boolean changedToPatientCases = patientCases.contains(value) && searchCases.contains(oldValue);

            if (changedToSearchCases || changedToPatientCases) {
                if (target != null) {
                    target.addComponent(searchField);
                    target.appendJavascript("$('#" + searchField.getMarkupId(true) + "').textfield();");
                }

                if (changedToPatientCases) {
                    try {
                        TCEditableObject tc = getEditableTC();
                        if (tc == null) {
                            log.warn("Unable to create/add teaching-file link: Teaching-File not editable!");
                        } else {
                            List<Instance> result = Collections.emptyList();
                            TCQueryLocal dao = (TCQueryLocal) JNDIUtils.lookup(TCQueryLocal.JNDI_NAME);

                            List<String> roles = StudyPermissionHelper.get().applyStudyPermissions()
                                    ? StudyPermissionHelper.get().getDicomRoles()
                                    : null;

                            result = dao.findInstancesOfPatient(tc.getPatientId(), tc.getPatientIdIssuer(),
                                    roles, WebCfgDelegate.getInstance().getTCRestrictedSourceAETList());

                            if (result.size() > MAX_RESULTS) {
                                result = result.subList(0, MAX_RESULTS);
                            }

                            String iuid = tc.getInstanceUID();
                            for (Iterator<Instance> it = result.iterator(); it.hasNext();) {
                                if (iuid.equals(it.next().getSOPInstanceUID())) {
                                    it.remove();
                                    break;
                                }
                            }

                            searchModel.setObject(result);

                            if (selectedUID != null) {
                                boolean containsSelectedUID = false;
                                for (Instance i : result) {
                                    if (selectedUID.equals(i.getSOPInstanceUID())) {
                                        containsSelectedUID = true;
                                        break;
                                    }
                                }
                                if (!containsSelectedUID) {
                                    selectedUID = null;
                                }
                            }

                            if (target != null) {
                                target.addComponent(searchResults);
                                target.addComponent(linkBtn);
                                target.appendJavascript("$('#" + linkBtn.getMarkupId(true) + "').button();");
                                target.appendJavascript(
                                        "$('#" + searchResults.getMarkupId(true) + "').menu();");
                            }
                        }
                    } catch (Exception e) {
                        log.error(null, e);
                    }
                }
            }
        }
    };
    search.add(new Label("link-search-relationship-label",
            TCUtilities.getLocalizedString("tc.links.search.relationship.text")));
    search.add(relationshipCBox);

    final ListView<Instance> searchResultsList = new ListView<Instance>("link-search-case-results-list",
            searchModel) {
        @Override
        protected void populateItem(final ListItem<Instance> item) {
            final Instance i = item.getModelObject();
            String title = i.getAttributes(false).getString(Tag.ContentLabel);
            item.setOutputMarkupId(true);
            item.add(new AjaxLink<Void>("link-search-case-results-list-item") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    selectedUID = i.getSOPInstanceUID();

                    String markupId = item.getMarkupId(true);
                    StringBuffer sbuf = new StringBuffer();
                    sbuf.append("$('#").append(markupId)
                            .append("').siblings().removeClass('ui-state-active');");
                    sbuf.append("$('#").append(markupId).append("').removeClass('ui-state-default');");
                    sbuf.append("$('#").append(markupId).append("').addClass('ui-state-active');");

                    target.addComponent(linkBtn);
                    target.appendJavascript(sbuf.toString());
                    target.appendJavascript("$('#" + linkBtn.getMarkupId(true) + "').button();");
                }
            }.add(new Label("link-search-case-results-item-text", title)));

            if (selectedUID != null && selectedUID.equals(i.getSOPInstanceUID())) {
                item.add(new AttributeAppender("class", true, new Model<String>("ui-state-active"), " "));
            }
        }
    };
    searchResultsList.setOutputMarkupId(true);
    searchResults.setOutputMarkupId(true);
    searchResults.add(searchResultsList);

    search.add(searchResults);

    // link case search/input
    search.add((searchField = new SelfUpdatingTextField("link-search-case-input", "") {
        private final int MAX_RESULTS = 50;
        private volatile String currentSearchString = null;
        private TCQueryFilter filter = new TCQueryFilter();
        private IAjaxCallDecorator cursorDecorator = new TCMaskingAjaxDecorator(false, true);

        @Override
        protected Duration getThrottleDelay() {
            return Duration.milliseconds(300);
        }

        @Override
        protected String getUpdateEvent() {
            return "onkeyup";
        }

        @Override
        protected IAjaxCallDecorator getUpdateDecorator() {
            return cursorDecorator;
        }

        @Override
        public boolean isVisible() {
            TCLinkRelationship relationship = relationshipCBox.getModelObject();
            return !TCLinkRelationship.ANTERIOR.equals(relationship)
                    && !TCLinkRelationship.POSTERIOR.equals(relationship);
        }

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);

            tag.put("autocomplete", "off");
            tag.put("placeholder", TCUtilities.getLocalizedString("tc.links.search.hint.text"));
        }

        @Override
        protected void textUpdated(String text, AjaxRequestTarget target) {
            boolean search = false;
            synchronized (this) {
                if (!stringEqualsIgnoreCase(currentSearchString, text)) {
                    currentSearchString = text;
                    search = true;
                }
            }
            if (search) {
                selectedUID = null;

                searchImpl(currentSearchString, target);
            }
        }

        private void searchImpl(final String searchString, AjaxRequestTarget target) {
            try {
                List<Instance> result = Collections.emptyList();
                if (searchString != null && !searchString.isEmpty()) {
                    filter.setTitle(searchString);

                    TCQueryLocal dao = (TCQueryLocal) JNDIUtils.lookup(TCQueryLocal.JNDI_NAME);

                    List<String> roles = StudyPermissionHelper.get().applyStudyPermissions()
                            ? StudyPermissionHelper.get().getDicomRoles()
                            : null;

                    result = dao.findMatchingInstances(filter, roles,
                            WebCfgDelegate.getInstance().getTCRestrictedSourceAETList(), false);
                }

                if (stringEqualsIgnoreCase(currentSearchString, searchString)) {
                    if (result.size() > MAX_RESULTS) {
                        result = result.subList(0, MAX_RESULTS);
                    }

                    String iuid = getEditableTC().getInstanceUID();
                    for (Iterator<Instance> it = result.iterator(); it.hasNext();) {
                        if (iuid.equals(it.next().getSOPInstanceUID())) {
                            it.remove();
                            break;
                        }
                    }

                    searchModel.setObject(result);

                    if (target != null) {
                        target.addComponent(searchResults);
                        target.addComponent(linkBtn);
                        target.appendJavascript("$('#" + linkBtn.getMarkupId(true) + "').button();");
                        target.appendJavascript("$('#" + searchResults.getMarkupId(true) + "').menu();");
                    }
                }
            } catch (Exception e) {
                log.error(null, e);
            }
        }

        private boolean stringEqualsIgnoreCase(String s1, String s2) {
            return s1 == s2 || (s1 != null && s2 != null && s1.equalsIgnoreCase(s2));
        }
    }).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));

    // link comment
    final TextArea<String> commentArea = new SelfUpdatingTextArea("link-search-comment-area",
            new Model<String>());
    search.add(new Label("link-search-comment-label", TCUtilities.getLocalizedString("tc.links.comment.text")));
    search.add(commentArea);

    // link button
    search.add(linkBtn = new AjaxLink<Void>("link-link-btn") {
        @Override
        public boolean isEnabled() {
            return selectedUID != null && relationshipCBox.getModelObject() != null;
        }

        @Override
        public void onClick(AjaxRequestTarget target) {
            try {
                if (selectedUID == null) {
                    log.warn("Unable to create/add teaching-file link: No case selected!");
                } else if (relationshipCBox.getModelObject() == null) {
                    log.warn("Unable to create/add teaching-file link: No link relationship selected!");
                } else {
                    TCEditableObject tc = getEditableTC();
                    if (tc == null) {
                        log.warn("Unable to create/add teaching-file link: Teaching-File not editable!");
                    } else {
                        tc.addLink(new TCLink(tc.getInstanceUID(), selectedUID,
                                relationshipCBox.getModelObject(), commentArea.getModelObject()));
                    }
                }
            } catch (Exception e) {
                log.error("Unable to create/add teaching-file link!", e);
            } finally {
                target.addComponent(links);
            }
        }

        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            return new TCMaskingAjaxDecorator(false, true);
        }
    }.add(new Label("link-link-btn-text", TCUtilities.getLocalizedString("tc.links.link.text")))
            .setOutputMarkupId(true));

    add(search);

    add(new HeaderContributor(new IHeaderContributor() {
        public void renderHead(IHeaderResponse response) {
            response.renderOnDomReadyJavascript("$('#" + searchResults.getMarkupId(true) + "').menu();");
        }
    }));
}

From source file:org.dcm4chee.web.war.tc.TCSearchPanel.java

License:LGPL

@SuppressWarnings({ "serial" })
public TCSearchPanel(final String id) {
    super(id, new Model<TCQueryFilter>(new TCQueryFilter()));

    setOutputMarkupId(true);//  ww  w.  j  a va  2 s  .  c  o m

    final DateSpanSearchItem dateSpanItem = new DateSpanSearchItem();
    final DateSpanDialog dateSpanDialog = new DateSpanDialog(dateSpanItem);
    final List<IDateSearchItem> dateItems = new ArrayList<IDateSearchItem>();
    dateItems.addAll(Arrays.asList(NotOlderThanSearchItem.values()));
    dateItems.add(dateSpanItem);

    Form<?> dateSpanDialogOuterForm = new Form<Void>("date-input-dialog-outer-form");
    dateSpanDialogOuterForm.setOutputMarkupId(true);
    dateSpanDialogOuterForm.setMarkupId("tc-search-date-input-form-helper");
    dateSpanDialogOuterForm.add(dateSpanDialog);

    final TCInput keywordInput = TCUtilities.createInput("keywordInput", TCQueryFilterKey.Keyword,
            getFilterValue(TCQueryFilterKey.Keyword), true);
    final TCInput anatomyInput = TCUtilities.createInput("anatomyInput", TCQueryFilterKey.Anatomy,
            getFilterValue(TCQueryFilterKey.Anatomy), true);
    final TCInput pathologyInput = TCUtilities.createInput("pathologyInput", TCQueryFilterKey.Pathology,
            getFilterValue(TCQueryFilterKey.Pathology), true);
    final TCInput findingInput = TCUtilities.createInput("findingInput", TCQueryFilterKey.Finding,
            getFilterValue(TCQueryFilterKey.Finding), true);
    final TCInput diagnosisInput = TCUtilities.createInput("diagnosisInput", TCQueryFilterKey.Diagnosis,
            getFilterValue(TCQueryFilterKey.Diagnosis), true);
    final TCInput diffDiagnosisInput = TCUtilities.createInput("diffDiagnosisInput",
            TCQueryFilterKey.DifferentialDiagnosis, getFilterValue(TCQueryFilterKey.DifferentialDiagnosis),
            true);
    final TextField<String> textText = new TextField<String>("textText", new Model<String>(""));
    textText.add(new AutoSelectInputTextBehaviour());

    final DropDownChoice<TCQueryFilterValue.AcquisitionModality> modalityChoice = TCUtilities
            .createDropDownChoice("modalityChoice", new Model<TCQueryFilterValue.AcquisitionModality>(),
                    Arrays.asList(TCQueryFilterValue.AcquisitionModality.values()), NullDropDownItem.All);
    final DropDownChoice<TCQueryFilterValue.PatientSex> patientSexChoice = TCUtilities.createEnumDropDownChoice(
            "patientSexChoice", new Model<TCQueryFilterValue.PatientSex>(),
            Arrays.asList(TCQueryFilterValue.PatientSex.values()), true, "tc.patientsex", NullDropDownItem.All);
    final DropDownChoice<TCQueryFilterValue.Category> categoryChoice = TCUtilities.createEnumDropDownChoice(
            "categoryChoice", new Model<TCQueryFilterValue.Category>(),
            Arrays.asList(TCQueryFilterValue.Category.values()), true, "tc.category", NullDropDownItem.All);
    final DropDownChoice<TCQueryFilterValue.Level> levelChoice = TCUtilities.createEnumDropDownChoice(
            "levelChoice", new Model<TCQueryFilterValue.Level>(),
            Arrays.asList(TCQueryFilterValue.Level.values()), true, "tc.level", NullDropDownItem.All);
    final DropDownChoice<TCQueryFilterValue.YesNo> diagnosisConfirmedChoice = TCUtilities
            .createEnumDropDownChoice("diagnosisConfirmedChoice", new Model<TCQueryFilterValue.YesNo>(),
                    Arrays.asList(TCQueryFilterValue.YesNo.values()), true, "tc.yesno", NullDropDownItem.All);
    final TCAjaxComboBox<IDateSearchItem> dateBox = new TCAjaxComboBox<IDateSearchItem>("dateChoice", dateItems,
            new IChoiceRenderer<IDateSearchItem>() {
                public String getIdValue(IDateSearchItem item, int index) {
                    return item.getId();
                }

                public String getDisplayValue(IDateSearchItem item) {
                    return item.getLabel(getSession().getLocale());
                }
            }) {
        @Override
        protected IDateSearchItem convertValue(String svalue) {
            if (TCUtilities.equals(dateSpanItem.getLabel(getSession().getLocale()), svalue)) {
                return dateSpanItem;
            } else {
                return NotOlderThanSearchItem.valueForLabel(svalue, getSession().getLocale());
            }
        }

        @Override
        protected boolean shallCommitValue(IDateSearchItem oldValue, IDateSearchItem newValue,
                AjaxRequestTarget target) {
            if (dateSpanItem == newValue) {
                final Component c = this;
                dateSpanDialog.setWindowClosedCallback(new WindowClosedCallback() {
                    @Override
                    public void onClose(AjaxRequestTarget target) {
                        target.appendJavascript(
                                getDateBoxInitUIJavascript(c.getMarkupId(true), dateSpanItem, false));
                    }
                });
                dateSpanDialog.show(target);
                return true;
            }

            return super.shallCommitValue(oldValue, newValue, target);
        }
    };
    TCUtilities.addOnDomReadyJavascript(dateBox,
            getDateBoxInitUIJavascript(dateBox.getMarkupId(), dateSpanItem, true));

    final RadioGroup<Option> optionGroup = new RadioGroup<Option>("optionGroup", new Model<Option>());
    optionGroup.add(new Radio<Option>("historyOption", new Model<Option>(Option.History)));
    optionGroup.add(new Radio<Option>("authorNameOption", new Model<Option>(Option.AuthorName)));
    optionGroup.add(new Radio<Option>("authorContactOption", new Model<Option>(Option.AuthorContact)));
    optionGroup.add(new Radio<Option>("authorOrganisationOption", new Model<Option>(Option.AuthorAffiliation)));
    optionGroup.add(new Radio<Option>("discussionOption", new Model<Option>(Option.Discussion)));
    optionGroup.add(new Radio<Option>("titleOption", new Model<Option>(Option.Title)));
    optionGroup.add(new Radio<Option>("abstractOption", new Model<Option>(Option.Abstract)));
    optionGroup.add(new Radio<Option>("patientSpeciesOption", new Model<Option>(Option.PatientSpecies)));

    final AjaxButton searchBtn = new AjaxButton("doSearchBtn") {

        private static final long serialVersionUID = 1L;

        private IAjaxCallDecorator decorator;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                try {
                    findParent(TCPanel.class).getPopupManager().hidePopups(target);
                } catch (Exception e) {
                    log.error("Error while closing popups!", e);
                }

                TCQueryFilter filter = (TCQueryFilter) TCSearchPanel.this.getDefaultModelObject();
                filter.clear();

                filter.setKeywords(keywordInput.getValues());

                if (showAdvancedOptions) {
                    filter.setAnatomy(anatomyInput.getValue());
                    filter.setPathology(pathologyInput.getValue());
                    filter.setFinding(findingInput.getValue());
                    filter.setDiagnosis(diagnosisInput.getValue());
                    filter.setDiffDiagnosis(diffDiagnosisInput.getValue());
                    filter.setAcquisitionModality(modalityChoice.getModelObject());
                    filter.setPatientSex(patientSexChoice.getModelObject());
                    filter.setCategory(categoryChoice.getModelObject());
                    filter.setLevel(levelChoice.getModelObject());

                    YesNo yesNo = diagnosisConfirmedChoice.getModelObject();
                    if (YesNo.Yes.equals(yesNo)) {
                        filter.setDiagnosisConfirmed(yesNo);
                    }

                    IDateSearchItem dateItem = dateBox.getModelObject();
                    if (dateItem == null) {
                        filter.setCreationDate(null, null);
                    } else {
                        filter.setCreationDate(dateItem.getFromDate(), dateItem.getUntilDate());
                    }

                    Option selectedOption = optionGroup.getModelObject();
                    if (selectedOption != null) {
                        if (Option.History.equals(selectedOption)) {
                            filter.setHistory(textText.getDefaultModelObjectAsString());
                        } else if (Option.AuthorName.equals(selectedOption)) {
                            filter.setAuthorName(textText.getDefaultModelObjectAsString());
                        } else if (Option.AuthorContact.equals(selectedOption)) {
                            filter.setAuthorContact(textText.getDefaultModelObjectAsString());
                        } else if (Option.AuthorAffiliation.equals(selectedOption)) {
                            filter.setAuthorAffiliation(textText.getDefaultModelObjectAsString());
                        } else if (Option.Title.equals(selectedOption)) {
                            filter.setTitle(textText.getDefaultModelObjectAsString());
                        } else if (Option.Abstract.equals(selectedOption)) {
                            filter.setAbstract(textText.getDefaultModelObjectAsString());
                        } else if (Option.PatientSpecies.equals(selectedOption)) {
                            filter.setPatientSpecies(textText.getDefaultModelObjectAsString());
                        } else if (Option.Discussion.equals(selectedOption)) {
                            filter.setDiscussion(textText.getDefaultModelObjectAsString());
                        }
                    }
                }

                Component[] toUpdate = doSearch(filter);

                if (toUpdate != null && target != null) {
                    for (Component c : toUpdate) {
                        target.addComponent(c);
                    }
                }
            } catch (Throwable t) {
                log.error("Searching for teaching-files failed!", t);
            }
        }

        @Override
        public void onError(AjaxRequestTarget target, Form<?> form) {
            BaseForm.addInvalidComponentsToAjaxRequestTarget(target, form);
        }

        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            if (decorator == null) {
                decorator = new TCMaskingAjaxDecorator(false, true);
            }
            return decorator;
        }
    };

    searchBtn.setOutputMarkupId(true);
    searchBtn.add(new Image("doSearchImg", ImageManager.IMAGE_COMMON_SEARCH)
            .add(new ImageSizeBehaviour("vertical-align: middle;")));
    searchBtn.add(new Label("doSearchText", new ResourceModel("tc.search.dosearch.text"))
            .add(new AttributeModifier("style", true, new Model<String>("vertical-align: middle;")))
            .setOutputMarkupId(true));

    AjaxButton resetBtn = new AjaxButton("resetSearchBtn") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            TCQueryFilter filter = (TCQueryFilter) TCSearchPanel.this.getDefaultModelObject();
            filter.clear();

            keywordInput.setValues();
            anatomyInput.setValues();
            pathologyInput.setValues();
            findingInput.setValues();
            diagnosisInput.setValues();
            diffDiagnosisInput.setValues();
            modalityChoice.setModelObject(null);
            levelChoice.setModelObject(null);
            patientSexChoice.setModelObject(null);
            categoryChoice.setModelObject(null);
            diagnosisConfirmedChoice.setModelObject(null);
            dateBox.setModelObject(null);
            textText.setModelObject(null);
            optionGroup.setModelObject(null);

            target.addComponent(form);
            target.appendJavascript("initUI($('#" + TCSearchPanel.this.getMarkupId(true) + "'));");
        }

        @Override
        public void onError(AjaxRequestTarget target, Form<?> form) {
            BaseForm.addInvalidComponentsToAjaxRequestTarget(target, form);
        }
    };
    resetBtn.add(new Image("resetSearchImg", ImageManager.IMAGE_COMMON_RESET)
            .add(new ImageSizeBehaviour("vertical-align: middle;")));
    resetBtn.add(new Label("resetSearchText", new ResourceModel("tc.search.reset.text"))
            .add(new AttributeModifier("style", true, new Model<String>("vertical-align: middle;"))));

    final WebMarkupContainer wmc = new WebMarkupContainer("advancedOptions");
    wmc.setOutputMarkupPlaceholderTag(true);
    wmc.setOutputMarkupId(true);
    wmc.setVisible(false);

    wmc.add(anatomyInput.getComponent());
    wmc.add(pathologyInput.getComponent());
    wmc.add(findingInput.getComponent());
    wmc.add(diagnosisInput.getComponent());
    wmc.add(diffDiagnosisInput.getComponent());
    wmc.add(modalityChoice);
    wmc.add(patientSexChoice);
    wmc.add(categoryChoice);
    wmc.add(levelChoice);
    wmc.add(diagnosisConfirmedChoice);
    wmc.add(dateBox);
    wmc.add(optionGroup);
    wmc.add(textText);
    wmc.add(resetBtn);

    final MarkupContainer advancedOptionsToggleLink = new AjaxFallbackLink<String>("advancedOptionsToggle") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            showAdvancedOptions = !showAdvancedOptions;

            wmc.setVisible(showAdvancedOptions);

            target.addComponent(wmc);
            target.addComponent(this);

            if (showAdvancedOptions) {
                target.appendJavascript("initUI($('#" + wmc.getMarkupId(true) + "'));");
            }
        }
    }.add(new Label("advancedOptionsToggleText", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = -7928173606391768738L;

        @Override
        public String getObject() {
            return showAdvancedOptions ? getString("tc.search.advancedOptions.hide.Text")
                    : getString("tc.search.advancedOptions.show.Text");
        }
    })).add((new Image("advancedOptionsToggleImg", new AbstractReadOnlyModel<ResourceReference>() {
        private static final long serialVersionUID = 1L;

        @Override
        public ResourceReference getObject() {
            return showAdvancedOptions ? ImageManager.IMAGE_COMMON_COLLAPSE : ImageManager.IMAGE_COMMON_EXPAND;
        }
    })).add(new ImageSizeBehaviour()));
    advancedOptionsToggleLink.setOutputMarkupId(true);

    final Form<?> form = new Form<Object>("searchForm");
    form.add(keywordInput.getComponent());
    form.add(wmc);
    form.add(searchBtn);
    form.setDefaultButton(searchBtn);
    form.setOutputMarkupPlaceholderTag(true);

    form.add(advancedOptionsToggleLink);

    add(dateSpanDialogOuterForm);
    add(form);

    add(new AjaxFallbackLink<Object>("searchToggle") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            showSearch = !showSearch;

            form.setVisible(showSearch);

            target.addComponent(TCSearchPanel.this);

            if (showSearch) {
                target.appendJavascript("initUI($('#" + TCSearchPanel.this.getMarkupId(true) + "'));");
            }
        }
    }.add((new Image("searchToggleImg", new AbstractReadOnlyModel<ResourceReference>() {
        private static final long serialVersionUID = 1L;

        @Override
        public ResourceReference getObject() {
            return showSearch ? ImageManager.IMAGE_COMMON_COLLAPSE : ImageManager.IMAGE_COMMON_EXPAND;
        }
    })).add(new ImageSizeBehaviour())));
}

From source file:org.efaps.ui.wicket.components.split.SidePanel.java

License:Apache License

/**
 * Constructor./*from w  w w  .  j  a  va  2 s.co m*/
 *
 * @param _wicketId             wicket id of this component
 * @param _commandUUID          UUID of the related command
 * @param _oid                  oid
 * @param _selectCmdUUID        UUID of the selected Command
 * @param _showStructurBrowser  show the StructurBrowser
 * @throws EFapsException on error
 */
public SidePanel(final String _wicketId, final UUID _commandUUID, final String _oid, final UUID _selectCmdUUID,
        final boolean _showStructurBrowser) throws EFapsException {
    super(_wicketId);
    this.add(new AjaxStorePositionBehavior(_showStructurBrowser));
    String positionH = Configuration.getAttribute(ConfigAttribute.SPLITTERPOSHORIZONTAL);
    String positionV = Configuration.getAttribute(ConfigAttribute.SPLITTERPOSVERTICAL);

    final String splitterState = positionH.equals("0") ? "closed" : null;

    if (positionH.equals("0")) {
        positionH = "200px";
    } else {
        positionH += "px";
    }
    if (positionV != null) {
        positionV += "px";
    }

    final SplitHeaderPanel header = new SplitHeaderPanel(_showStructurBrowser ? "headerTop" : "header");

    final WebMarkupContainer bottom = new WebMarkupContainer("bottom");
    this.add(bottom);

    final WebMarkupContainer overflow = new WebMarkupContainer("overflow");
    bottom.add(overflow);
    overflow.setOutputMarkupId(true);

    final WebMarkupContainer top = new WebMarkupContainer("top");
    this.add(top);
    top.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true);
    this.topPanelId = top.getMarkupId(true);
    this.menuTree = new MenuTree("menu", _commandUUID, _oid, _selectCmdUUID);

    overflow.add(this.menuTree.setOutputMarkupId(true));

    this.add(new ContentPaneBehavior(Region.LEADING, true, positionH, null, splitterState));

    if (_showStructurBrowser) {
        final StructurBrowserTreePanel stuctbrows = new StructurBrowserTreePanel("stuctbrows", _commandUUID,
                _oid);
        stuctbrows.setOutputMarkupId(true);
        top.add(stuctbrows);
        add(new WebMarkupContainer("header").setVisible(false));
        add(new BorderContainerBehavior(Design.HEADLINE, true));
        bottom.add(new ContentPaneBehavior(Region.CENTER, true));
        top.add(new ContentPaneBehavior(Region.TOP, true, null, positionV, null));
        top.add(header);
        overflow.add(AttributeModifier.replace("class", "eFapsSplit eFapsListMenuOverflow"));
    } else {
        add(header);
        top.setVisible(false);
        overflow.add(AttributeModifier.replace("class", "eFapsListMenuOverflow"));
    }
}

From source file:org.efaps.ui.wicket.pages.contentcontainer.ContentContainerPage.java

License:Apache License

/**
 * Method to initialize the Page./*w  ww  . j a  v  a  2 s .c o  m*/
 *
 * @param _uuid uuid of the command
 * @param _instanceKey key to the instance
 * @param _selectCmdUUID uuid of the selected Command
 * @throws EFapsException on error
 */
private void initialise(final UUID _uuid, final String _instanceKey, final UUID _selectCmdUUID)
        throws EFapsException {
    final WebMarkupContainer borderPanel = new WebMarkupContainer("borderPanel");
    this.add(borderPanel);
    borderPanel.add(new BorderContainerBehavior(Design.SIDEBAR, true));
    this.borderPanelId = borderPanel.getMarkupId(true);

    final AbstractCommand cmd = getCommand(_uuid);
    UUID tmpUUID = _uuid;
    this.webForm = cmd.getTargetForm() != null;
    if (cmd instanceof Menu) {
        for (final AbstractCommand childcmd : ((Menu) cmd).getCommands()) {
            if (_selectCmdUUID == null && childcmd.isDefaultSelected()) {
                tmpUUID = childcmd.getUUID();
                this.webForm = childcmd.getTargetForm() != null;
                break;
            } else if (childcmd.getUUID().equals(_selectCmdUUID)) {
                tmpUUID = childcmd.getUUID();
                this.webForm = childcmd.getTargetForm() != null;
                break;
            }
        }
    }
    final UUID uuid4NewPage = tmpUUID;

    final LazyIframe centerPanel = new LazyIframe("centerPanel", new IFrameProvider() {

        private static final long serialVersionUID = 1L;

        @Override
        public Page getPage() {
            Page error = null;
            AbstractContentPage page = null;
            try {
                if (ContentContainerPage.this.webForm) {
                    page = new FormPage(uuid4NewPage, _instanceKey, getPageReference());
                } else {
                    if (getCommand(uuid4NewPage).getTargetStructurBrowserField() == null) {
                        page = new TablePage(uuid4NewPage, _instanceKey, getPageReference());
                    } else {
                        page = new StructurBrowserPage(uuid4NewPage, _instanceKey, getPageReference());
                    }
                }
            } catch (final EFapsException e) {
                error = new ErrorPage(e);
            }
            return error == null ? page : error;
        }
    }, null);

    borderPanel.add(centerPanel);
    centerPanel.add(new ContentPaneBehavior(Region.CENTER, false));
    this.centerPanelId = centerPanel.getMarkupId(true);

    borderPanel.add(new SidePanel("leftPanel", _uuid, _instanceKey, _selectCmdUUID, this.structurbrowser));
}