Search in sources :

Example 11 with AppUI

use of io.jmix.ui.AppUI in project jmix by jmix-framework.

the class AbstractTable method initComponent.

protected void initComponent(T component) {
    component.setMultiSelect(false);
    component.setValidationVisible(false);
    component.setShowBufferedSourceException(false);
    component.setCustomCellValueFormatter(this::formatCellValue);
    component.addValueChangeListener(this::tableSelectionChanged);
    component.setSpecificVariablesHandler(this::handleSpecificVariables);
    component.setIconProvider(this::getItemIcon);
    component.setBeforePaintListener(this::beforeComponentPaint);
    component.addColumnReorderListener(this::onColumnReorder);
    component.setSortAscendingLabel(messages.getMessage("tableSort.ascending"));
    component.setSortResetLabel(messages.getMessage("tableSort.reset"));
    component.setSortDescendingLabel(messages.getMessage("tableSort.descending"));
    component.setSelectAllLabel(messages.getMessage("tableColumnSelector.selectAll"));
    component.setDeselectAllLabel(messages.getMessage("tableColumnSelector.deselectAll"));
    int defaultRowHeaderWidth = 16;
    ThemeConstantsManager themeConstantsManager = applicationContext.getBean(ThemeConstantsManager.class, ThemeConstantsManager.class);
    ThemeConstants theme = themeConstantsManager.getConstants();
    if (theme != null) {
        defaultRowHeaderWidth = theme.getInt("jmix.ui.Table.defaultRowHeaderWidth", 16);
    }
    component.setColumnWidth(ROW_HEADER_PROPERTY_ID, defaultRowHeaderWidth);
    contextMenuPopup.setParent(component);
    component.setContextMenuPopup(contextMenuPopup);
    shortcutsDelegate.setAllowEnterShortcut(false);
    component.addShortcutListener(new ShortcutListenerDelegate("tableEnter", KeyCode.ENTER, null).withHandler((sender, target) -> {
        T tableImpl = AbstractTable.this.component;
        AppUI ui = (AppUI) tableImpl.getUI();
        if (!ui.isAccessibleForUser(tableImpl)) {
            LoggerFactory.getLogger(AbstractTable.class).debug("Ignore click attempt because Table is inaccessible for user");
            return;
        }
        if (target == this.component) {
            if (enterPressAction != null) {
                enterPressAction.actionPerform(this);
            } else {
                handleClickAction();
            }
        }
    }));
    component.addShortcutListener(new ShortcutListenerDelegate("tableSelectAll", KeyCode.A, new int[] { com.vaadin.event.ShortcutAction.ModifierKey.CTRL }).withHandler((sender, target) -> {
        if (target == this.component) {
            selectAll();
        }
    }));
    component.addItemClickListener(event -> {
        if (event.isDoubleClick() && event.getItem() != null) {
            T tableImpl = AbstractTable.this.component;
            AppUI ui = (AppUI) tableImpl.getUI();
            if (!ui.isAccessibleForUser(tableImpl)) {
                LoggerFactory.getLogger(AbstractTable.class).debug("Ignore click attempt because Table is inaccessible for user");
                return;
            }
            handleClickAction();
        }
    });
    component.setAfterUnregisterComponentHandler(this::onAfterUnregisterComponent);
    component.setBeforeRefreshRowCacheHandler(this::onBeforeRefreshRowCache);
    component.setSelectable(true);
    component.setTableFieldFactory(createFieldFactory());
    component.setColumnCollapsingAllowed(true);
    component.setColumnReorderingAllowed(true);
    setEditable(false);
    componentComposition = new TableComposition();
    componentComposition.setTable(component);
    componentComposition.setPrimaryStyleName("jmix-table-composition");
    componentComposition.addComponent(component);
    component.setCellStyleGenerator(createStyleGenerator());
    component.addColumnCollapseListener(this::handleColumnCollapsed);
    // force default sizes
    componentComposition.setHeightUndefined();
    componentComposition.setWidthUndefined();
    setClientCaching();
    initEmptyState();
}
Also used : PaginationEmptyBinder(io.jmix.ui.component.pagination.data.PaginationEmptyBinder) DataLoadingSettingsBinder(io.jmix.ui.settings.component.binder.DataLoadingSettingsBinder) ShortcutListenerDelegate(io.jmix.ui.widget.ShortcutListenerDelegate) Autowired(org.springframework.beans.factory.annotation.Autowired) StringUtils(org.apache.commons.lang3.StringUtils) FetchPlanRepository(io.jmix.core.FetchPlanRepository) KeyValueMetaClass(io.jmix.core.impl.keyvalue.KeyValueMetaClass) Action(io.jmix.ui.action.Action) Range(io.jmix.core.metamodel.model.Range) ColumnHeaderMode(com.vaadin.v7.ui.Table.ColumnHeaderMode) TablePresentations(io.jmix.ui.presentation.TablePresentations) Preconditions.checkNotNullArgument(io.jmix.core.common.util.Preconditions.checkNotNullArgument) Property(com.vaadin.v7.data.Property) ConverterUtil(com.vaadin.v7.data.util.converter.ConverterUtil) Subscription(io.jmix.core.common.event.Subscription) EntityPreconditions(io.jmix.core.entity.EntityPreconditions) Datatype(io.jmix.core.metamodel.datatype.Datatype) InvocationTargetException(java.lang.reflect.InvocationTargetException) ThemeConstantsManager(io.jmix.ui.theme.ThemeConstantsManager) IconResolver(io.jmix.ui.icon.IconResolver) AggregatableDelegate(io.jmix.ui.component.data.aggregation.impl.AggregatableDelegate) MessageTools(io.jmix.core.MessageTools) BindingState(io.jmix.ui.component.data.BindingState) io.jmix.ui.component(io.jmix.ui.component) java.util(java.util) UiComponentProperties(io.jmix.ui.UiComponentProperties) MetaPropertyPath(io.jmix.core.metamodel.model.MetaPropertyPath) FrameOwner(io.jmix.ui.screen.FrameOwner) BooleanUtils(org.apache.commons.lang3.BooleanUtils) Converter(com.vaadin.v7.data.util.converter.Converter) TableSettings(io.jmix.ui.settings.component.TableSettings) SettingsWrapper(io.jmix.ui.settings.component.SettingsWrapper) Strings(com.google.common.base.Strings) InstanceContainer(io.jmix.ui.model.InstanceContainer) Resource(com.vaadin.server.Resource) DatatypeRegistry(io.jmix.core.metamodel.datatype.DatatypeRegistry) BaseAction(io.jmix.ui.action.BaseAction) Nullable(javax.annotation.Nullable) Actions(io.jmix.ui.Actions) CollectionContainer(io.jmix.ui.model.CollectionContainer) FetchPlan(io.jmix.core.FetchPlan) JmixEnhancedTable(io.jmix.ui.widget.JmixEnhancedTable) TablePresentationsLayout(io.jmix.ui.component.presentation.TablePresentationsLayout) UiControllerUtils(io.jmix.ui.screen.UiControllerUtils) ValueConversionException(io.jmix.ui.component.data.ValueConversionException) Entity(io.jmix.core.Entity) com.vaadin.ui(com.vaadin.ui) MetaClass(io.jmix.core.metamodel.model.MetaClass) ComponentSettingsBinder(io.jmix.ui.settings.component.binder.ComponentSettingsBinder) Preconditions(io.jmix.core.common.util.Preconditions) Formatter(io.jmix.ui.component.formatter.Formatter) BiFunction(java.util.function.BiFunction) LoggerFactory(org.slf4j.LoggerFactory) InstallTargetHandler(io.jmix.ui.screen.InstallTargetHandler) EventHub(io.jmix.core.common.event.EventHub) EntityValues(io.jmix.core.entity.EntityValues) Messages(io.jmix.core.Messages) ParseException(java.text.ParseException) MetadataTools(io.jmix.core.MetadataTools) Method(java.lang.reflect.Method) EmptyDataUnit(io.jmix.ui.component.data.meta.EmptyDataUnit) JmixValueChangeEvent(io.jmix.ui.widget.compatibility.JmixValueChangeEvent) DataUnit(io.jmix.ui.component.data.DataUnit) ComponentSettings(io.jmix.ui.settings.component.ComponentSettings) AccessManager(io.jmix.core.AccessManager) LookupSelectionChangeNotifier(io.jmix.ui.component.LookupComponent.LookupSelectionChangeNotifier) EntityTableItems(io.jmix.ui.component.data.meta.EntityTableItems) UiEntityContext(io.jmix.ui.accesscontext.UiEntityContext) PaginationDataUnitBinder(io.jmix.ui.component.pagination.data.PaginationDataUnitBinder) Collectors(java.util.stream.Collectors) EntityDataUnit(io.jmix.ui.component.data.meta.EntityDataUnit) AbstractComponent(com.vaadin.ui.AbstractComponent) JmixButton(io.jmix.ui.widget.JmixButton) AppUI(io.jmix.ui.AppUI) AggregationContainer(io.jmix.ui.widget.data.AggregationContainer) HasValueSource(io.jmix.ui.component.data.HasValueSource) AbstractSelect(com.vaadin.v7.ui.AbstractSelect) MetaProperty(io.jmix.core.metamodel.model.MetaProperty) Aggregations(io.jmix.ui.component.data.aggregation.Aggregations) ContainerDataUnit(io.jmix.ui.component.data.meta.ContainerDataUnit) AggregationInputValueChangeContext(io.jmix.ui.widget.JmixEnhancedTable.AggregationInputValueChangeContext) SettingsHelper(io.jmix.ui.settings.SettingsHelper) CssLayout(com.vaadin.ui.CssLayout) io.jmix.ui.component.table(io.jmix.ui.component.table) Function(java.util.function.Function) InitializingBean(org.springframework.beans.factory.InitializingBean) Notifications(io.jmix.ui.Notifications) LOOKUP_ENTER_PRESSED_ACTION_ID(io.jmix.ui.screen.LookupScreen.LOOKUP_ENTER_PRESSED_ACTION_ID) Aggregation(io.jmix.ui.component.data.aggregation.Aggregation) KeyCode(com.vaadin.event.ShortcutAction.KeyCode) UiEntityAttributeContext(io.jmix.ui.accesscontext.UiEntityAttributeContext) CurrentAuthentication(io.jmix.core.security.CurrentAuthentication) ScreenContext(io.jmix.ui.screen.ScreenContext) Logger(org.slf4j.Logger) TableItems(io.jmix.ui.component.data.TableItems) ThemeConstants(io.jmix.ui.theme.ThemeConstants) LOOKUP_ITEM_CLICK_ACTION_ID(io.jmix.ui.screen.LookupScreen.LOOKUP_ITEM_CLICK_ACTION_ID) Metadata(io.jmix.core.Metadata) ComponentSettingsRegistry(io.jmix.ui.settings.ComponentSettingsRegistry) UserSettingsTools(io.jmix.ui.settings.UserSettingsTools) Sizeable(com.vaadin.server.Sizeable) TablePresentation(io.jmix.ui.presentation.model.TablePresentation) SettingsWrapperImpl(io.jmix.ui.settings.component.SettingsWrapperImpl) Consumer(java.util.function.Consumer) VaadinSession(com.vaadin.server.VaadinSession) EntityStates(io.jmix.core.EntityStates) Element(org.dom4j.Element) DataComponents(io.jmix.ui.model.DataComponents) Component(com.vaadin.ui.Component) PaginationDataBinder(io.jmix.ui.component.pagination.data.PaginationDataBinder) ThemeConstants(io.jmix.ui.theme.ThemeConstants) ThemeConstantsManager(io.jmix.ui.theme.ThemeConstantsManager) ShortcutListenerDelegate(io.jmix.ui.widget.ShortcutListenerDelegate) AppUI(io.jmix.ui.AppUI)

