Search in sources :

Example 1 with ContainerTableItems

use of io.jmix.ui.component.data.table.ContainerTableItems in project jmix-docs by Haulmont.

the class TableScreen method onInit.

// end::inject-tableClick[]
// tag::onInit-start[]
@Subscribe
public void onInit(InitEvent event) {
    // end::onInit-start[]
    customersTable.addGeneratedColumn("aaa", entity -> null);
    // tag::add-base-action[]
    customersTable.addAction(new AboutSingleAction());
    // end::add-base-action[]
    // tag::add-ItemTrackingAction[]
    customersTable.addAction(new ItemTrackingAction("about") {

        @Nullable
        @Override
        public String getCaption() {
            return "About";
        }

        @Override
        public void actionPerform(Component component) {
            notifications.create().withCaption("Hello " + customersTable.getSelected().iterator().next()).withType(Notifications.NotificationType.TRAY).show();
        }
    });
    // end::add-ItemTrackingAction[]
    // tag::table-set-style-name[]
    tableBorderless.setStyleName(ThemeClassNames.TABLE_BORDERLESS);
    // end::table-set-style-name[]
    // tag::column-value-provider[]
    printableTableExcelExport.addColumnValueProvider("firstName", context -> {
        // <1>
        Customer customer = context.getEntity();
        return "Name: " + customer.getFirstName();
    });
    // end::column-value-provider[]
    printableTableExcelExport.addColumnValueProvider("fullName", context -> {
        Customer customer = context.getEntity();
        return customer.getFirstName() + " " + customer.getLastName();
    });
    // tag::table-add-printable[]
    /*printableTable.addPrintable("firstName", new Table.Printable<Customer, String>() {
            @Override
            public String getValue(Customer item) {
                return "Name: " + item.getFirstName();
            }
        });*/
    // end::table-add-printable[]
    // tag::printable-column-generator[]
    /*printableTable.addGeneratedColumn("fullName", new Table.PrintableColumnGenerator<Customer, String>() {
            @Override
            public String getValue(Customer item) {
                return item.getFirstName() + " " + item.getLastName();
            }

            @Override
            public Component generateCell(Customer entity) {
                Label label = uiComponents.create(Label.NAME);
                label.setValue(entity.getFirstName() + " " + entity.getLastName());
                return label;
            }
        });*/
    // end::printable-column-generator[]
    // tag::item-click-action[]
    tableClick.setItemClickAction(new BaseAction("itemClickAction").withHandler(actionPerformedEvent -> {
        Customer customer = tableClick.getSingleSelected();
        if (customer != null) {
            notifications.create().withCaption("Item clicked for: " + customer.getFirstName() + "" + customer.getLastName()).show();
        }
    }));
    // end::item-click-action[]
    // tag::enter-press-action[]
    tableClick.setEnterPressAction(new BaseAction("enterPressAction").withHandler(actionPerformedEvent -> {
        Customer customer = tableClick.getSingleSelected();
        if (customer != null) {
            notifications.create().withCaption("Enter pressed for: " + customer.getFirstName() + "" + customer.getLastName()).show();
        }
    }));
    // end::enter-press-action[]
    // tag::programmatic-binding[]
    customersTable1.setItems(new ContainerTableItems<>(customersDc));
// end::programmatic-binding[]
// tag::onInit-end[]
}
Also used : ItemTrackingAction(io.jmix.ui.action.ItemTrackingAction) Customer(ui.ex1.entity.Customer) ThemeClassNames(io.jmix.ui.theme.ThemeClassNames) CollectionContainer(io.jmix.ui.model.CollectionContainer) Collection(java.util.Collection) Autowired(org.springframework.beans.factory.annotation.Autowired) ExcelExportAction(io.jmix.uiexport.action.ExcelExportAction) Notifications(io.jmix.ui.Notifications) JmixIcon(io.jmix.ui.icon.JmixIcon) List(java.util.List) UiComponents(io.jmix.ui.UiComponents) io.jmix.ui.screen(io.jmix.ui.screen) ScreenBuilders(io.jmix.ui.ScreenBuilders) SendByEmailAction(ui.ex1.screen.actions.SendByEmailAction) EmailAttachment(io.jmix.email.EmailAttachment) BudgetItem(ui.ex1.entity.BudgetItem) Action(io.jmix.ui.action.Action) BaseAction(io.jmix.ui.action.BaseAction) Named(javax.inject.Named) ContainerTableItems(io.jmix.ui.component.data.table.ContainerTableItems) Collections(java.util.Collections) City(ui.ex1.entity.City) Nullable(javax.annotation.Nullable) io.jmix.ui.component(io.jmix.ui.component) Customer(ui.ex1.entity.Customer) ItemTrackingAction(io.jmix.ui.action.ItemTrackingAction) BaseAction(io.jmix.ui.action.BaseAction) Nullable(javax.annotation.Nullable)

