/* Copyright (c) 2001-2011, The HSQL Development Group
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the HSQL Development Group nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.hsqldb.util;
import java.awt.
Color;
import java.awt.
Container;
import java.awt.
Dimension;
import java.awt.
FlowLayout;
import java.awt.
Font;
import java.awt.
GraphicsEnvironment;
import java.awt.event.
ActionEvent;
import java.awt.event.
ActionListener;
import java.awt.event.
ItemEvent;
import java.awt.event.
ItemListener;
import javax.swing.
ImageIcon;
import javax.swing.
JButton;
import javax.swing.
JCheckBox;
import javax.swing.
JColorChooser;
import javax.swing.
JComboBox;
import javax.swing.
JDialog;
import javax.swing.
JFrame;
// weconsultants@users 20041109 - original swing port
// weconsultants@users 20050215 - version 1.8.0 - Update: Compatbilty fix for JDK 1.3
// - Replaced: Objects JSpinner spinnerFontSizes and SpinnerNumberModel spinnerModelSizes
// for JComboBox fontSizesComboBox and String fontSizes[];
public class
FontDialogSwing extends
JDialog {
private static boolean
isRunning = false;
private static final
String BACKGROUND = "Background";
private static
String defaultFont = "Dialog";
private static final
String FOREGROUND = "Foreground";
private static
JButton bgColorButton;
private static
JCheckBox ckbbold;
private static
JButton closeButton;
private static
JButton fgColorButton;
private static
JComboBox fontsComboBox;
// weconsultants@users 20050215 - Added for Compatbilty fix for JDK 1.3
private static
JComboBox fontSizesComboBox;
private static final
String[]
fontSizes = {
"8", "9", "10", "11", "12", "13", "14", "16", "18", "24", "36"
};
// weconsultants@users 20050215 - Commented out for Compatbilty fix for JDK 1.3
// private static JSpinner spinnerFontSizes;
// private static SpinnerNumberModel spinnerModelSizes;
private static
DatabaseManagerSwing fOwner;
private static
JFrame frame =
new
JFrame("DataBaseManagerSwing Font Selection Dialog");
private static
JCheckBox ckbitalic;
/**
* Create and display FontDialogSwing Dialog.
*
*/
public static void
creatFontDialog(
DatabaseManagerSwing owner) {
if (
isRunning) {
frame.
setVisible(true);
} else {
CommonSwing.
setSwingLAF(
frame,
CommonSwing.
Native);
fOwner =
owner;
frame.
setIconImage(
CommonSwing.
getIcon("Frame"));
isRunning = true;
frame.
setSize(600, 100);
CommonSwing.
setFramePositon(
frame);
ckbitalic = new
JCheckBox(
new
ImageIcon(
CommonSwing.
getIcon("ItalicFont")));
ckbitalic.
putClientProperty("is3DEnabled",
Boolean.
TRUE);
ckbitalic.
addActionListener(new
ActionListener() {
public void
actionPerformed(
ActionEvent e) {
setStyle();
}
});
ckbbold =
new
JCheckBox(new
ImageIcon(
CommonSwing.
getIcon("BoldFont")));
ckbbold.
putClientProperty("is3DEnabled",
Boolean.
TRUE);
ckbbold.
addActionListener(new
ActionListener() {
public void
actionPerformed(
ActionEvent e) {
setStyle();
}
});
fgColorButton = new
JButton(
"Foreground",
new
ImageIcon(
CommonSwing.
getIcon("ColorSelection")));
fgColorButton.
putClientProperty("is3DEnabled",
Boolean.
TRUE);
fgColorButton.
addActionListener(new
ActionListener() {
public void
actionPerformed(
ActionEvent e) {
setColor(
FOREGROUND);
}
});
bgColorButton = new
JButton(
"Background",
new
ImageIcon(
CommonSwing.
getIcon("ColorSelection")));
bgColorButton.
putClientProperty("is3DEnabled",
Boolean.
TRUE);
bgColorButton.
addActionListener(new
ActionListener() {
public void
actionPerformed(
ActionEvent e) {
setColor(
BACKGROUND);
}
});
closeButton =
new
JButton("Close",
new
ImageIcon(
CommonSwing.
getIcon("Close")));
closeButton.
putClientProperty("is3DEnabled",
Boolean.
TRUE);
closeButton.
addActionListener(new
ActionListener() {
public void
actionPerformed(
ActionEvent e) {
frame.
setVisible(false);
}
});
GraphicsEnvironment ge =
GraphicsEnvironment.
getLocalGraphicsEnvironment();
String[]
fontNames =
ge.
getAvailableFontFamilyNames();
Dimension fontsComboBoxDimension = new
Dimension(160, 25);
fontsComboBox = new
JComboBox(
fontNames);
fontsComboBox.
putClientProperty("is3DEnabled",
Boolean.
TRUE);
fontsComboBox.
setMaximumSize(
fontsComboBoxDimension);
fontsComboBox.
setPreferredSize(
fontsComboBoxDimension);
fontsComboBox.
setMaximumSize(
fontsComboBoxDimension);
fontsComboBox.
setEditable(false);
fontsComboBox.
setSelectedItem(
defaultFont);
fontsComboBox.
addActionListener(new
ActionListener() {
public void
actionPerformed(
ActionEvent e) {
setFont();
}
});
// weconsultants@users 20050215 - Added for Compatbilty fix for JDK 1.3
fontSizesComboBox = new
JComboBox(
fontSizes);
Dimension spinnerDimension = new
Dimension(45, 25);
fontSizesComboBox.
putClientProperty("is3DEnabled",
Boolean.
TRUE);
fontSizesComboBox.
setMinimumSize(
spinnerDimension);
fontSizesComboBox.
setPreferredSize(
spinnerDimension);
fontSizesComboBox.
setMaximumSize(
spinnerDimension);
fontSizesComboBox.
addItemListener(new
ItemListener() {
public void
itemStateChanged(
ItemEvent evt) {
if (
evt.
getStateChange() ==
ItemEvent.
SELECTED) {
setFontSize((
String)
evt.
getItem());
}
}
});
// weconsultants@users 20050215 - Commented out for Compatbilty fix for JDK 1.3
// Dimension spinnerDimension = new Dimension(50, 25);
// spinnerFontSizes = new JSpinner();
// spinnerFontSizes.putClientProperty("is3DEnabled", Boolean.TRUE);
// spinnerFontSizes.setMinimumSize(spinnerDimension);
// spinnerFontSizes.setPreferredSize(spinnerDimension);
// spinnerFontSizes.setMaximumSize(spinnerDimension);
// spinnerModelSizes = new SpinnerNumberModel(12, 8, 72, 1);
// spinnerFontSizes.setModel(spinnerModelSizes);
// spinnerFontSizes.addChangeListener(new ChangeListener() {
// public void stateChanged(ChangeEvent e) {
// setFontSize();
// }
// });
Container contentPane =
frame.
getContentPane();
contentPane.
setLayout(new
FlowLayout());
contentPane.
add(
fontsComboBox);
// weconsultants@users 20050215 - Commented out for Compatbilty fix for 1.3
// contentPane.add(spinnerFontSizes);
// weconsultants@users 20050215 - Added for Compatbilty fix for 1.3
contentPane.
add(
fontSizesComboBox);
contentPane.
add(
ckbbold);
contentPane.
add(
ckbitalic);
contentPane.
add(
fgColorButton);
contentPane.
add(
bgColorButton);
contentPane.
add(
closeButton);
frame.
pack();
frame.
setVisible(false);
}
}
public static void
setFont() {
Font txtResultFont =
fOwner.
txtResult.
getFont();
fOwner.
txtResult.
setFont(
new
Font(
fontsComboBox.
getSelectedItem().
toString(),
txtResultFont.
getStyle(),
txtResultFont.
getSize()));
Font txtCommandFont =
fOwner.
txtResult.
getFont();
fOwner.
txtCommand.
setFont(
new
Font(
fontsComboBox.
getSelectedItem().
toString(),
txtCommandFont.
getStyle(),
txtCommandFont.
getSize()));
Font txtTreeFont =
fOwner.
txtResult.
getFont();
fOwner.
tTree.
setFont(
new
Font(
fontsComboBox.
getSelectedItem().
toString(),
txtTreeFont.
getStyle(),
txtTreeFont.
getSize()));
}
/**
* Displays a color chooser and Sets the selected color.
*/
public static void
setFontSize(
String inFontSize) {
// weconsultants@users 20050215 - Changed for Compatbilty fix for JDK 1.3
// Convert Strng to float for deriveFont() call
Float stageFloat = new
Float(
inFontSize);
float
fontSize =
stageFloat.
floatValue();
Font fonttTree =
fOwner.
tTree.
getFont().
deriveFont(
fontSize);
fOwner.
tTree.
setFont(
fonttTree);
Font fontTxtCommand =
fOwner.
txtCommand.
getFont().
deriveFont(
fontSize);
fOwner.
txtCommand.
setFont(
fontTxtCommand);
Font fontTxtResult =
fOwner.
txtResult.
getFont().
deriveFont(
fontSize);
fOwner.
txtResult.
setFont(
fontTxtResult);
}
/**
* Changes the style (Bold, Italic ) of the selected text by checking the
* style buttons
*/
public static void
setStyle() {
int
style =
Font.
PLAIN;
if (
ckbbold.
isSelected()) {
style |=
Font.
BOLD;
}
if (
ckbitalic.
isSelected()) {
style |=
Font.
ITALIC;
}
fOwner.
tTree.
setFont(
fOwner.
txtCommand.
getFont().
deriveFont(
style));
fOwner.
txtCommand.
setFont(
fOwner.
txtCommand.
getFont().
deriveFont(
style));
fOwner.
txtResult.
setFont(
fOwner.
txtResult.
getFont().
deriveFont(
style));
}
public static void
setColor(
String inTarget) {
if (
inTarget.
equals(
BACKGROUND)) {
Color backgroundColor =
JColorChooser.
showDialog(null,
"DataBaseManagerSwing Choose Background Color",
fOwner.
txtResult.
getBackground());
if (
backgroundColor != null) {
bgColorButton.
setBackground(
backgroundColor);
fOwner.
txtCommand.
setBackground(
backgroundColor);
fOwner.
txtResult.
setBackground(
backgroundColor);
}
} else {
Color foregroundColor =
JColorChooser.
showDialog(null,
"DataBaseManagerSwing Choose Foreground Color",
fOwner.
txtResult.
getForeground());
if (
foregroundColor != null) {
fgColorButton.
setBackground(
foregroundColor);
fOwner.
txtCommand.
setForeground(
foregroundColor);
fOwner.
txtResult.
setForeground(
foregroundColor);
}
}
}
}