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

📄 applicationconfiguration.java

📁 JAVA 数学程序库 提供常规的数值计算程序包
💻 JAVA
字号:
package jmathlib.ui.swing;

import java.util.*;
import java.io.*;
import javax.swing.*;
import java.awt.*;

public class ApplicationConfiguration extends Properties {
    private static final String SERIALIZED_FILENAME = "config.dat";


    public static final String SESSION_HISTORY_SESSIONCOUNT_PROPERTY = "Session.HistorySessionCount";
    public static final String SESSION_HISTORY_SESSIONCMDCOUNT_PROPERTY = "Session.HistorySessionCmdCount";
    public static final String SEARCH_PATH_PROPERTY = "Path.SearchPath";
    public static final String CURRENT_WORKING_DIRECTORY_PROPERTY = "Path.CurrentWorkingDirectory";

    private static File cachedConfigDir = null;
    private static ApplicationConfiguration config = null;

    private static Properties createDefaultProperties() {
        Properties props = new Properties();
        props.put(SESSION_HISTORY_SESSIONCOUNT_PROPERTY, "5");
        props.put(SESSION_HISTORY_SESSIONCMDCOUNT_PROPERTY, "99");
        props.put(SEARCH_PATH_PROPERTY, "");
        props.put(CURRENT_WORKING_DIRECTORY_PROPERTY, ".");
        return props;
    }

    private ApplicationConfiguration() {
        super(createDefaultProperties());

        File configPath = new File(getConfigurationDirectory(), SERIALIZED_FILENAME);
        try {
            if (configPath.exists() && configPath.canRead()) {
                this.load(new FileInputStream(configPath));
            }
        } catch (IOException ex) {
            //What to do here. Show message to user?
            //Main GUI class needs a logging window.
        }
    }      
    
    public void writeConfiguration() {
        File dir = ApplicationConfiguration.getConfigurationDirectory();
        if (dir != null) {
            File f = new File(dir, SERIALIZED_FILENAME);
            if (!f.exists() || f.canWrite()) {
                FileOutputStream out = null;
                try {
                    out = new FileOutputStream(f);
                    store(out, "CONFIG");
                } catch (Exception ex) {
                  //TODO: Need to see if there is some sort of error reporting mechanism                    
                } finally {                    
                  try {
                    out.close();
                  } catch (Exception ex) {}
                }
            }
        }
    }
    
    public static ApplicationConfiguration getInstance() {
        if (config == null) {
            config = new ApplicationConfiguration();
        }
        return config;
    }

    /**
     * Returns a file object to the directory containing all of the Mathlib configuration information.
     * Other classes may use this directory to store additional information
     * If the directory does not exist, it is attempted to be created.
     * If the directory cannot be created, this method will return null.
     */
    public static File getConfigurationDirectory() {
        if (cachedConfigDir == null) {
            String home = System.getProperty("user.home");
            if (home != null) {
                File f = new File(home, ".mathlib/");
                if (!f.exists()) {
                    if (f.mkdirs()) {
                        cachedConfigDir = f;
                    }
                } else cachedConfigDir = f;
            }
        }
        return cachedConfigDir;
    }
    
    public int getIntProperty(String key) {
        String val = this.getProperty(key);
        return Integer.parseInt(val);
    }
    
    public void setIntProperty(String key, int val) {
        this.setProperty(key, Integer.toString(val));
    }    
    
    public void showConfigurationDialog(Component container) {
        ConfigurationPanel p = new ConfigurationPanel();
        p.setSessionHistoryCount(getIntProperty(SESSION_HISTORY_SESSIONCOUNT_PROPERTY));
        p.setSessionCommandCount(getIntProperty(SESSION_HISTORY_SESSIONCMDCOUNT_PROPERTY));
        p.setCurrentWorkingDirectory(getProperty(CURRENT_WORKING_DIRECTORY_PROPERTY));
      
    
        if (JOptionPane.showConfirmDialog(container, p, "Modifiy Configuration Options", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE) == JOptionPane.OK_OPTION) {
          setIntProperty(SESSION_HISTORY_SESSIONCOUNT_PROPERTY, p.getSessionHistoryCount());
          setIntProperty(SESSION_HISTORY_SESSIONCMDCOUNT_PROPERTY, p.getSessionCommandCount());
          setProperty(CURRENT_WORKING_DIRECTORY_PROPERTY, p.getCurrentWorkingDirectory());            
        }        
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -