// TotalsView
package org.javamoney.examples.ez.money.gui.view;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.javamoney.examples.ez.money.gui.chooser.CategoryTotalsFilterChooser;
import org.javamoney.examples.ez.money.gui.chooser.DatePeriodChooser;
import org.javamoney.examples.ez.money.gui.view.totals.TotalsPanel;
import org.javamoney.examples.ez.money.report.TotalReportTypeKeys;
import org.javamoney.examples.ez.common.gui.ComboBox;
import org.javamoney.examples.ez.common.gui.Panel;
import org.javamoney.examples.ez.common.utility.I18NHelper;
/**
* This class facilitates viewing totals.
*/
public
final
class
TotalsView
extends View
{
/**
* Constructs a new view.
*/
public
TotalsView()
{
super(ViewKeys.TOTALS);
setDatePeriodChooser(new DatePeriodChooser());
setFilterChooser(new CategoryTotalsFilterChooser());
setTotalsChooser(new ComboBox(TotalReportTypeKeys.values()));
setTotalsPanel(new TotalsPanel());
buildPanel();
}
/**
* This method updates the view.
*/
@Override
public
void
updateView()
{
getDatePeriodChooser().updateView();
getTotalsPanel().updateView(getDatePeriodChooser().getStartDate(),
getDatePeriodChooser().getEndDate(), getFilterChooser().getFilter());
}
//////////////////////////////////////////////////////////////////////////////
// Start of private methods.
//////////////////////////////////////////////////////////////////////////////
private
void
buildPanel()
{
ActionHandler handler = new ActionHandler();
int height = 4;
// Build panel.
addEmptyRowsAt(0, 0, height);
setFill(GridBagConstraints.BOTH);
add(createToolsPanel(), 1, 0, 1, height, 100, 0);
add(getFilterChooser(), 0, height, 2, 1, 0, 0);
add(getTotalsPanel(), 0, height + 1, 2, 1, 0, 100);
// Add listeners.
getDatePeriodChooser().addActionListener(handler);
getFilterChooser().addActionListener(handler);
getTotalsChooser().addActionListener(handler);
}
private
Panel
createChooserPanel()
{
Panel panel = new Panel();
// Build panel.
panel.setAnchor(GridBagConstraints.EAST);
panel.add(getProperty("show") + ": ", 0, 0, 1, 1, 0, 0);
panel.setFill(GridBagConstraints.HORIZONTAL);
panel.add(getTotalsChooser(), 1, 0, 1, 1, 0, 0);
// This spacer is to ensure adequate width for the panel chooser.
panel.addEmptyCellAt(1, 1, 20);
return panel;
}
private
Panel
createToolsPanel()
{
Panel panel = new Panel();
// Build panel.
panel.setFill(GridBagConstraints.BOTH);
panel.addEmptyCellAt(0, 0);
panel.add(createChooserPanel(), 0, 1, 1, 1, 0, 100);
panel.add(getDatePeriodChooser(), 1, 1, 1, 1, 100, 0);
return panel;
}
private
DatePeriodChooser
getDatePeriodChooser()
{
return itsDatePeriodChooser;
}
private
CategoryTotalsFilterChooser
getFilterChooser()
{
return itsFilterChooser;
}
private
static
String
getProperty(String key)
{
return I18NHelper.getProperty("TotalsView." + key);
}
private
ComboBox
getTotalsChooser()
{
return itsTotalsChooser;
}
private
TotalsPanel
getTotalsPanel()
{
return itsTotalsPanel;
}
private
void
setDatePeriodChooser(DatePeriodChooser chooser)
{
itsDatePeriodChooser = chooser;
}
private
void
setFilterChooser(CategoryTotalsFilterChooser chooser)
{
itsFilterChooser = chooser;
}
private
void
setTotalsChooser(ComboBox chooser)
{
itsTotalsChooser = chooser;
}
private
void
setTotalsPanel(TotalsPanel panel)
{
itsTotalsPanel = panel;
}
//////////////////////////////////////////////////////////////////////////////
// Start of inner classes.
//////////////////////////////////////////////////////////////////////////////
private
class
ActionHandler
implements ActionListener
{
public
void
actionPerformed(ActionEvent event)
{
if(event.getSource() == getTotalsChooser())
{
TotalReportTypeKeys key = (TotalReportTypeKeys)getTotalsChooser().getSelectedItem();
getTotalsPanel().showTotalsFor(key);
}
else
{
updateView();
}
}
}
//////////////////////////////////////////////////////////////////////////////
// Start of class members.
//////////////////////////////////////////////////////////////////////////////
private DatePeriodChooser itsDatePeriodChooser;
private CategoryTotalsFilterChooser itsFilterChooser;
private ComboBox itsTotalsChooser;
private TotalsPanel itsTotalsPanel;
}