Java源码示例:com.vaadin.flow.data.renderer.ComponentRenderer
示例1
public RSocketFiltersView(@Autowired RSocketFilterChain filterChain, @Autowired RSocketBrokerManager brokerManager) {
this.filterChain = filterChain;
add(new H1("RSocket Filters"));
//services & applications
filterGrid.addColumn(RSocketFilter::getClass).setHeader("Filter Class").setAutoWidth(true);
filterGrid.addColumn(RSocketFilter::name).setHeader("Name");
filterGrid.addColumn(new ComponentRenderer<>(filter -> {
Checkbox checkbox = new Checkbox(filter.isEnabled());
checkbox.addValueChangeListener(event -> filter.setEnabled(checkbox.getValue()));
RSocketFilterEnableEvent filterEnableEvent = new RSocketFilterEnableEvent(filter.getClass().getCanonicalName(), checkbox.getValue());
brokerManager.broadcast(filterEnableEvent.toCloudEvent(URI.create("broker:" + brokerManager.localBroker().getIp()))).subscribe();
return checkbox;
})
).setHeader("Enabled");
add(filterGrid);
}
示例2
public void addComponentRendererDemo() {
MultiselectComboBox<User> multiselectComboBox = new MultiselectComboBox();
multiselectComboBox.setLabel(
"Multiselect combo box with ComponentRenderer");
multiselectComboBox.setPlaceholder("Add");
multiselectComboBox.setWidth("100%");
List<User> data = Arrays.asList(
new User("Leanne Graham", "leanne", "[email protected]"),
new User("Ervin Howell", "ervin", "[email protected]"),
new User("Samantha Doe", "samantha", "[email protected]"));
multiselectComboBox.setItems(data);
multiselectComboBox.setItemLabelGenerator(User::getEmail);
multiselectComboBox.addSelectionListener(
event -> Notification.show(event.toString()));
Button getValueBtn = new Button("Get value");
getValueBtn.addClickListener(
event -> objectMultiselectComboBoxValueChangeHandler(
multiselectComboBox));
multiselectComboBox.setRenderer(new ComponentRenderer<VerticalLayout, User>(VerticalLayout::new, (container, user) -> {
HorizontalLayout name = new HorizontalLayout(new Icon(VaadinIcon.USER), new Label(user.getName()));
HorizontalLayout email = new HorizontalLayout(new Icon(VaadinIcon.SUITCASE), new Label(user.getEmail()));
container.add(name, email);
}));
add(buildDemoContainer(multiselectComboBox, getValueBtn));
}
示例3
public AbstractListingProvider(String caption, Collection<T> items, ComponentRenderer<? extends Component, T> renderer) {
this.caption = caption;
this.items = items;
this.renderer = renderer;
}
示例4
public RadioButtonGroupProvider(String caption, Collection<T> items, ComponentRenderer<? extends Component, T> renderer) {
super(caption, items, renderer);
}
示例5
public ComboBoxProvider(String caption, Collection<T> items, ComponentRenderer<? extends Component, T> renderer, ItemLabelGenerator<T> itemLabelGenerator) {
super(caption, items, renderer);
this.itemLabelGenerator = itemLabelGenerator;
}
示例6
public ComponentRenderer<? extends Component, T> getComponentRenderer() {
return componentRenderer;
}
示例7
/**
* Creates a new generator.
*
* @param componentRenderer
* the renderer used to produce components based on data items
* @param keyMapper
* the DataKeyMapper used to fetch keys for items
*/
public ComponentDataGenerator(
ComponentRenderer<? extends Component, T> componentRenderer,
ValueProvider<T, String> keyMapper) {
this.componentRenderer = componentRenderer;
this.keyMapper = keyMapper;
}