Package com.sun.dtv.lwuit

Source Code of com.sun.dtv.lwuit.MonthView

/*
* Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.  Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.dtv.lwuit;

import com.sun.dtv.lwuit.geom.Dimension;
import com.sun.dtv.lwuit.events.ActionEvent;
import com.sun.dtv.lwuit.events.ActionListener;
import com.sun.dtv.lwuit.plaf.UIManager;
import java.util.Date;

/**
*
*/
class MonthView extends Component {
    public static final long MINUTE = 1000 * 60;
    public static final long HOUR = MINUTE * 60;
    public static final long DAY = HOUR * 24;
    public static final long WEEK = DAY * 7;
   
    private long selectedDay;
    private EventDispatcher dispatcher = new EventDispatcher();
    private Calendar parent;
   
    public MonthView(long time, Calendar parent) {
        this.selectedDay = time;
        this.parent = parent;
    }
   
    /**
     * @inheritDoc
     */
    protected String getUIID() {
        return "MonthView";
    }
   
    void focusGainedInternal() {
        setHandlesInput(true);
    }
    /**
     * @inheritDoc
     */
    public void keyReleased(int keyCode) {
        boolean right = true;
        boolean down = true;
        if(Display.getInstance().getGameAction(keyCode) != Display.GAME_FIRE){
            if(handlesInput()){
                switch (Display.getInstance().getGameAction(keyCode)) {
                    case Display.GAME_UP:
                        down = false;
                    case Display.GAME_DOWN:
                        upDown(down);
                        break;
                    case Display.GAME_LEFT:
                        right = false;
                        // fall
                    case Display.GAME_RIGHT:
                        leftRight(right);
                        break;
                }
            }
        } else {
            setHandlesInput(!handlesInput());
        }
        repaint();
    }
   
    private void upDown(boolean down) {
        selectedDay += ((down ? 1: -1) * WEEK);
        fireActionEvent();
    }
   
    private void leftRight(boolean forward) {
        selectedDay += (forward ? 1 : -1) * DAY;
        fireActionEvent();
    }
   
    public long getSelectedDay() {
        return selectedDay;
    }
   
  
    public void setSelectedDay(long day){
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTime(new Date(selectedDay));
        int yearOld = cal.get(java.util.Calendar.YEAR);
        int monthOld = cal.get(java.util.Calendar.MONTH);
        int dayOld = cal.get(java.util.Calendar.DAY_OF_MONTH);
       
        cal.setTime(new Date(day));
        int yearNew = cal.get(java.util.Calendar.YEAR);
        int monthNew = cal.get(java.util.Calendar.MONTH);
        int dayNew = cal.get(java.util.Calendar.DAY_OF_MONTH);
       
        if(yearNew!=yearOld ||monthNew != monthOld ||dayNew != dayOld){
            this.selectedDay = day;
            repaint();
            fireActionEvent();
        }
    }
   
    public int getDayOfMonth(){
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTime(new Date(selectedDay));
        return cal.get(java.util.Calendar.DAY_OF_MONTH);
    }
   
    public int getMonth(){
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTime(new Date(selectedDay));
        return cal.get(java.util.Calendar.MONTH);
    }
   
    public int getYear(){
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTime(new Date(selectedDay));
        return cal.get(java.util.Calendar.YEAR);
    }
   
   
    public void addActionListener(ActionListener l){
        dispatcher.addListener(l);
    }
   
    public void removeActionListener(ActionListener l){
        dispatcher.removeListener(l);
    }
   
    protected void fireActionEvent() {
        parent.componentChanged();
        super.fireActionEvent();
        dispatcher.fireActionEvent(new ActionEvent(parent));
    }
   
    /**
     * @inheritDoc
     */
    public void pointerReleased(int x, int y) {
       setHandlesInput(true);
       setSelectedDay(UIManager.getInstance().getLookAndFeel().findDayAt(x, y, (Calendar)getParent(), this));
    }

    /**
     * @inheritDoc
     */
    public void paint(Graphics g) {
        UIManager.getInstance().getLookAndFeel().drawMonthView(g, (Calendar)getParent(), this);
    }
   
    /**
     * @inheritDoc
     */
    protected Dimension calcPreferredSize(){
        return UIManager.getInstance().getLookAndFeel().getMonthViewPreferredSize(this);
    }   
}
TOP

Related Classes of com.sun.dtv.lwuit.MonthView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.