/*
* TabsPanel.java
* Copyright 2010(C) James Dempsey
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Created on 17/11/2010 19:50:00
*
* $Id$
*/
package pcgen.gui2.prefs;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import pcgen.cdom.base.Constants;
import pcgen.core.SettingsHandler;
import pcgen.gui2.tools.Utility;
import pcgen.gui2.util.JComboBoxEx;
import pcgen.system.LanguageBundle;
import pcgen.util.Logging;
/**
* The Class {@code TabsPanel} is responsible for
* displaying tabs display related preferences and allowing the
* preferences to be edited by the user.
*
*
* @author James Dempsey <jdempsey@users.sourceforge.net>
*/
@SuppressWarnings("serial")
public class TabsPanel extends PCGenPrefsPanel
{
private static String in_tabs = LanguageBundle.getString("in_Prefs_tabs");
private static String in_charTabPlacement =
LanguageBundle.getString("in_Prefs_charTabPlacement");
private static String in_charTabLabel =
LanguageBundle.getString("in_Prefs_charTabLabel");
private static String in_mainTabPlacement =
LanguageBundle.getString("in_Prefs_mainTabPlacement");
private static String in_tabLabelPlain =
LanguageBundle.getString("in_Prefs_tabLabelPlain");
private static String in_tabLabelEpic =
LanguageBundle.getString("in_Prefs_tabLabelEpic");
private static String in_tabLabelRace =
LanguageBundle.getString("in_Prefs_tabLabelRace");
private static String in_tabLabelNetHack =
LanguageBundle.getString("in_Prefs_tabLabelNetHack");
private static String in_tabLabelFull =
LanguageBundle.getString("in_Prefs_tabLabelFull");
private static String in_tabPosTop =
LanguageBundle.getString("in_Prefs_tabPosTop");
private static String in_tabPosBottom =
LanguageBundle.getString("in_Prefs_tabPosBottom");
private static String in_tabPosLeft =
LanguageBundle.getString("in_Prefs_tabPosLeft");
private static String in_tabPosRight =
LanguageBundle.getString("in_Prefs_tabPosRight");
private JComboBoxEx charTabPlacementCombo;
private JComboBoxEx mainTabPlacementCombo;
private JComboBoxEx tabLabelsCombo;
/**
* Instantiates a new Tabs panel.
*/
public TabsPanel()
{
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
JLabel label;
Border etched = null;
TitledBorder title1 = BorderFactory.createTitledBorder(etched, in_tabs);
title1.setTitleJustification(TitledBorder.LEFT);
this.setBorder(title1);
gridbag = new GridBagLayout();
this.setLayout(gridbag);
c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.WEST;
c.insets = new Insets(2, 2, 2, 2);
Utility.buildConstraints(c, 0, 0, 2, 1, 0, 0);
label = new JLabel(in_mainTabPlacement + ": ");
gridbag.setConstraints(label, c);
this.add(label);
Utility.buildConstraints(c, 2, 0, 1, 1, 0, 0);
mainTabPlacementCombo =
new JComboBoxEx(new String[]{in_tabPosTop, in_tabPosBottom,
in_tabPosLeft, in_tabPosRight});
gridbag.setConstraints(mainTabPlacementCombo, c);
this.add(mainTabPlacementCombo);
Utility.buildConstraints(c, 0, 1, 2, 1, 0, 0);
label = new JLabel(in_charTabPlacement + ": ");
gridbag.setConstraints(label, c);
this.add(label);
Utility.buildConstraints(c, 2, 1, 1, 1, 0, 0);
charTabPlacementCombo =
new JComboBoxEx(new String[]{in_tabPosTop, in_tabPosBottom,
in_tabPosLeft, in_tabPosRight});
gridbag.setConstraints(charTabPlacementCombo, c);
this.add(charTabPlacementCombo);
Utility.buildConstraints(c, 0, 2, 2, 1, 0, 0);
label = new JLabel(in_charTabLabel + ": ");
gridbag.setConstraints(label, c);
this.add(label);
Utility.buildConstraints(c, 2, 2, 1, 1, 0, 0);
tabLabelsCombo =
new JComboBoxEx(new String[]{in_tabLabelPlain, in_tabLabelEpic,
in_tabLabelRace, in_tabLabelNetHack, in_tabLabelFull});
gridbag.setConstraints(tabLabelsCombo, c);
this.add(tabLabelsCombo);
Utility.buildConstraints(c, 5, 20, 1, 1, 1, 1);
c.fill = GridBagConstraints.BOTH;
label = new JLabel(" ");
gridbag.setConstraints(label, c);
this.add(label);
}
/* (non-Javadoc)
* @see pcgen.gui2.prefs.PCGenPrefsPanel#getTitle()
*/
@Override
public String getTitle()
{
return in_tabs;
}
/* (non-Javadoc)
* @see pcgen.gui2.prefs.PreferencesPanel#applyPreferences()
*/
@Override
public void setOptionsBasedOnControls()
{
switch (mainTabPlacementCombo.getSelectedIndex())
{
case 0:
SettingsHandler.setTabPlacement(SwingConstants.TOP);
break;
case 1:
SettingsHandler.setTabPlacement(SwingConstants.BOTTOM);
break;
case 2:
SettingsHandler.setTabPlacement(SwingConstants.LEFT);
break;
case 3:
SettingsHandler.setTabPlacement(SwingConstants.RIGHT);
break;
default:
Logging
.errorPrint("In PreferencesDialog.setOptionsBasedOnControls (mainTabPlacementCombo) the index "
+ mainTabPlacementCombo.getSelectedIndex()
+ " is unsupported.");
break;
}
switch (charTabPlacementCombo.getSelectedIndex())
{
case 0:
SettingsHandler.setChaTabPlacement(SwingConstants.TOP);
break;
case 1:
SettingsHandler.setChaTabPlacement(SwingConstants.BOTTOM);
break;
case 2:
SettingsHandler.setChaTabPlacement(SwingConstants.LEFT);
break;
case 3:
SettingsHandler.setChaTabPlacement(SwingConstants.RIGHT);
break;
default:
Logging
.errorPrint("In PreferencesDialog.setOptionsBasedOnControls (charTabPlacementCombo) the index "
+ charTabPlacementCombo.getSelectedIndex()
+ " is unsupported.");
break;
}
switch (tabLabelsCombo.getSelectedIndex())
{
case 0:
SettingsHandler
.setNameDisplayStyle(Constants.DISPLAY_STYLE_NAME);
break;
case 1:
SettingsHandler
.setNameDisplayStyle(Constants.DISPLAY_STYLE_NAME_CLASS);
break;
case 2:
SettingsHandler
.setNameDisplayStyle(Constants.DISPLAY_STYLE_NAME_RACE);
break;
case 3:
SettingsHandler
.setNameDisplayStyle(Constants.DISPLAY_STYLE_NAME_RACE_CLASS);
break;
case 4:
SettingsHandler
.setNameDisplayStyle(Constants.DISPLAY_STYLE_NAME_FULL);
break;
default:
Logging
.errorPrint("In PreferencesDialog.setOptionsBasedOnControls (tabLabelsCombo) the index "
+ tabLabelsCombo.getSelectedIndex()
+ " is unsupported.");
break;
}
}
/* (non-Javadoc)
* @see pcgen.gui2.prefs.PreferencesPanel#initPreferences()
*/
@Override
public void applyOptionValuesToControls()
{
switch (SettingsHandler.getTabPlacement())
{
case SwingConstants.TOP:
mainTabPlacementCombo.setSelectedIndex(0);
break;
case SwingConstants.BOTTOM:
mainTabPlacementCombo.setSelectedIndex(1);
break;
case SwingConstants.LEFT:
mainTabPlacementCombo.setSelectedIndex(2);
break;
case SwingConstants.RIGHT:
mainTabPlacementCombo.setSelectedIndex(3);
break;
default:
Logging
.errorPrint("In PreferencesDialog.applyOptionValuesToControls (tab placement) the tab option "
+ SettingsHandler.getTabPlacement()
+ " is unsupported.");
break;
}
switch (SettingsHandler.getChaTabPlacement())
{
case SwingConstants.TOP:
charTabPlacementCombo.setSelectedIndex(0);
break;
case SwingConstants.BOTTOM:
charTabPlacementCombo.setSelectedIndex(1);
break;
case SwingConstants.LEFT:
charTabPlacementCombo.setSelectedIndex(2);
break;
case SwingConstants.RIGHT:
charTabPlacementCombo.setSelectedIndex(3);
break;
default:
Logging
.errorPrint("In PreferencesDialog.applyOptionValuesToControls (cha tab placement) the tab option "
+ SettingsHandler.getChaTabPlacement()
+ " is unsupported.");
break;
}
switch (SettingsHandler.getNameDisplayStyle())
{
case Constants.DISPLAY_STYLE_NAME:
tabLabelsCombo.setSelectedIndex(0);
break;
case Constants.DISPLAY_STYLE_NAME_CLASS:
tabLabelsCombo.setSelectedIndex(1);
break;
case Constants.DISPLAY_STYLE_NAME_RACE:
tabLabelsCombo.setSelectedIndex(2);
break;
case Constants.DISPLAY_STYLE_NAME_RACE_CLASS:
tabLabelsCombo.setSelectedIndex(3);
break;
case Constants.DISPLAY_STYLE_NAME_FULL:
tabLabelsCombo.setSelectedIndex(4);
break;
default:
Logging
.errorPrint("In PreferencesDialog.applyOptionValuesToControls (name display style) the tab option "
+ SettingsHandler.getNameDisplayStyle()
+ " is unsupported.");
break;
}
}
}