⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ganttpaneldate.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
/*************************************************************************** GanttPanelDate.java  -  description ------------------- begin                : dec 2002 copyright            : (C) 2002 by Thomas Alexandre email                : alexthomas(at)ganttproject.org ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/package net.sourceforge.ganttproject.gui;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.TimeZone;import javax.swing.Box;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFormattedTextField;import javax.swing.JPanel;import net.sourceforge.ganttproject.GanttCalendar;import net.sourceforge.ganttproject.GanttProject;import net.sourceforge.ganttproject.language.GanttLanguage;import net.sourceforge.ganttproject.time.gregorian.GregorianCalendar;/** * Dialog allow you to select a date */public class GanttPanelDate extends JPanel {    private GanttLanguage language = GanttLanguage.getInstance();    /** Graphic area for display the year */    private GanttDialogDateDay ddd;    /** Save the date */    private GanttCalendar save;    // String [] month;    /** buttons to handles the change of date EV 20031027 * */    private JButton jbPrevMonth, jbNextMonth;    private JFormattedTextField jtDate;    private JButton jbPrevYear, jbNextYear;    /** Constructor */    public GanttPanelDate(GanttCalendar date) {        // super(parent, GanttLanguage.getInstance().getText("chooseDate"),        // true);        // setResizable(false);        this.save = date.Clone();        // month = date.getDayMonthLanguage();        Box vb1 = Box.createVerticalBox();        Box hb1 = Box.createHorizontalBox();        jbPrevYear = new TestGanttRolloverButton(new ImageIcon(getClass()                .getResource("/icons/prevyear.gif")));        jbPrevYear.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent evt) {                rollDate(Calendar.YEAR, -1);            }        });        jbPrevMonth = new TestGanttRolloverButton(new ImageIcon(getClass()                .getResource("/icons/prevmonth.gif")));        jbPrevMonth.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent evt) {                rollDate(Calendar.MONTH, -1);            }        });        jbNextMonth = new TestGanttRolloverButton(new ImageIcon(getClass()                .getResource("/icons/nextmonth.gif")));        jbNextMonth.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent evt) {                rollDate(Calendar.MONTH, +1);            }        });        jbNextYear = new TestGanttRolloverButton(new ImageIcon(getClass()                .getResource("/icons/nextyear.gif")));        jbNextYear.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent evt) {                rollDate(Calendar.YEAR, +1);            }        });        jbPrevYear.setToolTipText(GanttProject.getToolTip(language                .getText("prevYear")));        jbPrevMonth.setToolTipText(GanttProject.getToolTip(language                .getText("prevMonth")));        jbNextMonth.setToolTipText(GanttProject.getToolTip(language                .getText("nextMonth")));        jbNextYear.setToolTipText(GanttProject.getToolTip(language                .getText("nextYear")));        ddd = new GanttDialogDateDay(date, language);        jtDate = new JFormattedTextField(new SimpleDateFormat("MMM yyyy"));        jtDate.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent evt) {                GregorianCalendar tmp = new GregorianCalendar();                tmp.setTime((Date) jtDate.getValue());                changeDate(tmp);            }        });        jtDate.setValue(ddd.date.getTime());        jtDate.setEditable(false);        hb1.add(jbPrevYear);        hb1.add(jbPrevMonth);        hb1.add(jtDate);        hb1.add(jbNextMonth);        hb1.add(jbNextYear);        vb1.add(hb1);        vb1.add(ddd);        add(vb1, "Center");    }    /**     * Signified that cancel button has been clicked, cancel the selectio and     * restur the old date     */    public void cancel() {        ddd.date = save;        changeDate(save);    }    /** Fill the content of the central label * */    private void changeDate(GregorianCalendar newDate) {        boolean differentMonth = (ddd.date.get(Calendar.MONTH) != newDate                .get(Calendar.MONTH))                || (ddd.date.get(Calendar.YEAR) != newDate.get(Calendar.YEAR));        ddd.date.setTime(newDate.getTime());        if (differentMonth) {            jtDate.setValue(ddd.date.getTime());            ddd.repaint();        }    }    /** This function rolls the date * */    private void rollDate(int field, int amount) {        ddd.date.add(field, amount);        jtDate.setValue(ddd.date.getTime());        ddd.repaint();    }    /** Return The selected date. */    public GanttCalendar getDate() {        return ddd.date;    }    /**     * Class use for display the day     */    public class GanttDialogDateDay extends JPanel {        public GanttCalendar date; // The selected date        GanttLanguage language; // The language uses        /** Constructor */        public GanttDialogDateDay(GanttCalendar date, GanttLanguage language) {            this.date = date;            this.language = language;            MouseListener ml = new MouseAdapter() {                public void mousePressed(MouseEvent e) {                    clickFunction(e.getX(), e.getY());                }            };            this.addMouseListener(ml);        }        /** The default size. */        public Dimension getPreferredSize() {            return new Dimension(230, 105); // 210        }        /** When the user click on the widget */        public void clickFunction(int x, int y) {            // Has he click on the panel???            if (x < getWidth() / 7 * 7 && y > 15 && y < 7 * 15) {                int X = x / (getWidth() / 7);                int Y = (y - 15) / 15;                // Recup the first monday                GanttCalendar tmpdate = date.Clone();                tmpdate.setDay(1);                String d = tmpdate.getdayWeek();                while (!d.equals(language.getDay(1))) {                    tmpdate.go(Calendar.DATE, -1);                    d = tmpdate.getdayWeek();                }                // Search the exact day                for (int i = 0; i < Y * 7 + X; i++)                    tmpdate.go(Calendar.DATE, 1);                // Check the validity of the month                // if(tmpdate.getMonth() == date.getMonth())                // date = tmpdate;                changeDate(tmpdate);            }            repaint();        }        /** draw the panel */        public void paintComponent(Graphics g) {            super.paintComponent(g);            int sizex = getWidth();            int sizey = getHeight();            // Display the legend at top            g.setColor(Color.white);            g.fillRect(0, 0, sizex, sizey);            // two colors uses            Color gris = new Color((float) 0.827, (float) 0.827, (float) 0.827);            Color bleu = new Color((float) 0.29, (float) 0.349, (float) 0.643);            g.setColor(bleu);            g.fillRect(0, 0, sizex, 15);            String[] dayWeek = date.getDayWeekLanguage();            g.setColor(Color.white);            for (int i = 0; i < dayWeek.length; i++) {                String dw = dayWeek[(i + 1) % 7];                g.drawString(                        dw.substring(0, dw.length() < 3 ? dw.length() : 3), i                                * sizex / 7 + 3, 12);            }            GanttCalendar tmpdate = date.Clone();            TimeZone timeZone = tmpdate.getTimeZone();            tmpdate.setDay(1);            String d = tmpdate.getdayWeek();            while (!d.equals(language.getDay(1))) {                tmpdate.go(Calendar.DATE, -1);                d = tmpdate.getdayWeek();            }            for (int i = 0; i < 6; i++) {                for (int j = 0; j < 7; j++) {                    if (tmpdate.getMonth() != date.getMonth())                        g.setColor(gris);                    else {                        if (tmpdate.getDay() == date.getDay()) {                            g.setColor(bleu);                            g.fillRect(j * sizex / 7 - 1, 15 + i * 15,                                    sizex / 7, 15);                            g.setColor(Color.white);                        } else                            g.setColor(Color.black);                    }                    g.drawString("" + tmpdate.getDate(), j * sizex / 7 + 4,                            30 + i * 15 - 3);                    tmpdate.go(Calendar.DATE, 1);                    if (timeZone != null                            && timeZone.inDaylightTime(tmpdate.getTime())) {                        tmpdate.add(Calendar.MILLISECOND, timeZone                                .getDSTSavings());                        timeZone = null;                    }                }            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -