Example usage for org.apache.wicket.extensions.ajax.markup.html AjaxEditableLabel AjaxEditableLabel

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

Introduction

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

Prototype

public AjaxEditableLabel(final String id, final IModel<T> model) 

Source Link

Document

Constructor

Usage

From source file:com.comcast.cdn.traffic_control.traffic_monitor.wicket.components.EditConfigPanel.java

License:Apache License

private final void setForm(final Form<MonitorConfig> editform, final Map<String, String> baseconfig) {
    final MonitorConfig config = ConfigHandler.getConfig();

    if (config == null || !config.allowConfigEdit()) {
        return;// w w  w . j a va  2s .  c o m
    }

    final List<String> keys = sort(baseconfig.keySet());
    keys.remove(TM_HOSTNAME_KEY);
    keys.remove(CDN_NAME_KEY);

    final List<String> TM_HOSTS = Arrays.asList(new String[] { "tm.company.net" });
    final ArrayList<String> cdnList = new ArrayList<String>();
    final String hostName = baseconfig.get(TM_HOSTNAME_KEY);
    setCdnList(cdnList, hostName);
    final AjaxEditableChoiceLabel<String> tmHost = new AjaxEditableChoiceLabel<String>("tmHost",
            new BaseConfigModel(TM_HOSTNAME_KEY, baseconfig), TM_HOSTS) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target) {
            super.onSubmit(target);
            final String hostName = baseconfig.get(TM_HOSTNAME_KEY);
            setCdnList(cdnList, hostName);
            target.add(cdnName);
        }
    };
    //      listSites
    editform.add(tmHost);

    cdnName = new AjaxEditableChoiceLabel<String>(CDN_NAME_KEY, new BaseConfigModel(CDN_NAME_KEY, baseconfig),
            new WildcardListModel<String>(cdnList));
    //      listSites
    editform.add(cdnName);

    final ListView<String> propView = new ListView<String>("propList", keys) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<String> item) {
            final String key = item.getModelObject();

            final Label label = new Label("key", key);
            item.add(label);

            //            editform.add(new TextField("value", new Model<String>(baseconfig.get(key)))) ;
            item.add(new AjaxEditableLabel<String>("value", new BaseConfigModel(key, baseconfig)));

            item.add(label);
        }
    };
    editform.add(propView);

    editform.add(new AjaxLink<Object>("cancel") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(final AjaxRequestTarget target) {
            final Map<String, String> oldProps = ConfigHandler.getConfig().getBaseProps();
            baseconfig.putAll(oldProps);
            final String hostName = baseconfig.get(TM_HOSTNAME_KEY);
            setCdnList(cdnList, hostName);
            if (target != null) {
                target.add(EditConfigPanel.this);
            }
        }
    });
    editform.add(new AjaxButton("submit", editform) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            try {
                ConfigHandler.saveBaseConfig(baseconfig);
                TmWatcher.getInstance().refresh();
            } catch (JSONException e) {
                LOGGER.warn(e, e);
            } catch (IOException e) {
                LOGGER.warn(e, e);
            }
            //            EditConfigPanel.this.showForm(false);
            if (target != null) {
                target.add(EditConfigPanel.this);
            }
        }
    });
}

From source file:com.doculibre.constellio.wicket.panels.admin.connectorTypeMeta.ConnectorTypeMetaMappingListPanel.java

License:Open Source License

