Example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow show

List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow show

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow show.

Prototype

public void show(final IPartialPageRequestHandler target) 

Source Link

Document

Shows the modal window.

Usage

From source file:com.doculibre.constellio.wicket.panels.admin.elevate.ElevateQueryListPanel.java

License:Open Source License

public ElevateQueryListPanel(String id) {
    super(id);/*from  w ww  . j a  v  a 2  s.c o m*/

    add(new DocIdsPanel("excludedDocIdsPanel", null, false));

    IModel elevateQueriesModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            AdminCollectionPanel collectionAdminPanel = (AdminCollectionPanel) findParent(
                    AdminCollectionPanel.class);
            RecordCollection collection = collectionAdminPanel.getCollection();
            String solrCoreName = collection.getName();

            ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices();
            return elevateServices.getQueries(solrCoreName);
        }
    };

    add(new ListView("queries", elevateQueriesModel) {
        @Override
        protected void populateItem(ListItem item) {
            final String queryText = (String) item.getModelObject();
            ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices();
            final SimpleSearch querySimpleSearch = elevateServices.toSimpleSearch(queryText);

            int nbDocs = elevateServices.getElevatedDocIds(querySimpleSearch).size();
            item.add(new Label("nbDocs", "" + nbDocs));

            final ModalWindow detailsModal = new ModalWindow("detailsModal");
            item.add(detailsModal);
            detailsModal.setInitialHeight(SingleColumnCRUDPanel.MODAL_HEIGHT);
            detailsModal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);

            WebMarkupContainer detailsLink = new AjaxLink("detailsLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    detailsModal
                            .setContent(new ElevateQueryDocIdsPanel(detailsModal.getContentId(), queryText));
                    //                  detailsModal.setTitle(queryText);
                    detailsModal.setWindowClosedCallback(new WindowClosedCallback() {
                        @Override
                        public void onClose(AjaxRequestTarget target) {
                            target.addComponent(ElevateQueryListPanel.this);
                        }
                    });
                    detailsModal.show(target);
                }
            };
            item.add(detailsLink);
            detailsLink.add(new SimpleSearchQueryPanel("queryText", querySimpleSearch));

            WebMarkupContainer deleteLink = new AjaxLink("deleteLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices();
                    elevateServices.deleteQuery(querySimpleSearch);
                    target.addComponent(ElevateQueryListPanel.this);
                }

                @Override
                protected IAjaxCallDecorator getAjaxCallDecorator() {
                    return new AjaxCallDecorator() {
                        @Override
                        public CharSequence decorateScript(CharSequence script) {
                            String confirmMsg = getLocalizer().getString("confirmDelete",
                                    ElevateQueryListPanel.this);
                            return "if (confirm('" + confirmMsg + "')) {" + script + "} else { return false; }";
                        }
                    };
                }
            };
            item.add(deleteLink);
        }
    });
}

From source file:com.doculibre.constellio.wicket.panels.admin.facets.FacetListPanel.java

License:Open Source License

