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

Reply via email to