📄 preferencedialog.java
字号:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Arrays;
import java.util.ResourceBundle;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.EtchedBorder;
/*
* PreferenceDialog.java
* @author SvenoniusI
*
* History:
* 20040906 MRE preferences for sending to device added
*/
public class PreferenceDialog extends JTabbedPane implements ActionListener
{
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 1350654061722234773L;
final private ImageIcon sweFlag = Editor.getImageIcon(getClass(), "/icons/SwedishFlag.gif");
final private ImageIcon engFlag = Editor.getImageIcon(getClass(), "/icons/GreatBrittainFlag.gif");
final private ImageIcon freFlag = Editor.getImageIcon(getClass(), "/icons/FrenchFlag.gif");
final private ImageIcon gerFlag = Editor.getImageIcon(getClass(), "/icons/GermanFlag.gif");
final private ImageIcon spaFlag = Editor.getImageIcon(getClass(), "/icons/SpanishFlag.gif");
JPanel gen;
JPanel lang;
JPanel lnf;
JPanel dir;
JPanel icon;
JPanel send;
private JButton defaultIconButton;
private JButton changeIconButton;
private JButton applyLnFButton;
private JCheckBox readOnly;
private JCheckBox valOpen;
private JRadioButton swe;
private JRadioButton eng;
private JRadioButton fre;
private JRadioButton ger;
private JRadioButton spa;
private JLabel iconPreview;
private ButtonGroup langGroup = new ButtonGroup();
private String currLang;
private String currIcon;
private String currLNF;
private String currMethodSendToDevice;
private boolean currValidate;
private boolean currReadOnly;
protected Cursor readyCursor;
protected Cursor waitCursor;
private final int GEN_INDEX = 0;
private final int LANG_INDEX = 1;
private final int LNF_INDEX = 2;
private final int DIR_INDEX = 3;
private final int ICON_INDEX = 4;
private final int SEND_INDEX = 5;
private final UIManager.LookAndFeelInfo aLnF[] = UIManager.getInstalledLookAndFeels();
INIReader iniFile;
private ResourceBundle littleBundle;
private String[] iconStrings;
public PreferenceDialog(INIReader ini, ResourceBundle bundle)
{
super();
this.iniFile = ini;
this.littleBundle = bundle;
init();
}
public boolean getReadOnly()
{
return this.currReadOnly;
}
public boolean getAutoVal()
{
return this.currValidate;
}
public String getLNF()
{
return this.currLNF;
}
public String getLanguage()
{
return this.currLang;
}
public String[] getIconStrings()
{
return this.iconStrings;
}
void setCurrentLNF(String lnf)
{
this.currLNF = lnf;
}
void setCurrentLang(String lang)
{
this.currLang = lang;
}
void setMethodSendToDevice(String methodSendToDevice)
{
this.currMethodSendToDevice = methodSendToDevice;
}
public String getMethodSendToDevice()
{
return this.currMethodSendToDevice;
}
private void applyLnF()
{
final JDFFrame f = Editor.getEditor().getFrame();
f.setLookAndFeel(currLNF);
f.applyLookAndFeel();
}
private void init()
{
this.readyCursor = Cursor.getDefaultCursor();
this.waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
this.currLang = this.iniFile.getLanguage();
this.currLNF = this.iniFile.getLookAndFeel();
this.iconStrings = this.iniFile.getIconStrings();
this.currValidate = this.iniFile.autoVal();
this.currReadOnly = this.iniFile.readOnly();
this.currMethodSendToDevice = this.iniFile.getMethodSendToDevice();
this.setPreferredSize(new Dimension(390, 380));
this.addMouseListener(new TabListener());
drawPane();
this.setVisible(true);
}
private void drawPane()
{
this.setCursor(waitCursor);
gen = createGeneralPref();
this.addTab(littleBundle.getString("GeneralKey"), null, gen, littleBundle.getString("GeneralKey"));
this.setComponentAt(GEN_INDEX, gen);
this.setSelectedIndex(GEN_INDEX);
lang = createLanguagePref();
this.addTab(littleBundle.getString("LanguageKey"), null, lang, littleBundle.getString("LanguageKey"));
this.setComponentAt(LANG_INDEX, lang);
lnf = createLnFPref();
this.addTab(littleBundle.getString("LookAndFeelKey"), null, lnf, littleBundle.getString("LookAndFeelKey"));
this.setComponentAt(LNF_INDEX, lnf);
dir = createDirPref();
this.addTab(littleBundle.getString("DirectoriesKey"), null, dir, littleBundle.getString("DirectoriesKey"));
this.setComponentAt(DIR_INDEX, dir);
icon = createIconPref();
this.addTab(littleBundle.getString("IconsKey"), null, icon, littleBundle.getString("IconsKey"));
this.setComponentAt(ICON_INDEX, icon);
//20040905 MRE added
send = createSendToDevicePref();
this.addTab(littleBundle.getString("SendToDeviceKey"), null, send, littleBundle.getString("SendToDeviceKey"));
this.setComponentAt(SEND_INDEX, send);
this.setCursor(readyCursor);
}
JPanel createGeneralPref()
{
final JPanel main = new JPanel(new BorderLayout());
main.add(Box.createVerticalStrut(5), BorderLayout.SOUTH);
main.add(Box.createHorizontalStrut(5), BorderLayout.EAST);
main.add(Box.createHorizontalStrut(5), BorderLayout.WEST);
main.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
final JPanel genPanel = new JPanel(null);
genPanel.setBorder(BorderFactory.createTitledBorder(littleBundle.getString("GeneralOptionsKey")));
int y = 30;
readOnly = new JCheckBox(littleBundle.getString("OpenReadOnlyKey"), currReadOnly);
Dimension d = new Dimension(readOnly.getPreferredSize());
readOnly.setBounds(10, y, d.width, d.height);
readOnly.addActionListener(this);
genPanel.add(readOnly);
y += d.height + 10;
valOpen = new JCheckBox(littleBundle.getString("OpenAutoValKey"), currValidate);
d = new Dimension(valOpen.getPreferredSize());
valOpen.setBounds(10, y, d.width, d.height);
valOpen.addActionListener(this);
genPanel.add(valOpen);
main.add(genPanel, BorderLayout.CENTER);
return main;
}
JPanel createLanguagePref()
{
final JPanel main = new JPanel(new BorderLayout());
final Box northBox = Box.createHorizontalBox();
northBox.add(Box.createHorizontalStrut(10));
final String txt = "<html><br>" + littleBundle.getString("LanguageTitleKey") + "<br></html>";
final JLabel text = new JLabel(txt, SwingConstants.LEFT);
northBox.add(text);
main.add(northBox, BorderLayout.NORTH);
main.add(Box.createVerticalStrut(5), BorderLayout.SOUTH);
main.add(Box.createHorizontalStrut(5), BorderLayout.EAST);
main.add(Box.createHorizontalStrut(5), BorderLayout.WEST);
final JPanel langPanel = new JPanel(null);
langPanel.setBorder(BorderFactory.createTitledBorder(littleBundle.getString("LangSelectKey")));
int y = 30;
final Box sweBox = createRadioLang(swe, sweFlag, "sv", y);
langPanel.add(sweBox);
y += sweBox.getHeight() + 10;
final Box engBox = createRadioLang(eng, engFlag, "en", y);
langPanel.add(engBox);
y += engBox.getHeight() + 10;
final Box gerBox = createRadioLang(ger, gerFlag, "de", y);
langPanel.add(gerBox);
y += gerBox.getHeight() + 10;
final Box spaBox = createRadioLang(spa, spaFlag, "es", y);
langPanel.add(spaBox);
y += spaBox.getHeight() + 10;
final Box freBox = createRadioLang(fre, freFlag, "fr", y);
langPanel.add(freBox);
main.add(langPanel, BorderLayout.CENTER);
return main;
}
JPanel createLnFPref()
{
final ButtonGroup buttonGroup = new ButtonGroup();
final JPanel main = new JPanel(new BorderLayout());
final Box northBox = Box.createHorizontalBox();
northBox.add(Box.createHorizontalStrut(10));
final String txt = "<html><br>" + littleBundle.getString("LnFTitleKey") + "<br></html>";
final JLabel text = new JLabel(txt, SwingConstants.LEFT);
northBox.add(text);
main.add(northBox, BorderLayout.NORTH);
main.add(Box.createVerticalStrut(5), BorderLayout.SOUTH);
main.add(Box.createHorizontalStrut(5), BorderLayout.EAST);
main.add(Box.createHorizontalStrut(5), BorderLayout.WEST);
final JPanel lnfPanel = new JPanel();
lnfPanel.setLayout(null);
lnfPanel.setBorder(BorderFactory.createTitledBorder(littleBundle.getString("LnFSelectKey")));
int y = 30;
for (int i = 0; i < aLnF.length; i++)
{
final String lnfStr = aLnF[i].getClassName();
final boolean sel = lnfStr.equals(currLNF) ? true : false;
final JRadioButton jrb = new JRadioButton(aLnF[i].getName(), sel);
jrb.setActionCommand(lnfStr);
jrb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setCurrentLNF(e.getActionCommand().toString());
}
});
buttonGroup.add(jrb);
final Dimension d = jrb.getPreferredSize();
jrb.setBounds(10, y, d.width, d.height);
lnfPanel.add(jrb);
y += d.height + 10;
}
applyLnFButton = new JButton(littleBundle.getString("ApplyKey"));
final Dimension d = applyLnFButton.getPreferredSize();
applyLnFButton.setBounds(20, y + 10, d.width, d.height);
applyLnFButton.addActionListener(this);
lnfPanel.add(applyLnFButton);
main.add(lnfPanel, BorderLayout.CENTER);
return main;
}
JPanel createDirPref()
{
final JPanel main = new JPanel(new BorderLayout());
main.add(Box.createVerticalStrut(5), BorderLayout.SOUTH);
main.add(Box.createHorizontalStrut(5), BorderLayout.EAST);
main.add(Box.createHorizontalStrut(5), BorderLayout.WEST);
main.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
final JPanel dirPanel = new JPanel(null);
dirPanel.setBorder(BorderFactory.createTitledBorder(littleBundle.getString("DefaultDirsKey")));
main.add(dirPanel, BorderLayout.CENTER);
return main;
}
private Box createRadioLang(JRadioButton jrb, ImageIcon flag, String language, int y)
{
String langStr = "";
if (language.equalsIgnoreCase("sv"))
langStr = littleBundle.getString("SwedishKey");
else if (language.equalsIgnoreCase("en"))
langStr = littleBundle.getString("EnglishKey");
else if (language.equalsIgnoreCase("de"))
langStr = littleBundle.getString("GermanKey");
else if (language.equalsIgnoreCase("es"))
langStr = littleBundle.getString("SpanishKey");
else if (language.equalsIgnoreCase("fr"))
langStr = littleBundle.getString("FrenchKey");
final boolean sel = language.equalsIgnoreCase(currLang);
final Box langBox = Box.createHorizontalBox();
langBox.add(Box.createHorizontalStrut(10));
langBox.add(new JLabel(flag));
jrb = new JRadioButton(langStr);
jrb.setSelected(sel);
jrb.setActionCommand(language);
jrb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setCurrentLang(e.getActionCommand().toString());
}
});
langBox.add(jrb);
langGroup.add(jrb);
langBox.add(Box.createGlue());
final Dimension d = langBox.getPreferredSize();
langBox.setBounds(10, y, d.width, d.height);
return langBox;
}
JPanel createIconPref()
{
final JPanel main = new JPanel(new BorderLayout());
main.add(Box.createVerticalStrut(5), BorderLayout.SOUTH);
main.add(Box.createHorizontalStrut(5), BorderLayout.EAST);
main.add(Box.createHorizontalStrut(5), BorderLayout.WEST);
main.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
final JPanel iconPanel = new JPanel(null);
iconPanel.setBorder(BorderFactory.createTitledBorder(littleBundle.getString("EditorIconsKey")));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -