package org.basex.gui.dialog;
import static org.basex.core.Text.*;
import java.awt.BorderLayout;
import java.awt.GraphicsEnvironment;
import org.basex.gui.GUI;
import org.basex.gui.GUIProp;
import org.basex.gui.layout.BaseXBack;
import org.basex.gui.layout.BaseXList;
import org.basex.gui.layout.TableLayout;
/**
* Dialog window for changing the used fonts.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
public final class DialogFonts extends Dialog {
/** Predefined font sizes. */
private static final String[] FTSZ =
{ "8", "10", "12", "14", "16", "18", "20", "22", "24", "32" };
/** Font name chooser. */
private final BaseXList font;
/** Font name chooser. */
private final BaseXList font2;
/** Font type chooser. */
private final BaseXList type;
/** Font size chooser. */
private final BaseXList size;
/**
* Default constructor.
* @param main reference to the main window
*/
public DialogFonts(final GUI main) {
super(main, CHOOSE_FONT, false);
final String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().
getAvailableFontFamilyNames();
final BaseXBack p = new BaseXBack(new TableLayout(1, 4, 8, 0));
font = new BaseXList(fonts, this);
p.add(font);
font2 = new BaseXList(fonts, this);
p.add(font2);
type = new BaseXList(FONT_TYPES, this);
type.setWidth(90);
p.add(type);
size = new BaseXList(FTSZ, this);
size.setWidth(50);
p.add(size);
final GUIProp gprop = gui.gprop;
font.setValue(gprop.get(GUIProp.FONT));
font2.setValue(gprop.get(GUIProp.MONOFONT));
type.setValue(FONT_TYPES[gprop.num(GUIProp.FONTTYPE)]);
size.setValue(Integer.toString(gui.gprop.num(GUIProp.FONTSIZE)));
set(p, BorderLayout.CENTER);
finish(gprop.nums(GUIProp.FONTSLOC));
}
@Override
public void action(final Object cmp) {
final GUIProp gprop = gui.gprop;
gprop.set(GUIProp.FONT, font.getValue());
gprop.set(GUIProp.MONOFONT, font2.getValue());
gprop.set(GUIProp.FONTTYPE, type.getIndex());
gprop.set(GUIProp.FONTSIZE, size.getNum());
font.setFont(font.getValue(), type.getIndex());
font2.setFont(font2.getValue(), type.getIndex());
gui.updateLayout();
}
}