SpinnerDateModel.java
上传用户:haobig99
上传日期:2022-06-15
资源大小:369k
文件大小:4k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  3.  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4.  *
  5.  * This code is free software; you can redistribute it and/or modify it
  6.  * under the terms of the GNU General Public License version 2 only, as
  7.  * published by the Free Software Foundation.  Sun designates this
  8.  * particular file as subject to the "Classpath" exception as provided
  9.  * by Sun in the LICENSE file that accompanied this code.
  10.  *
  11.  * This code is distributed in the hope that it will be useful, but WITHOUT
  12.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  * version 2 for more details (a copy is included in the LICENSE file that
  15.  * accompanied this code).
  16.  *
  17.  * You should have received a copy of the GNU General Public License version
  18.  * 2 along with this work; if not, write to the Free Software Foundation,
  19.  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20.  *
  21.  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  22.  * CA 95054 USA or visit www.sun.com if you need additional information or
  23.  * have any questions.
  24.  */
  25. package com.sun.lwuit.spinner;
  26. import com.sun.lwuit.events.DataChangedListener;
  27. import com.sun.lwuit.events.SelectionListener;
  28. import com.sun.lwuit.list.ListModel;
  29. import com.sun.lwuit.util.EventDispatcher;
  30. import java.util.Date;
  31. /**
  32.  * Represents a date model for the spinner
  33.  *
  34.  * @author Shai Almog
  35.  */
  36. class SpinnerDateModel implements ListModel {
  37.     private EventDispatcher dataListener = new EventDispatcher();
  38.     private EventDispatcher selectionListener = new EventDispatcher();
  39.     private long min;
  40.     private long max;
  41.     private long currentValue;
  42.     private static final long DAY = 24 * 60 * 60 * 1000;
  43.     void setValue(Date value) {
  44.         currentValue = value.getTime();
  45.     }
  46.     Object getValue() {
  47.         return new Date(currentValue);
  48.     }
  49.     /**
  50.      * Indicates the range of the spinner
  51.      * 
  52.      * @param min lowest value allowed
  53.      * @param max maximum value allowed
  54.      * @param currentValue the starting value for the mode
  55.      */
  56.     public SpinnerDateModel(long min, long max, long currentValue) {
  57.         this.max = max;
  58.         this.min = min;
  59.         this.currentValue = currentValue;
  60.     }
  61.     /**
  62.      * @inheritDoc
  63.      */
  64.     public Object getItemAt(int index) {
  65.         return new Date(min + DAY * index);
  66.     }
  67.     /**
  68.      * @inheritDoc
  69.      */
  70.     public int getSize() {
  71.         return (int)((max - min) / DAY);
  72.     }
  73.     /**
  74.      * @inheritDoc
  75.      */
  76.     public int getSelectedIndex() {
  77.         return (int)((currentValue - min) / DAY);
  78.     }
  79.     /**
  80.      * @inheritDoc
  81.      */
  82.     public void setSelectedIndex(int index) {
  83.         int oldIndex = getSelectedIndex();
  84.         currentValue = min + (index * DAY);
  85.         int newIndex = getSelectedIndex();
  86.         selectionListener.fireSelectionEvent(oldIndex, newIndex);
  87.     }
  88.     /**
  89.      * @inheritDoc
  90.      */
  91.     public void addDataChangedListener(DataChangedListener l) {
  92.         dataListener.addListener(l);
  93.     }
  94.     /**
  95.      * @inheritDoc
  96.      */
  97.     public void removeDataChangedListener(DataChangedListener l) {
  98.         dataListener.removeListener(l);
  99.     }
  100.     /**
  101.      * @inheritDoc
  102.      */
  103.     public void addSelectionListener(SelectionListener l) {
  104.         selectionListener.addListener(l);
  105.     }
  106.     /**
  107.      * @inheritDoc
  108.      */
  109.     public void removeSelectionListener(SelectionListener l) {
  110.         selectionListener.removeListener(l);
  111.     }
  112.     /**
  113.      * @inheritDoc
  114.      */
  115.     public void addItem(Object item) {
  116.     }
  117.     /**
  118.      * @inheritDoc
  119.      */
  120.     public void removeItem(int index) {
  121.     }
  122. }