⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preferencedialog.java

📁 java xml 应用开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -