com.vaadin.ui.TwinColSelect Maven / Gradle / Ivy
/*
* Copyright (C) 2000-2024 Vaadin Ltd
*
* This program is available under Vaadin Commercial License and Service Terms.
*
* See for the full
* license.
*/
package com.vaadin.ui;
import java.util.Collection;
import com.vaadin.data.HasDataProvider;
import com.vaadin.data.provider.DataProvider;
import com.vaadin.shared.ui.twincolselect.TwinColSelectState;
/**
* Multiselect component with two lists: left side for available items and right
* side for selected items.
*
* @author Vaadin Ltd
*
* @param
* item type
*/
public class TwinColSelect extends AbstractMultiSelect
implements HasDataProvider {
/**
* Constructs a new TwinColSelect.
*/
public TwinColSelect() {
}
/**
* Constructs a new TwinColSelect with the given caption.
*
* @param caption
* the caption to set, can be {@code null}
*/
public TwinColSelect(String caption) {
this();
setCaption(caption);
}
/**
* Constructs a new TwinColSelect with caption and data provider for
* options.
*
* @param caption
* the caption to set, can be {@code null}
* @param dataProvider
* the data provider, not {@code null}
* @since 8.0
*/
public TwinColSelect(String caption, DataProvider dataProvider) {
this(caption);
setDataProvider(dataProvider);
}
/**
* Constructs a new TwinColSelect with caption and the given options.
*
* @param caption
* the caption to set, can be {@code null}
* @param options
* the options, cannot be {@code null}
*/
public TwinColSelect(String caption, Collection options) {
this(caption, DataProvider.ofCollection(options));
}
/**
* Returns the number of rows in the selects.
*
* @return the number of rows visible
*/
public int getRows() {
return getState(false).rows;
}
/**
* Sets the number of rows in the selects. If the number of rows is set to 0
* or less, the actual number of displayed rows is determined implicitly by
* the selects.
*
* If a height if set (using {@link #setHeight(String)} or
* {@link #setHeight(float, Unit)}) it overrides the number of rows. Leave
* the height undefined to use this method.
*
* @param rows
* the number of rows to set.
*/
public void setRows(int rows) {
if (rows < 0) {
rows = 0;
}
if (getState(false).rows != rows) {
getState().rows = rows;
}
}
/**
* Sets the text shown above the right column. {@code null} clears the
* caption.
*
* @param rightColumnCaption
* The text to show, {@code null} to clear
*/
public void setRightColumnCaption(String rightColumnCaption) {
getState().rightColumnCaption = rightColumnCaption;
}
/**
* Returns the text shown above the right column.
*
* @return The text shown or {@code null} if not set.
*/
public String getRightColumnCaption() {
return getState(false).rightColumnCaption;
}
/**
* Sets the text shown above the left column. {@code null} clears the
* caption.
*
* @param leftColumnCaption
* The text to show, {@code null} to clear
*/
public void setLeftColumnCaption(String leftColumnCaption) {
getState().leftColumnCaption = leftColumnCaption;
markAsDirty();
}
/**
* Returns the text shown above the left column.
*
* @return The text shown or {@code null} if not set.
*/
public String getLeftColumnCaption() {
return getState(false).leftColumnCaption;
}
@Override
protected TwinColSelectState getState() {
return (TwinColSelectState) super.getState();
}
@Override
protected TwinColSelectState getState(boolean markAsDirty) {
return (TwinColSelectState) super.getState(markAsDirty);
}
@Override
public DataProvider getDataProvider() {
return internalGetDataProvider();
}
@Override
public void setDataProvider(DataProvider dataProvider) {
internalSetDataProvider(dataProvider);
}
}