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();
}
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"));
}
}
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");
}
}
}
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()));
}
}
}
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));
}
}
}
Aggregations