Skip to content

Commit 6d834b5

Browse files
Fixes
1 parent 1024324 commit 6d834b5

File tree

10 files changed

+253
-153
lines changed

10 files changed

+253
-153
lines changed

assets/demo.gif

48.3 KB
Loading

assets/demo.png

38.6 KB
Loading

vaadin-editable-label-component/src/main/java/software/xdev/vaadin/editable_label/ui/AbstractEditableLabel.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,16 @@ public abstract class AbstractEditableLabel
5858
private SerializableConsumer<C> onClick = null;
5959

6060
public AbstractEditableLabel(final EDIT editor)
61+
{
62+
this(editor, " - ");
63+
64+
}
65+
66+
public AbstractEditableLabel(final EDIT editor, final String emptyValue)
6167
{
6268
super();
6369
this.editor = editor;
64-
this.emptyValue = " - ";
70+
this.emptyValue = emptyValue;
6571
this.initUI(
6672
VaadinIcon.PENCIL.create(),
6773
VaadinIcon.CHECK.create(),

vaadin-editable-label-component/src/main/java/software/xdev/vaadin/editable_label/ui/EditableLabelBigDecimalField.java

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.vaadin.flow.component.ComponentEventListener;
3232
import com.vaadin.flow.component.button.Button;
3333
import com.vaadin.flow.component.textfield.BigDecimalField;
34-
import com.vaadin.flow.component.textfield.TextFieldVariant;
3534

3635

3736
/**
@@ -44,17 +43,41 @@ public class EditableLabelBigDecimalField
4443
{
4544

4645
private BigDecimal value;
47-
private NumberFormat currencyFormatter;
46+
private NumberFormat numberFormatter;
4847

4948
public EditableLabelBigDecimalField()
5049
{
5150
super(new BigDecimalField());
5251
}
5352

54-
public EditableLabelBigDecimalField(final NumberFormat currencyFormatter)
53+
public EditableLabelBigDecimalField(final NumberFormat numberFormatter)
5554
{
5655
this();
57-
Objects.requireNonNull(this.currencyFormatter = currencyFormatter);
56+
Objects.requireNonNull(this.numberFormatter = numberFormatter);
57+
}
58+
59+
public EditableLabelBigDecimalField(final BigDecimal value, final NumberFormat numberFormatter)
60+
{
61+
this(numberFormatter);
62+
this.setValue(value);
63+
}
64+
65+
public EditableLabelBigDecimalField(final BigDecimal value)
66+
{
67+
this();
68+
this.setValue(value);
69+
}
70+
71+
public EditableLabelBigDecimalField(final Double value, final NumberFormat numberFormatter)
72+
{
73+
this(numberFormatter);
74+
this.setValue(new BigDecimal(value));
75+
}
76+
77+
public EditableLabelBigDecimalField(final Double value)
78+
{
79+
this();
80+
this.setValue(new BigDecimal(value));
5881
}
5982

6083
@Override
@@ -66,9 +89,9 @@ public void setValue(final BigDecimal value)
6689
}
6790
else
6891
{
69-
if(this.currencyFormatter != null)
92+
if(this.numberFormatter != null)
7093
{
71-
this.setLabelText(this.currencyFormatter.format(value));
94+
this.setLabelText(this.numberFormatter.format(value));
7295
}
7396
else
7497
{
@@ -86,9 +109,9 @@ public BigDecimal getValue()
86109
return this.value;
87110
}
88111

89-
public void setCurrency(final NumberFormat currencyFormatter)
112+
public void setCurrency(final NumberFormat numberFormatter)
90113
{
91-
this.currencyFormatter = currencyFormatter;
114+
this.numberFormatter = numberFormatter;
92115
}
93116

94117
@Override
@@ -151,13 +174,7 @@ protected void initUI(
151174
)
152175
{
153176
super.initUI(editIcon, saveIcon, abortIcon);
154-
155177
this.getEditor().setAutoselect(true);
156-
this.getEditor().addThemeVariants(TextFieldVariant.LUMO_SMALL);
157-
158-
this.getEditor().setWidthFull();
159-
this.getEditor().setHeight(null);
160-
161178
this.getEditor().addBlurListener(this::textField_onBlur);
162179
}
163180
}

vaadin-editable-label-component/src/main/java/software/xdev/vaadin/editable_label/ui/EditableLabelComboBox.java

Lines changed: 38 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,10 @@
2323
import java.util.Collection;
2424

2525
import com.vaadin.flow.component.ClickEvent;
26-
import com.vaadin.flow.component.Component;
27-
import com.vaadin.flow.component.ComponentEvent;
28-
import com.vaadin.flow.component.ComponentEventListener;
2926
import com.vaadin.flow.component.ItemLabelGenerator;
3027
import com.vaadin.flow.component.button.Button;
3128
import com.vaadin.flow.component.combobox.ComboBox;
3229
import com.vaadin.flow.component.datepicker.DatePicker;
33-
import com.vaadin.flow.data.binder.HasDataProvider;
3430
import com.vaadin.flow.data.provider.DataProvider;
3531

3632

@@ -41,7 +37,6 @@
4137
*/
4238
public class EditableLabelComboBox<T>
4339
extends AbstractEditableLabel<Object, EditableLabelComboBox, T, ComboBox<T>>
44-
implements HasDataProvider<T>
4540
{
4641
private T value;
4742

@@ -50,22 +45,53 @@ public EditableLabelComboBox()
5045
super(new ComboBox<>());
5146
}
5247

48+
public EditableLabelComboBox(final T selectedValue, final Collection<T> selectableItems)
49+
{
50+
this();
51+
this.setItems(selectableItems);
52+
this.setValue(selectedValue);
53+
}
54+
55+
public EditableLabelComboBox(final T selectedValue, final T... selectableItems)
56+
{
57+
this();
58+
this.setItems(selectableItems);
59+
this.setValue(selectedValue);
60+
}
61+
62+
public EditableLabelComboBox(final T selectedValue, final String emptyValue, final Collection<T> selectableItems)
63+
{
64+
super(new ComboBox<>(), emptyValue);
65+
this.setItems(selectableItems);
66+
this.setValue(selectedValue);
67+
}
68+
69+
public EditableLabelComboBox(final T selectedValue, final String emptyValue, final T... selectableItems)
70+
{
71+
super(new ComboBox<>(), emptyValue);
72+
this.setItems(selectableItems);
73+
this.setValue(selectedValue);
74+
}
75+
5376
@Override
5477
public void setValue(final T value)
5578
{
79+
final T oldValue = this.value;
80+
this.value = value;
81+
5682
if(value == null)
5783
{
5884
this.setLabelText(this.emptyValue);
5985
}
6086
else
6187
{
62-
this.value = value;
6388
this.setLabelText(this.getEditor().getItemLabelGenerator().apply(this.value));
6489
if(this.getLabelText().isBlank())
6590
{
6691
this.setLabelText(this.emptyValue);
6792
}
6893
}
94+
this.fireChangedEvent(oldValue);
6995
}
7096

7197
@Override
@@ -91,41 +117,20 @@ public void setItemLabelGenerator(
91117
{
92118
this.getEditor().setItemLabelGenerator(itemLabelGenerator);
93119
}
94-
95-
/**
96-
* Event handler delegate method for the {@link Button} {@link #btnEdit}.
97-
*
98-
* @eventHandlerDelegate Do NOT delete, used by UI designer!
99-
* @see ComponentEventListener#onComponentEvent(ComponentEvent)
100-
*/
120+
101121
@Override
102122
protected void btnEdit_onClick(final ClickEvent<Button> event)
103123
{
104124
this.getEditor().setValue(this.value);
105125
this.getEditor().focus();
126+
this.getEditor().setOpened(true);
106127
this.enableEditMode();
107128
}
108-
109-
/**
110-
* Event handler delegate method for the {@link Button} {@link #btnSave}.
111-
*
112-
* @eventHandlerDelegate Do NOT delete, used by UI designer!
113-
* @see ComponentEventListener#onComponentEvent(ComponentEvent)
114-
*/
129+
115130
@Override
116131
protected void btnSave_onClick(final ClickEvent<Button> event)
117132
{
118-
final T oldValue = this.value;
119-
this.value = this.getEditor().getValue();
120-
this.setLabelText(
121-
this.getEditor().getItemLabelGenerator().apply(this.value)
122-
);
123-
this.fireChangedEvent(oldValue);
124-
if(this.getLabelText().isBlank())
125-
{
126-
this.setLabelText(this.emptyValue);
127-
}
128-
133+
this.setValue(this.value);
129134
this.disableEditMode();
130135
}
131136

@@ -135,36 +140,16 @@ protected void btnClose_onClick(final ClickEvent<Button> event)
135140
this.disableEditMode();
136141
}
137142

138-
@Override
139-
protected void initUI(
140-
final Component editIcon,
141-
final Component saveIcon,
142-
final Component abortIcon
143-
)
144-
{
145-
super.initUI(editIcon, saveIcon, abortIcon);
146-
// this.getEditor().setItemLabelGenerator(EditableLabelComboBox.NonNull(CaptionUtils::resolveCaption));
147-
this.getEditor().setWidthFull();
148-
this.getEditor().getElement().setAttribute("theme", "small");
149-
this.getEditor().addValueChangeListener(l ->
150-
{
151-
this.value = l.getValue();
152-
});
153-
}
154-
155-
@Override
156-
public void setDataProvider(final DataProvider<T, ?> dataProvider)
143+
public void setDataProvider(final DataProvider<T, String> dataProvider)
157144
{
158-
// this.getEditor().setItems(dataProvider);
145+
this.getEditor().setItems(dataProvider);
159146
}
160147

161-
@Override
162148
public void setItems(final Collection<T> items)
163149
{
164150
this.getEditor().setItems(items);
165151
}
166152

167-
@Override
168153
public void setItems(final T... items)
169154
{
170155
this.getEditor().setItems(items);

0 commit comments

Comments
 (0)