/*
* Freeplane - A Program for creating and viewing MindmapsCopyright (C) 2007
* Christian Foltin <christianfoltin@users.sourceforge.net>See COPYING for
* DetailsThis program is free software; you can redistribute it and/ormodify it
* under the terms of the GNU General Public Licenseas published by the Free
* Software Foundation; either version 2of the License, or (at your option) any
* later version.This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for
* more details.You should have received a copy of the GNU General Public
* Licensealong with this program; if not, write to the Free SoftwareFoundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* $Id: JTripleCalendar.java,v 1.1.2.2 2007/02/25 21:12:50 christianfoltin Exp $ */
package org.freeplane.core.ui.components.calendar;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
/** */
public class JTripleCalendar extends JPanel implements PropertyChangeListener {
private static class JInfoPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
final private JDayChooser dayChooser;
final private JMonthChooser monthChooser;
final private JYearChooser yearChooser;
public JInfoPanel() {
this.setLayout(new BorderLayout());
final JPanel monthYearPanel = new JPanel();
monthYearPanel.setLayout(new BorderLayout());
monthChooser = new JMonthChooser();
monthChooser.setEnabled(false);
yearChooser = new JYearChooser();
yearChooser.setEnabled(false);
monthYearPanel.add(monthChooser, BorderLayout.WEST);
monthYearPanel.add(yearChooser, BorderLayout.CENTER);
dayChooser = new JDayChooser(true) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void init() {
super.init();
selectedColor = oldDayBackgroundColor;
}
};
dayChooser.setEnabled(false);
this.add(monthYearPanel, BorderLayout.NORTH);
this.add(dayChooser, BorderLayout.CENTER);
}
public void setDate(final Calendar calendar) {
final int year = calendar.get(Calendar.YEAR);
final int month = calendar.get(Calendar.MONTH);
monthChooser.setMonth(month);
yearChooser.setYear(year);
dayChooser.setYear(year);
dayChooser.setMonth(month);
dayChooser.setEnabled(false);
}
}
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(final String[] args) {
final JFrame frame = new JFrame("JTripleCalendar");
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
final JTripleCalendar jcalendar = new JTripleCalendar();
frame.getContentPane().add(jcalendar);
frame.pack();
frame.setVisible(true);
}
final private JCalendar calendarWidget;
final private JInfoPanel leftPanel;
final private JInfoPanel rightPanel;
public JTripleCalendar() {
this.setName("JTripleCalendar");
final GridLayout gridLayout = new GridLayout(1, 3);
gridLayout.setVgap(10);
setLayout(gridLayout);
leftPanel = createInfoPanel();
rightPanel = createInfoPanel();
add(leftPanel);
calendarWidget = new JCalendar();
calendarWidget.addPropertyChangeListener(this);
add(calendarWidget);
add(rightPanel);
}
private JInfoPanel createInfoPanel() {
final JInfoPanel panel = new JInfoPanel();
return panel;
}
public JCalendar getCalendar() {
return calendarWidget;
}
public void propertyChange(final PropertyChangeEvent evt) {
final Calendar gregorianCalendar = (Calendar) calendarWidget.getCalendar().clone();
gregorianCalendar.add(Calendar.MONTH, -1);
leftPanel.setDate(gregorianCalendar);
gregorianCalendar.add(Calendar.MONTH, 2);
rightPanel.setDate(gregorianCalendar);
}
public void setCalendar(final Calendar c) {
calendarWidget.setCalendar(c);
}
public void setDate(final Date date) {
calendarWidget.setDate(date);
}
}