Hello!
Can an editable table have a placeholder in a textField?
If yes, then how it can be set?
CUBA v6.10
Thanks.
Hello!
Can an editable table have a placeholder in a textField?
If yes, then how it can be set?
CUBA v6.10
Thanks.
Hi,
I can suggest two approaches:
import com.company.sales.entity.Product;
import com.haulmont.cuba.gui.components.*;
import com.haulmont.cuba.gui.xml.layout.ComponentsFactory;
import javax.inject.Inject;
import java.util.Map;
public class ProductBrowse extends AbstractLookup {
@Inject
private GroupTable<Product> productsTable;
@Inject
private ComponentsFactory componentsFactory;
@Override
public void init(Map<String, Object> params) {
productsTable.addGeneratedColumn("name", entity -> {
TextField field = componentsFactory.createComponent(TextField.class);
field.setDatasource(productsTable.getItemDatasource(entity), "name");
field.setWidthFull();
field.setInputPrompt("Enter Name");
return field;
});
}
}
import com.haulmont.chile.core.model.MetaClass;
import com.haulmont.cuba.core.global.Messages;
import com.haulmont.cuba.gui.components.AbstractComponentGenerationStrategy;
import com.haulmont.cuba.gui.components.Component;
import com.haulmont.cuba.gui.components.ComponentGenerationContext;
import com.haulmont.cuba.gui.xml.layout.ComponentsFactory;
import org.springframework.core.Ordered;
import javax.annotation.Nullable;
import javax.inject.Inject;
@org.springframework.stereotype.Component(SalesComponentGenerationStrategy.NAME)
public class SalesComponentGenerationStrategy extends AbstractComponentGenerationStrategy implements Ordered {
public static final String NAME = "sales_SalesComponentGenerationStrategy";
@Inject
public SalesComponentGenerationStrategy(Messages messages) {
super(messages);
}
@Inject
public void setComponentsFactory(ComponentsFactory componentsFactory) {
this.componentsFactory = componentsFactory;
}
@Nullable
@Override
public Component createComponent(ComponentGenerationContext context) {
// Create a component using the default implementation
Component component = createComponentInternal(context);
// If a component can have an input prompt
if (component instanceof Component.HasInputPrompt) {
MetaClass metaClass = context.getMetaClass();
String property = context.getProperty();
String propertyCaption = messages.getTools().getPropertyCaption(metaClass, property);
((Component.HasInputPrompt) component).setInputPrompt(propertyCaption);
}
return component;
}
@Override
public int getOrder() {
return 50;
}
}
Regards,
Gleb
Hi, Gleb.
The first approach helped!
Many thanks for your help!