/**
* PanchangView.java
* Created On 2006, May 8, 2006 6:27:10 PM
* @author E. Rajasekar
*/
package app.astrosoft.ui.view;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.ScrollPane;
import java.util.Date;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIDefaults;
import javax.swing.table.TableCellRenderer;
import app.astrosoft.consts.AstrosoftTableColumn;
import app.astrosoft.consts.DisplayStrings;
import app.astrosoft.consts.TableStyle;
import app.astrosoft.core.Panchang;
import app.astrosoft.ui.comp.CalendarChooser;
import app.astrosoft.ui.comp.Chart;
import app.astrosoft.ui.comp.DateListener;
import app.astrosoft.ui.table.AstrosoftTable;
import app.astrosoft.ui.table.AstrosoftTableModel;
import app.astrosoft.ui.table.MultiLineCellRenderer;
import app.astrosoft.ui.util.UIConsts;
import app.astrosoft.ui.util.UIUtil;
public class PanchangView extends AstrosoftView{
private static final Dimension viewSize = new Dimension(750, 450);
//private static final Dimension panTableSize = new Dimension(350, 400);
private static final Dimension chartSize = new Dimension(350, 300);
private static final int KeyColWidth = 130;
private static final int ValueColWidth = 250;
private static final int RowHeight = 30;
private static final int AusRowHeight = 100;
private static final Dimension headerSize = new Dimension(KeyColWidth + ValueColWidth , RowHeight);
private CalendarChooser dateChooser;
private Panchang pan;
private AstrosoftTableModel panTableModel;
private AstrosoftTable panTable;
public PanchangView(Panchang pan, Point loc) {
super(viewSize, loc);
this.pan = pan;
final JPanel panPanel = new JPanel(new BorderLayout());
panPanel.add(createPanTable(), BorderLayout.WEST);
final JPanel chartPanel = createChartPanel();
panPanel.add(chartPanel, BorderLayout.EAST);
dateChooser.addDateListener(new DateListener(){
public void dateChanged(Date date) {
Panchang newPan = new Panchang(date);
panTableModel.updateData(newPan.getPanchangTableData());
panTable.setRowHeight(Panchang.AUS_TIME_ROW, AusRowHeight);
panPanel.remove(chartPanel);
chartPanel.removeAll();
chartPanel.add(new Chart(newPan.getPlanetChartData(), chartSize));
panPanel.add(chartPanel, BorderLayout.EAST);
}
});
add(panPanel);
}
private JPanel createChartPanel(){
Chart panChart = new Chart(pan.getPlanetChartData(), chartSize);
JPanel chartPanel = new JPanel();
chartPanel.add(panChart);
return chartPanel;
}
private JPanel createPanTable(){
panTableModel = new AstrosoftTableModel(pan.getPanchangTable());
panTable = new AstrosoftTable(panTableModel, TableStyle.GRID){
TableCellRenderer multiLineRenderer = new MultiLineCellRenderer(",");
//@Override
public TableCellRenderer getCellRenderer(int row, int col) {
if (row == Panchang.AUS_TIME_ROW && col == 1){
//return new MultiLineCellRenderer(",");
return multiLineRenderer;
}
return super.getCellRenderer(row, col);
}
};
panTable.setColumnWidth(ValueColWidth, AstrosoftTableColumn.Value);
panTable.setColumnWidth(KeyColWidth, AstrosoftTableColumn.Key);
panTable.setRowHeight(RowHeight);
panTable.setRowHeight(Panchang.AUS_TIME_ROW, AusRowHeight);
JPanel tablePanel = new JPanel(new BorderLayout());
JPanel tableBodyPanel = new JPanel();
tableBodyPanel.add(panTable);
tablePanel.add(createPanTableHeader(), BorderLayout.PAGE_START);
tablePanel.add(tableBodyPanel, BorderLayout.CENTER);
//tablePanel.setBorder(BorderFactory.createEtchedBorder());
//tableBodyPanel.setPreferredSize(panTable.getPreferredSize());
//tablePanel.setPreferredSize(panTable.getPreferredSize());
return tablePanel;
}
private JPanel createPanTableHeader(){
dateChooser = CalendarChooser.getDateChooser();
JPanel dateChooserPanel = dateChooser.getChooser();
JPanel headerPanel = new JPanel(new BorderLayout());
JLabel label = new JLabel(DisplayStrings.DATE_STR.toString());
label.setFont(UIUtil.getFont());
headerPanel.add(label, BorderLayout.WEST);
headerPanel.add(dateChooserPanel, BorderLayout.EAST);
headerPanel.setBorder(BorderFactory.createEtchedBorder());
label.setPreferredSize(new Dimension(KeyColWidth , RowHeight));
dateChooserPanel.setPreferredSize(new Dimension(ValueColWidth , RowHeight));
headerPanel.setPreferredSize(headerSize);
headerPanel.setBackground(UIConsts.TABLE_HEADER_BACKGROUND);
label.setForeground(UIConsts.TABLE_HEADER_FOREGROUND);
dateChooser.setBackground(UIConsts.TABLE_HEADER_BACKGROUND);
dateChooser.setForeground(UIConsts.TABLE_HEADER_FOREGROUND);
dateChooser.setSelectedDate(pan.getDate().getTime());
JPanel outerPanel = new JPanel();
outerPanel.add(headerPanel);
return outerPanel;
}
}