Example 2 with ContainerTableItems

use of io.jmix.ui.component.data.table.ContainerTableItems in project jmix by jmix-framework.

the class InspectorTableBuilder method build.

public Table build() {
    Table table = uiComponents.create(Table.NAME);
    // collect properties in order to add non-system columns first
    List<MetaProperty> nonSystemProperties = new ArrayList<>(10);
    List<MetaProperty> systemProperties = new ArrayList<>(10);
    for (MetaProperty metaProperty : metaClass.getProperties()) {
        // don't show embedded, transient & multiple referred entities
        if (isEmbedded(metaProperty) || !metadataTools.isJpa(metaProperty)) {
            continue;
        }
        if (isMany(metaProperty)) {
            continue;
        }
        if (metadataTools.isAnnotationPresent(metaClass.getJavaClass(), metaProperty.getName(), Convert.class)) {
            continue;
        }
        if (!metadataTools.isSystem(metaProperty)) {
            nonSystemProperties.add(metaProperty);
        } else if (withSystem) {
            systemProperties.add(metaProperty);
        }
    }
    for (MetaProperty metaProperty : nonSystemProperties) {
        addMetaPropertyToTable(table, metaProperty);
    }
    for (MetaProperty metaProperty : systemProperties) {
        addMetaPropertyToTable(table, metaProperty);
    }
    table.setSizeFull();
    if (buttonsPanelInitializer != null) {
        table.setButtonsPanel(uiComponents.create(ButtonsPanel.class));
        buttonsPanelInitializer.accept(table);
    }
    SimplePagination simplePagination = uiComponents.create(SimplePagination.NAME);
    table.setPagination(simplePagination);
    table.setItems(new ContainerTableItems(collectionContainer));
    if (table.getAction(EditAction.ID) != null) {
        table.setEnterPressAction(table.getAction(EditAction.ID));
        table.setItemClickAction(table.getAction(EditAction.ID));
    }
    table.setMultiSelect(withMultiselect);
    table.addStyleName("table-boolean-text");
    return table;
}
Also used : ContainerTableItems(io.jmix.ui.component.data.table.ContainerTableItems) Table(io.jmix.ui.component.Table) ArrayList(java.util.ArrayList) MetaProperty(io.jmix.core.metamodel.model.MetaProperty) ButtonsPanel(io.jmix.ui.component.ButtonsPanel) SimplePagination(io.jmix.ui.component.SimplePagination)

Aggregations

ContainerTableItems (io.jmix.ui.component.data.table.ContainerTableItems)2 MetaProperty (io.jmix.core.metamodel.model.MetaProperty)1 EmailAttachment (io.jmix.email.EmailAttachment)1 Notifications (io.jmix.ui.Notifications)1 ScreenBuilders (io.jmix.ui.ScreenBuilders)1 UiComponents (io.jmix.ui.UiComponents)1 Action (io.jmix.ui.action.Action)1 BaseAction (io.jmix.ui.action.BaseAction)1 ItemTrackingAction (io.jmix.ui.action.ItemTrackingAction)1 io.jmix.ui.component (io.jmix.ui.component)1 ButtonsPanel (io.jmix.ui.component.ButtonsPanel)1 SimplePagination (io.jmix.ui.component.SimplePagination)1 Table (io.jmix.ui.component.Table)1 JmixIcon (io.jmix.ui.icon.JmixIcon)1 CollectionContainer (io.jmix.ui.model.CollectionContainer)1 io.jmix.ui.screen (io.jmix.ui.screen)1 ThemeClassNames (io.jmix.ui.theme.ThemeClassNames)1 ExcelExportAction (io.jmix.uiexport.action.ExcelExportAction)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1