/**
* CompactibilityView.java
* Created On 2006, Apr 8, 2006 1:06:44 PM
* @author E. Rajasekar
*/
package app.astrosoft.ui.view;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Point;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import app.astrosoft.beans.PlanetChartData;
import app.astrosoft.consts.AstrosoftTableColumn;
import app.astrosoft.consts.DisplayStrings;
import app.astrosoft.consts.Language;
import app.astrosoft.consts.TableStyle;
import app.astrosoft.consts.Varga;
import app.astrosoft.core.Ashtavarga;
import app.astrosoft.core.Compactibility;
import app.astrosoft.ui.comp.AstrosoftTabbedPane;
import app.astrosoft.ui.comp.Chart;
import app.astrosoft.ui.comp.TitledTable;
import app.astrosoft.ui.table.AstrosoftTable;
import app.astrosoft.ui.table.AstrosoftTableModel;
import app.astrosoft.ui.table.Cell;
import app.astrosoft.ui.table.SortableTable;
import app.astrosoft.ui.table.SortableTableModel;
import app.astrosoft.ui.util.UIUtil;
import app.astrosoft.ui.window.SphutaLabelModel;
import app.astrosoft.ui.window.TablePopupWindowModel;
import app.astrosoft.ui.window.WindowLabelModel;
public class CompactibilityView extends AstrosoftView {
private static final Dimension tabbedPaneSize = new Dimension(750, 380);
private static final Dimension viewSize = new Dimension(
tabbedPaneSize.width, tabbedPaneSize.height + 20);
private static final Dimension kutaTableSize = new Dimension(240,310);
//private static final Dimension infoTableSize = new Dimension(40,300);
private static final Dimension doshaTableSize = new Dimension(250,134);
private static final Dimension chartSize = new Dimension(340,270);
private Compactibility c;
public CompactibilityView(String title, Compactibility c, Point loc) {
super(title, viewSize, loc);
this.c = c;
AstrosoftTabbedPane tabbedPane = new AstrosoftTabbedPane(tabbedPaneSize);
//Font font = UIUtil.getFont();
//tabbedPane.setFont(font);
tabbedPane.addTab(DisplayStrings.KUTA_STR.toString(Language.ENGLISH), createKutaPanel());
if (c.hasHoroscope()){
tabbedPane.addTab(DisplayStrings.DOSHA_STR.toString(Language.ENGLISH), createDoshaPanel());
tabbedPane.addTab(DisplayStrings.BOY_HOR_STR, createBoyChart());
tabbedPane.addTab(DisplayStrings.GIRL_HOR_STR, createGirlChart());
}
add(tabbedPane, BorderLayout.CENTER);
}
private JPanel createKutaPanel() {
JPanel kutaPanel = new JPanel(new GridLayout(1,3, 10, 10));
SortableTableModel kutaModel = new SortableTableModel(c
.getKutaTableData(), Compactibility.getKutaTableColumnMetaData());
SortableTable kutaTable = new SortableTable(kutaModel, TableStyle.SCROLL);
kutaTable.setColumnWidth(100, AstrosoftTableColumn.Kuta);
kutaTable.setRowColor(13, Color.RED);
AstrosoftTableModel boyModel = new AstrosoftTableModel(c
.getBoyInfo(), Compactibility.getInfoTableColumnMetaData());
AstrosoftTableModel girlModel = new AstrosoftTableModel(c
.getGirlInfo(), Compactibility.getInfoTableColumnMetaData());
AstrosoftTable boyTable = new AstrosoftTable(boyModel, TableStyle.NONE);
AstrosoftTable girlTable = new AstrosoftTable(girlModel, TableStyle.NONE);
boyTable.setColumnWidth(100, AstrosoftTableColumn.Key);
girlTable.setColumnWidth(100, AstrosoftTableColumn.Key);
if (c.hasHoroscope()) {
addPopups(boyTable, boyModel, girlTable, girlModel);
}
TitledTable tablePanel = new TitledTable(kutaTable, kutaTableSize);
//tablePanel.setPreferredSize(new Dimension(kutaTableSize.width , kutaTableSize.height));
//JScrollPane scrollPane = new JScrollPane(kutaTable);
/*kutaPanel.add(boyTable, BorderLayout.WEST);
kutaPanel.add(scrollPane, BorderLayout.CENTER);
kutaPanel.add(girlTable, BorderLayout.EAST);*/
kutaPanel.add(boyTable);
kutaPanel.add(tablePanel);
kutaPanel.add(girlTable);
kutaTable.setPreferredScrollableViewportSize(kutaTableSize);
//boyTable.setPreferredSize(infoTableSize);
//girlTable.setPreferredSize(infoTableSize);
return kutaPanel;
}
private void addPopups(AstrosoftTable boyTable, final AstrosoftTableModel boyModel, AstrosoftTable girlTable, final AstrosoftTableModel girlModel){
TablePopupWindowModel beejaPopup = new TablePopupWindowModel(){
SphutaLabelModel sphutaModel = new SphutaLabelModel();
public WindowLabelModel getModel(Cell cell) {
int colIndex = boyModel.getColumnIndex(AstrosoftTableColumn.Beeja);
sphutaModel.setSphuta((Double)boyModel.getValueAt(cell.row,colIndex));
return sphutaModel;
}
};
boyTable.addCellPopupWindow(new Cell(4), beejaPopup);
TablePopupWindowModel kshetraPopup = new TablePopupWindowModel(){
SphutaLabelModel sphutaModel = new SphutaLabelModel();
public WindowLabelModel getModel(Cell cell) {
int colIndex = girlModel.getColumnIndex(AstrosoftTableColumn.Kshetra);
sphutaModel.setSphuta((Double)(girlModel.getValueAt(cell.row,colIndex)));
return sphutaModel;
}
};
girlTable.addCellPopupWindow(new Cell(4), kshetraPopup);
}
private JPanel createDoshaPanel(){
final AstrosoftTable doshaTable = new AstrosoftTable( new AstrosoftTableModel(c
.getDoshaTableData(), Compactibility.getDoshaTableColumnMetaData()), TableStyle.STANDARD);
doshaTable.setRowColor(5, Color.RED);
doshaTable.setColumnNumberFormat(AstrosoftTableColumn.Boy, new java.text.DecimalFormat("00.00"));
doshaTable.setColumnNumberFormat(AstrosoftTableColumn.Girl, new java.text.DecimalFormat("00.00"));
return new TitledTable(doshaTable, doshaTableSize);
}
private JPanel createBoyChart(){
Chart bRasiChart = new Chart(new PlanetChartData(Varga.Rasi, c.getBoyPlanetaryInfo()), chartSize);
Chart bNavamsaChart = new Chart(new PlanetChartData(Varga.Navamsa, c.getBoyPlanetaryInfo()), chartSize);
JPanel panel = new JPanel(new GridLayout(1,2));
panel.add(bRasiChart);
panel.add(bNavamsaChart);
panel.setPreferredSize(new Dimension(chartSize.width * 2, chartSize.height + 70));
return panel;
}
private JPanel createGirlChart(){
Chart gRasiChart = new Chart(new PlanetChartData(Varga.Rasi, c.getGirlPlanetaryInfo()), chartSize);
Chart gNavamsaChart = new Chart(new PlanetChartData(Varga.Navamsa, c.getGirlPlanetaryInfo()), chartSize);
JPanel panel = new JPanel(new GridLayout(1,2));
panel.add(gRasiChart);
panel.add(gNavamsaChart);
panel.setPreferredSize(new Dimension(chartSize.width * 2, chartSize.height + 70));
return panel;
}
}