anmolbabu has uploaded a new change for review. Change subject: webadmin : gwt-bootstrap DateTimeBox widget ......................................................................
webadmin : gwt-bootstrap DateTimeBox widget This patch adds gwt-bootstrap DateTimeBox widget. Change-Id: I92f2a9eced817d8ed040901255983e5673990f1f Signed-off-by: Anmol Babu <anb...@redhat.com> --- M frontend/webadmin/modules/gwt-common/pom.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/GwtCommon.gwt.xml A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBox.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBoxEditor.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GwtBootstrapDateTimePicker.java M frontend/webadmin/modules/userportal-gwtp/pom.xml M frontend/webadmin/modules/webadmin/pom.xml 7 files changed, 264 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/38729/1 diff --git a/frontend/webadmin/modules/gwt-common/pom.xml b/frontend/webadmin/modules/gwt-common/pom.xml index 22830b4..eb17183 100644 --- a/frontend/webadmin/modules/gwt-common/pom.xml +++ b/frontend/webadmin/modules/gwt-common/pom.xml @@ -59,6 +59,12 @@ <version>${gwtbootstrap3.version}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.gwtbootstrap3</groupId> + <artifactId>gwtbootstrap3-extras</artifactId> + <version>${gwtbootstrap3.version}</version> + <scope>provided</scope> + </dependency> <!-- oVirt dependencies --> <dependency> <groupId>${engine.groupId}</groupId> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/GwtCommon.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/GwtCommon.gwt.xml index caa8842..f244719 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/GwtCommon.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/GwtCommon.gwt.xml @@ -8,6 +8,8 @@ <inherits name="com.google.gwt.inject.Inject" /> <inherits name="org.gwtbootstrap3.GwtBootstrap3CDN"/> + <inherits name="org.gwtbootstrap3.GwtBootstrap3NoTheme"/> + <inherits name="org.gwtbootstrap3.extras.datetimepicker.DateTimePicker"/> <inherits name="com.google.gwt.uibinder.GinUiBinder" /> <!-- Inherit GWTP MVP module with automatic EntryPoint support --> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBox.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBox.java new file mode 100644 index 0000000..87a95e4 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBox.java @@ -0,0 +1,70 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.Collection; +import java.util.Date; + +import com.google.gwt.editor.client.adapters.TakesValueEditor; +import com.google.gwt.user.client.ui.HasConstrainedValue; + +/** + * EntityModel bound Gwt-Bootstrap DateTimePicker that uses {@link GwtBootstrapDateTimePicker}. + */ +public class EntityModelDateTimeBox extends GwtBootstrapDateTimePicker implements EditorWidget<Date, TakesValueEditor<Date>>, HasConstrainedValue<Date> { + + private TakesConstrainedValueEditor<Date> editor; + + private int tabIndex; + + private boolean enabled; + + private char accessKey; + + public EntityModelDateTimeBox(String format, boolean autoClose) { + super(format, autoClose); + } + + public EntityModelDateTimeBox() { + super(); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + @Override + public int getTabIndex() { + return tabIndex; + } + + @Override + public void setAccessKey(char key) { + accessKey = key; + } + + @Override + public void setTabIndex(int index) { + this.tabIndex = index; + } + + public char getAccessKey() { + return accessKey; + } + + @Override + public TakesValueEditor<Date> asEditor() { + if (editor == null) { + editor = TakesConstrainedValueEditor.of(this, this, this); + } + return editor; + } + + @Override + public void setAcceptableValues(Collection<Date> values) { + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBoxEditor.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBoxEditor.java new file mode 100644 index 0000000..0dcb073 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelDateTimeBoxEditor.java @@ -0,0 +1,48 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.Date; +import java.util.List; + +import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel; + +import com.google.gwt.dom.client.Style.BorderStyle; +import com.google.gwt.editor.client.IsEditor; + +/** + * EntityModel bound editor that uses {@link EntityModelDateTimeBox}. + */ +public class EntityModelDateTimeBoxEditor extends AbstractValidatedWidgetWithLabel<Date, EntityModelDateTimeBox> implements IsEditor<WidgetWithLabelEditor<Date, EntityModelDateTimeBoxEditor>> { + + private final WidgetWithLabelEditor<Date, EntityModelDateTimeBoxEditor> editor; + + public EntityModelDateTimeBoxEditor() { + this(null, true); + } + + public EntityModelDateTimeBoxEditor(String format, boolean autoClose) { + super(new EntityModelDateTimeBox(format == null ? GwtBootstrapDateTimePicker.DEFAULT_DATE_TIME_FORMAT : format, autoClose)); + this.editor = WidgetWithLabelEditor.of(getContentWidget().asEditor(), this); + } + + @Override + public EntityModelDateTimeBox getContentWidget() { + return super.getContentWidget(); + } + + @Override + public WidgetWithLabelEditor<Date, EntityModelDateTimeBoxEditor> asEditor() { + return editor; + } + + @Override + public void markAsValid() { + super.markAsValid(); + getValidatedWidgetStyle().setBorderStyle(BorderStyle.NONE); + } + + @Override + public void markAsInvalid(List<String> validationHints) { + super.markAsInvalid(validationHints); + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GwtBootstrapDateTimePicker.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GwtBootstrapDateTimePicker.java new file mode 100644 index 0000000..9f5d6bb --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/GwtBootstrapDateTimePicker.java @@ -0,0 +1,126 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.Date; + +import org.gwtbootstrap3.extras.datetimepicker.client.ui.DateTimePicker; +import org.gwtbootstrap3.extras.datetimepicker.client.ui.base.constants.DateTimePickerView; +import org.gwtbootstrap3.extras.datetimepicker.client.ui.base.events.ChangeDateEvent; +import org.gwtbootstrap3.extras.datetimepicker.client.ui.base.events.ChangeDateHandler; + +import com.google.gwt.event.dom.client.KeyDownEvent; +import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.event.dom.client.KeyPressEvent; +import com.google.gwt.event.dom.client.KeyPressHandler; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.TakesValue; +import com.google.gwt.user.client.ui.Widget; + +public class GwtBootstrapDateTimePicker implements TakesValue<Date> { + /* + * public static final String DEFAULT_DATE_TIME_FORMAT = + * DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_SHORT).getPattern(); + */ + public static final String DEFAULT_DATE_TIME_FORMAT = "mm/dd/yyyy HH:ii";//$NON-NLS-1$ + public static final String DEFAULT_TIME_FORMAT = "HH:ii";//$NON-NLS-1$ + public static final String DEFAULT_DATE_FORMAT = "mm/dd/yyyy";//$NON-NLS-1$ + private final DateTimePicker dateTimePicker = new DateTimePicker(); + private String dateTimeFormat; + + public GwtBootstrapDateTimePicker() { + this(DEFAULT_DATE_TIME_FORMAT, true); + } + + public GwtBootstrapDateTimePicker(String format, boolean autoClose) { + dateTimePicker.setFormat(format); + dateTimePicker.setAutoClose(autoClose); + dateTimePicker.setShowTodayButton(true); + this.dateTimeFormat = format; + this.dateTimePicker.addChangeDateHandler(new ChangeDateHandler() { + @Override + public void onChangeDate(ChangeDateEvent evt) { + ValueChangeEvent.fire(dateTimePicker, dateTimePicker.getValue()); + } + }); + } + + public String getDateTimeFormat() { + return dateTimeFormat; + } + + public void setDateTimeFormat(String dateTimeFormat) { + this.dateTimeFormat = dateTimeFormat; + dateTimePicker.setFormat(dateTimeFormat); + dateTimePicker.reload(); + } + + public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) { + return dateTimePicker.addValueChangeHandler(handler); + } + + public void setValue(Date value, boolean fireEvents) { + dateTimePicker.setValue(value, fireEvents); + } + + public void showDateOnly() { + show(DateTimePickerView.MONTH, DateTimePickerView.MONTH, DateTimePickerView.MONTH); + } + + public void showTimeOnly() { + show(DateTimePickerView.DAY, DateTimePickerView.HOUR, DateTimePickerView.DAY); + } + + public void showDateAndTime() { + show(DateTimePickerView.MONTH, DateTimePickerView.HOUR, DateTimePickerView.DECADE); + } + + public void show(DateTimePickerView startView, DateTimePickerView minView, DateTimePickerView maxView) { + dateTimePicker.setStartView(DateTimePickerView.MONTH); + dateTimePicker.setMinView(minView); + dateTimePicker.setMaxView(maxView); + dateTimePicker.reload(); + } + + @Override + public void setValue(Date value) { + dateTimePicker.setValue(value); + } + + public Widget asWidget() { + return dateTimePicker.asWidget(); + } + + public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) { + return dateTimePicker.addDomHandler(handler, KeyUpEvent.getType()); + } + + public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { + return dateTimePicker.addDomHandler(handler, KeyDownEvent.getType()); + } + + public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { + return dateTimePicker.addDomHandler(handler, KeyPressEvent.getType()); + } + + public void fireEvent(GwtEvent<?> event) { + dateTimePicker.fireEvent(event); + } + + @Override + public Date getValue() { + return dateTimePicker.getValue(); + } + + public void setFocus(boolean focused) { + dateTimePicker.getTextBox().setFocus(focused); + } + + public void setDateRange(Date startDate, Date stopDate) { + dateTimePicker.setStartDate(startDate); + dateTimePicker.setEndDate(stopDate); + } +} diff --git a/frontend/webadmin/modules/userportal-gwtp/pom.xml b/frontend/webadmin/modules/userportal-gwtp/pom.xml index fa7331c..5f20c11 100644 --- a/frontend/webadmin/modules/userportal-gwtp/pom.xml +++ b/frontend/webadmin/modules/userportal-gwtp/pom.xml @@ -64,6 +64,12 @@ <version>${gwtbootstrap3.version}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.gwtbootstrap3</groupId> + <artifactId>gwtbootstrap3-extras</artifactId> + <version>${gwtbootstrap3.version}</version> + <scope>provided</scope> + </dependency> <!-- oVirt dependencies --> <dependency> <groupId>${engine.groupId}</groupId> diff --git a/frontend/webadmin/modules/webadmin/pom.xml b/frontend/webadmin/modules/webadmin/pom.xml index 22177ee..0d83220 100644 --- a/frontend/webadmin/modules/webadmin/pom.xml +++ b/frontend/webadmin/modules/webadmin/pom.xml @@ -64,6 +64,12 @@ <version>${gwtbootstrap3.version}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.gwtbootstrap3</groupId> + <artifactId>gwtbootstrap3-extras</artifactId> + <version>${gwtbootstrap3.version}</version> + <scope>provided</scope> + </dependency> <!-- oVirt dependencies --> <dependency> <groupId>${engine.groupId}</groupId> -- To view, visit https://gerrit.ovirt.org/38729 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I92f2a9eced817d8ed040901255983e5673990f1f Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: anmolbabu <anb...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches