123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- /*
- * Copyright 2000-2018 Vaadin Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
- package com.vaadin.v7.client.ui;
-
- import java.util.Date;
-
- import com.google.gwt.user.client.ui.FlowPanel;
- import com.google.gwt.user.client.ui.HasEnabled;
- import com.vaadin.client.ApplicationConnection;
- import com.vaadin.client.DateTimeService;
- import com.vaadin.client.ui.Field;
- import com.vaadin.v7.shared.ui.datefield.Resolution;
-
- public class VDateField extends FlowPanel implements Field, HasEnabled {
-
- public static final String CLASSNAME = "v-datefield";
-
- /** For internal use only. May be removed or replaced in the future. */
- public String paintableId;
-
- /** For internal use only. May be removed or replaced in the future. */
- public ApplicationConnection client;
-
- /** For internal use only. May be removed or replaced in the future. */
- public boolean immediate;
-
- @Deprecated
- public static final Resolution RESOLUTION_YEAR = Resolution.YEAR;
- @Deprecated
- public static final Resolution RESOLUTION_MONTH = Resolution.MONTH;
- @Deprecated
- public static final Resolution RESOLUTION_DAY = Resolution.DAY;
- @Deprecated
- public static final Resolution RESOLUTION_HOUR = Resolution.HOUR;
- @Deprecated
- public static final Resolution RESOLUTION_MIN = Resolution.MINUTE;
- @Deprecated
- public static final Resolution RESOLUTION_SEC = Resolution.SECOND;
-
- /** For internal use only. May be removed or replaced in the future. */
- public static String resolutionToString(Resolution res) {
- if (res.getCalendarField() > Resolution.DAY.getCalendarField()) {
- return "full";
- }
- if (res == Resolution.DAY) {
- return "day";
- }
- if (res == Resolution.MONTH) {
- return "month";
- }
- return "year";
- }
-
- protected Resolution currentResolution = Resolution.YEAR;
-
- protected String currentLocale;
-
- protected boolean readonly;
-
- protected boolean enabled;
-
- /**
- * The date that is selected in the date field. Null if an invalid date is
- * specified.
- */
- private Date date = null;
-
- /** For internal use only. May be removed or replaced in the future. */
- public DateTimeService dts;
-
- protected boolean showISOWeekNumbers = false;
-
- public VDateField() {
- setStyleName(CLASSNAME);
- dts = new DateTimeService();
- }
-
- /**
- * We need this redundant native function because Java's Date object doesn't
- * have a setMilliseconds method.
- * <p>
- * For internal use only. May be removed or replaced in the future.
- */
- public static native double getTime(int y, int m, int d, int h, int mi,
- int s, int ms)
- /*-{
- try {
- var date = new Date(2000,1,1,1); // don't use current date here
- if (y && y >= 0) date.setFullYear(y);
- if (m && m >= 1) date.setMonth(m-1);
- if (d && d >= 0) date.setDate(d);
- if (h >= 0) date.setHours(h);
- if (mi >= 0) date.setMinutes(mi);
- if (s >= 0) date.setSeconds(s);
- if (ms >= 0) date.setMilliseconds(ms);
- return date.getTime();
- } catch (e) {
- // TODO print some error message on the console
- //console.log(e);
- return (new Date()).getTime();
- }
- }-*/;
-
- public int getMilliseconds() {
- return DateTimeService.getMilliseconds(date);
- }
-
- public void setMilliseconds(int ms) {
- DateTimeService.setMilliseconds(date, ms);
- }
-
- public Resolution getCurrentResolution() {
- return currentResolution;
- }
-
- public void setCurrentResolution(Resolution currentResolution) {
- this.currentResolution = currentResolution;
- }
-
- public String getCurrentLocale() {
- return currentLocale;
- }
-
- public void setCurrentLocale(String currentLocale) {
- this.currentLocale = currentLocale;
- }
-
- public Date getCurrentDate() {
- return date;
- }
-
- public void setCurrentDate(Date date) {
- this.date = date;
- }
-
- public boolean isImmediate() {
- return immediate;
- }
-
- public void setImmediate(boolean immediate) {
- this.immediate = immediate;
- }
-
- public boolean isReadonly() {
- return readonly;
- }
-
- public void setReadonly(boolean readonly) {
- this.readonly = readonly;
- }
-
- @Override
- public boolean isEnabled() {
- return enabled;
- }
-
- @Override
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- public DateTimeService getDateTimeService() {
- return dts;
- }
-
- public String getId() {
- return paintableId;
- }
-
- public ApplicationConnection getClient() {
- return client;
- }
-
- /**
- * Returns whether ISO 8601 week numbers should be shown in the date
- * selector or not. ISO 8601 defines that a week always starts with a Monday
- * so the week numbers are only shown if this is the case.
- *
- * @return true if week number should be shown, false otherwise
- */
- public boolean isShowISOWeekNumbers() {
- return showISOWeekNumbers;
- }
-
- public void setShowISOWeekNumbers(boolean showISOWeekNumbers) {
- this.showISOWeekNumbers = showISOWeekNumbers;
- }
-
- /**
- * Returns a copy of the current date. Modifying the returned date will not
- * modify the value of this VDateField. Use {@link #setDate(Date)} to change
- * the current date.
- * <p>
- * For internal use only. May be removed or replaced in the future.
- *
- * @return A copy of the current date
- */
- public Date getDate() {
- Date current = getCurrentDate();
- if (current == null) {
- return null;
- } else {
- return (Date) getCurrentDate().clone();
- }
- }
-
- /**
- * Sets the current date for this VDateField.
- *
- * @param date
- * The new date to use
- */
- protected void setDate(Date date) {
- this.date = date;
- }
- }
|