List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow getContentId
public String getContentId()
From source file:com.doculibre.constellio.wicket.panels.admin.fieldType.AddEditFieldTypePanel.java
License:Open Source License
public AddEditFieldTypePanel(String id, FieldType fieldType, Component refreshComponentP) { super(id, true); this.fieldTypeModel = new ReloadableEntityModel<FieldType>(fieldType); this.refreshComponent = refreshComponentP; Form form = getForm();/*from w w w .j a va 2s . c o m*/ form.setModel(new CompoundPropertyModel(fieldTypeModel)); TextField nameField = new RequiredTextField("name"); nameField.add(new StringValidator.MaximumLengthValidator(255)); form.add(nameField); final ModalWindow fieldTypeClassModal = new ModalWindow("fieldTypeClassModal"); form.add(fieldTypeClassModal); fieldTypeClassModal.setCssClassName(ModalWindow.CSS_CLASS_GRAY); IModel fieldTypeClassesModel = new LoadableDetachableModel() { @Override protected Object load() { FieldTypeClassServices fieldTypeClassServices = ConstellioSpringUtils.getFieldTypeClassServices(); return fieldTypeClassServices.list(); } }; IChoiceRenderer fieldTypeClassRenderer = new ChoiceRenderer("className"); final DropDownChoice fieldTypeClassField = new DropDownChoice("fieldTypeClass", fieldTypeClassesModel, fieldTypeClassRenderer); form.add(fieldTypeClassField); fieldTypeClassField.setOutputMarkupId(true); AjaxLink addFieldTypeClassLink = new AjaxLink("addFieldTypeClassLink") { @Override public void onClick(AjaxRequestTarget target) { AddEditFieldTypeClassPanel addEditFieldTypeClassPanel = new AddEditFieldTypeClassPanel( fieldTypeClassModal.getContentId(), new FieldTypeClass(), fieldTypeClassField); fieldTypeClassModal.setContent(addEditFieldTypeClassPanel); fieldTypeClassModal.show(target); } }; form.add(addFieldTypeClassLink); analyzerPanel = new AddEditAnalyzerFieldPanel("analyzerPanel", new LoadableDetachableModel() { @Override protected Object load() { FieldType fieldType = fieldTypeModel.getObject(); return fieldType.getAnalyzer() != null ? fieldType.getAnalyzer() : new Analyzer(); } }); form.add(analyzerPanel); queryAnalyzerPanel = new AddEditAnalyzerFieldPanel("queryAnalyzerPanel", new LoadableDetachableModel() { @Override protected Object load() { FieldType fieldType = fieldTypeModel.getObject(); return fieldType.getQueryAnalyzer() != null ? fieldType.getQueryAnalyzer() : new Analyzer(); } }); form.add(queryAnalyzerPanel); TextField precisionStepField = new TextField("precisionStep", Integer.class); form.add(precisionStepField); TextField positionIncrementGapField = new TextField("positionIncrementGap", Integer.class); form.add(positionIncrementGapField); final CheckBox sortMissingLastCheckbox = new CheckBox("sortMissingLast"); form.add(sortMissingLastCheckbox); final CheckBox omitNormsCheckbox = new CheckBox("omitNorms"); form.add(omitNormsCheckbox); final CheckBox multiValuedCheckbox = new CheckBox("multiValued"); form.add(multiValuedCheckbox); }
From source file:com.doculibre.constellio.wicket.panels.admin.indexField.AddEditIndexFieldPanel.java
License:Open Source License
public AddEditIndexFieldPanel(String id, IndexField indexField) { super(id);//from w w w .j ava 2 s . com this.indexFieldModel = new ReloadableEntityModel<IndexField>(indexField); for (CopyField copyFieldDest : indexField.getCopyFieldsDest()) { copyFieldsDest.add(new CopyFieldDTO(copyFieldDest)); } for (CopyField copyFieldSource : indexField.getCopyFieldsDest()) { copyFieldsSource.add(new CopyFieldDTO(copyFieldSource)); } for (ConnectorInstanceMeta meta : indexField.getConnectorInstanceMetas()) { metas.add(new ConnectorInstanceMetaDTO(meta)); } add(new FeedbackPanel("feedback")); Form form = new Form("form", new CompoundPropertyModel(indexFieldModel)); add(form); form.add(new SetFocusBehavior(form)); String titleKey = indexField.getId() == null ? "add" : "edit"; IModel titleModel = new StringResourceModel(titleKey, this, null); form.add(new Label("title", titleModel)); TextField nameField = new RequiredTextField("name"); nameField.add(new StringValidator.MaximumLengthValidator(255)); nameField.setEnabled(!indexField.isInternalField()); form.add(nameField); final CheckBox indexedCheckbox = new CheckBox("indexed"); indexedCheckbox.setEnabled(!indexField.isInternalField()); form.add(indexedCheckbox); // final CheckBox storedCheckbox = new CheckBox("stored"); // storedCheckbox.setEnabled(!indexField.isInternalField()); // form.add(storedCheckbox); final CheckBox dynamicFieldCheckbox = new CheckBox("dynamicField"); dynamicFieldCheckbox.setEnabled(!indexField.isInternalField()); form.add(dynamicFieldCheckbox); final CheckBox multiValuedCheckbox = new CheckBox("multiValued"); multiValuedCheckbox.setEnabled(!indexField.isInternalField()); form.add(multiValuedCheckbox); final CheckBox sortableCheckbox = new CheckBox("sortable"); form.add(sortableCheckbox); final CheckBox highlightedCheckbox = new CheckBox("highlighted"); form.add(highlightedCheckbox); final ModalWindow fieldTypeModal = new ModalWindow("fieldTypeModal"); form.add(fieldTypeModal); fieldTypeModal.setCssClassName(ModalWindow.CSS_CLASS_GRAY); IModel fieldTypesModel = new LoadableDetachableModel() { @Override protected Object load() { FieldTypeServices fieldTypeServices = ConstellioSpringUtils.getFieldTypeServices(); return fieldTypeServices.list(); } }; IChoiceRenderer fieldTypeRenderer = new ChoiceRenderer("name"); final DropDownChoice fieldTypeField = new DropDownChoice("fieldType", fieldTypesModel, fieldTypeRenderer); form.add(fieldTypeField); fieldTypeField.setOutputMarkupId(true); fieldTypeField.setEnabled(indexField.isAnalyzingCustomizable()); AjaxLink addFieldTypeLink = new AjaxLink("addFieldTypeLink") { @Override public void onClick(AjaxRequestTarget target) { AddEditFieldTypePanel addEditFieldTypePanel = new AddEditFieldTypePanel( fieldTypeModal.getContentId(), new FieldType(), fieldTypeField); fieldTypeModal.setContent(addEditFieldTypePanel); fieldTypeModal.show(target); } }; form.add(addFieldTypeLink); addFieldTypeLink.setVisible(indexField.isAnalyzingCustomizable()); form.add(new MetaListPanel("metas").setVisible(indexField.isAnalyzingCustomizable())); form.add(new CopyFieldListPanel("copyFieldsDest", true).setVisible(indexField.isAnalyzingCustomizable())); IModel localesModel = new LoadableDetachableModel() { @Override protected Object load() { AdminCollectionPanel collectionAdminPanel = (AdminCollectionPanel) findParent( AdminCollectionPanel.class); RecordCollection collection = collectionAdminPanel.getCollection(); return collection.getLocales(); } }; MultiLocaleComponentHolder nameHolder = new MultiLocaleComponentHolder("label", indexFieldModel, localesModel) { @Override protected void onPopulateItem(ListItem item, IModel componentModel, Locale locale) { TextField nameField = new TextField("nameLocale", componentModel); item.add(nameField); item.add(new LocaleNameLabel("localeName", locale, true) { @Override public boolean isVisible() { AdminCollectionPanel collectionAdminPanel = (AdminCollectionPanel) findParent( AdminCollectionPanel.class); RecordCollection collection = collectionAdminPanel.getCollection(); return collection.getLocales().size() > 1; } }); } }; form.add(nameHolder); Button submitButton = new AjaxButton("submitButton") { @Override public void onSubmit(AjaxRequestTarget target, Form form) { IndexField indexField = indexFieldModel.getObject(); EntityManager entityManager = ConstellioPersistenceContext.getCurrentEntityManager(); if (!entityManager.getTransaction().isActive()) { entityManager.getTransaction().begin(); } List<ConnectorInstanceMeta> existingMetas = new ArrayList<ConnectorInstanceMeta>( indexField.getConnectorInstanceMetas()); // Remove deleted metas List<ConnectorInstanceMeta> formMetas = new ArrayList<ConnectorInstanceMeta>(); for (ConnectorInstanceMetaDTO metaDTO : getMetas()) { formMetas.add(metaDTO.toConnectorInstanceMeta()); } for (Iterator<ConnectorInstanceMeta> it = existingMetas.iterator(); it.hasNext();) { ConnectorInstanceMeta meta = it.next(); meta = entityManager.merge(meta); if (!hasMeta(meta, formMetas)) { indexField.removeConnectorInstanceMeta(meta); } } // Add new for (ConnectorInstanceMetaDTO metaDTO : getMetas()) { ConnectorInstanceMeta meta = metaDTO.toConnectorInstanceMeta(); if (!hasMeta(meta, existingMetas)) { meta = entityManager.merge(meta); indexField.addConnectorInstanceMeta(meta); } } Set<CopyField> existingCopyFieldsSource = indexField.getCopyFieldsSource(); // Remove deleted copy fields for (Iterator<CopyField> it = existingCopyFieldsSource.iterator(); it.hasNext();) { CopyField copyField = it.next(); if (!getCopyFieldsSource().contains(new CopyFieldDTO(copyField))) { it.remove(); } } // Add new or update set for (CopyFieldDTO copyFieldDTO : getCopyFieldsSource()) { CopyField copyField = copyFieldDTO.toCopyField(); copyField.setIndexFieldSource(indexField); if (copyField.getId() != null) { entityManager.merge(copyField); } else { existingCopyFieldsSource.add(copyField); } } Set<CopyField> existingCopyFieldsDest = indexField.getCopyFieldsDest(); // Remove deleted copy fields for (Iterator<CopyField> it = existingCopyFieldsDest.iterator(); it.hasNext();) { CopyField copyField = it.next(); if (!getCopyFieldsDest().contains(new CopyFieldDTO(copyField))) { it.remove(); } } // Add new or update set for (CopyFieldDTO copyFieldDTO : getCopyFieldsDest()) { CopyField copyField = copyFieldDTO.toCopyField(); copyField.setIndexFieldDest(indexField); if (copyField.getId() != null) { entityManager.merge(copyField); } else { existingCopyFieldsDest.add(copyField); } } AdminCollectionPanel collectionAdminPanel = (AdminCollectionPanel) findParent( AdminCollectionPanel.class); RecordCollection collection = collectionAdminPanel.getCollection(); indexField.setRecordCollection(collection); IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices(); FederationServices federationServices = ConstellioSpringUtils.getFederationServices(); if (indexField.isSortable()) { if (indexFieldServices.getSortFieldOf(indexField) == null) { indexFieldServices.newSortFieldFor(indexField); } } AutocompleteServices autocompleteServices = ConstellioSpringUtils.getAutocompleteServices(); if (indexField.isAutocompleted()) { autocompleteServices.setAutoCompleteToField(indexField); } else { autocompleteServices.removeAutoCompleteFromField(indexField); } if (collection.isIncludedInFederation()) { List<String> conflicts = new ArrayList<String>(); List<IndexField> newFederationFields = new ArrayList<IndexField>(); List<RecordCollection> ownerCollections = federationServices.listOwnerCollections(collection); for (RecordCollection ownerCollection : ownerCollections) { String indexFieldName = indexField.getName(); IndexField ownerIndexField = ownerCollection.getIndexField(indexFieldName); if (ownerIndexField == null) { IndexField copy = federationServices.copy(indexField, ownerCollection); newFederationFields.add(copy); } if (federationServices.isConflict(indexFieldName, ownerCollection, collection)) { Locale displayLocale = ownerCollection.getDisplayLocale(getLocale()); conflicts.add(ownerCollection.getTitle(displayLocale)); } } if (conflicts.isEmpty()) { indexFieldServices.makePersistent(indexField); for (IndexField newFederationField : newFederationFields) { indexFieldServices.makePersistent(newFederationField); } } else { for (String collectionTitle : conflicts) { error(getLocalizer().getString("conflict", this) + " : " + collectionTitle); } } } else { indexFieldServices.makePersistent(indexField); } entityManager.getTransaction().commit(); ModalWindow modalWindow = (ModalWindow) findParent(ModalWindow.class); modalWindow.close(target); target.addComponent(modalWindow.findParent(AdminIndexFieldsPanel.class)); } }; form.add(submitButton); Button cancelButton = new AjaxButton("cancelButton") { @Override public void onSubmit(AjaxRequestTarget target, Form form) { ModalWindow modalWindow = (ModalWindow) findParent(ModalWindow.class); modalWindow.close(target); } }.setDefaultFormProcessing(false); form.add(cancelButton); }
From source file:com.doculibre.constellio.wicket.panels.admin.indexField.IndexFieldListPanel.java
License:Open Source License
@Override protected List<IColumn> getDataColumns() { List<IColumn> dataColumns = new ArrayList<IColumn>(); AjaxOnUpdateHandler updateIndexFieldHandler = new AjaxOnUpdateHandler() { @Override//w w w .ja v a 2 s .co m public void onUpdate(ReloadableEntityModel<IndexField> entityModel, AjaxRequestTarget target) { updateIndexField(entityModel.getObject(), target); } }; dataColumns.add(getAjaxEditableLabelColumn("name")); dataColumns.add(getAjaxCheckboxColumn("indexed", updateIndexFieldHandler)); dataColumns.add(getAjaxCheckboxColumn("multiValued", updateIndexFieldHandler)); dataColumns.add(new HeaderlessColumn() { @Override public void populateItem(Item cellItem, String componentId, final IModel rowModel) { cellItem.add(new ModalLinkHolder(componentId, new StringResourceModel("labelledValues", IndexFieldListPanel.this, null)) { @Override protected WebMarkupContainer newLink(String id) { return new AjaxLink(id) { @Override public void onClick(AjaxRequestTarget target) { ModalWindow labelledValuesModal = getModalWindow(); IndexField indexField = (IndexField) rowModel.getObject(); EditIndexFieldLabelledValuesPanel editLabelledValuesModal = new EditIndexFieldLabelledValuesPanel( labelledValuesModal.getContentId(), indexField); labelledValuesModal.setContent(editLabelledValuesModal); labelledValuesModal.show(target); } }; } }); } }); return dataColumns; }
From source file:com.doculibre.constellio.wicket.panels.admin.indexing.AdminIndexingPanel.java
License:Open Source License
private void configurePopUp(ModalWindow modal, final String textPopUp, String titlePopUp) { modal.add(new OpenWindowOnLoadBehavior()); modal.setContent(new SimpleContentPanel(modal.getContentId(), textPopUp)); modal.setTitle(titlePopUp);/*from ww w . java2s . c om*/ modal.setCssClassName(ModalWindow.CSS_CLASS_GRAY); modal.setMaskType(ModalWindow.MaskType.TRANSPARENT); modal.setInitialWidth(200); modal.setWidthUnit("px"); modal.setResizable(false); modal.setUseInitialHeight(false); modal.setCookieName("wicket-tips/styledModal"); modal.setPageCreator(new ModalWindow.PageCreator() { @Override public Page createPage() { // TODO Auto-generated method stub return new PopUpPage(textPopUp); } }); }
From source file:com.doculibre.constellio.wicket.panels.admin.solrConfig.SolrConfigPanel.java
License:Open Source License
private ListView getPropertiesListView(List<PropertyRow> propertyRows) { return new ListView("properties", propertyRows) { @Override/*from w ww .j a v a 2 s .c o m*/ protected void populateItem(final ListItem item) { final PropertyRow propertyRow = (PropertyRow) item.getModelObject(); item.setOutputMarkupId(true); item.add(new Label("property", new StringResourceModel(propertyRow.getMessageKey(), SolrConfigPanel.this, null))); IModel stateModel = new LoadableDetachableModel() { protected Object load() { SolrConfig config = solrConfigModel.getObject(); boolean isSet = PropertyResolver.getValue(propertyRow.getProperty(), config) != null; return new StringResourceModel(isSet ? "yes" : "no", SolrConfigPanel.this, null) .getObject(); } }; item.add(new Label("state", stateModel)); AjaxLink defaultValueLink = new AjaxLink("defaultValue") { @Override public void onClick(AjaxRequestTarget target) { SolrConfig config = solrConfigModel.getObject(); PropertyResolver.setValue(propertyRow.getProperty(), config, null, null); target.addComponent(item); save(); } @Override public boolean isVisible() { SolrConfig config = solrConfigModel.getObject(); return PropertyResolver.getValue(propertyRow.getProperty(), config) != null; } }; item.add(defaultValueLink); IModel titleLabelModel = new LoadableDetachableModel() { @Override protected Object load() { boolean isServerConfig = solrConfigModel.getObject().getRecordCollection() == null; String resourceKey = isServerConfig ? "defaultValue" : "defaultServerValue"; return new StringResourceModel(resourceKey, SolrConfigPanel.this, null).getObject(); } }; defaultValueLink.add(new Label("label", titleLabelModel)); if (propertyRow.isModalEdit()) { item.add(new ModalImgLinkHolder("editComponent") { @Override public WebMarkupContainer newLink(String id) { return new AjaxLink(id) { @Override public void onClick(AjaxRequestTarget target) { ModalWindow editModal = getModalWindow(); editModal.setInitialHeight(MODAL_HEIGHT); editModal.setInitialWidth(MODAL_WIDTH); String editMsg = getLocalizer().getString("edit", SolrConfigPanel.this); editModal.setTitle(editMsg); WebMarkupContainer editContent = propertyRow .getEditLinkPanel(editModal.getContentId()); editModal.setContent(editContent); editModal.show(target); target.addComponent(item); } }; } @Override protected Component newImg(String id) { return new NonCachingImage(id, new ResourceReference(BaseConstellioPage.class, "images/ico_crayon.png")); } }); } else if (propertyRow.getType().equals(Boolean.class)) { final IModel valueModel = propertyRow.createModel(); item.add(new CheckBoxHolder("editComponent") { @Override protected WebMarkupContainer newInput(String id) { return new AjaxCheckBox(id, valueModel) { @Override protected void onUpdate(AjaxRequestTarget target) { save(); target.addComponent(item); } @Override public void detachModels() { super.detachModels(); valueModel.detach(); } }; } }); } else { final IModel valueModel = propertyRow.createModel(); item.add(new AjaxEditableLabel("editComponent", valueModel) { @Override protected void onSubmit(AjaxRequestTarget target) { super.onSubmit(target); save(); target.addComponent(item); } @Override public void detachModels() { super.detachModels(); valueModel.detach(); } }); } } }; }
From source file:com.doculibre.constellio.wicket.panels.elevate.ElevatePanel.java
License:Open Source License
public ElevatePanel(String id, Record record, final SimpleSearch simpleSearch) { super(id);//from www. j ava 2 s . c o m this.recordModel = new RecordModel(record); // Query without facets collectionName = simpleSearch.getCollectionName(); Link elevateLink = new Link("elevateLink") { @Override public void onClick() { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); EntityManager entityManager = ConstellioPersistenceContext.getCurrentEntityManager(); if (!entityManager.getTransaction().isActive()) { entityManager.getTransaction().begin(); } Record record = recordModel.getObject(); elevateServices.elevate(record, simpleSearch); entityManager.getTransaction().commit(); PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); RequestCycle.get().setResponsePage(pageFactoryPlugin.getSearchResultsPage(), SearchResultsPage.getParameters(simpleSearch)); } }; add(elevateLink); elevateLink.add(new WebMarkupContainer("elevateImg") { @Override public boolean isVisible() { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); Record record = recordModel.getObject(); return !elevateServices.isElevated(record, simpleSearch); } }); elevateLink.add(new WebMarkupContainer("elevatedImg") { @Override public boolean isVisible() { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); Record record = recordModel.getObject(); return elevateServices.isElevated(record, simpleSearch); } }); add(new ModalImgLinkHolder("elevatedQueriesLinkHolder") { @Override protected WebMarkupContainer newLink(String id) { return new AjaxLink(id) { @Override public void onClick(AjaxRequestTarget target) { Record record = recordModel.getObject(); ModalWindow elevatedQueriesModal = getModalWindow(); elevatedQueriesModal.setContent(new EditRecordElevatedQueriesPanel( elevatedQueriesModal.getContentId(), record, simpleSearch)); elevatedQueriesModal.show(target); } }; } @Override protected Component newImg(String id) { Image image = new NonCachingImage(id, new ResourceReference(BaseConstellioPage.class, "images/ico_plus.gif")); return image; } @Override protected IModel getAltModel() { return new StringResourceModel("elevation", this, null); } }); add(new Link("restoreLink") { @Override public void onClick() { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); String collectionName = simpleSearch.getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); SolrServer solrServer = SolrCoreContext.getSolrServer(collection); try { ConstellioPersistenceUtils.beginTransaction(); Record record = recordModel.getObject(); elevateServices.cancelElevation(record, simpleSearch); try { solrServer.commit(); } catch (Throwable t) { try { solrServer.rollback(); } catch (Exception e) { throw new RuntimeException(t); } } } finally { ConstellioPersistenceUtils.finishTransaction(false); } PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); RequestCycle.get().setResponsePage(pageFactoryPlugin.getSearchResultsPage(), SearchResultsPage.getParameters(simpleSearch)); } @Override public boolean isVisible() { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); Record record = recordModel.getObject(); return elevateServices.isElevated(record, simpleSearch); } }); add(new Link("excludeLink") { @Override public void onClick() { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); RecordCollection collection = collectionServices.get(collectionName); SolrServer solrServer = SolrCoreContext.getSolrServer(collection); try { ConstellioPersistenceUtils.beginTransaction(); Record record = recordModel.getObject(); elevateServices.exclude(record, collection, simpleSearch); try { solrServer.commit(); } catch (Throwable t) { try { solrServer.rollback(); } catch (Exception e) { throw new RuntimeException(t); } } } finally { ConstellioPersistenceUtils.finishTransaction(false); } recordModel.detach(); int attempts = 0; while (!recordModel.getObject().isExcludedEffective()) { recordModel.detach(); try { Thread.sleep(100); } catch (InterruptedException e) { throw new WicketRuntimeException(e); } attempts++; if (attempts > 10) { // Give up waiting after one second break; } } PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); RequestCycle.get().setResponsePage(pageFactoryPlugin.getSearchResultsPage(), SearchResultsPage.getParameters(simpleSearch)); } @Override public boolean isVisible() { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); Record record = recordModel.getObject(); return !elevateServices.isElevated(record, simpleSearch); } }); }
From source file:com.doculibre.constellio.wicket.panels.results.MailSearchResultPanel.java
License:Open Source License
public MailSearchResultPanel(String id, final SolrDocument doc, final SearchResultsDataProvider dataProvider) { super(id);/* w ww . j av a2 s . co m*/ RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); final Long recordId = new Long(doc.getFieldValue(IndexField.RECORD_ID_FIELD).toString()); final String collectionName = dataProvider.getSimpleSearch().getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); Record record = recordServices.get(recordId, collection); final IModel subjectModel = new LoadableDetachableModel() { @Override protected Object load() { RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); String subject = record.getDisplayTitle(); if (StringUtils.isBlank(subject)) { subject = getLocalizer().getString("noSubject", MailSearchResultPanel.this); } if (subject.length() > 60) { subject = subject.substring(0, 60) + " ..."; } return subject; } }; // List<byte[]> attachmentContents = new ArrayList<byte[]>(); // String messageContent = null; // for (RawContent raw : rawContents) { // byte[] bytes = raw.getContent(); // if (messageContent == null) { // messageContent = new String(bytes); // } else { // attachmentContents.add(bytes); // } // System.out.println("partial content :" + new String(bytes)); // } // System.out.println("content 1 :" + messageContent); // Description du document dans extrait: QueryResponse response = dataProvider.getQueryResponse(); Map<String, Map<String, List<String>>> highlighting = response.getHighlighting(); final String recordURL = record.getUrl(); Map<String, List<String>> fieldsHighlighting = highlighting.get(recordURL); ConnectorInstance connectorInstance = record.getConnectorInstance(); IndexField defaultSearchField = collection.getDefaultSearchIndexField(); String excerpt = getExcerptFromHighlight(defaultSearchField.getName(), fieldsHighlighting); final ModalWindow detailsMailModal = new ModalWindow("detailsMailModal"); detailsMailModal.setPageCreator(new PageCreator() { @Override public Page createPage() { return new BaseConstellioPage(); } }); add(detailsMailModal); detailsMailModal.setCssClassName(ModalWindow.CSS_CLASS_GRAY); detailsMailModal.setCookieName("detailsMailModal"); IModel modalTitleModel = subjectModel; detailsMailModal.setTitle(modalTitleModel); final String displayURL = (String) doc.getFieldValue(collection.getUrlIndexField().getName()); emailModel = new LoadableDetachableModel() { @Override protected Object load() { RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); List<String> attachmentNames = record.getMetaContents(MailConnectorConstants.META_ATTACHMENTNAME); List<String> attachmentTypes = record.getMetaContents(MailConnectorConstants.META_ATTACHMENTTYPE); List<String> recipients = record.getMetaContents(MailConnectorConstants.META_RECIPIENTS); List<String> flags = record.getMetaContents(MailConnectorConstants.META_FLAGS); List<String> froms = record.getMetaContents(MailConnectorConstants.META_SENDER); // FIXME Hardcoded List<String> contentEncoding = record.getMetaContents("Content-Encoding"); List<String> receivedDateList = record.getMetaContents(MailConnectorConstants.META_RECEIVEDDATE); // FIXME voir avec Vincent : exemple qui ne marche pas jobboom car mail contient que du html RawContentServices rawContentServices = ConstellioSpringUtils.getRawContentServices(); List<RawContent> rawContents = rawContentServices.getRawContents(record); ParsedContent parsedContents = record.getParsedContent(); Email email; if (rawContents.size() != 0) { byte[] content = rawContents.get(0).getContent(); String tmpFilePath = ClasspathUtils.getCollectionsRootDir() + File.separator + "tmp.eml"; try { email = MailMessageUtils.toEmail(content, tmpFilePath); } catch (Exception e) { System.out.println("Error in reading content of mail"); // le contenu n'a pas bien t lu correctement email = new Email(); email.setMessageContentText(parsedContents.getContent()); } } else { // le contenu n'a pas bien t lu correctement email = new Email(); email.setMessageContentText(parsedContents.getContent()); } email.setFlags(flags); // email.setMessageContentHtml(messageContentHtml); if (!receivedDateList.isEmpty()) { email.setReceivedDate(receivedDateList.get(0)); } email.setRecipients(recipients); email.setSubject((String) subjectModel.getObject()); email.setFroms(froms); // email.setLanguage(language); if (!contentEncoding.isEmpty()) { email.setContentEncoding(contentEncoding.get(0)); } return email; } }; final RecordModel recordModel = new RecordModel(record); AjaxLink detailsMailLink = new AjaxLink("detailsMailLink") { @Override public void onClick(AjaxRequestTarget target) { Email email = (Email) emailModel.getObject(); detailsMailModal.setContent(new MailDetailsPanel(detailsMailModal.getContentId(), email)); detailsMailModal.show(target); } @Override protected IAjaxCallDecorator getAjaxCallDecorator() { return new AjaxCallDecorator() { @Override public CharSequence decorateScript(CharSequence script) { Record record = recordModel.getObject(); SimpleSearch simpleSearch = dataProvider.getSimpleSearch(); WebRequest webRequest = (WebRequest) RequestCycle.get().getRequest(); HttpServletRequest httpRequest = webRequest.getHttpServletRequest(); return script + ";" + ComputeSearchResultClickServlet.getCallbackJavascript(httpRequest, simpleSearch, record); } }; } }; add(detailsMailLink); IModel recipientsLabelModel = new LoadableDetachableModel() { @Override protected Object load() { RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); List<String> recipients = record.getMetaContents(MailConnectorConstants.META_RECIPIENTS); return getLocalizer().getString("to", MailSearchResultPanel.this) + " : " + recipients; } }; IModel receivedDateLabelModel = new LoadableDetachableModel() { @Override protected Object load() { RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); List<String> receivedDateList = record.getMetaContents(MailConnectorConstants.META_RECEIVEDDATE); String receivedDate; if (!receivedDateList.isEmpty()) { receivedDate = receivedDateList.get(0); } else { receivedDate = ""; } return getLocalizer().getString("date", MailSearchResultPanel.this) + " : " + receivedDate; } }; Label subjectLabel = new Label("subject", subjectModel); detailsMailLink.add(subjectLabel.setEscapeModelStrings(false)); Label excerptLbl = new Label("messageContent", excerpt); add(excerptLbl.setEscapeModelStrings(false)); add(new Label("recipient", recipientsLabelModel) { @Override public boolean isVisible() { boolean visible = super.isVisible(); if (visible) { RecordCollectionServices collectionServices = ConstellioSpringUtils .getRecordCollectionServices(); RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); RecordCollection collection = collectionServices.get(collectionName); Record record = recordServices.get(recordId, collection); List<String> recipients = record.getMetaContents(MailConnectorConstants.META_RECIPIENTS); visible = !recipients.isEmpty(); } return visible; } }); // add(new Label("from", getLocalizer().getString("from", this) + " : " + froms)); add(new Label("date", receivedDateLabelModel)); add(new WebMarkupContainer("hasAttachmentsImg") { @Override public boolean isVisible() { boolean visible = super.isVisible(); if (visible) { RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); List<String> attachmentNames = record .getMetaContents(MailConnectorConstants.META_ATTACHMENTNAME); visible = !attachmentNames.isEmpty(); } return visible; } }); final ReloadableEntityModel<RecordCollection> collectionModel = new ReloadableEntityModel<RecordCollection>( collection); add(new ListView("searchResultFields", new LoadableDetachableModel() { @Override protected Object load() { RecordCollection collection = collectionModel.getObject(); return collection.getSearchResultFields(); } /** * Detaches from the current request. Implement this method with custom behavior, such as * setting the model object to null. */ protected void onDetach() { recordModel.detach(); collectionModel.detach(); } }) { @Override protected void populateItem(ListItem item) { SearchResultField searchResultField = (SearchResultField) item.getModelObject(); IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices(); Record record = recordModel.getObject(); IndexField indexField = searchResultField.getIndexField(); Locale locale = getLocale(); String indexFieldTitle = indexField.getTitle(locale); if (StringUtils.isBlank(indexFieldTitle)) { indexFieldTitle = indexField.getName(); } StringBuffer fieldValueSb = new StringBuffer(); List<Object> fieldValues = indexFieldServices.extractFieldValues(record, indexField); Map<String, String> defaultLabelledValues = indexFieldServices.getDefaultLabelledValues(indexField, locale); for (Object fieldValue : fieldValues) { if (fieldValueSb.length() > 0) { fieldValueSb.append("\n"); } String fieldValueLabel = indexField.getLabelledValue("" + fieldValue, locale); if (fieldValueLabel == null) { fieldValueLabel = defaultLabelledValues.get("" + fieldValue); } if (fieldValueLabel == null) { fieldValueLabel = "" + fieldValue; } fieldValueSb.append(fieldValueLabel); } item.add(new Label("indexField", indexFieldTitle)); item.add(new MultiLineLabel("indexFieldValue", fieldValueSb.toString())); item.setVisible(fieldValueSb.length() > 0); } @SuppressWarnings("unchecked") @Override public boolean isVisible() { boolean visible = super.isVisible(); if (visible) { List<SearchResultField> searchResultFields = (List<SearchResultField>) getModelObject(); visible = !searchResultFields.isEmpty(); } return visible; } }); add(new ElevatePanel("elevatePanel", record, dataProvider.getSimpleSearch())); }
From source file:com.doculibre.constellio.wicket.panels.results.PopupSearchResultPanel.java
License:Open Source License
public PopupSearchResultPanel(String id, SolrDocument doc, final SearchResultsDataProvider dataProvider) { super(id);//w w w .j a v a 2s . com RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); String solrServerName = dataProvider.getSimpleSearch().getCollectionName(); RecordCollection collection = collectionServices.get(solrServerName); IndexField uniqueKeyField = collection.getUniqueKeyIndexField(); IndexField defaultSearchField = collection.getDefaultSearchIndexField(); IndexField urlField = collection.getUrlIndexField(); IndexField titleField = collection.getTitleIndexField(); // title String documentID = (String) getFieldValue(doc, uniqueKeyField.getName()); String documentTitle = (String) getFieldValue(doc, titleField.getName()); if (StringUtils.isBlank(documentTitle)) { if (urlField == null) { documentTitle = (String) getFieldValue(doc, uniqueKeyField.getName()); } else { documentTitle = (String) getFieldValue(doc, urlField.getName()); } } if (documentTitle.length() > 120) { documentTitle = documentTitle.substring(0, 120) + " ..."; } // content RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); RawContentServices rawContentServices = ConstellioSpringUtils.getRawContentServices(); List<RawContent> rawContents = rawContentServices.getRawContents(record); StringBuilder content = new StringBuilder(); for (RawContent raw : rawContents) { byte[] bytes = raw.getContent(); content.append(new String(bytes)); } String documentContent = content.toString(); // date String documentLastModified = getFieldValue(doc, IndexField.LAST_MODIFIED_FIELD); // Description du document dans extrait: QueryResponse response = dataProvider.getQueryResponse(); Map<String, Map<String, List<String>>> highlighting = response.getHighlighting(); final String recordURL = record.getUrl(); Map<String, List<String>> fieldsHighlighting = highlighting.get(recordURL); String extrait = getExcerptFromHighlight(defaultSearchField.getName(), fieldsHighlighting); final ModalWindow detailsDocumentModal = new ModalWindow("detailsDocumentModal"); add(detailsDocumentModal); detailsDocumentModal.setCssClassName(ModalWindow.CSS_CLASS_GRAY); detailsDocumentModal.setContent( new PopupDetailsPanel(detailsDocumentModal.getContentId(), documentContent, documentLastModified)); detailsDocumentModal.setCookieName("detailsDocumentModal"); String modalTitle = documentTitle; detailsDocumentModal.setTitle(modalTitle); AjaxLink detailsDocumentLink = new AjaxLink("detailsDocumentLink") { @Override public void onClick(AjaxRequestTarget target) { detailsDocumentModal.show(target); } }; add(detailsDocumentLink); final RecordModel recordModel = new RecordModel(record); AttributeAppender computeClickAttributeModifier = new AttributeAppender("onclick", true, new LoadableDetachableModel() { @Override protected Object load() { Record record = recordModel.getObject(); SimpleSearch simpleSearch = dataProvider.getSimpleSearch(); WebRequest webRequest = (WebRequest) RequestCycle.get().getRequest(); HttpServletRequest httpRequest = webRequest.getHttpServletRequest(); return ComputeSearchResultClickServlet.getCallbackJavascript(httpRequest, simpleSearch, record); } @Override protected void onDetach() { recordModel.detach(); super.onDetach(); } }, ";") { @Override protected String newValue(String currentValue, String appendValue) { return appendValue + currentValue; } }; detailsDocumentLink.add(computeClickAttributeModifier); Label subjectLabel = new Label("subject", documentTitle); detailsDocumentLink.add(subjectLabel.setEscapeModelStrings(false)); Label extraitLbl = new Label("documentContent", extrait); add(extraitLbl.setEscapeModelStrings(false)); add(new Label("date", "Date : " + documentLastModified)); add(new ElevatePanel("elevatePanel", record, dataProvider.getSimpleSearch())); }
From source file:com.doculibre.constellio.wicket.panels.results.tagging.SearchResultEditTaggingPanel.java
License:Open Source License
public SearchResultEditTaggingPanel(String id, final SolrDocument doc, final IDataProvider dataProvider, Thesaurus source) {/* w w w. j a v a 2s.c o m*/ super(id); if (source == null) { freeTextTags = true; source = new Thesaurus(getLocalizer().getString("freeTextTags", SearchResultEditTaggingPanel.this)); } RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); recordModel = new RecordModel(record); taggingSourceModel = new EntityModel<Thesaurus>(source); filterAddForm = new Form("filterAddForm"); filterAddForm.setOutputMarkupId(true); IModel taggingSourceChoicesModel = new LoadableDetachableModel() { @Override protected Object load() { List<Object> taggingSources = new ArrayList<Object>(); taggingSources.add( new Thesaurus(getLocalizer().getString("freeTextTags", SearchResultEditTaggingPanel.this))); SkosServices skosServices = ConstellioSpringUtils.getSkosServices(); Record record = recordModel.getObject(); ConnectorInstance connectorInstance = record.getConnectorInstance(); RecordCollection collection = connectorInstance.getRecordCollection(); Map<String, Object> criteria = new HashMap<String, Object>(); criteria.put("recordCollection", collection); taggingSources.addAll(skosServices.list(criteria)); return taggingSources; } }; IChoiceRenderer taggingSourceRenderer = new ChoiceRenderer("dcTitle"); taggingSourceField = new DropDownChoice("taggingSource", taggingSourceModel, taggingSourceChoicesModel, taggingSourceRenderer); taggingSourceField.setVisible(isSourceSelectionVisible()); taggingSourceField.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { target.addComponent(availableTagsContainer); target.addComponent(appliedTagsContainer); target.addComponent(filterAddField); target.addComponent(filterAddButton); } }); filterAddField = new TextField("filterAddField", new Model()); filterAddField.setOutputMarkupId(true); filterAddField.add(new AjaxFormComponentUpdatingBehavior("onkeyup") { @Override protected void onUpdate(AjaxRequestTarget target) { String input = filterAddField.getModelObjectAsString(); availableTagsModel.setFilter(input); appliedTagsModel.setFilter(input); if (isFreeTextTagSource()) { target.addComponent(availableTagsContainer); target.addComponent(appliedTagsContainer); } } }); filterAddButton = new AjaxButton("filterAddButton") { @Override protected void onSubmit(AjaxRequestTarget target, Form form) { String tagName = (String) filterAddField.getModelObject(); if (StringUtils.isNotBlank(tagName)) { if (isFreeTextTagSource()) { FreeTextTagServices freeTextTagServices = ConstellioSpringUtils.getFreeTextTagServices(); FreeTextTag existingTag = freeTextTagServices.get(tagName); if (existingTag == null) { FreeTextTag newTag = new FreeTextTag(); newTag.setFreeText(tagName); EntityManager entityManager = ConstellioPersistenceContext.getCurrentEntityManager(); if (!entityManager.getTransaction().isActive()) { entityManager.getTransaction().begin(); } freeTextTagServices.makePersistent(newTag); entityManager.getTransaction().commit(); availableTagsModel.setFilter(null); appliedTagsModel.setFilter(null); filterAddField.clearInput(); filterAddField.setModelObject(null); target.addComponent(filterAddField); target.addComponent(availableTagsContainer); target.addComponent(appliedTagsContainer); } } else { target.addComponent(availableTagsContainer); } } } }; filterAddButton.add(new AttributeModifier("value", true, new LoadableDetachableModel() { @Override protected Object load() { String key = isFreeTextTagSource() ? "add" : "filter"; return getLocalizer().getString(key, SearchResultEditTaggingPanel.this); } })); availableTagsContainer = new WebMarkupContainer("availableTagsContainer"); availableTagsContainer.setOutputMarkupId(true); availableTagsModel = new FilteredObjectsModel() { @Override protected List<Object> filter(String filter) { List<Object> matches = new ArrayList<Object>(); Thesaurus taggingSource = taggingSourceModel.getObject(); if (taggingSource == null || taggingSource.getId() == null) { if (StringUtils.isNotBlank(filter)) { filter = filter + "*"; } FreeTextTagServices taggingServices = ConstellioSpringUtils.getFreeTextTagServices(); if (StringUtils.isBlank(filter)) { List<FreeTextTag> first100 = taggingServices.list(100); matches.addAll(first100); } else { Set<FreeTextTag> searchResults = taggingServices.search(filter); matches.addAll(searchResults); } } else { SkosServices skosServices = ConstellioSpringUtils.getSkosServices(); Set<SkosConcept> searchResults = skosServices.searchAllLabels(filter, taggingSource, null); matches.addAll(searchResults); } return matches; } }; availableTagsListView = new ListView("availableTags", availableTagsModel) { @Override protected void populateItem(ListItem item) { ConstellioEntity tagSource = (ConstellioEntity) item.getModelObject(); final ReloadableEntityModel<ConstellioEntity> tagSourceModel = new ReloadableEntityModel<ConstellioEntity>( tagSource); final ModalWindow detailsModal = new ModalWindow("detailsModal"); item.add(detailsModal); final AjaxLink detailsLink = new AjaxLink("detailsLink") { @Override public void onClick(AjaxRequestTarget target) { ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject(); if (tagSource instanceof SkosConcept) { SkosConcept skosConcept = (SkosConcept) tagSource; detailsModal.setContent( new SkosConceptModalPanel(detailsModal.getContentId(), skosConcept)); detailsModal.show(target); } } }; item.add(detailsLink); detailsLink.setEnabled(tagSource instanceof SkosConcept); detailsLink.add(new Label("name", new LoadableDetachableModel() { @Override protected Object load() { String name; ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject(); if (tagSource != null) { if (tagSource instanceof FreeTextTag) { FreeTextTag freeTextTag = (FreeTextTag) tagSource; name = freeTextTag.getFreeText(); } else { SkosConcept skosConcept = (SkosConcept) tagSource; name = skosConcept.getPrefLabel(getLocale()); } } else { name = "null"; } return name; } })); item.add(new AjaxLink("addLink") { @Override public void onClick(AjaxRequestTarget target) { Record record = recordModel.getObject(); ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject(); if (tagSource instanceof FreeTextTag) { FreeTextTag freeTextTag = (FreeTextTag) tagSource; record.addFreeTextTag(freeTextTag, true); } else { SkosConcept skosConcept = (SkosConcept) tagSource; record.addSkosConcept(skosConcept, true); } record.setUpdateIndex(true); RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); SolrServer solrServer = SolrCoreContext .getSolrServer(record.getConnectorInstance().getRecordCollection()); try { ConstellioPersistenceUtils.beginTransaction(); recordServices.makePersistent(record); try { solrServer.commit(); } catch (Throwable t) { try { solrServer.rollback(); } catch (Exception e) { throw new RuntimeException(t); } } } finally { ConstellioPersistenceUtils.finishTransaction(false); } target.addComponent(availableTagsContainer); target.addComponent(appliedTagsContainer); } @Override public boolean isVisible() { boolean visible = super.isVisible(); if (visible) { Record record = recordModel.getObject(); if (tagSourceModel.getObject() instanceof FreeTextTag) { FreeTextTag freeTextTag = (FreeTextTag) tagSourceModel.getObject(); visible = !record.hasFreeTextTag(freeTextTag); } else { SkosConcept skosConcept = (SkosConcept) tagSourceModel.getObject(); visible = !record.hasSkosConcept(skosConcept); } } return visible; } @Override public void detachModels() { tagSourceModel.detach(); super.detachModels(); } }); } }; appliedTagsContainer = new WebMarkupContainer("appliedTagsContainer"); appliedTagsContainer.setOutputMarkupId(true); appliedTagsModel = new FilteredObjectsModel() { @Override protected List<RecordTag> filter(String filter) { List<RecordTag> matches = new ArrayList<RecordTag>(); Record record = recordModel.getObject(); Thesaurus source = taggingSourceModel.getObject(); for (RecordTag recordTag : record.getIncludedRecordTags(freeTextTags ? null : source, true)) { // if (StringUtils.isEmpty(filter) // || recordTag.getName(getLocale()).toLowerCase().indexOf(filter.toLowerCase()) != -1) { matches.add(recordTag); // } } return matches; } }; appliedTagsListView = new ListView("appliedTags", appliedTagsModel) { @Override protected void populateItem(ListItem item) { RecordTag recordTag = (RecordTag) item.getModelObject(); final RecordTagModel recordTagModel = new RecordTagModel(recordTag); ConstellioEntity tagSource; if (recordTag.getFreeTextTag() != null) { tagSource = recordTag.getFreeTextTag(); } else { tagSource = recordTag.getSkosConcept(); } final ReloadableEntityModel<ConstellioEntity> tagSourceModel = new ReloadableEntityModel<ConstellioEntity>( tagSource); final ModalWindow detailsModal = new ModalWindow("detailsModal"); item.add(detailsModal); final AjaxLink detailsLink = new AjaxLink("detailsLink") { @Override public void onClick(AjaxRequestTarget target) { ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject(); if (tagSource instanceof SkosConcept) { SkosConcept skosConcept = (SkosConcept) tagSource; detailsModal.setContent( new SkosConceptModalPanel(detailsModal.getContentId(), skosConcept)); detailsModal.show(target); } } }; item.add(detailsLink); detailsLink.setEnabled(tagSource instanceof SkosConcept); detailsLink.add(new Label("name", new LoadableDetachableModel() { @Override protected Object load() { String name; ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject(); if (tagSource != null) { if (tagSource instanceof FreeTextTag) { FreeTextTag freeTextTag = (FreeTextTag) tagSource; name = freeTextTag.getFreeText(); } else { SkosConcept skosConcept = (SkosConcept) tagSource; name = skosConcept.getPrefLabel(getLocale()); } } else { name = "null"; } return name; } })); detailsLink.add(new AttributeModifier("style", true, new LoadableDetachableModel() { @Override protected Object load() { RecordTag recordTag = recordTagModel.getObject(); return recordTag.isExcluded() ? "text-decoration: line-through;" : "text-decoration:none"; } })); item.add(new AjaxLink("removeLink") { @Override public void onClick(AjaxRequestTarget target) { Record record = recordModel.getObject(); RecordTag recordTag = recordTagModel.getObject(); boolean excluded = recordTag.isExcluded(); if (excluded) { record.getRecordTags().remove(recordTag); } else { recordTag.setManual(true); recordTag.setExcluded(true); } record.setUpdateIndex(true); RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); SolrServer solrServer = SolrCoreContext .getSolrServer(record.getConnectorInstance().getRecordCollection()); try { ConstellioPersistenceUtils.beginTransaction(); recordServices.makePersistent(record); try { solrServer.commit(); } catch (Throwable t) { try { solrServer.rollback(); } catch (Exception e) { throw new RuntimeException(t); } } } finally { ConstellioPersistenceUtils.finishTransaction(false); } target.addComponent(availableTagsContainer); target.addComponent(appliedTagsContainer); } @Override public void detachModels() { recordTagModel.detach(); tagSourceModel.detach(); super.detachModels(); } }); } }; closeLink = new AjaxLink("closeLink") { @Override public void onClick(AjaxRequestTarget target) { SearchResultTaggingPanel parent = (SearchResultTaggingPanel) findParent( SearchResultTaggingPanel.class); target.addComponent(parent); ModalWindow.closeCurrent(target); } }; add(taggingSourceField); add(new Label("sourceName", source.getDcTitle()).setVisible(!isSourceSelectionVisible())); add(filterAddForm); filterAddForm.add(filterAddField); filterAddForm.add(filterAddButton); add(availableTagsContainer); availableTagsContainer.add(availableTagsListView); add(appliedTagsContainer); appliedTagsContainer.add(appliedTagsListView); add(closeLink); }
From source file:com.doculibre.constellio.wicket.panels.results.tagging.SearchResultTaggingPanel.java
License:Open Source License
public SearchResultTaggingPanel(String id, final SolrDocument doc, final IDataProvider dataProviderParam) { super(id);//from w w w .j a v a 2 s . c o m RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); final SimpleSearch simpleSearch; if (dataProviderParam instanceof FacetsDataProvider) { FacetsDataProvider dataProvider = (FacetsDataProvider) dataProviderParam; simpleSearch = dataProvider.getSimpleSearch(); } else { SearchResultsDataProvider dataProvider = (SearchResultsDataProvider) dataProviderParam; simpleSearch = dataProvider.getSimpleSearch(); } String collectionName = simpleSearch.getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); if (!collection.isOpenSearch()) { RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); Record record = recordServices.get(doc); recordModel = new RecordModel(record); final ModalWindow taggingModal = new ModalWindow("taggingModal"); taggingModal.setTitle(new StringResourceModel("tags", this, null)); taggingModal.setCssClassName(ModalWindow.CSS_CLASS_GRAY); taggingModal.setInitialWidth(800); taggingModal.setInitialHeight(450); taggingModal.setCloseButtonCallback(new CloseButtonCallback() { @Override public boolean onCloseButtonClicked(AjaxRequestTarget target) { target.addComponent(SearchResultTaggingPanel.this); return true; } }); add(taggingModal); IModel thesaurusListModel = new LoadableDetachableModel() { @Override protected Object load() { List<Thesaurus> thesaurusList = new ArrayList<Thesaurus>(); RecordCollectionServices collectionServices = ConstellioSpringUtils .getRecordCollectionServices(); String collectionName = simpleSearch.getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); thesaurusList.add(null);// free text tags if (collection.getThesaurus() != null) { thesaurusList.add(collection.getThesaurus()); } return thesaurusList; } }; add(new ListView("taggingLinks", thesaurusListModel) { @Override protected void populateItem(ListItem item) { Thesaurus thesaurus = (Thesaurus) item.getModelObject(); final ReloadableEntityModel<Thesaurus> thesaurusModel = new ReloadableEntityModel<Thesaurus>( thesaurus); final String thesaurusName; if (thesaurus == null) { thesaurusName = getLocalizer().getString("tags", this); } else { thesaurusName = getLocalizer().getString("thesaurus", this); } AjaxLink link = new AjaxLink("taggingLink") { @Override public void onClick(AjaxRequestTarget target) { Thesaurus thesaurus = thesaurusModel.getObject(); SearchResultEditTaggingPanel editTaggingPanel = new SearchResultEditTaggingPanel( taggingModal.getContentId(), doc, dataProviderParam, thesaurus); taggingModal.setContent(editTaggingPanel); taggingModal.show(target); } @Override public boolean isEnabled() { boolean enabled = super.isEnabled(); if (enabled) { Record record = recordModel.getObject(); if (record != null) { ConstellioUser user = ConstellioSession.get().getUser(); if (user != null) { RecordCollection collection = record.getConnectorInstance() .getRecordCollection(); enabled = user.hasCollaborationPermission(collection); } else { enabled = false; } } else { enabled = false; } } return enabled; } @Override public void detachModels() { thesaurusModel.detach(); super.detachModels(); } }; item.add(link); link.add(new Label("thesaurusName", thesaurusName)); final IModel tagsModel = new LoadableDetachableModel() { @Override protected Object load() { Record record = recordModel.getObject(); Thesaurus thesaurus = thesaurusModel.getObject(); return new ArrayList<RecordTag>(record.getIncludedRecordTags(thesaurus)); } }; item.add(new ListView("tags", tagsModel) { @SuppressWarnings("unchecked") @Override protected void populateItem(ListItem item) { RecordTag recordTag = (RecordTag) item.getModelObject(); final RecordTagModel recordTagModel = new RecordTagModel(recordTag); Link addTagLink = new Link("addTagLink") { @Override public void onClick() { RecordTag recordTag = recordTagModel.getObject(); SimpleSearch clone = simpleSearch.clone(); clone.getTags().add(recordTag.getName(getLocale())); PageFactoryPlugin pageFactoryPlugin = PluginFactory .getPlugin(PageFactoryPlugin.class); if (StringUtils.isNotBlank(clone.getLuceneQuery())) { // ConstellioSession.get().addSearchHistory(clone); setResponsePage(pageFactoryPlugin.getSearchResultsPage(), SearchResultsPage.getParameters(clone)); } else { SimpleSearch newSearch = new SimpleSearch(); newSearch.setCollectionName(simpleSearch.getCollectionName()); newSearch.setSingleSearchLocale(simpleSearch.getSingleSearchLocale()); setResponsePage(pageFactoryPlugin.getSearchFormPage(), SearchFormPage.getParameters(newSearch)); } } @Override public void detachModels() { recordTagModel.detach(); super.detachModels(); } }; item.add(addTagLink); List<RecordTag> recordTags = (List<RecordTag>) tagsModel.getObject(); String tag = recordTag.getName(getLocale()); if (item.getIndex() < recordTags.size() - 1) { tag += ";"; } addTagLink.add(new Label("tag", tag)); addTagLink.setEnabled(false); } }); item.add(new WebMarkupContainer("noTags") { @SuppressWarnings("unchecked") @Override public boolean isVisible() { List<RecordTag> recordTags = (List<RecordTag>) tagsModel.getObject(); return super.isVisible() && recordTags.isEmpty(); } }); } }); } else { setVisible(false); } }