EN · DE · RU · FR · ES

#141: LicenseListPage.java

plugins/org.projectforge.plugins.licensemanagement/src/main/java/org/projectforge/plugins/licensemanagement/LicenseListPage.java Tipo: Java · Rol: Página · Fuente: plugins/org.projectforge.plugins.licensemanagement/src/main/java/org/projectforge/plugins/licensemanagement/LicenseListPage.java 165 líneas · 124 código · 31 comentarios · 10 en blanco
Implementación de página Wicket para el listado de licencias. Compone paneles, formularios y navegación.

Estructura del código

Paquete: org.projectforge.plugins.licensemanagement

Clases: LicenseListPage

Extiende: AbstractListPage

Implementa: IListPageColumnsCreator<LicenseDO>

Métodos (8): populateItem, populateItem, populateItem, populateItem, populateItem, init, newListForm, getBaseDao

Campos (1): serialVersionUID

Importaciones: 15 paquetes

Código fuente (resumido)

package org.projectforge.plugins.licensemanagement;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.projectforge.web.WicketSupport;
import org.projectforge.web.wicket.*;

import java.util.ArrayList;
import java.util.List;

/**
 * El controlador de la página de listado. La mayor parte de la funcionalidad, como la búsqueda, etc., la realiza la clase padre.
 *
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
@ListPage(editPage = LicenseEditPage.class)
public class LicenseListPage extends AbstractListPage<LicenseListForm, LicenseDao, LicenseDO>
        implements IListPageColumnsCreator<LicenseDO> {
    private static final long serialVersionUID = -1802352700020870211L;

    public LicenseListPage(final PageParameters parameters) {
        super(parameters, "plugins.licensemanagement");
    }

    @Override
    @SuppressWarnings("serial")
    public List<IColumn<LicenseDO, String>> createColumns(final WebPage returnToPage, final boolean sortable) {
        final List<IColumn<LicenseDO, String>> columns = new ArrayList<>();
        final CellItemListener<LicenseDO> cellItemListener = new CellItemListener<LicenseDO>() {
            @Override
            public void populateItem(final Item<ICellPopulator<LicenseDO>> item, final String componentId,
                                     final IModel<LicenseDO> rowModel) {
                final LicenseDO license = rowModel.getObject();
                appendCssClasses(item, license.getId(), license.getDeleted());
            }
        };

        columns.add(new CellItemListenerPropertyColumn<LicenseDO>(new Model<>(getString("organization")),
                getSortable("organization", sortable),
                "organization", cellItemListener) {
            /**
             * @see org.projectforge.web.wicket.CellItemListenerPropertyColumn#populateItem(org.apache.wicket.markup.repeater.Item,
             *      java.lang.String, org.apache.wicket.model.IModel)
             */
            @Override
            public void populateItem(final Item<ICellPopulator<LicenseDO>> item, final String componentId,
                                     final IModel<LicenseDO> rowModel) {
                final LicenseDO license = rowModel.getObject();
                item.add(new ListSelectActionPanel(componentId, rowModel, LicenseEditPage.class, license.getId(), returnToPage,
                        rowModel.getObject().getOrganization()));
                addRowClick(item);
                cellItemListener.populateItem(item, componentId, rowModel);
            }
        });
        columns.add(new CellItemListenerPropertyColumn<>(
                new Model<>(getString("plugins.licensemanagement.product")), getSortable(
                "product", sortable),
                "product", cellItemListener));
        columns.add(new CellItemListenerPropertyColumn<>(
                new Model<>(getString("plugins.licensemanagement.version")), getSortable(
                "version", sortable),
                "version", cellItemListener));
        columns.add(new CellItemListenerPropertyColumn<>(
                new Model<>(getString("plugins.licensemanagement.numberOfLicenses")), getSortable(
                "numberOfLicenses", sortable),
                "numberOfLicenses", cellItemListener));
        columns.add(new AbstractColumn<LicenseDO, String>(new Model<>(getString("plugins.licensemanagement.owner"))) {
            @Override
            public void populateItem(final Item<ICellPopulator<LicenseDO>> cellItem, final String componentId,
                                     final IModel<LicenseDO> rowModel) {
                final LicenseDO license = rowModel.getObject();
                final String owners = getBaseDao().getSortedOwnernames(license);
                final Label label = new Label(componentId, new Model<>(owners));
                cellItem.add(label);
                cellItemListener.populateItem(cellItem, componentId, rowModel);
            }
        });
        columns.add(new CellItemListenerPropertyColumn<>(
                new Model<>(getString("plugins.licensemanagement.device")), getSortable(
                "device", sortable),
                "device", cellItemListener));
        if (getAccessChecker().isLoggedInUserMemberOfAdminGroup()) {
            columns.add(new CellItemListenerPropertyColumn<LicenseDO>(
                    new Model<>(getString("plugins.licensemanagement.key")), getSortable(
                    "key", sortable),
                    "key", cellItemListener) {
                @Override
                public void populateItem(final Item<ICellPopulator<LicenseDO>> item, final String componentId,
                                         final IModel<LicenseDO> rowModel) {
                    final LicenseDO license = rowModel.getObject();
                    final Label label = new Label(componentId, new Model<>(StringUtils.abbreviate(license.getKey(), 40)));
                    cellItemListener.populateItem(item, componentId, rowModel);
                    item.add(label);
                }
            });
        }
        columns.add(new CellItemListenerPropertyColumn<LicenseDO>(new Model<>(getString("comment")),
                getSortable("comment", sortable), "comment", cellItemListener) {
            @Override
            public void populateItem(final Item<ICellPopulator<LicenseDO>> item, final String componentId,
                                     final IModel<LicenseDO> rowModel) {
                final LicenseDO license = rowModel.getObject();
                final Label label = new Label(componentId,
                        new Model<>(StringUtils.abbreviate(license.getComment(), 100)));
                cellItemListener.populateItem(item, componentId, rowModel);
                item.add(label);
            }
        });
        columns.add(
                new CellItemListenerPropertyColumn<>(getString("created"), getSortable("created", sortable), "created",
// ... (truncado, 143 líneas en total)

Historial Git

868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024-> 2025.
3785f8347 Trabajo de migración en curso...
4efcbd0fb Trabajo de migración en curso...
06828f490 Trabajo de migración en curso...