Example 12 with AppUI

use of io.jmix.ui.AppUI in project jmix by jmix-framework.

the class AbstractTable method setDebugId.

@Override
public void setDebugId(@Nullable String id) {
    super.setDebugId(id);
    AppUI ui = AppUI.getCurrent();
    if (id != null && ui != null && ui.isPerformanceTestMode()) {
        componentComposition.setId(ui.getTestIdManager().getTestId(id + "_composition"));
    }
}
Also used : AppUI(io.jmix.ui.AppUI)

Example 13 with AppUI

use of io.jmix.ui.AppUI in project jmix by jmix-framework.

the class AbstractTable method setUiTestId.

protected void setUiTestId(TableItems<E> items) {
    AppUI ui = AppUI.getCurrent();
    if (ui != null && ui.isTestMode() && getComponent().getJTestId() == null) {
        String testId = uiTestIdsSupport.getInferredTestId(items, "Table");
        if (testId != null) {
            getComponent().setJTestId(testId);
            componentComposition.setJTestId(testId + "_composition");
        }
    }
}
Also used : AppUI(io.jmix.ui.AppUI)

Example 14 with AppUI

use of io.jmix.ui.AppUI in project jmix by jmix-framework.

the class FormImpl method setDebugId.

@Override
public void setDebugId(@Nullable String id) {
    super.setDebugId(id);
    AppUI ui = AppUI.getCurrent();
    if (ui != null && id != null) {
        for (final Component component : getOwnComponents()) {
            com.vaadin.ui.Component composition = ComponentsHelper.getComposition(component);
            composition.setId(ui.getTestIdManager().getTestId(id + "_" + component.getId()));
        }
    }
}
Also used : Component(io.jmix.ui.component.Component) AppUI(io.jmix.ui.AppUI)

