/******************************************************************************* * openDLX - A DLX/MIPS processor simulator. * Copyright (C) 2013 The openDLX project, University of Augsburg, Germany * Project URL: <https://sourceforge.net/projects/opendlx> * Development branch: <https://github.com/smetzlaff/openDLX> * * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program, see <LICENSE>. If not, see * <http://www.gnu.org/licenses/>. ******************************************************************************/ package openDLX.gui; import java.awt.Font; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class OpenDLXSimGui { public static void openDLXGui_main() { //set default String lafClassName = UIManager.getLookAndFeel().getClass().getCanonicalName(); //get user preference lafClassName = Preference.pref.get(Preference.lookAndFeel, lafClassName); try { // check if the lafClassName is valid, // since it could be the case that the preferences file contains an invalid class Class.forName(lafClassName, false, null); } catch (ClassNotFoundException e) { // If the lafClassName is not valid, set it to the class name of the current L&F class. String currentLafClassName = UIManager.getLookAndFeel().getClass().getCanonicalName(); if(currentLafClassName == lafClassName) { System.err.println("Failed to set look and feel '" + lafClassName + "'"); e.printStackTrace(); } else { lafClassName = currentLafClassName; // store new (valid) L&F in preferences Preference.pref.put(Preference.lookAndFeel, lafClassName); } } //set selected L&F setLookAndFeelWithoutTreeUpdate(lafClassName); MainFrame.getInstance(); } //set look and feel, but do not update the Swing Component Tree // (this is for use when first initializing the UI) private static void setLookAndFeelWithoutTreeUpdate(String lafClassName) { UIManager.put("TextArea.font", new Font(Font.MONOSPACED, Font.PLAIN, 12)); UIManager.put("TextPane.font", new Font(Font.MONOSPACED, Font.PLAIN, 12)); UIManager.put("TextField.font", new Font(Font.MONOSPACED, Font.PLAIN, 12)); UIManager.put("Table.font", new Font(Font.MONOSPACED, Font.PLAIN, 12)); try { //sets the systems default LookAndFeel UIManager.setLookAndFeel(lafClassName); } catch (Exception e) { System.err.println("Failed to set look and feel '" + lafClassName + "'"); e.printStackTrace(); } } //set the look at feel application-wide, save it to preferences, and update // the Swing Component Tree public static void setLookAndFeel(String lafClassName) { setLookAndFeelWithoutTreeUpdate(lafClassName); SwingUtilities.updateComponentTreeUI(MainFrame.getInstance()); } }