/*
* AstrosoftMenuBar.java
*
* Created on August 6, 2005, 7:51 PM
*
* @author E. Rajasekar.
*/
package app.astrosoft.ui.comp;
import java.awt.Color;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import javax.swing.ButtonGroup;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSeparator;
import javax.swing.SwingConstants;
import app.astrosoft.consts.Command;
import app.astrosoft.consts.Ayanamsa;
import app.astrosoft.pref.AstrosoftPref;
import app.astrosoft.ui.AstroSoft;
import app.astrosoft.ui.AstrosoftActionManager;
public class AstrosoftMenuBar extends JMenuBar
{
List<JMenu> menus;
JMenu[] viewSubMenus;
JMenu[] optionSubMenus;
JMenuItem[] fileMenuItems;
JMenuItem[] editMenuItems;
JMenuItem[] viewMenuItems;
JMenuItem[] computeMenuItems;
JMenuItem[] optionMenuItems;
JRadioButtonMenuItem[] ayaMenuItems;
JRadioButtonMenuItem[] langMenuItems;
AstrosoftActionManager actionMgr;
public AstrosoftMenuBar(AstrosoftActionManager actionMgr) {
this.actionMgr = actionMgr;
menus = new ArrayList<JMenu>();
// File Menu
JMenu menu = new JMenu( "File" );
EnumSet<Command> fileItems = Command.fileMenuItems();
fileMenuItems = new JMenuItem[fileItems.size()];
int i = 0;
for(Command fileItem : fileItems){
fileMenuItems[i++] = new JMenuItem( actionMgr.getAction( fileItem ));
}
menus.add(menu);
addMenuItems(menu, fileMenuItems);
// Edit Menu
EnumSet<Command> editItems = Command.editMenuItems();
menu = new JMenu( "Edit " );
editMenuItems = new JMenuItem[editItems.size()];
i = 0;
for(Command editItem : editItems){
editMenuItems[i++] = new JMenuItem( actionMgr.getAction( editItem ));
}
addMenuItems(menu, editMenuItems);
menus.add(menu);
//AstrosoftView Menu
menu = new JMenu( "View" );
viewSubMenus = new JMenu[1];
viewMenuItems = new JMenuItem[10];
viewMenuItems[0] = new JMenuItem( actionMgr.getAction( Command.CHART_VIEW));
addMenuItems(menu,viewMenuItems,0,0);
viewMenuItems[1] = new JMenuItem( actionMgr.getAction( Command.DASAS_VIEW )) ;
viewMenuItems[2] = new JMenuItem( actionMgr.getAction( Command.PLANET_POS_VIEW )) ;
viewMenuItems[3] = new JMenuItem( actionMgr.getAction( Command.BHAVA_POS_VIEW)) ;
viewMenuItems[4] = new JMenuItem( actionMgr.getAction( Command.DIV_CHART_VIEW ) ) ;
viewMenuItems[5] = new JMenuItem( actionMgr.getAction( Command.ASHTAVARGA_VIEW )) ;
viewMenuItems[6] = new JMenuItem( actionMgr.getAction( Command.SHADBALA_VIEW ) );
viewMenuItems[7] = new JMenuItem( actionMgr.getAction( Command.YOGA_COMBINATIONS_VIEW ) );
addMenuItems(menu,viewMenuItems,1,7 );
menu.add(new JSeparator(SwingConstants.HORIZONTAL));
viewMenuItems[8] = new JMenuItem( actionMgr.getAction( Command.EPHEMERIS_VIEW ) );
viewMenuItems[9] = new JMenuItem( actionMgr.getAction( Command.PANCHANG_VIEW ) );
addMenuItems(menu,viewMenuItems,8,9 );
menus.add(menu);
// Compute Menu
menu = new JMenu( "Compute" );
EnumSet<Command> compItems = Command.computeMenuItems();
computeMenuItems = new JMenuItem[compItems.size()];
i = 0;
for(Command compItem : compItems){
computeMenuItems[i++] = new JMenuItem( actionMgr.getAction( compItem ) );
}
addMenuItems(menu, computeMenuItems);
menus.add(menu);
constructNumerologyMenu();
//constructExportMenu();
// Option Menu
menu = new JMenu( "Options" );
optionSubMenus = new JMenu[2];
// Option Ayanamsa Sub Menu
optionSubMenus[0] = new JMenu( "Ayanamsa " );
ButtonGroup ayaBtnGrp = new ButtonGroup( );
EnumSet<Command> ayaOptions = Command.ayanamsaOptions();
ayaMenuItems = new JRadioButtonMenuItem[ayaOptions.size()];
i = 0;
for ( Command ayanamsa : ayaOptions ) {
ayaMenuItems[i] =
new JRadioButtonMenuItem( actionMgr.getAction( ayanamsa) );
optionSubMenus[0].add( ayaMenuItems[i] );
ayaBtnGrp.add( ayaMenuItems[i] );
i++;
}
//Option Language Sub Menu
optionSubMenus[1] = new JMenu( "Language " );
ButtonGroup langBtnGrp = new ButtonGroup( );
EnumSet<Command> langOptions = Command.langOptions();
langMenuItems = new JRadioButtonMenuItem[langOptions.size()];
i = 0;
for ( Command lang : Command.langOptions() ) {
langMenuItems[i] = new JRadioButtonMenuItem( actionMgr.getAction( lang) );
optionSubMenus[1].add( langMenuItems[i] );
langBtnGrp.add( langMenuItems[i] );
i++;
}
addSubMenus(menu, optionSubMenus);
//Rest of option menuitems
EnumSet<Command> optionItems = Command.optionMenuItems();
JMenuItem []optionMenuItems = new JMenuItem[optionItems.size()];
i = 0;
for(Command optionItem : optionItems){
optionMenuItems[i++] = new JMenuItem( actionMgr.getAction( optionItem ));
}
addMenuItems(menu, optionMenuItems);
menus.add(menu);
AstrosoftPref preferences = AstroSoft.getPreferences();
ayaMenuItems[preferences.getAyanamsa().ordinal()].setSelected( true );
langMenuItems[preferences.getLanguage().ordinal()].setSelected( true );
addAllMenus();
}
private void addMenuItems(JMenu menu, JMenuItem[] items){
for(JMenuItem item:items){
menu.add(item);
item.setIcon(null);
}
}
private void addMenuItems(JMenu menu, JMenuItem[] items, int startIndex, int endIndex){
for(int i = startIndex; i <= endIndex; i++){
menu.add(items[i]);
items[i].setIcon(null);
}
}
private void addSubMenus(JMenu menu, JMenu[] subMenus){
for(JMenuItem subMenu:subMenus){
menu.add(subMenu);
}
}
private void addAllMenus(){
for(JMenu menu:menus){
add(menu);
}
}
private void constructNumerologyMenu(){
JMenu menu = new JMenu(" Numerology ");
EnumSet<Command> numeroItems = Command.numeroMenuItems();
JMenuItem[] numeroMenuItems = new JMenuItem[numeroItems.size()];
int i = 0;
for(Command numeroItem : numeroItems){
numeroMenuItems[i++] = new JMenuItem( actionMgr.getAction( numeroItem ));
}
addMenuItems(menu, numeroMenuItems);
menus.add(menu);
}
private void constructExportMenu() {
JMenu menu = new JMenu(" Export ");
EnumSet<Command> exporItems = Command.exportMenuItems();
JMenuItem[] exportMenuItems = new JMenuItem[exporItems.size()];
int i = 0;
for(Command exporMenuItem : exporItems){
exportMenuItems[i++] = new JMenuItem( actionMgr.getAction( exporMenuItem ));
}
addMenuItems(menu, exportMenuItems);
menus.add(menu);
}
}