private IColumn getAjaxEditableLabelColumn(final String propertyName) {
    return new AbstractColumn(new StringResourceModel(propertyName, this, null)) {
        @Override//from   w  w  w  . j  av  a  2  s .c o  m
        public void populateItem(Item cellItem, String componentId, IModel rowModel) {
            ConnectorTypeMetaMapping metaMapping = (ConnectorTypeMetaMapping) rowModel.getObject();

            final ReloadableEntityModel<ConnectorTypeMetaMapping> entityModel = new ReloadableEntityModel<ConnectorTypeMetaMapping>(
                    metaMapping);
            cellItem.setModel(new CompoundPropertyModel(entityModel));

            cellItem.add(new AjaxEditableLabel(componentId, new PropertyModel(entityModel, propertyName)) {
                @Override
                protected void onSubmit(AjaxRequestTarget target) {
                    updateMetaMapping(entityModel.getObject(), target);
                    super.onSubmit(target);
                }

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

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

License:Open Source License

public EditFacetLabelledValuesPanel(String id, CollectionFacet facet) {
    super(id);/* www .  j  a v a 2  s  .  c  o m*/
    this.facetModel = new ReloadableEntityModel<CollectionFacet>(facet);

    String titleKey = facet.isQueryFacet() ? "queries" : "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() {
            List<String> facetValues;
            FacetServices facetServices = ConstellioSpringUtils.getFacetServices();
            CollectionFacet facet = facetModel.getObject();
            if (facet.isFieldFacet()) {
                facetValues = facetServices.suggestValues(facet, filter);
            } else {
                facetValues = new ArrayList<String>();
                for (I18NLabel labelledValue : facet.getLabelledValues()) {
                    facetValues.add(labelledValue.getKey());
                }
            }
            return facetValues;
        }
    };

    valuesContainer.add(new ListView("items", labelledValuesModel) {
        @Override
        protected void populateItem(ListItem item) {
            final String facetValue = (String) item.getModelObject();
            final IModel newFacetValueModel = new Model(facetValue);
            AjaxEditableLabel editableLabel = new AjaxEditableLabel("value", newFacetValueModel) {
                @Override
                protected void onSubmit(AjaxRequestTarget target) {
                    CollectionFacet facet = facetModel.getObject();
                    String newFacetValue = (String) newFacetValueModel.getObject();
                    if (newFacetValue == null || !newFacetValue.equals(facetValue)) {
                        FacetServices facetServices = ConstellioSpringUtils.getFacetServices();
                        for (I18NLabel i18nLabel : facet.getLabelledValues()) {
                            if (i18nLabel.getKey().equals(facetValue)) {
                                if (newFacetValue == null) {
                                    EntityManager entityManager = ConstellioPersistenceContext
                                            .getCurrentEntityManager();
                                    if (!entityManager.getTransaction().isActive()) {
                                        entityManager.getTransaction().begin();
                                    }
                                    facet.getLabels().remove(i18nLabel);
                                    facetServices.makePersistent(facet);
                                    entityManager.getTransaction().commit();
                                    entityManager.clear();
                                } else {
                                    i18nLabel.setKey(newFacetValue);
                                    EntityManager entityManager = ConstellioPersistenceContext
                                            .getCurrentEntityManager();
                                    if (!entityManager.getTransaction().isActive()) {
                                        entityManager.getTransaction().begin();
                                    }
                                    facetServices.makePersistent(facet);
                                    entityManager.getTransaction().commit();
                                    entityManager.clear();
                                }
                            }
                        }
                    }
                    super.onSubmit(target);
                }
            };
            item.add(editableLabel);

            MultiLocaleComponentHolder labelledValuesHolder = new MultiLocaleComponentHolder("labels",
                    facetValue, facetModel, "labelledValue", localesModel) {
                @Override
                protected void onPopulateItem(ListItem item, IModel componentModel, Locale locale) {
                    AjaxEditableLabel editableLabel = new AjaxEditableLabel("editableLabel", componentModel) {
                        @Override
                        protected void onSubmit(AjaxRequestTarget target) {
                            CollectionFacet facet = facetModel.getObject();
                            FacetServices facetServices = ConstellioSpringUtils.getFacetServices();
                            EntityManager entityManager = ConstellioPersistenceContext
                                    .getCurrentEntityManager();
                            if (!entityManager.getTransaction().isActive()) {
                                entityManager.getTransaction().begin();
                            }
                            facetServices.makePersistent(facet);
                            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) {
                    CollectionFacet facet = facetModel.getObject();
                    FacetServices facetServices = ConstellioSpringUtils.getFacetServices();
                    EntityManager entityManager = ConstellioPersistenceContext.getCurrentEntityManager();
                    if (!entityManager.getTransaction().isActive()) {
                        entityManager.getTransaction().begin();
                    }

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

                    facetServices.makePersistent(facet);
                    entityManager.getTransaction().commit();

                    target.addComponent(valuesContainer);
                }

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

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

License:Open Source License

private IColumn getAjaxEditableLabelColumn(final String propertyName) {
    return new AbstractColumn(new StringResourceModel(propertyName, this, null)) {
        @Override/*  w w w  . j  a v  a2  s  . c  o m*/
        public void populateItem(Item cellItem, String componentId, IModel rowModel) {
            IndexField indexField = (IndexField) rowModel.getObject();

            final ReloadableEntityModel<IndexField> entityModel = new ReloadableEntityModel<IndexField>(
                    indexField);
            cellItem.setModel(new CompoundPropertyModel(entityModel));

            cellItem.add(new AjaxEditableLabel(componentId, new PropertyModel(entityModel, propertyName)) {
                @Override
                protected void onSubmit(AjaxRequestTarget target) {
                    updateIndexField(entityModel.getObject(), target);
                    super.onSubmit(target);
                }

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

                @Override
                public boolean isEnabled() {
                    IndexField indexField = entityModel.getObject();
                    return super.isEnabled() && !indexField.isInternalField();
                }
            });
        }
    };
}

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 ww  . j a v  a2  s . com
    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.solrConfig.SolrConfigPanel.java

License:Open Source License

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

        @Override//from  w  w  w.  j a v a2  s.c  om
        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.locke.tricks.i.I.java

License:Apache License

public I() {
    add(new AjaxEditableLabel<String>("label", new Model<String>(getString("clickHere"))));
}

From source file:cz.zcu.kiv.eegdatabase.wui.ui.experiments.metadata.template.PropertyMultiValuePanel.java

License:Apache License

public PropertyMultiValuePanel(String id, final IModel<Property> model) {
    super(id, new CompoundPropertyModel<Property>(model));
    setOutputMarkupId(true);// w ww .j a v  a2s  .co  m
    property = model.getObject();
    valueSuffix = property.valueCount() + 1;

    PropertyListView<Value> values = new PropertyListView<Value>("values") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<Value> item) {

            int index = item.getIndex();
            item.add(new AjaxEditableLabel<Serializable>("content", new PropertyValueModel(property, index)) {

                private static final long serialVersionUID = 1L;

                @Override
                protected String defaultNullLabel() {
                    return "...";
                }
            });
            item.add(new AjaxLink<Void>("removeValueLink") {

                private static final long serialVersionUID = 1L;

                @Override
                public void onClick(AjaxRequestTarget target) {
                    int index = item.getIndex();
                    property.removeValue(index);
                    target.add(PropertyMultiValuePanel.this);
                }

                @Override
                protected void onConfigure() {
                    super.onConfigure();
                    setVisible(property.valueCount() > 1);
                }
            });
        }
    };
    values.setReuseItems(true);

    add(values);

    AjaxLink<Void> addLink = new AjaxLink<Void>("addButton") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            property.addValue(ResourceUtils.getString("text.template.empty.propertyValue") + valueSuffix++);
            target.add(PropertyMultiValuePanel.this);
        }
    };

    add(addLink);
}

From source file:de.tudarmstadt.ukp.csniper.webapp.evaluation.page.EvaluationPage.java

License:Apache License

/**
 * Constructor that is invoked when page is invoked without a session.
 *//* w w  w.j  a va2  s . com*/
@SuppressWarnings({ "serial" })
public EvaluationPage() {
    contextViewsContainer = new WebMarkupContainer("contextViewsContainer") {
        {
            contextViews = new ListView<ContextView>("contextViews") {
                @Override
                protected void populateItem(ListItem aItem) {
                    aItem.add((Component) aItem.getModelObject());
                }
            };
            add(contextViews);
        }
    };
    contextViewsContainer.setOutputMarkupId(true);
    add(contextViewsContainer);

    columns = new ArrayList<IColumn<EvaluationResult, String>>();
    columns.add(new AbstractColumn<EvaluationResult, String>(new Model<String>("")) {
        @Override
        public void populateItem(final Item<ICellPopulator<EvaluationResult>> aCellItem, String aComponentId,
                final IModel<EvaluationResult> model) {
            EmbeddableImage iconContext = new EmbeddableImage(aComponentId,
                    new ContextRelativeResource("images/context.png"));
            iconContext.add(new AjaxEventBehavior("onclick") {
                @Override
                protected void onEvent(AjaxRequestTarget aTarget) {
                    try {
                        contextViews
                                .setList(asList(new ContextView(contextProvider, model.getObject().getItem())));
                        aTarget.add(contextViewsContainer);
                    } catch (IOException e) {
                        aTarget.add(getFeedbackPanel());
                        error("Unable to load context: " + e.getMessage());
                    }
                }
            });
            iconContext.add(new AttributeModifier("class", new Model<String>("clickableElement")));
            aCellItem.add(iconContext);
        }
    });
    columns.add(new AbstractColumn<EvaluationResult, String>(new Model<String>("")) {
        @Override
        public void populateItem(final Item<ICellPopulator<EvaluationResult>> aCellItem,
                final String aComponentId, final IModel<EvaluationResult> model) {
            // PopupLink pl = new PopupLink(aComponentId, new AnalysisPage(model.getObject()
            // .getItem()), "analysis", "Analyse", 800, 600);
            // pl.add(new AttributeModifier("class", new Model<String>("clickableElement")));
            // aCellItem.add(pl);

            EmbeddableImage iconAnalysis = new EmbeddableImage(aComponentId,
                    new ContextRelativeResource("images/analysis.png"));
            iconAnalysis.add(new AjaxEventBehavior("onclick") {
                @Override
                protected void onEvent(AjaxRequestTarget aTarget) {
                    EvaluationItem item = model.getObject().getItem();
                    CachedParse cachedTree = repository.getCachedParse(item);
                    ParseTreeResource ptr;

                    if (cachedTree != null) {
                        ptr = new ParseTreeResource(cachedTree.getPennTree());
                    } else {
                        if (pp == null) {
                            pp = new ParsingPipeline();
                        }
                        CasHolder ch = new CasHolder(pp.parseInput("stanfordParser",
                                corpusService.getCorpus(item.getCollectionId()).getLanguage(),
                                item.getCoveredText()));
                        ptr = new ParseTreeResource(ch);
                    }
                    analysisModal.setContent(new AnalysisPanel(analysisModal.getContentId(), ptr));
                    analysisModal.show(aTarget);
                }
            });
            iconAnalysis.add(new AttributeModifier("class", new Model<String>("clickableElement")));
            aCellItem.add(iconAnalysis);
        }
    });
    // columns.add(new PropertyColumn(new Model<String>("ID"), "id", "id"));
    // columns.add(new PropertyColumn(new Model<String>("Collection"), "item.collectionId",
    // "item.collectionId"));
    columns.add(new PropertyColumn<EvaluationResult, String>(new Model<String>("Doc"), "item.documentId",
            "item.documentId"));
    // columns.add(new PropertyColumn(new Model<String>("Begin"), "item.beginOffset",
    // "item.beginOffset"));
    // columns.add(new PropertyColumn(new Model<String>("End"), "item.endOffset",
    // "item.endOffset"));
    columns.add(new PropertyColumn<EvaluationResult, String>(new Model<String>("Left"), "item.leftContext",
            "item.leftContext") {
        @Override
        public String getCssClass() {
            return contextAvailable ? "leftContext" : " hideCol";
        }
    });
    columns.add(new PropertyColumn<EvaluationResult, String>(new Model<String>("Match"), "item.match",
            "item.match") {
        @Override
        public String getCssClass() {
            return contextAvailable ? "match nowrap" : null;
        }
    });
    columns.add(new PropertyColumn<EvaluationResult, String>(new Model<String>("Right"), "item.rightContext",
            "item.rightContext") {
        @Override
        public String getCssClass() {
            return contextAvailable ? "rightContext" : " hideCol";
        }
    });
    columns.add(new AbstractColumn<EvaluationResult, String>(new Model<String>("Label"), "result") {
        @Override
        public void populateItem(final Item<ICellPopulator<EvaluationResult>> aCellItem, String aComponentId,
                final IModel<EvaluationResult> model) {
            final Label resultLabel = new Label(aComponentId, new PropertyModel(model, "result"));
            resultLabel.setOutputMarkupId(true);
            aCellItem.add(resultLabel);
            if (showResultColumns) {
                aCellItem.add(AttributeModifier.replace("class",
                        new Model<String>("editable " + model.getObject().getResult().toLowerCase())));
            }

            aCellItem.add(new AjaxEventBehavior("onclick") {
                @Override
                protected void onEvent(AjaxRequestTarget aTarget) {
                    EvaluationResult result = model.getObject();

                    // cycle to next result
                    Mark newResult = Mark.fromString(result.getResult()).next();

                    // update database
                    result.setResult(newResult.getTitle());
                    repository.updateEvaluationResult(result);

                    // update DataTable
                    aCellItem.add(AttributeModifier.replace("class",
                            new Model<String>("editable " + newResult.getTitle().toLowerCase())));
                    aTarget.add(resultLabel, aCellItem);
                }
            });
        }

        @Override
        public String getCssClass() {
            return (showResultColumns ? "" : " hideCol");
        }
    });
    columns.add(new AbstractColumn<EvaluationResult, String>(new Model<String>("Comment"), "comment") {
        @Override
        public void populateItem(Item<ICellPopulator<EvaluationResult>> cellItem, String componentId,
                final IModel<EvaluationResult> model) {
            cellItem.add(
                    new AjaxEditableLabel<String>(componentId, new PropertyModel<String>(model, "comment")) {
                        @Override
                        public void onSubmit(final AjaxRequestTarget aTarget) {
                            super.onSubmit(aTarget);

                            EvaluationResult result = model.getObject();

                            // get new comment
                            String newComment = getEditor().getInput();

                            // update database
                            result.setComment(newComment);
                            repository.updateEvaluationResult(result);
                        }

                        @Override
                        public void onError(AjaxRequestTarget aTarget) {
                            super.onError(aTarget);
                            aTarget.add(getFeedbackPanel());
                        }
                    }.add(new DbFieldMaxLengthValidator(projectRepository, "EvaluationResult", "comment")));
        }

        @Override
        public String getCssClass() {
            return "editable" + (showResultColumns ? "" : " hideCol");
        }
    });

    // collection and type
    add(parentOptionsForm = new ParentOptionsForm("parentOptions"));

    tabs = new Tabs("tabs");
    tabs.setVisible(false);
    // query tab
    tabs.add(queryForm = new QueryForm("queryForm"));
    // revision tab
    tabs.add(reviewForm = new ReviewForm("reviewForm"));
    // completion tab
    tabs.add(new Form("completeForm") {
        {
            add(new ExtendedIndicatingAjaxButton("completeButton", new Model<String>("Complete"),
                    new Model<String>("Running query ...")) {
                {
                    setDefaultFormProcessing(false);
                }

                @Override
                public void onSubmit(AjaxRequestTarget aTarget, Form<?> aForm) {
                    AnnotationType type = parentOptionsForm.typeInput.getModelObject();
                    if (type == null) {
                        error(LocalizerUtil.getString(parentOptionsForm.typeInput, "Required"));
                        aTarget.add(getFeedbackPanel());
                        return;
                    }

                    ParentOptionsFormModel pModel = parentOptionsForm.getModelObject();
                    String user = SecurityContextHolder.getContext().getAuthentication().getName();
                    List<String> otherUsers = new ArrayList<String>(repository.listUsers());
                    otherUsers.remove(user);

                    // get items, create/persist results
                    List<EvaluationItem> items = repository.listEvaluationResultsMissing(pModel.collectionId,
                            pModel.type.getName(), user, otherUsers);
                    List<EvaluationResult> results = createEvaluationResults(items);
                    repository.writeEvaluationResults(results);

                    // persis. results: hide saveButton, show result columns and filter options
                    limitForm.setVisible(false);
                    filterForm.setChoices(ResultFilter.values());
                    showColumnsForm.setVisible(true && !pModel.type.getAdditionalColumns().isEmpty());
                    showResultColumns(true);
                    saveButton.setVisible(false);
                    predictButton.setVisible(true);
                    samplesetButton.setVisible(true);

                    // update dataprovider
                    dataProvider = new SortableEvaluationResultDataProvider(results);
                    dataProvider.setSort("item.documentId", SortOrder.ASCENDING);
                    dataProvider.setFilter(ResultFilter.ALL);
                    // then update the table
                    resultTable = resultTable.replaceWith(new CustomDataTable<EvaluationResult>("resultTable",
                            getAllColumns(pModel.type), dataProvider, ROWS_PER_PAGE));
                    contextAvailable = false;

                    updateComponents(aTarget);
                }

                @Override
                public void onError(AjaxRequestTarget aTarget, Form<?> aForm) {
                    super.onError(aTarget, aForm);
                    // Make sure the feedback messages are rendered
                    aTarget.add(getFeedbackPanel());
                }
            });
        }
    });
    // sampleset tab
    tabs.add(samplesetForm = new SamplesetForm("samplesetForm"));
    // sampleset tab
    tabs.add(findForm = new FindForm("findForm"));
    add(tabs);

    add(new Label("description", new LoadableDetachableModel<String>() {
        @Override
        protected String load() {
            Object value = PropertyResolver.getValue("type.description", parentOptionsForm.getModelObject());
            if (value != null) {
                RenderContext context = new BaseRenderContext();
                RenderEngine engine = new BaseRenderEngine();
                return engine.render(String.valueOf(value), context);
            } else {
                return getString("page.selectTypeHint");
            }
        }
    }).setEscapeModelStrings(false));
    add(filterForm = (FilterForm) new FilterForm("filterForm").setOutputMarkupPlaceholderTag(true));
    add(showColumnsForm = (ShowColumnsForm) new ShowColumnsForm("showColumnsForm")
            .setOutputMarkupPlaceholderTag(true));
    add(resultTable = new Label("resultTable").setOutputMarkupId(true));

    add(predictionModal = new ModalWindow("predictionModal"));
    final PredictionPanel predictionPanel = new PredictionPanel(predictionModal.getContentId());
    predictionModal.setContent(predictionPanel);
    predictionModal.setTitle("Predict results");
    predictionModal.setAutoSize(false);
    predictionModal.setInitialWidth(550);
    predictionModal.setInitialHeight(350);
    predictionModal.setCloseButtonCallback(new CloseButtonCallback() {
        @Override
        public boolean onCloseButtonClicked(AjaxRequestTarget aTarget) {
            predictionPanel.cancel(aTarget);
            return true;
        }
    });

    add(samplesetModal = new ModalWindow("samplesetModal"));
    samplesetModal.setContent(new SamplesetPanel(samplesetModal.getContentId()));
    samplesetModal.setTitle("Create / Extend sampleset");
    samplesetModal.setAutoSize(true);

    add(analysisModal = new ModalWindow("analysisModal"));
    analysisModal.setTitle("Parse tree");
    analysisModal.setInitialWidth(65 * 16);
    analysisModal.setInitialHeight(65 * 9);
    // autosize does not work...
    // analysisModal.setAutoSize(true);

    add(new Form("saveForm") {
        {
            add(saveButton = (ExtendedIndicatingAjaxButton) new ExtendedIndicatingAjaxButton("saveButton",
                    new Model<String>("Start annotating"), new Model<String>("Preparing ...")) {
                @Override
                protected void onSubmit(AjaxRequestTarget aTarget, Form<?> aForm) {
                    // persist items and results
                    List<EvaluationItem> items = dataProvider.getItems();
                    items = repository.writeEvaluationItems(items);
                    List<EvaluationResult> results = createEvaluationResults(items);
                    dataProvider.setResults(results);
                    repository.writeEvaluationResults(results);

                    // save results, query
                    ParentOptionsFormModel pModel = parentOptionsForm.getModelObject();
                    String user = SecurityContextHolder.getContext().getAuthentication().getName();
                    QueryFormModel model = queryForm.getModelObject();
                    if (model.engine != null && !StringUtils.isBlank(model.query)) {
                        repository.recordQuery(model.engine.getName(), model.query, pModel.collectionId,
                                pModel.type.getName(), model.comment, user);
                    }

                    // hide saveButton, show result columns and filter options
                    limitForm.setVisible(false);
                    filterForm.setChoices(ResultFilter.values());
                    showColumnsForm.setVisible(true && !pModel.type.getAdditionalColumns().isEmpty());
                    showResultColumns(true);
                    saveButton.setVisible(false);
                    predictButton.setVisible(true);
                    samplesetButton.setVisible(true);

                    updateComponents(aTarget);
                }
            }.setOutputMarkupPlaceholderTag(true));

            add(predictButton = (ExtendedIndicatingAjaxButton) new ExtendedIndicatingAjaxButton("predictButton",
                    new Model<String>("Predict results"), new Model<String>("Predicting ...")) {
                @Override
                protected void onSubmit(AjaxRequestTarget aTarget, Form<?> aForm) {
                    aTarget.appendJavaScript("Wicket.Window.unloadConfirmation = false;");
                    predictionModal.show(aTarget);
                }
            }.setOutputMarkupPlaceholderTag(true));

            add(samplesetButton = (ExtendedIndicatingAjaxButton) new ExtendedIndicatingAjaxButton(
                    "samplesetButton", new Model<String>("Save results as sampleset"),
                    new Model<String>("Saving...")) {
                @Override
                public void onSubmit(AjaxRequestTarget aTarget, Form<?> aForm) {
                    samplesetModal.show(aTarget);
                }
            }.setOutputMarkupPlaceholderTag(true));
        }
    });
    add(limitForm = (LimitForm) new LimitForm("limit").setOutputMarkupPlaceholderTag(true));

    // at start, don't show: save button, results columns, filter
    limitForm.setVisible(false);
    filterForm.setChoices();
    showColumnsForm.setVisible(false);
    showResultColumns(false);
    saveButton.setVisible(false);
    predictButton.setVisible(false);
    samplesetButton.setVisible(false);
}

From source file:de.tudarmstadt.ukp.csniper.webapp.evaluation.page.EvaluationPage.java

License:Apache License

/**
 * Get additional result table columns for the specified type.
 * // w ww . ja va 2s.c o  m
 * @param aType
 *            the type to get additional columns for
 * @return additional columns
 */
private List<IColumn<EvaluationResult, String>> getAllColumns(AnnotationType aType) {
    List<IColumn<EvaluationResult, String>> ac = new ArrayList<IColumn<EvaluationResult, String>>();

    // add "standard" columns
    ac.addAll(columns);

    // add type dependent columns
    for (final AdditionalColumn ad : aType.getAdditionalColumns()) {
        ac.add(new AbstractColumn<EvaluationResult, String>(new Model<String>(ad.getName()),
                "additionalColumnValue(" + ad.getId() + ")") {
            private static final long serialVersionUID = 1L;

            @Override
            public void populateItem(Item<ICellPopulator<EvaluationResult>> aCellItem, String aComponentId,
                    final IModel<EvaluationResult> aRowModel) {
                aCellItem
                        .add(new AjaxEditableLabel<String>(aComponentId, new LoadableDetachableModel<String>() {
                            private static final long serialVersionUID = 1L;

                            @Override
                            protected String load() {
                                EvaluationResult result = aRowModel.getObject();
                                return result.getAdditionalColumns().get(ad);
                            }
                        }) {
                            private static final long serialVersionUID = 1L;

                            @Override
                            public void onSubmit(AjaxRequestTarget aTarget) {
                                super.onSubmit(aTarget);

                                EvaluationResult result = aRowModel.getObject();

                                // get new value
                                String newValue = getEditor().getInput();

                                // update database
                                if (newValue.isEmpty()) {
                                    result.getAdditionalColumns().remove(ad);
                                } else {
                                    result.getAdditionalColumns().put(ad, newValue);
                                }
                                repository.updateEvaluationResult(result);
                            }

                            @Override
                            public void onError(AjaxRequestTarget aTarget) {
                                super.onError(aTarget);
                                aTarget.add(getFeedbackPanel());
                            }
                        }.setType(String.class).add(new DbFieldMaxLengthValidator(projectRepository,
                                "EvaluationResult_additionalColumns", "additionalColumns")));
            }

            @Override
            public String getCssClass() {
                List<String> classes = new ArrayList<String>();
                classes.add("editable");
                if (!showResultColumns || !ad.getShowColumn()) {
                    classes.add("hideCol");
                }
                return StringUtils.join(classes, " ");
            }
        });
    }
    return ac;
}