@Override
protected List<IColumn> getDataColumns() {
    List<IColumn> dataColumns = super.getDataColumns();

    dataColumns.add(new HeaderlessColumn() {
        @Override// w  ww.ja va 2s  .c  o  m
        public void populateItem(Item cellItem, String componentId, final IModel rowModel) {
            cellItem.add(new ModalLinkHolder(componentId,
                    new StringResourceModel("labelledValues", FacetListPanel.this, null)) {
                @Override
                protected WebMarkupContainer newLink(String id) {
                    return new AjaxLink(id) {
                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            ModalWindow labelledValuesModal = getModalWindow();
                            CollectionFacet facet = (CollectionFacet) rowModel.getObject();
                            EditFacetLabelledValuesPanel editLabelledValuesModal = new EditFacetLabelledValuesPanel(
                                    labelledValuesModal.getContentId(), facet);
                            labelledValuesModal.setContent(editLabelledValuesModal);
                            labelledValuesModal.show(target);
                        }

                        @Override
                        public boolean isVisible() {
                            CollectionFacet facet = (CollectionFacet) rowModel.getObject();
                            return facet.isFieldFacet();
                        }
                    };
                }
            });
        }
    });

    dataColumns.add(new HeaderlessColumn() {
        @Override
        public void populateItem(Item cellItem, String componentId, final IModel rowModel) {
            cellItem.add(new ModalLinkHolder(componentId,
                    new StringResourceModel("queries", FacetListPanel.this, null)) {
                @Override
                protected WebMarkupContainer newLink(String id) {
                    return new AjaxLink(id) {
                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            ModalWindow queriesModal = getModalWindow();
                            CollectionFacet facet = (CollectionFacet) rowModel.getObject();
                            EditFacetLabelledValuesPanel editQueriesPanel = new EditFacetLabelledValuesPanel(
                                    queriesModal.getContentId(), facet);
                            queriesModal.setContent(editQueriesPanel);
                            queriesModal.show(target);
                        }

                        @Override
                        public boolean isVisible() {
                            CollectionFacet facet = (CollectionFacet) rowModel.getObject();
                            return facet.isQueryFacet();
                        }
                    };
                }
            });
        }
    });

    // Move up
    dataColumns.add(new HeaderlessColumn() {
        @Override
        public void populateItem(Item cellItem, String componentId, final IModel rowModel) {
            cellItem.add(new ImgLinkHolder(componentId) {
                @Override
                protected WebMarkupContainer newLink(String id) {
                    return new AjaxLink(id) {
                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            FacetServices facetServices = ConstellioSpringUtils.getFacetServices();
                            CollectionFacet facet = (CollectionFacet) rowModel.getObject();
                            RecordCollection collection = facet.getRecordCollection();

                            List<CollectionFacet> collectionFacets = collection.getCollectionFacets();
                            int index = collectionFacets.indexOf(facet);
                            // Cannot move higher!
                            if (index > 0) {
                                CollectionFacet previousFacet = collectionFacets.set(index - 1, facet);
                                collectionFacets.set(index, previousFacet);
                                EntityManager entityManager = ConstellioPersistenceContext
                                        .getCurrentEntityManager();
                                if (!entityManager.getTransaction().isActive()) {
                                    entityManager.getTransaction().begin();
                                }
                                facetServices.makePersistent(facet);
                                facetServices.makePersistent(previousFacet);
                                entityManager.getTransaction().commit();
                                entityManager.clear();

                                target.addComponent(findParent(AdminCollectionPanel.class));
                            }
                        }
                    };
                }

                @Override
                protected Component newImg(String id) {
                    return new NonCachingImage(id,
                            new ResourceReference(BaseConstellioPage.class, "images/up.png"));
                }
            });
        }
    });

    // Move down
    dataColumns.add(new HeaderlessColumn() {
        @Override
        public void populateItem(Item cellItem, String componentId, final IModel rowModel) {
            cellItem.add(new ImgLinkHolder(componentId) {
                @Override
                protected WebMarkupContainer newLink(String id) {
                    return new AjaxLink(id) {
                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            FacetServices facetServices = ConstellioSpringUtils.getFacetServices();
                            CollectionFacet facet = (CollectionFacet) rowModel.getObject();
                            RecordCollection collection = facet.getRecordCollection();

                            List<CollectionFacet> collectionFacets = collection.getCollectionFacets();
                            int index = collectionFacets.indexOf(facet);
                            // Cannot move lower!
                            if (index < collectionFacets.size() - 1) {
                                CollectionFacet previousFacet = collectionFacets.set(index + 1, facet);
                                collectionFacets.set(index, previousFacet);
                                EntityManager entityManager = ConstellioPersistenceContext
                                        .getCurrentEntityManager();
                                if (!entityManager.getTransaction().isActive()) {
                                    entityManager.getTransaction().begin();
                                }
                                facetServices.makePersistent(facet);
                                facetServices.makePersistent(previousFacet);
                                entityManager.getTransaction().commit();
                                entityManager.clear();

                                target.addComponent(findParent(AdminCollectionPanel.class));
                            }
                        }
                    };
                }

                @Override
                protected Component newImg(String id) {
                    return new NonCachingImage(id,
                            new ResourceReference(BaseConstellioPage.class, "images/down.png"));
                }
            });
        }
    });

    return dataColumns;
}

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  ww w  .  j  a v a2  s .  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 a  v  a2s. co m*/
    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//from w ww .  j  a  va2  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.solrConfig.SolrConfigPanel.java

License:Open Source License

private ListView getPropertiesListView(List<PropertyRow> propertyRows) {
    return new ListView("properties", propertyRows) {

        @Override//  w ww  . ja v a2 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   ww w  .j av a 2s  . com*/
    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);//from   w  w w  .  j  a  v a  2 s . c o 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);//from  w w  w . j a v  a 2s . co m

    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) {//  ww  w . j a  va  2  s .  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);
}