Example 15 with AppUI

use of io.jmix.ui.AppUI in project jmix by jmix-framework.

the class FormImpl method assignDebugId.

protected void assignDebugId(@Nullable com.vaadin.ui.Component composition, String id) {
    AppUI ui = AppUI.getCurrent();
    if (ui == null) {
        return;
    }
    String debugId = getDebugId();
    if (ui.isPerformanceTestMode()) {
        if (composition != null && debugId != null) {
            TestIdManager testIdManager = ui.getTestIdManager();
            composition.setId(testIdManager.getTestId(debugId + "_" + id));
        }
    }
}
Also used : TestIdManager(io.jmix.ui.sys.TestIdManager) AppUI(io.jmix.ui.AppUI)

Aggregations

AppUI (io.jmix.ui.AppUI)56 TestIdManager (io.jmix.ui.sys.TestIdManager)8 Component (com.vaadin.ui.Component)5 UiEventsMulticaster (io.jmix.ui.sys.event.UiEventsMulticaster)4 ApplicationListener (org.springframework.context.ApplicationListener)4 SearchFolder (com.haulmont.cuba.security.entity.SearchFolder)3 Notifications (io.jmix.ui.Notifications)3 Folder (com.haulmont.cuba.core.entity.Folder)2 Internal (io.jmix.core.annotation.Internal)2 Screen (io.jmix.ui.screen.Screen)2 StandardCloseAction (io.jmix.ui.screen.StandardCloseAction)2 Subscribe (io.jmix.ui.screen.Subscribe)2 JmixButton (io.jmix.ui.widget.JmixButton)2 Nullable (javax.annotation.Nullable)2 Strings (com.google.common.base.Strings)1 AbstractSearchFolder (com.haulmont.cuba.core.entity.AbstractSearchFolder)1 AppFolder (com.haulmont.cuba.core.entity.AppFolder)1 AppFolderEditWindow (com.haulmont.cuba.web.app.folders.AppFolderEditWindow)1 FolderEditWindow (com.haulmont.cuba.web.app.folders.FolderEditWindow)1 KeyCode (com.vaadin.event.ShortcutAction.KeyCode)1