List of usage examples for org.apache.wicket.markup.html.list ListView ListView
public ListView(final String id, final List<T> list)
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 www . j ava2 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.admin.user.AddEditUserPanel.java
License:Open Source License
public AddEditUserPanel(String id, ConstellioUser user) { super(id, true); this.userModel = new ReloadableEntityModel<ConstellioUser>(user); Form form = getForm();/* w w w . j a v a 2s .com*/ form.setModel(new CompoundPropertyModel(userModel)); TextField username = new RequiredTextField("username"); form.add(username); password = new PasswordTextField("password", new Model()); form.add(password); password.setRequired(user.getId() == null); PasswordTextField passwordConfirmation = new PasswordTextField("passwordConfirmation", new Model()); form.add(passwordConfirmation); passwordConfirmation.setRequired(user.getId() == null); TextField firstName = new RequiredTextField("firstName"); form.add(firstName); TextField lastName = new RequiredTextField("lastName"); form.add(lastName); IModel languagesModel = new LoadableDetachableModel() { @Override protected Object load() { List<String> supportedLanguages = new ArrayList<String>(); List<Locale> supportedLocales = ConstellioSpringUtils.getSupportedLocales(); for (Locale supportedLocale : supportedLocales) { supportedLanguages.add(supportedLocale.getLanguage()); } return supportedLanguages; } }; IChoiceRenderer languagesRenderer = new ChoiceRenderer() { @Override public Object getDisplayValue(Object object) { return new Locale((String) object).getDisplayLanguage(getLocale()); } }; DropDownChoice languageField = new DropDownChoice("localeCode", languagesModel, languagesRenderer); form.add(languageField); languageField.setRequired(true); languageField.setNullValid(false); CheckBox admin = new CheckBox("admin"); form.add(admin); CheckBox collaborator = new CheckBox("collaborator"); form.add(collaborator); form.add(new EqualPasswordInputValidator(password, passwordConfirmation)); visibleCredentialGroupsModel = new LoadableDetachableModel() { @Override protected Object load() { Set<CredentialGroup> visibleCredentialGroups = new HashSet<CredentialGroup>(); ConstellioUser user = userModel.getObject(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); FederationServices federationServices = ConstellioSpringUtils.getFederationServices(); for (RecordCollection collection : collectionServices.list()) { if (user.hasSearchPermission(collection)) { Collection<CredentialGroup> searchCredentialGroups; if (collection.isFederationOwner()) { searchCredentialGroups = federationServices.listCredentialGroups(collection); } else { searchCredentialGroups = collection.getCredentialGroups(); } for (CredentialGroup credentialGroup : searchCredentialGroups) { visibleCredentialGroups.add(credentialGroup); } } } return new ArrayList<CredentialGroup>(visibleCredentialGroups); } }; credentialGroupsListView = new ListView("credentialGroups", visibleCredentialGroupsModel) { @Override protected void populateItem(ListItem item) { CredentialGroup credentialGroup = (CredentialGroup) item.getModelObject(); RecordCollection collection = credentialGroup.getRecordCollection(); Locale displayLocale = collection.getDisplayLocale(getLocale()); ConstellioUser user = userModel.getObject(); String credentialGroupLabel = credentialGroup.getName() + " (" + collection.getTitle(displayLocale) + ")"; EntityModel<UserCredentials> userCredentialsModel = userCredentialsModelMap .get(credentialGroup.getId()); if (userCredentialsModel == null) { UserCredentials userCredentials = user.getUserCredentials(credentialGroup); if (userCredentials == null) { userCredentials = new UserCredentials(); } userCredentialsModel = new EntityModel<UserCredentials>(userCredentials); userCredentialsModelMap.put(credentialGroup.getId(), userCredentialsModel); } final TextField usernameField = new TextField("username", new PropertyModel(userCredentialsModel, "username")); final EntityModel<UserCredentials> finalUserCredentialsModel = userCredentialsModel; PasswordTextField encrypedPasswordField = new PasswordTextField("encryptedPassword", new Model() { @Override public Object getObject() { UserCredentials userCredentials = finalUserCredentialsModel.getObject(); return EncryptionUtils.decrypt(userCredentials.getEncryptedPassword()); } @Override public void setObject(Object object) { UserCredentials userCredentials = finalUserCredentialsModel.getObject(); String encryptedPassword = EncryptionUtils.encrypt((String) object); if (encryptedPassword != null || StringUtils.isEmpty(usernameField.getInput())) { userCredentials.setEncryptedPassword(encryptedPassword); } } }); encrypedPasswordField.setRequired(false); TextField domainField = new TextField("domain", new PropertyModel(userCredentialsModel, "domain")); item.add(new Label("name", credentialGroupLabel)); item.add(usernameField); item.add(encrypedPasswordField); item.add(domainField); } @SuppressWarnings("unchecked") @Override public boolean isVisible() { boolean visible = super.isVisible(); if (visible) { List<CredentialGroup> credentialGroups = (List<CredentialGroup>) visibleCredentialGroupsModel .getObject(); visible = !credentialGroups.isEmpty(); } return visible; } }; form.add(credentialGroupsListView); }
From source file:com.doculibre.constellio.wicket.panels.elevate.queries.EditRecordElevatedQueriesPanel.java
License:Open Source License
public EditRecordElevatedQueriesPanel(String id, Record record, final SimpleSearch simpleSearch) { super(id);// ww w . j a v a2 s . c o m this.recordModel = new RecordModel(record); this.simpleSearch = simpleSearch; final String collectionName = simpleSearch.getCollectionName(); ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); RecordCollection collection = collectionServices.get(collectionName); List<String> elevatedQueries = elevateServices.getElevatedQueries(record, collection); queries.addAll(elevatedQueries); String titleKey = "queries"; IModel titleModel = new StringResourceModel(titleKey, this, null); add(new Label("panelTitle", titleModel)); queriesContainer = new WebMarkupContainer("queriesContainer"); add(queriesContainer); queriesContainer.setOutputMarkupId(true); add(new AddQueryForm("addForm")); queriesContainer.add(new ListView("queries", queries) { @Override protected void populateItem(ListItem item) { final String query = (String) item.getModelObject(); ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); SimpleSearch simpleSearch = elevateServices.toSimpleSearch(query); item.add(new SimpleSearchQueryPanel("query", simpleSearch)); item.add(new AjaxLink("deleteLink") { @Override public void onClick(AjaxRequestTarget target) { queries.remove(query); target.addComponent(queriesContainer); } @Override protected IAjaxCallDecorator getAjaxCallDecorator() { return new AjaxCallDecorator() { @Override public CharSequence decorateScript(CharSequence script) { String confirmMsg = getLocalizer().getString("confirmDelete", EditRecordElevatedQueriesPanel.this); return "if (confirm('" + confirmMsg + "')) {" + script + "} else { return false; }"; } }; } }); } }); Form form = new Form("form"); add(form); form.add(new AjaxButton("submitButton") { @Override protected void onSubmit(AjaxRequestTarget target, Form form) { ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); RecordCollection collection = collectionServices.get(collectionName); Record record = recordModel.getObject(); List<String> originalQueries = elevateServices.getElevatedQueries(record, collection); for (String originalQuery : originalQueries) { if (!queries.contains(originalQuery)) { SimpleSearch originalQuerySimpleSearch = elevateServices.toSimpleSearch(originalQuery); elevateServices.cancelElevation(record, originalQuerySimpleSearch); } } for (String query : queries) { SimpleSearch querySimpleSearch = elevateServices.toSimpleSearch(query); if (!elevateServices.isElevated(record, querySimpleSearch)) { elevateServices.elevate(record, querySimpleSearch); } } ModalWindow.closeCurrent(target); } }); form.add(new AjaxButton("cancelButton") { @Override protected void onSubmit(AjaxRequestTarget target, Form form) { ModalWindow.closeCurrent(target); } }.setDefaultFormProcessing(false)); }
From source file:com.doculibre.constellio.wicket.panels.facets.CloudTagPanel.java
License:Open Source License
public CloudTagPanel(String id, final SearchableFacet searchableFacet, final FacetsDataProvider dataProvider) { super(id);//w ww . j ava 2s . c o m cloudKeywordsModel = new LoadableDetachableModel() { @Override protected Object load() { // Ordre dcroissant de frquence List<CloudKeyword> cloudKeywords = SolrFacetUtils.getCloudKeywords(searchableFacet, dataProvider); if (!cloudKeywords.isEmpty()) { max = (int) cloudKeywords.get(0).getWeight(); min = (int) cloudKeywords.get(cloudKeywords.size() - 1).getWeight(); } else { max = min = 0; } // Ordre alphabtique Collections.sort(cloudKeywords); return cloudKeywords; } }; add(new ListView("couldKeywords", cloudKeywordsModel) { @Override protected void populateItem(ListItem item) { final CloudKeyword cloudKeyword = (CloudKeyword) item.getModelObject(); SimpleSearch simpleSearch = dataProvider.getSimpleSearch(); SimpleSearch clone = simpleSearch.clone(); clone.setCloudKeyword(cloudKeyword); // ConstellioSession.get().addSearchHistory(clone); PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); Link addCloudKeywordLink = new BookmarkablePageLink("addCloudKeywordLink", pageFactoryPlugin.getSearchResultsPage(), SearchResultsPage.getParameters(clone)); item.add(addCloudKeywordLink); Label keywordLabel = new Label("keyword", cloudKeyword.getKeyword()); addCloudKeywordLink.add(keywordLabel); keywordLabel.add( new SimpleAttributeModifier("style", getLinkStyle(cloudKeyword.getWeight(), max, min))); } }); }
From source file:com.doculibre.constellio.wicket.panels.facets.CurrentSearchPanel.java
License:Open Source License
public CurrentSearchPanel(String id, final SimpleSearch simpleSearch) { super(id, new CompoundPropertyModel(simpleSearch)); final SimpleSearch newSearch = new SimpleSearch(); newSearch.setCollectionName(simpleSearch.getCollectionName()); newSearch.setSingleSearchLocale(simpleSearch.getSingleSearchLocale()); // ConstellioSession.get().addSearchHistory(simpleSearch); if (simpleSearch.getAdvancedSearchRule() != null && !simpleSearch.getAdvancedSearchRule().isValid()) { setVisible(false);/*from w ww .ja va2s . c o m*/ } IModel queryModel = new LoadableDetachableModel() { @Override protected Object load() { if (simpleSearch.getAdvancedSearchRule() != null) { return new StringResourceModel("advancedSearchLabel", CurrentSearchPanel.this, null) .getString(); } else { return simpleSearch.getQuery(); } } }; add(new Label("query", queryModel) { @Override public boolean isVisible() { boolean valid = simpleSearch.isQueryValid(); return valid && (simpleSearch.getQuery() != null || simpleSearch.getAdvancedSearchRule() != null); } }); SimpleSearch cloneDeleteQuery = simpleSearch.clone(); cloneDeleteQuery.setRefinedSearch(true); cloneDeleteQuery.setQuery(null); PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); Class<? extends Page> deleteQueryLinkPage; PageParameters deleteQueryLinkParams; if (StringUtils.isNotBlank(cloneDeleteQuery.getLuceneQuery())) { deleteQueryLinkPage = pageFactoryPlugin.getSearchResultsPage(); deleteQueryLinkParams = SearchResultsPage.getParameters(cloneDeleteQuery); } else { deleteQueryLinkPage = pageFactoryPlugin.getSearchFormPage(); deleteQueryLinkParams = SearchFormPage.getParameters(newSearch); } add(new BookmarkablePageLink("deleteQueryLink", deleteQueryLinkPage, deleteQueryLinkParams) { @Override public boolean isVisible() { return simpleSearch.isQueryValid() && simpleSearch.getQuery() != null && simpleSearch.getAdvancedSearchRule() == null; } }); WebMarkupContainer tagsSection = new WebMarkupContainer("tagsSection") { @Override public boolean isVisible() { return !simpleSearch.getTags().isEmpty(); } }; add(tagsSection); IModel tagsModel = new LoadableDetachableModel() { @Override protected Object load() { return new ArrayList<String>(simpleSearch.getTags()); } }; tagsSection.add(new ListView("tags", tagsModel) { @Override protected void populateItem(ListItem item) { final String tag = item.getModelObjectAsString(); final SimpleSearch cloneRemoveTag = simpleSearch.clone(); cloneRemoveTag.getTags().remove(tag); PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); Class<? extends Page> removeTagPage; PageParameters removeTagParams; if (StringUtils.isNotBlank(cloneRemoveTag.getLuceneQuery())) { removeTagPage = pageFactoryPlugin.getSearchResultsPage(); removeTagParams = SearchResultsPage.getParameters(cloneRemoveTag); } else { removeTagPage = pageFactoryPlugin.getSearchFormPage(); removeTagParams = SearchFormPage.getParameters(newSearch); } item.add(new Label("tag", tag)); item.add(new BookmarkablePageLink("removeTagLink", removeTagPage, removeTagParams)); } }); WebMarkupContainer searchedFacetsSection = new WebMarkupContainer("searchedFacetsSection") { @Override public boolean isVisible() { return simpleSearch.isFacetApplied(); } }; add(searchedFacetsSection); IModel includedFacetValuesModel = new LoadableDetachableModel() { @Override protected Object load() { List<FacetValue> facetIncludedValues = new ArrayList<FacetValue>(); List<SearchedFacet> searchedFacets = simpleSearch.getSearchedFacets(); for (SearchedFacet searchedFacet : searchedFacets) { SearchableFacet searchableFacet = searchedFacet.getSearchableFacet(); boolean isCluster = searchableFacet.isCluster(); if (isCluster) { int i = 0; for (String includedValue : searchedFacet.getIncludedValues()) { FacetValue facetValue = new FacetValue(searchableFacet, includedValue); String valueToClusterLabel = searchedFacet.getClustersLabels().get(i); facetValue.setValueToClusterLabel(valueToClusterLabel); facetIncludedValues.add(facetValue); i++; } } else { for (String includedValue : searchedFacet.getIncludedValues()) { FacetValue facetValue = new FacetValue(searchableFacet, includedValue); facetIncludedValues.add(facetValue); } } } return facetIncludedValues; } }; searchedFacetsSection.add(new ListView("includedFacetValuesModel", includedFacetValuesModel) { @Override protected void populateItem(ListItem item) { FacetValue facetValue = (FacetValue) item.getModelObject(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); String collectionName = simpleSearch.getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); Locale displayLocale = collection.getDisplayLocale(getLocale()); StringBuffer facetValueLabel = new StringBuffer(); facetValueLabel.append(facetValue.getSearchableFacet().getLabels().get(displayLocale)); facetValueLabel.append(" : "); facetValueLabel.append(facetValue.getLabel(displayLocale)); item.add(new Label("label", facetValueLabel.toString())); SimpleSearch cloneDeleteIncludedFacet = simpleSearch.clone(); SearchableFacet searchableFacet = facetValue.getSearchableFacet(); SearchedFacet searchedFacet = cloneDeleteIncludedFacet.getSearchedFacet(searchableFacet.getName()); searchedFacet.getIncludedValues().remove(facetValue.getValue()); if (searchedFacet.getIncludedValues().isEmpty() && searchedFacet.getExcludedValues().isEmpty()) { cloneDeleteIncludedFacet.getSearchedFacets().remove(searchedFacet); } // TODO FIXME // FacetsPanel facetsPanel = (FacetsPanel) findParent(FacetsPanel.class); // facetsPanel.resetFacet(searchableFacet); PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); Class<? extends Page> deleteIncludedFacetPage; PageParameters deleteIncludedFacetParams; if (StringUtils.isNotBlank(cloneDeleteIncludedFacet.getLuceneQuery())) { // ConstellioSession.get().addSearchHistory(clone); deleteIncludedFacetPage = pageFactoryPlugin.getSearchResultsPage(); deleteIncludedFacetParams = SearchResultsPage.getParameters(cloneDeleteIncludedFacet); } else { deleteIncludedFacetPage = pageFactoryPlugin.getSearchFormPage(); deleteIncludedFacetParams = SearchFormPage.getParameters(newSearch); } item.add(new BookmarkablePageLink("deleteIncludedFacetLink", deleteIncludedFacetPage, deleteIncludedFacetParams)); } }); IModel excludedFacetValuesModel = new LoadableDetachableModel() { @Override protected Object load() { List<FacetValue> excludedFacetValues = new ArrayList<FacetValue>(); List<SearchedFacet> searchedFacets = simpleSearch.getSearchedFacets(); for (SearchedFacet searchedFacet : searchedFacets) { SearchableFacet searchableFacet = searchedFacet.getSearchableFacet(); boolean isCluster = searchableFacet.isCluster(); if (isCluster) { int i = 0; for (String excludedValue : searchedFacet.getExcludedValues()) { FacetValue facetValue = new FacetValue(searchableFacet, excludedValue); String valueToClusterLabel = searchedFacet.getClustersLabels().get(i); facetValue.setValueToClusterLabel(valueToClusterLabel); excludedFacetValues.add(facetValue); i++; } } else { for (String excludedValue : searchedFacet.getExcludedValues()) { excludedFacetValues.add(new FacetValue(searchableFacet, excludedValue)); } } } return excludedFacetValues; } }; searchedFacetsSection.add(new ListView("excludedFacetValuesModel", excludedFacetValuesModel) { @Override protected void populateItem(ListItem item) { FacetValue facetValue = (FacetValue) item.getModelObject(); RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); String collectionName = simpleSearch.getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); Locale displayLocale = collection.getDisplayLocale(getLocale()); StringBuffer facetValueLabel = new StringBuffer(); facetValueLabel.append(facetValue.getSearchableFacet().getLabels().get(displayLocale)); facetValueLabel.append(" : "); facetValueLabel.append(facetValue.getLabel(displayLocale)); item.add(new Label("label", facetValueLabel.toString())); SimpleSearch cloneDeleteExcludedFacet = simpleSearch.clone(); SearchableFacet searchableFacet = facetValue.getSearchableFacet(); SearchedFacet searchedFacet = cloneDeleteExcludedFacet.getSearchedFacet(searchableFacet.getName()); searchedFacet.getExcludedValues().remove(facetValue.getValue()); // TODO FIXME // FacetsPanel facetsPanel = (FacetsPanel) findParent(FacetsPanel.class); // facetsPanel.resetFacet(searchableFacet); if (searchedFacet.getIncludedValues().isEmpty() && searchedFacet.getExcludedValues().isEmpty()) { cloneDeleteExcludedFacet.getSearchedFacets().remove(searchedFacet); } PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class); Class<? extends Page> deleteExcludedFacetPage; PageParameters deleteExcludedFacetParams; if (StringUtils.isNotBlank(cloneDeleteExcludedFacet.getLuceneQuery())) { deleteExcludedFacetPage = pageFactoryPlugin.getSearchResultsPage(); deleteExcludedFacetParams = SearchResultsPage.getParameters(cloneDeleteExcludedFacet); } else { deleteExcludedFacetPage = pageFactoryPlugin.getSearchFormPage(); deleteExcludedFacetParams = SearchFormPage.getParameters(newSearch); } item.add(new BookmarkablePageLink("deleteExcludedFacetLink", deleteExcludedFacetPage, deleteExcludedFacetParams)); } }); add(new Label("cloudKeyword.keyword") { @Override public boolean isVisible() { return simpleSearch.getCloudKeyword() != null; } }); SimpleSearch cloneDeleteCloudKeyword = simpleSearch.clone(); cloneDeleteCloudKeyword.setCloudKeyword(null); Class<? extends Page> deleteCloudQueryPage; PageParameters deleteCloudQueryParams; if (StringUtils.isNotBlank(cloneDeleteCloudKeyword.getLuceneQuery())) { deleteCloudQueryPage = pageFactoryPlugin.getSearchResultsPage(); deleteCloudQueryParams = SearchResultsPage.getParameters(cloneDeleteCloudKeyword); } else { deleteCloudQueryPage = pageFactoryPlugin.getSearchFormPage(); deleteCloudQueryParams = SearchFormPage.getParameters(newSearch); } add(new BookmarkablePageLink("deleteCloudKeywordLink", deleteCloudQueryPage, deleteCloudQueryParams) { @Override public boolean isVisible() { return simpleSearch.getCloudKeyword() != null; } }); }
From source file:com.doculibre.constellio.wicket.panels.facets.FacetsPanel.java
License:Open Source License
public FacetsPanel(String id, final SearchResultsDataProvider dataProvider) { super(id);/* w w w . ja v a 2 s.c o m*/ final SimpleSearch simpleSearch = dataProvider.getSimpleSearch(); // facetsDataProvider = new FacetsDataProvider(simpleSearch, dataProvider.getResultsPerPage(), true, // false); notIncludedFacetsDataProvider = new FacetsDataProvider(simpleSearch, dataProvider.getResultsPerPage(), true, true); facetsDataProvider = notIncludedFacetsDataProvider; add(new CollectionSearchFacetPanel("collectionSearchFacetPanel") { @Override public boolean isVisible() { SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils .getSearchInterfaceConfigServices(); SearchInterfaceConfig config = searchInterfaceConfigServices.get(); return config.isShowCollectionsInResultFacets(); } }); add(new FacetFoldableSectionPanel("currentSearchPanel", new StringResourceModel("currentSearch", this, null), "currentSearch") { @Override protected Component newFoldableSection(String id) { return new CurrentSearchPanel(id, dataProvider.getSimpleSearch()); } @Override protected String getTitleSectionStyleClass() { return "currentSearchSectionTitle"; } }); //It does nothing, except not hiding the facet column when there's nothing in it SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils .getSearchInterfaceConfigServices(); SearchInterfaceConfig config = searchInterfaceConfigServices.get(); add(new WebMarkupContainer("dontHideWhenEmptyPlaceHolder").setVisible(!config.isHideEmptyFacetColumn())); List<SearchableFacet> searchableFacets = SolrFacetUtils.getSearchableFacets(simpleSearch); facetListView = new ListView("searchableFacets", searchableFacets) { @Override protected void populateItem(ListItem item) { String id = "facetPanel"; int index = item.getIndex(); final SearchableFacet searchableFacet = (SearchableFacet) item.getModelObject(); FacetFoldableSectionPanel foldableSectionPanel = new FacetFoldableSectionPanel(id, new LoadableDetachableModel() { @Override protected Object load() { RecordCollectionServices collectionServices = ConstellioSpringUtils .getRecordCollectionServices(); String collectionName = simpleSearch.getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); Locale displayLocale = collection.getDisplayLocale(getLocale()); return searchableFacet.getLabels().get(displayLocale); } }, searchableFacet) { @Override protected Component newFoldableSection(String id) { Panel facetPanel; if (searchableFacet.isCloudKeyword()) { facetPanel = new CloudTagPanel(id, searchableFacet, facetsDataProvider); } else if (searchableFacet.isCluster()) { facetPanel = new FacetPanel(id, searchableFacet, facetsDataProvider, notIncludedFacetsDataProvider);// new // ClusterPanel(id, // searchableFacet, // facetsDataProvider); } else { facetPanel = new FacetPanel(id, searchableFacet, facetsDataProvider, notIncludedFacetsDataProvider); } return facetPanel; } @Override public boolean isOpened() { return Boolean.FALSE.equals(simpleSearch.isFacetFolded(searchableFacet.getName())); } @Override protected void onToggle(AjaxRequestTarget target) { boolean folded = !Boolean.FALSE .equals(simpleSearch.isFacetFolded(searchableFacet.getName())); simpleSearch.setFacetFolded(searchableFacet.getName(), !folded); super.onToggle(target); } }; item.add(foldableSectionPanel); FacetDisplayPlugin facetDisplayPlugin = PluginFactory.getPlugin(FacetDisplayPlugin.class); Boolean facetFolded = simpleSearch.isFacetFolded(searchableFacet.getName()); if (index == 0 && facetFolded == null) { if (facetDisplayPlugin == null || facetDisplayPlugin.isUnfoldedAtStart(searchableFacet)) { simpleSearch.setFacetFolded(searchableFacet.getName(), Boolean.FALSE); } } else { Boolean readOpenCookie = foldableSectionPanel.readOpenCookie(); if (readOpenCookie != null) { simpleSearch.setFacetFolded(searchableFacet.getName(), !readOpenCookie); } else if (facetDisplayPlugin == null || facetDisplayPlugin.isUnfoldedAtStart(searchableFacet)) { simpleSearch.setFacetFolded(searchableFacet.getName(), Boolean.FALSE); } } } }; facetListView.setReuseItems(true); add(facetListView); }
From source file:com.doculibre.constellio.wicket.panels.results.DefaultSearchResultPanel.java
License:Open Source License
public DefaultSearchResultPanel(String id, SolrDocument doc, final SearchResultsDataProvider dataProvider) { super(id);/*from w w w .java 2 s . c om*/ RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils .getSearchInterfaceConfigServices(); String collectionName = dataProvider.getSimpleSearch().getCollectionName(); RecordCollection collection = collectionServices.get(collectionName); Record record = recordServices.get(doc); if (record != null) { SearchInterfaceConfig searchInterfaceConfig = searchInterfaceConfigServices.get(); IndexField uniqueKeyField = collection.getUniqueKeyIndexField(); IndexField defaultSearchField = collection.getDefaultSearchIndexField(); IndexField urlField = collection.getUrlIndexField(); IndexField titleField = collection.getTitleIndexField(); if (urlField == null) { urlField = uniqueKeyField; } if (titleField == null) { titleField = urlField; } final String recordURL = record.getUrl(); final String displayURL; if (record.getDisplayUrl().startsWith("/get?file=")) { HttpServletRequest req = ((WebRequest) getRequest()).getHttpServletRequest(); displayURL = ContextUrlUtils.getContextUrl(req) + record.getDisplayUrl(); } else { displayURL = record.getDisplayUrl(); } String title = record.getDisplayTitle(); final String protocol = StringUtils.substringBefore(displayURL, ":"); boolean linkEnabled = isLinkEnabled(protocol); // rcupration des champs highlight partir de la cl unique // du document, dans le cas de Nutch c'est l'URL QueryResponse response = dataProvider.getQueryResponse(); Map<String, Map<String, List<String>>> highlighting = response.getHighlighting(); Map<String, List<String>> fieldsHighlighting = highlighting.get(recordURL); String titleHighlight = getTitleFromHighlight(titleField.getName(), fieldsHighlighting); if (titleHighlight != null) { title = titleHighlight; } String excerpt = null; String description = getDescription(record); String summary = getSummary(record); if (StringUtils.isNotBlank(description) && searchInterfaceConfig.isDescriptionAsExcerpt()) { excerpt = description; } else { excerpt = getExcerptFromHighlight(defaultSearchField.getName(), fieldsHighlighting); if (excerpt == null) { excerpt = description; } } toggleSummaryLink = new WebMarkupContainer("toggleSummaryLink"); add(toggleSummaryLink); toggleSummaryLink.setVisible(StringUtils.isNotBlank(summary)); toggleSummaryLink.add(new AttributeModifier("onclick", new LoadableDetachableModel() { @Override protected Object load() { return "toggleSearchResultSummary('" + summaryLabel.getMarkupId() + "')"; } })); summaryLabel = new Label("summary", summary); add(summaryLabel); summaryLabel.setOutputMarkupId(true); summaryLabel.setVisible(StringUtils.isNotBlank(summary)); ExternalLink titleLink; if (displayURL.startsWith("file://")) { HttpServletRequest req = ((WebRequest) getRequest()).getHttpServletRequest(); String newDisplayURL = ContextUrlUtils.getContextUrl(req) + "app/getSmbFile?" + SmbServletPage.RECORD_ID + "=" + record.getId() + "&" + SmbServletPage.COLLECTION + "=" + collectionName; titleLink = new ExternalLink("titleLink", newDisplayURL); } else { titleLink = new ExternalLink("titleLink", displayURL); } final RecordModel recordModel = new RecordModel(record); AttributeModifier computeClickAttributeModifier = new AttributeModifier("onmousedown", 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); } }); titleLink.add(computeClickAttributeModifier); titleLink.setEnabled(linkEnabled); boolean resultsInNewWindow; PageParameters params = RequestCycle.get().getPageParameters(); if (params != null && params.getString(POPUP_LINK) != null) { resultsInNewWindow = params.getBoolean(POPUP_LINK); } else { resultsInNewWindow = searchInterfaceConfig.isResultsInNewWindow(); } titleLink.add(new SimpleAttributeModifier("target", resultsInNewWindow ? "_blank" : "_self")); // Add title title = StringUtils.remove(title, "\n"); title = StringUtils.remove(title, "\r"); if (StringUtils.isEmpty(title)) { title = StringUtils.defaultString(displayURL); title = StringUtils.substringAfterLast(title, "/"); title = StringUtils.substringBefore(title, "?"); try { title = URLDecoder.decode(title, "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (title.length() > 120) { title = title.substring(0, 120) + " ..."; } } Label titleLabel = new Label("title", title); titleLink.add(titleLabel.setEscapeModelStrings(false)); add(titleLink); Label excerptLabel = new Label("excerpt", excerpt); add(excerptLabel.setEscapeModelStrings(false)); // add(new ExternalLink("url", url, // url).add(computeClickAttributeModifier).setEnabled(linkEnabled)); if (displayURL.startsWith("file://")) { // Creates a Windows path for file URLs String urlLabel = StringUtils.substringAfter(displayURL, "file:"); urlLabel = StringUtils.stripStart(urlLabel, "/"); urlLabel = "\\\\" + StringUtils.replace(urlLabel, "/", "\\"); try { urlLabel = URLDecoder.decode(urlLabel, "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } add(new Label("url", urlLabel)); } else { add(new Label("url", displayURL)); } 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; } }); // md5 ConstellioSession session = ConstellioSession.get(); ConstellioUser user = session.getUser(); // TODO Provide access to unauthenticated users ? String md5 = ""; if (user != null) { IntelliGIDServiceInfo intelligidServiceInfo = ConstellioSpringUtils.getIntelliGIDServiceInfo(); if (intelligidServiceInfo != null) { Collection<Object> md5Coll = doc.getFieldValues(IndexField.MD5); if (md5Coll != null) { for (Object md5Obj : md5Coll) { try { String md5Str = new String(Hex.encodeHex(Base64.decodeBase64(md5Obj.toString()))); InputStream is = HttpClientHelper .get(intelligidServiceInfo.getIntelligidUrl() + "/connector/checksum", "md5=" + URLEncoder.encode(md5Str, "ISO-8859-1"), "username=" + URLEncoder.encode(user.getUsername(), "ISO-8859-1"), "password=" + URLEncoder.encode(Base64.encodeBase64String( ConstellioSession.get().getPassword().getBytes())), "ISO-8859-1"); try { Document xmlDocument = new SAXReader().read(is); Element root = xmlDocument.getRootElement(); for (Iterator<Element> it = root.elementIterator("fichier"); it.hasNext();) { Element fichier = it.next(); String url = fichier.attributeValue("url"); md5 += "<a href=\"" + url + "\">" + url + "</a> "; } } finally { IOUtils.closeQuietly(is); } } catch (Exception e) { e.printStackTrace(); } } } } } Label md5Label = new Label("md5", md5) { public boolean isVisible() { boolean visible = super.isVisible(); if (visible) { visible = StringUtils.isNotBlank(this.getModelObjectAsString()); } return visible; } }; md5Label.setEscapeModelStrings(false); add(md5Label); add(new ElevatePanel("elevatePanel", record, dataProvider.getSimpleSearch())); } else { setVisible(false); } }
From source file:com.doculibre.constellio.wicket.panels.results.MailDetailsPanel.java
License:Open Source License
public MailDetailsPanel(String id, final Email email) { super(id, new CompoundPropertyModel(email)); add(new Label("froms").setEscapeModelStrings(false)); String messageContentText = email.getMessageContentHtml(); String text = email.getMessageContentText(); //FIXME : hack car les fichiers textes attachs sont ajout comme contenu texte if (text.length() > messageContentText.length()) { messageContentText = text;// w ww.ja va 2 s . co m } messageContentText = StringUtils.replace(messageContentText, ">>", ">>"); messageContentText = StringUtils.replace(messageContentText, "\n>", "\n>"); messageContentText = StringUtils.replace(messageContentText, "\n", "\n<br />"); // String encodedString; // try { // encodedString = new String(messageContentText.getBytes(), email.getContentEncoding()); // } catch (UnsupportedEncodingException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // encodedString = messageContentText; // } // add(new Label("messageContent", encodedString).setEscapeModelStrings(false)); add(new Label("messageContent", messageContentText).setEscapeModelStrings(false)); add(new ListView("linksList", email.getAttachments()) { @Override protected void populateItem(final ListItem item) { final Email.AttachmentClass element = (Email.AttachmentClass) item.getModelObject(); final AJAXDownload download = new AJAXDownload() { @Override protected IResourceStream getResourceStream() { return createResourceStream(element); } @Override protected String getFileName() { return element.getAttachmentName(); } private IResourceStream createResourceStream(final Email.AttachmentClass element) { IResourceStream resourceStream = new IResourceStream() { private Locale locale = null; private InputStream inputStream = null; @Override public void close() throws IOException { if (inputStream != null) { IOUtils.closeQuietly(inputStream); } } @Override public String getContentType() { return element.getAttachmentType(); } @Override public InputStream getInputStream() throws ResourceStreamNotFoundException { if (inputStream == null) { inputStream = new ByteArrayInputStream(element.getAttachmentContent()); } return inputStream; } @Override public Locale getLocale() { return locale; } @Override public long length() { return ((Integer) element.getAttachmentContent().length).longValue(); } @Override public void setLocale(Locale locale) { this.locale = locale; } @Override public Time lastModifiedTime() { // TODO Auto-generated method stub return null; } }; return resourceStream; } }; item.add(download); AjaxLink link; item.add(link = new AjaxLink("attachmentLinks") { @Override public void onClick(AjaxRequestTarget target) { download.initiate(target); } }); link.add(new Label("urlTitle", element.getAttachmentName())); /*Link link; add(link = new DownloadInputStreamLink("attachmentLinks", new LoadableDetachableModel() { @Override protected Object load() { ByteArrayInputStream in = new ByteArrayInputStream( element.getAttachmentContent()); return in; } }, element.getAttachmentName(), element .getAttachmentType(), ((Integer) element.getAttachmentContent().length) .longValue(), new Date())); link.add(new Label("urlTitle", element.getAttachmentName()));*/ item.add(link); } }); add(new Label("recipients").setEscapeModelStrings(false)); //FIXME 1 by 1 String flags = StringUtils.join(email.getFlags(), ", "); //FIXME i18n flags = StringUtils.replace(flags, "seen", getLocalizer().getString("seen", this)); flags = StringUtils.replace(flags, "flagged", getLocalizer().getString("flagged", this)); add(new Label("flags", flags).setEscapeModelStrings(false)); // add(new Label("folderNames").setEscapeModelStrings(false)); add(new Label("receivedDate").setEscapeModelStrings(false)); }
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);//from w w w.ja v 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.SearchResultsPanel.java
License:Open Source License
public SearchResultsPanel(String id, final SearchResultsDataProvider dataProvider) { super(id);//from w w w .j av a 2 s . co m setOutputMarkupId(true); List<TransfertSearchResultsPlugin> plugins = PluginFactory.getPlugins(TransfertSearchResultsPlugin.class); this.transfertLink = new AjaxLink("transfertLink") { @Override public void onClick(AjaxRequestTarget target) { transfertPanel.setVisible(true); transfertLink.setVisible(false); transfertActive = true; target.addComponent(SearchResultsPanel.this); } }; transfertLink.setVisible(!plugins.isEmpty() && ConstellioSession.get().getUser() != null && ConstellioSpringUtils.getIntelliGIDServiceInfo() != null); add(transfertLink); this.transfertPanel = new WebMarkupContainer("transfertPanel"); transfertPanel.setOutputMarkupId(true); transfertPanel.setVisible(false); add(transfertPanel); IModel allNoneModel = new Model() { @Override public Object getObject() { return allNone; } @Override public void setObject(Object object) { allNone = (Boolean) object; if (allNone) { Iterator it = dataProvider.iterator(0, dataProvider.size()); while (it.hasNext()) { SolrDocument document = (SolrDocument) it.next(); dataProvider.getSimpleSearch().getSelectedResults() .add(new Long(document.getFieldValue(IndexField.RECORD_ID_FIELD).toString())); } } else { dataProvider.getSimpleSearch().getSelectedResults().clear(); } } }; allNoneCheckbox = new AjaxCheckBox("allNoneCheckbox", allNoneModel) { @Override protected void onUpdate(AjaxRequestTarget target) { target.addComponent(SearchResultsPanel.this); } }; allNoneCheckbox.setOutputMarkupId(true); transfertPanel.add(allNoneCheckbox); errorMessageLabel = new Label("errorMessageLabel", new PropertyModel(this, "errorMessage")); errorMessageLabel.setOutputMarkupId(true); transfertPanel.add(errorMessageLabel); transfertPanel.add(new ListView("transfertButtons", plugins) { @Override protected void populateItem(ListItem item) { final TransfertSearchResultsPlugin plugin = ((TransfertSearchResultsPlugin) item.getModelObject()); AjaxLink link = new AjaxLink("launchTransfertLink") { @Override public void onClick(AjaxRequestTarget target) { errorMessage = null; List<Record> records = new ArrayList<Record>(); SimpleSearch search = dataProvider.getSimpleSearch(); RecordCollection collection = ConstellioSpringUtils.getRecordCollectionServices() .get(search.getCollectionName()); for (Long recordId : search.getSelectedResults()) { records.add(ConstellioSpringUtils.getRecordServices().get(recordId, collection)); } if (!records.isEmpty()) { doTransfert(plugin, target, records); } } private void doTransfert(final TransfertSearchResultsPlugin plugin, AjaxRequestTarget target, List<Record> records) { List<Record> transferedRecords = new ArrayList<Record>(); List<String> ids = new ArrayList<String>(); for (Record record : records) { try { ids.add(plugin.transfert(record)); transferedRecords.add(record); } catch (Throwable t) { t.printStackTrace(); errorMessage = t.getMessage(); break; } } if (errorMessage != null) { try { for (int i = 0; i < ids.size(); i++) { plugin.cancel(transferedRecords.get(i), ids.get(i)); } } catch (Throwable t) { t.printStackTrace(); } } else { plugin.afterTransfert(transferedRecords, ids); } target.addComponent(errorMessageLabel); } }; item.add(link); link.add(new Label("launchTransfertLabel", plugin.getLabelText())); } }); this.dataView = new DataView(DATA_VIEW_ID, dataProvider, dataProvider.getResultsPerPage()) { @Override protected void populateItem(Item item) { SolrDocument doc = (SolrDocument) item.getModelObject(); final Long id; RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); if (doc.getFieldValue(IndexField.RECORD_ID_FIELD) != null) { Record record = recordServices.get(doc); id = record.getId(); if (record != null) { ConnectorInstance connectorInstance = record.getConnectorInstance(); final ReloadableEntityModel<ConnectorInstance> connectorInstanceModel = new ReloadableEntityModel<ConnectorInstance>( connectorInstance); ConnectorType connectorType = connectorInstance.getConnectorType(); ResourceReference imageResourceReference = new ResourceReference( "connectorType_" + connectorType.getId()) { @Override protected Resource newResource() { ConnectorInstance connectorInstance = (ConnectorInstance) connectorInstanceModel .getObject(); ConnectorType connectorType = connectorInstance.getConnectorType(); Resource imageResource; byte[] iconBytes = connectorType.getIconFileContent(); // Convert resource path to absolute path relative to base package if (iconBytes != null) { imageResource = new ByteArrayResource("image", iconBytes); } else { imageResource = PackageResource.get(ConnectorListPanel.class, "default_icon.gif"); } return imageResource; } }; item.add(new NonCachingImage("icon", imageResourceReference) { @Override public void detachModels() { connectorInstanceModel.detach(); super.detachModels(); } @Override public boolean isVisible() { boolean visible = super.isVisible(); if (visible) { SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils .getSearchInterfaceConfigServices(); SearchInterfaceConfig searchInterfaceConfig = searchInterfaceConfigServices .get(); visible = searchInterfaceConfig.isUseIconsInSearchResults(); } return visible; } }); } else { item.setVisible(false); } } else { item.add(new WebMarkupContainer("icon").setVisible(false)); id = null; } item.add(getSearchResultPanel("searchResultPanel", item, dataProvider)); item.add(new SearchResultTaggingPanel("taggingPanel", doc, dataProvider)); newRecordCheckbox(dataProvider, item, id); } private void newRecordCheckbox(final SearchResultsDataProvider dataProvider, Item item, final Long id) { IModel isChecked = new Model() { @Override public Object getObject() { return id != null && dataProvider.getSimpleSearch().getSelectedResults().contains(id); } @Override public void setObject(Object object) { if (id != null) { Boolean state = (Boolean) object; dataProvider.getSimpleSearch().getSelectedResults().remove(id); if (state) { dataProvider.getSimpleSearch().getSelectedResults().add(id); } else { allNone = false; } } } }; item.add(new AjaxCheckBox("checkedResults", isChecked) { @Override protected void onUpdate(AjaxRequestTarget target) { target.addComponent(allNoneCheckbox); } @Override public boolean isVisible() { return transfertActive; } }); } }; add(dataView); dataView.setOutputMarkupId(true); int page = dataProvider.getSimpleSearch().getPage(); int pageCount = dataView.getPageCount(); dataView.setCurrentPage(page == -1 ? pageCount - 1 : page); ConstellioPagingNavigator pagingNavigator = new ConstellioPagingNavigator("resultsPN", dataView); add(pagingNavigator); add(new WebMarkupContainer("noResultsMessage") { @Override public boolean isVisible() { return dataProvider.size() == 0; } }); }