List of usage examples for org.apache.wicket.markup.html WebMarkupContainer getMarkupId
public String getMarkupId(boolean createIfDoesNotExist)
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(" "); 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)); }