use of io.jmix.ui.component.Button in project jmix-sneferu by mariodavid.
the class ClickInteraction method doClick.
protected void doClick(String componentId) {
Button button = (Button) screenTestAPI.screen().getWindow().getComponentNN(componentId);
clickButton(button);
}
use of io.jmix.ui.component.Button in project jmix by jmix-framework.
the class BulkEditorWindow method createDataComponents.
@SuppressWarnings("unchecked")
protected void createDataComponents() {
if (managedFields.isEmpty()) {
infoLabel.setValue(messages.getMessage("io.jmix.ui.app.bulk/bulk.noEditableProperties"));
applyButton.setVisible(false);
return;
}
List<ManagedField> editFields = new ArrayList<>(managedFields.values());
// sort fields
Comparator comparator;
if (fieldSorter != null) {
Map<MetaProperty, Integer> sorted = fieldSorter.apply(editFields.stream().map(ManagedField::getMetaProperty).collect(Collectors.toList()));
comparator = Comparator.<ManagedField>comparingInt(item -> sorted.get(item.getMetaProperty()));
} else {
comparator = Comparator.comparing(ManagedField::getLocalizedName);
}
editFields.sort(comparator);
CssLayout fieldsLayout = uiComponents.create(CssLayout.NAME);
fieldsLayout.setStyleName("jmix-bulk-editor-fields-layout");
fieldsLayout.setWidthFull();
fieldsLayout.setHeightFull();
int fromField;
int toField = 0;
int addedColumns = 0;
for (int col = 0; col < columnsMode.getColumnsCount(); col++) {
fromField = toField;
toField += getFieldsCountForColumn(editFields.size() - toField, columnsMode.getColumnsCount() - col);
DeviceInfo deviceInfo = deviceInfoProvider.getDeviceInfo();
VBoxLayout column = uiComponents.create(VBoxLayout.NAME);
column.setStyleName("jmix-bulk-editor-column");
column.setWidth(Component.AUTO_SIZE);
for (int fieldIndex = fromField; fieldIndex < toField; fieldIndex++) {
ManagedField field = editFields.get(fieldIndex);
CssLayout row = uiComponents.create(CssLayout.NAME);
row.setStyleName("jmix-bulk-editor-row");
row.setWidth("100%");
Label<String> label = uiComponents.create(Label.NAME);
label.setValue(field.getLocalizedName());
label.setStyleName("jmix-bulk-editor-label");
row.add(label);
Datasource<Entity> fieldDs = datasource;
// so we can check field domain
if (metadataTools.isJpaEmbeddable(field.getMetaProperty().getDomain())) {
fieldDs = datasources.get(field.getParentFqn());
}
BulkEditorFieldFactory fieldFactory = getFieldFactory();
Field<?> editField = fieldFactory.createField(fieldDs, field.getMetaProperty());
if (editField != null) {
editField.setFrame(getFrame());
editField.setStyleName("jmix-bulk-editor-field");
if (isPickerFieldWrapperNeeded(editField, deviceInfo)) {
CssLayout wrapper = uiComponents.create(CssLayout.NAME);
wrapper.setStyleName("jmix-bulk-editor-picker-field-wrapper");
wrapper.add(editField);
row.add(wrapper);
} else {
row.add(editField);
}
boolean required = editField.isRequired();
if (!required) {
Button clearButton = uiComponents.create(Button.class);
clearButton.setIconFromSet(JmixIcon.TRASH);
clearButton.setCaption("");
clearButton.setDescription(messages.getMessage("io.jmix.ui.app.bulk/bulk.clearAttribute"));
clearButton.addClickListener(e -> {
editField.setEnabled(!editField.isEnabled());
if (!editField.isEnabled()) {
if (editField instanceof ListEditor) {
((Field) editField).setValue(Collections.EMPTY_LIST);
} else {
editField.setValue(null);
}
e.getSource().setIconFromSet(JmixIcon.EDIT);
e.getSource().setDescription(messages.getMessage("io.jmix.ui.app.bulk/bulk.editAttribute"));
} else {
e.getSource().setIconFromSet(JmixIcon.TRASH);
e.getSource().setDescription(messages.getMessage("io.jmix.ui.app.bulk/bulk.clearAttribute"));
}
});
row.add(clearButton);
} else {
// hidden component for correctly showing layout
Button spacerButton = uiComponents.create(Button.class);
spacerButton.setIconFromSet(JmixIcon.TRASH);
spacerButton.setStyleName("jmix-bulk-editor-spacer");
row.add(spacerButton);
}
// disable bean validator
// noinspection RedundantCast
editField.getValidators().stream().filter(v -> v instanceof AbstractBeanValidator).findFirst().ifPresent(((Field) editField)::removeValidator);
// disable required
editField.setRequired(false);
if (editField instanceof ListEditor) {
((Field) editField).setValue(Collections.EMPTY_LIST);
} else {
editField.setValue(null);
}
if (fieldValidators != null) {
Consumer validator = fieldValidators.get(field.getFqn());
if (validator != null) {
editField.addValidator(validator);
}
}
column.add(row);
dataFields.put(field.getFqn(), editField);
} else {
column.add(uiComponents.create(Label.class));
}
}
fieldsLayout.add(column);
// if there is no fields remain
if (editFields.size() - toField == 0) {
addedColumns = col + 1;
break;
}
}
fieldsLayout.addStyleName(COLUMN_COUNT_STYLENAME + addedColumns);
fieldsScrollBox.add(fieldsLayout);
dataFields.values().stream().filter(f -> f instanceof Focusable).findFirst().ifPresent(f -> ((Focusable) f).focus());
}
use of io.jmix.ui.component.Button in project jmix by jmix-framework.
the class SideMenuLoader method loadSidePanelToggleButton.
protected void loadSidePanelToggleButton(SideMenu component, Element element) {
String toggleButtonId = element.attributeValue("sidePanelToggleButton");
if (StringUtils.isNotEmpty(toggleButtonId)) {
Component toggleButton = resultComponent.getFrame().getComponent(toggleButtonId);
if (!(toggleButton instanceof Button)) {
throw new GuiDevelopmentException("Unable to find sidePanelToggleButton for SideMenu", context, "sidePanelToggleButton", toggleButtonId);
}
component.setSidePanelToggleButton((Button) toggleButton);
}
}
use of io.jmix.ui.component.Button in project jmix by jmix-framework.
the class TestProgrammaticCommentaryPanel method createComponent.
protected void createComponent() {
VBoxLayout rootPanel = uiComponents.create(VBoxLayout.class);
rootPanel.setId("rootPanel");
rootPanel.setMargin(true);
rootPanel.setSpacing(true);
rootPanel.setStyleName("commentary-panel card");
rootPanel.setWidthFull();
DataGrid<CommentObject> commentsDataGrid = uiComponents.create(DataGrid.of(CommentObject.class));
commentsDataGrid.setId("commentsDataGrid");
commentsDataGrid.setBodyRowHeight(100);
commentsDataGrid.setColumnReorderingAllowed(false);
commentsDataGrid.setColumnsCollapsingAllowed(false);
commentsDataGrid.setHeaderVisible(false);
commentsDataGrid.setSelectionMode(DataGrid.SelectionMode.NONE);
commentsDataGrid.setWidthFull();
CssLayout sendMessageBox = uiComponents.create(CssLayout.class);
sendMessageBox.setId("sendMessageBox");
sendMessageBox.setStyleName("v-component-group message-box");
sendMessageBox.setWidthFull();
TextField<String> messageField = uiComponents.create(TextField.TYPE_STRING);
messageField.setId("messageField");
messageField.setInputPrompt("Enter your message");
messageField.setWidthFull();
Button sendBtn = uiComponents.create(Button.class);
sendBtn.setId("sendBtn");
sendBtn.setCaption("Send");
sendMessageBox.add(messageField, sendBtn);
rootPanel.add(commentsDataGrid, sendMessageBox);
rootPanel.expand(commentsDataGrid);
setComposition(rootPanel);
}
use of io.jmix.ui.component.Button in project jmix-sneferu by mariodavid.
the class ComponentTestApiTest method given_componentIsPresentOnScreen_when_retrieveRawComponentViaTestAPI_then_actualJmixComponentIsReturned.
@Test
void given_componentIsPresentOnScreen_when_retrieveRawComponentViaTestAPI_then_actualJmixComponentIsReturned(UiTestAPI uiTestAPI) {
// given:
final StandardLookupTestAPI<Visit, VisitBrowse> openedScreen = uiTestAPI.openStandardLookup(Visit.class, VisitBrowse.class);
// and:
assertThat(openedScreen.screen().getWindow().getComponent("createBtn")).isNotNull();
// when:
final Button createBtn = openedScreen.rawComponent(button("createBtn"));
// then:
assertThat(createBtn).isNotNull();
}
Aggregations