Vojtech Szocs has uploaded a new change for review.
Change subject: webadmin,userportal: Improve TextBoxLabelBase
......................................................................
webadmin,userportal: Improve TextBoxLabelBase
This patch modifies constructor:
public TextBoxLabelBase(Renderer<T> renderer) ...
to become:
public TextBoxLabelBase(Renderer<? super T> renderer) ...
in order to support broader range of renderers, i.e.
renderer for T or any supertype of T, up to Object.
Assuming GWT compiler discards generic type information,
in the worst case, things will blow up on bad method
signature. However, TextBoxLabelBase extends ValueBoxBase
which uses provided renderer like so:
public void setValue(T value, boolean fireEvents) {
...
setText(renderer.render(value));
...
}
and the above renderer usage should be safe even when
using Renderer<? super T> instead of just Renderer<T>
at runtime.
(Makes me wonder why GWT ValueBoxBase doesn't work
with Renderer<? super T> just like GWT ValueLabel.)
Change-Id: Ie691685ec6e9e1830da1457a0747901ba833be5d
Signed-off-by: Vojtech Szocs <[email protected]>
---
M
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/BooleanTextBoxLabel.java
M
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
M
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/DetailsTextBoxLabel.java
M
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/NullableNumberTextBoxLabel.java
M
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/DetailsRenderer.java
5 files changed, 19 insertions(+), 13 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/36/22236/1
diff --git
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/BooleanTextBoxLabel.java
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/BooleanTextBoxLabel.java
index 49deee0..6ace75a 100644
---
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/BooleanTextBoxLabel.java
+++
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/BooleanTextBoxLabel.java
@@ -11,4 +11,5 @@
public BooleanTextBoxLabel(String trueText, String falseText) {
super(new BooleanRenderer(trueText, falseText));
}
+
}
diff --git
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
index 43df46f..b0ec402 100644
---
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
+++
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
@@ -28,17 +28,22 @@
private T value;
- public TextBoxLabelBase(Renderer<T> renderer) {
- super(Document.get().createTextInputElement(), renderer, new
Parser<T>() {
+ private TextBoxLabelBase(Renderer<T> renderer, Parser<T> parser) {
+ super(Document.get().createTextInputElement(), renderer, parser);
+ setReadOnly(true);
+ initStyles();
+ addHandlers();
+ }
+
+ @SuppressWarnings("unchecked")
+ public TextBoxLabelBase(Renderer<? super T> renderer) {
+ this((Renderer<T>) renderer, new Parser<T>() {
@Override
public T parse(CharSequence text) throws ParseException {
// No-op null parser, not used at runtime
return null;
}
});
- setReadOnly(true);
- initStyles();
- addHandlers();
}
@Override
diff --git
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/DetailsTextBoxLabel.java
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/DetailsTextBoxLabel.java
index c74017c..80456fe 100644
---
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/DetailsTextBoxLabel.java
+++
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/DetailsTextBoxLabel.java
@@ -8,7 +8,7 @@
public class DetailsTextBoxLabel<T extends ArrayList<TextBoxLabelBase<V>>, V>
extends TextBoxLabelBase<T> {
public DetailsTextBoxLabel(String... delimiters) {
- super(new DetailsRenderer<T, V>(delimiters));
+ super(new DetailsRenderer<V>(delimiters));
}
}
diff --git
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/NullableNumberTextBoxLabel.java
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/NullableNumberTextBoxLabel.java
index d97b296..7dc7565 100644
---
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/NullableNumberTextBoxLabel.java
+++
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/NullableNumberTextBoxLabel.java
@@ -4,18 +4,19 @@
import org.ovirt.engine.ui.webadmin.widget.renderer.NullableNumberRenderer;
import com.google.gwt.i18n.client.NumberFormat;
-import com.google.gwt.text.shared.Renderer;
public class NullableNumberTextBoxLabel<T extends Number> extends
TextBoxLabelBase<T> {
+
public NullableNumberTextBoxLabel() {
- super((Renderer<T>) new NullableNumberRenderer());
+ super(new NullableNumberRenderer());
}
public NullableNumberTextBoxLabel(String nullLabel) {
- super((Renderer<T>) new NullableNumberRenderer(nullLabel));
+ super(new NullableNumberRenderer(nullLabel));
}
public NullableNumberTextBoxLabel(NumberFormat format) {
- super((Renderer<T>) new NullableNumberRenderer(format));
+ super(new NullableNumberRenderer(format));
}
+
}
diff --git
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/DetailsRenderer.java
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/DetailsRenderer.java
index 8cc2b31..ae41e18 100644
---
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/DetailsRenderer.java
+++
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/DetailsRenderer.java
@@ -6,18 +6,17 @@
import com.google.gwt.text.shared.AbstractRenderer;
-public class DetailsRenderer<T extends ArrayList<TextBoxLabelBase<V>>, V>
extends AbstractRenderer<T> {
+public class DetailsRenderer<V> extends
AbstractRenderer<ArrayList<TextBoxLabelBase<V>>> {
String[] delimiters;
public DetailsRenderer(String... delimiters) {
super();
-
this.delimiters = delimiters;
}
@Override
- public String render(T widgets) {
+ public String render(ArrayList<TextBoxLabelBase<V>> widgets) {
StringBuilder formattedStr = new StringBuilder();
for (int i = 0; i < widgets.size(); i++) {
--
To view, visit http://gerrit.ovirt.org/22236
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie691685ec6e9e1830da1457a0747901ba833be5d
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Vojtech Szocs <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches