// MonthPeriodChooser
package org.javamoney.examples.ez.money.gui.chooser;
import static org.javamoney.examples.ez.common.utility.ButtonHelper.buildButton;
import static org.javamoney.examples.ez.common.utility.DateHelper.getEndOfMonth;
import static org.javamoney.examples.ez.common.utility.DateHelper.getStartOfMonth;
import static org.javamoney.examples.ez.common.utility.I18NHelper.getSharedProperty;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import org.javamoney.examples.ez.common.gui.CheckBox;
import org.javamoney.examples.ez.common.gui.Panel;
import org.javamoney.examples.ez.common.utility.ActionSignaler;
import org.javamoney.examples.ez.common.utility.I18NHelper;
/**
* This class facilitates choosing a month or all months in any year.
*/
public
final
class
MonthPeriodChooser
extends Panel
{
/**
* Constructs a new chooser.
*/
public
MonthPeriodChooser()
{
setActionSignaler(new ActionSignaler());
setCheckBox(new CheckBox());
setMonthChooser(new MonthChooser());
setYearChooser(new YearChooser());
// Build panel.
buildPanel();
}
/**
* This method adds the action listener to the chooser.
*
* @param listener The action listener to add.
*/
public
void
addActionListener(ActionListener listener)
{
getActionSignaler().addListener(listener);
}
/**
* This method returns the chooser's end date.
*
* @return The end date.
*/
public
Date
getEndDate()
{
int month = getMonthChooser().getSelectedMonth();
if(getCheckBox().isSelected() == true)
{
month = 11;
}
return getEndOfMonth(month, getYearChooser().getSelectedYear());
}
/**
* This method returns the chooser's start date.
*
* @return The start date.
*/
public
Date
getStartDate()
{
int month = getMonthChooser().getSelectedMonth();
if(getCheckBox().isSelected() == true)
{
month = 0;
}
return getStartOfMonth(month, getYearChooser().getSelectedYear());
}
//////////////////////////////////////////////////////////////////////////////
// Start of private methods.
//////////////////////////////////////////////////////////////////////////////
private
void
buildPanel()
{
ActionHandler handler = new ActionHandler();
// Build check box.
buildButton(getCheckBox(), getSharedProperty("all"), handler);
// Build panel.
setAnchor(GridBagConstraints.EAST);
add(getProperty("view") + ": ", 0, 0, 1, 1, 100, 100);
setFill(GridBagConstraints.HORIZONTAL);
add(getMonthChooser(), 1, 0, 1, 1, 0, 0);
setAnchor(GridBagConstraints.WEST);
add(getCheckBox(), 2, 0, 1, 1, 0, 0);
addEmptyCellAt(3, 0, 4);
add(getYearChooser(), 4, 0, 1, 1, 0, 0);
addEmptyCellAt(5, 0, 6);
// Add listeners.
getMonthChooser().addActionListener(handler);
getYearChooser().addActionListener(handler);
}
private
ActionSignaler
getActionSignaler()
{
return itsActionSignaler;
}
private
CheckBox
getCheckBox()
{
return itsCheckBox;
}
private
MonthChooser
getMonthChooser()
{
return itsMonthChooser;
}
private
static
String
getProperty(String key)
{
return I18NHelper.getProperty("MonthPeriodChooser." + key);
}
private
YearChooser
getYearChooser()
{
return itsYearChooser;
}
private
void
sendSignal()
{
getActionSignaler().sendSignal(this, getClass().getSimpleName());
}
private
void
setActionSignaler(ActionSignaler signaler)
{
itsActionSignaler = signaler;
}
private
void
setCheckBox(CheckBox checkbox)
{
itsCheckBox = checkbox;
}
private
void
setMonthChooser(MonthChooser chooser)
{
itsMonthChooser = chooser;
}
private
void
setYearChooser(YearChooser chooser)
{
itsYearChooser = chooser;
}
//////////////////////////////////////////////////////////////////////////////
// Start of inner classes.
//////////////////////////////////////////////////////////////////////////////
private
class
ActionHandler
implements ActionListener
{
public
void
actionPerformed(ActionEvent event)
{
// If "All" is selected, then disable the month chooser.
getMonthChooser().setEnabled(getCheckBox().isSelected() == false);
sendSignal();
}
}
//////////////////////////////////////////////////////////////////////////////
// Start of class members.
//////////////////////////////////////////////////////////////////////////////
private ActionSignaler itsActionSignaler;
private CheckBox itsCheckBox;
private MonthChooser itsMonthChooser;
private YearChooser itsYearChooser;
}