Example usage for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink

List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink

Introduction

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

Prototype

public AjaxLink(final String id) 

Source Link

Document

Construct.

Usage

From source file:com.doculibre.constellio.wicket.panels.admin.indexField.meta.MetaListPanel.java

License:Open Source License

@Override
protected WebMarkupContainer createDeleteLink(String id, final IModel entityModel, final int index) {
    return new AjaxLink(id) {
        @SuppressWarnings("unchecked")
        @Override/* w w w  .  j  av a2s  .c om*/
        public void onClick(AjaxRequestTarget target) {
            List<ConnectorInstanceMetaDTO> metas = (List<ConnectorInstanceMetaDTO>) MetaListPanel.this
                    .getModelObject();
            metas.remove(index);
            target.addComponent(MetaListPanel.this);
        }

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

From source file:com.doculibre.constellio.wicket.panels.admin.indexField.values.EditIndexFieldLabelledValuesPanel.java

License:Open Source License

public EditIndexFieldLabelledValuesPanel(String id, IndexField indexField) {
    super(id);//from w  w  w.j a  v  a2s .c  o  m
    this.indexFieldModel = new ReloadableEntityModel<IndexField>(indexField);

    String titleKey = "labelledValues";
    IModel titleModel = new StringResourceModel(titleKey, this, null);
    add(new Label("panelTitle", titleModel));

    valuesContainer = new WebMarkupContainer("valuesContainer");
    add(valuesContainer);
    valuesContainer.setOutputMarkupId(true);

    add(new FilterForm("filterForm"));
    add(new AddLabelForm("addForm"));

    final IModel localesModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            AdminCollectionPanel collectionAdminPanel = (AdminCollectionPanel) findParent(
                    AdminCollectionPanel.class);
            RecordCollection collection = collectionAdminPanel.getCollection();
            return new ArrayList<Locale>(collection.getLocales());
        }
    };

    valuesContainer.add(new ListView("locales", localesModel) {
        @Override
        protected void populateItem(ListItem item) {
            Locale locale = (Locale) item.getModelObject();
            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;
                }
            });
        }
    });

    IModel labelledValuesModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices();
            IndexField indexField = indexFieldModel.getObject();
            List<String> indexFieldValues = indexFieldServices.suggestValues(indexField);
            for (I18NLabel labelledValue : indexField.getLabelledValues()) {
                indexFieldValues.add(labelledValue.getKey());
            }
            return indexFieldValues;
        }
    };

    valuesContainer.add(new ListView("items", labelledValuesModel) {
        @Override
        protected void populateItem(ListItem item) {
            final String indexFieldValue = (String) item.getModelObject();
            final IModel newIndexFieldValueModel = new Model(indexFieldValue);
            AjaxEditableLabel editableLabel = new AjaxEditableLabel("value", newIndexFieldValueModel) {
                @Override
                protected void onSubmit(AjaxRequestTarget target) {
                    IndexField indexField = indexFieldModel.getObject();
                    String newIndexFieldValue = (String) newIndexFieldValueModel.getObject();
                    if (newIndexFieldValue == null || !newIndexFieldValue.equals(indexFieldValue)) {
                        IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices();
                        for (I18NLabel i18nLabel : indexField.getLabelledValues()) {
                            if (i18nLabel.getKey().equals(indexFieldValue)) {
                                if (newIndexFieldValue == null) {
                                    EntityManager entityManager = ConstellioPersistenceContext
                                            .getCurrentEntityManager();
                                    if (!entityManager.getTransaction().isActive()) {
                                        entityManager.getTransaction().begin();
                                    }
                                    indexField.getLabels().remove(i18nLabel);
                                    indexFieldServices.makePersistent(indexField, false);
                                    entityManager.getTransaction().commit();
                                    entityManager.clear();
                                } else {
                                    i18nLabel.setKey(newIndexFieldValue);
                                    EntityManager entityManager = ConstellioPersistenceContext
                                            .getCurrentEntityManager();
                                    if (!entityManager.getTransaction().isActive()) {
                                        entityManager.getTransaction().begin();
                                    }
                                    indexFieldServices.makePersistent(indexField, false);
                                    entityManager.getTransaction().commit();
                                    entityManager.clear();
                                }
                            }
                        }
                    }
                    super.onSubmit(target);
                }
            };
            item.add(editableLabel);

            MultiLocaleComponentHolder labelledValuesHolder = new MultiLocaleComponentHolder("labels",
                    indexFieldValue, indexFieldModel, "labelledValue", localesModel) {
                @Override
                protected void onPopulateItem(ListItem item, IModel componentModel, Locale locale) {
                    AjaxEditableLabel editableLabel = new AjaxEditableLabel("editableLabel", componentModel) {
                        @Override
                        protected void onSubmit(AjaxRequestTarget target) {
                            IndexField indexField = indexFieldModel.getObject();
                            IndexFieldServices indexFieldServices = ConstellioSpringUtils
                                    .getIndexFieldServices();
                            EntityManager entityManager = ConstellioPersistenceContext
                                    .getCurrentEntityManager();
                            if (!entityManager.getTransaction().isActive()) {
                                entityManager.getTransaction().begin();
                            }
                            indexFieldServices.makePersistent(indexField, false);
                            entityManager.getTransaction().commit();
                            entityManager.clear();

                            super.onSubmit(target);
                        }
                    };
                    item.add(editableLabel);
                }
            };
            item.add(labelledValuesHolder);

            item.add(new AjaxLink("deleteLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    IndexField indexField = indexFieldModel.getObject();
                    IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices();
                    EntityManager entityManager = ConstellioPersistenceContext.getCurrentEntityManager();
                    if (!entityManager.getTransaction().isActive()) {
                        entityManager.getTransaction().begin();
                    }

                    for (Iterator<I18NLabel> it = indexField.getLabelledValues().iterator(); it.hasNext();) {
                        I18NLabel labelledValue = it.next();
                        if (labelledValue.getKey().equals(indexFieldValue)) {
                            it.remove();
                        }
                    }

                    indexFieldServices.makePersistent(indexField, false);
                    entityManager.getTransaction().commit();

                    target.addComponent(valuesContainer);
                }

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

From source file:com.doculibre.constellio.wicket.panels.admin.searchResultField.SearchResultFieldListPanel.java

License:Open Source License

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

    // Move up/*from www .  ja v  a  2 s .c  o  m*/
    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) {
                            SearchResultFieldServices searchResultFieldServices = ConstellioSpringUtils
                                    .getSearchResultFieldServices();
                            SearchResultField searchResultField = (SearchResultField) rowModel.getObject();
                            RecordCollection collection = searchResultField.getRecordCollection();

                            List<SearchResultField> searchResultFields = collection.getSearchResultFields();
                            int index = searchResultFields.indexOf(searchResultField);
                            // Cannot move higher!
                            if (index > 0) {
                                SearchResultField previousSearchResultField = searchResultFields.set(index - 1,
                                        searchResultField);
                                searchResultFields.set(index, previousSearchResultField);
                                EntityManager entityManager = ConstellioPersistenceContext
                                        .getCurrentEntityManager();
                                if (!entityManager.getTransaction().isActive()) {
                                    entityManager.getTransaction().begin();
                                }
                                searchResultFieldServices.makePersistent(searchResultField);
                                searchResultFieldServices.makePersistent(previousSearchResultField);
                                entityManager.getTransaction().commit();
                                entityManager.clear();

                                target.addComponent(findParent(AdminSearchResultFieldsPanel.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) {
                            SearchResultFieldServices searchResultFieldServices = ConstellioSpringUtils
                                    .getSearchResultFieldServices();
                            SearchResultField searchResultField = (SearchResultField) rowModel.getObject();
                            RecordCollection collection = searchResultField.getRecordCollection();

                            List<SearchResultField> searchResultFields = collection.getSearchResultFields();
                            int index = searchResultFields.indexOf(searchResultField);
                            // Cannot move lower!
                            if (index < searchResultFields.size() - 1) {
                                SearchResultField previousSearchResultField = searchResultFields.set(index + 1,
                                        searchResultField);
                                searchResultFields.set(index, previousSearchResultField);
                                EntityManager entityManager = ConstellioPersistenceContext
                                        .getCurrentEntityManager();
                                if (!entityManager.getTransaction().isActive()) {
                                    entityManager.getTransaction().begin();
                                }
                                searchResultFieldServices.makePersistent(searchResultField);
                                searchResultFieldServices.makePersistent(previousSearchResultField);
                                entityManager.getTransaction().commit();
                                entityManager.clear();

                                target.addComponent(findParent(AdminSearchResultFieldsPanel.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.solrConfig.SolrConfigPanel.java

License:Open Source License

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

        @Override// w ww.  jav  a  2  s.c  o m
        protected void populateItem(final ListItem item) {

            final PropertyRow propertyRow = (PropertyRow) item.getModelObject();
            item.setOutputMarkupId(true);
            item.add(new Label("property",
                    new StringResourceModel(propertyRow.getMessageKey(), SolrConfigPanel.this, null)));
            IModel stateModel = new LoadableDetachableModel() {

                protected Object load() {
                    SolrConfig config = solrConfigModel.getObject();
                    boolean isSet = PropertyResolver.getValue(propertyRow.getProperty(), config) != null;
                    return new StringResourceModel(isSet ? "yes" : "no", SolrConfigPanel.this, null)
                            .getObject();
                }

            };
            item.add(new Label("state", stateModel));
            AjaxLink defaultValueLink = new AjaxLink("defaultValue") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    SolrConfig config = solrConfigModel.getObject();
                    PropertyResolver.setValue(propertyRow.getProperty(), config, null, null);
                    target.addComponent(item);
                    save();
                }

                @Override
                public boolean isVisible() {
                    SolrConfig config = solrConfigModel.getObject();
                    return PropertyResolver.getValue(propertyRow.getProperty(), config) != null;
                }
            };
            item.add(defaultValueLink);
            IModel titleLabelModel = new LoadableDetachableModel() {

                @Override
                protected Object load() {
                    boolean isServerConfig = solrConfigModel.getObject().getRecordCollection() == null;
                    String resourceKey = isServerConfig ? "defaultValue" : "defaultServerValue";
                    return new StringResourceModel(resourceKey, SolrConfigPanel.this, null).getObject();
                }
            };
            defaultValueLink.add(new Label("label", titleLabelModel));

            if (propertyRow.isModalEdit()) {
                item.add(new ModalImgLinkHolder("editComponent") {
                    @Override
                    public WebMarkupContainer newLink(String id) {
                        return new AjaxLink(id) {
                            @Override
                            public void onClick(AjaxRequestTarget target) {
                                ModalWindow editModal = getModalWindow();
                                editModal.setInitialHeight(MODAL_HEIGHT);
                                editModal.setInitialWidth(MODAL_WIDTH);
                                String editMsg = getLocalizer().getString("edit", SolrConfigPanel.this);
                                editModal.setTitle(editMsg);

                                WebMarkupContainer editContent = propertyRow
                                        .getEditLinkPanel(editModal.getContentId());
                                editModal.setContent(editContent);
                                editModal.show(target);
                                target.addComponent(item);
                            }
                        };
                    }

                    @Override
                    protected Component newImg(String id) {
                        return new NonCachingImage(id,
                                new ResourceReference(BaseConstellioPage.class, "images/ico_crayon.png"));
                    }
                });
            } else if (propertyRow.getType().equals(Boolean.class)) {
                final IModel valueModel = propertyRow.createModel();
                item.add(new CheckBoxHolder("editComponent") {

                    @Override
                    protected WebMarkupContainer newInput(String id) {
                        return new AjaxCheckBox(id, valueModel) {

                            @Override
                            protected void onUpdate(AjaxRequestTarget target) {
                                save();
                                target.addComponent(item);
                            }

                            @Override
                            public void detachModels() {
                                super.detachModels();
                                valueModel.detach();
                            }

                        };
                    }
                });
            } else {
                final IModel valueModel = propertyRow.createModel();
                item.add(new AjaxEditableLabel("editComponent", valueModel) {

                    @Override
                    protected void onSubmit(AjaxRequestTarget target) {
                        super.onSubmit(target);
                        save();
                        target.addComponent(item);
                    }

                    @Override
                    public void detachModels() {
                        super.detachModels();
                        valueModel.detach();
                    }

                });
            }

        }

    };
}

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

License:Open Source License

public ElevatePanel(String id, Record record, final SimpleSearch simpleSearch) {
    super(id);//www .j  ava2  s. c  om
    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.elevate.queries.EditRecordElevatedQueriesPanel.java

License:Open Source License

public EditRecordElevatedQueriesPanel(String id, Record record, final SimpleSearch simpleSearch) {
    super(id);/*from   w  w w. ja v  a2 s . c om*/
    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.fold.FoldableSectionPanel.java

License:Open Source License

protected WebMarkupContainer newToggleLink(String id) {
    return new AjaxLink(id) {
        @Override/*  w ww  .j  av  a  2 s  . c o  m*/
        public void onClick(AjaxRequestTarget target) {
            setOpened(!isOpened());
            onToggle(target);
            target.addComponent(FoldableSectionPanel.this);
        }
    };
}

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;// www .  ja  va  2  s.c  o m
    }

    messageContentText = StringUtils.replace(messageContentText, ">>", "&gt;&gt;");
    messageContentText = StringUtils.replace(messageContentText, "\n>", "\n&gt;");
    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 ww  . 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   ww w .j  a  v  a2  s. 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()));
}