Search in sources :

Example 1 with Plastic3DLookAndFeel

use of com.jgoodies.looks.plastic.Plastic3DLookAndFeel in project jabref by JabRef.

the class JabRefGUI method setLookAndFeel.

private void setLookAndFeel() {
    try {
        String lookFeel;
        String systemLookFeel = UIManager.getSystemLookAndFeelClassName();
        if (Globals.prefs.getBoolean(JabRefPreferences.USE_DEFAULT_LOOK_AND_FEEL)) {
            // See https://github.com/JabRef/jabref/issues/393, https://github.com/JabRef/jabref/issues/638
            if (System.getProperty("java.runtime.name").contains("OpenJDK")) {
                // Metal L&F
                lookFeel = UIManager.getCrossPlatformLookAndFeelClassName();
                LOGGER.warn("There seem to be problems with OpenJDK and the default GTK Look&Feel. Using Metal L&F instead. Change to another L&F with caution.");
            } else {
                lookFeel = systemLookFeel;
            }
        } else {
            lookFeel = Globals.prefs.get(JabRefPreferences.WIN_LOOK_AND_FEEL);
        }
        // FIXME: Open JDK problem
        if (UIManager.getCrossPlatformLookAndFeelClassName().equals(lookFeel) && !System.getProperty("java.runtime.name").contains("OpenJDK")) {
            // try to avoid ending up with the ugly Metal L&F
            Plastic3DLookAndFeel lnf = new Plastic3DLookAndFeel();
            MetalLookAndFeel.setCurrentTheme(new SkyBluer());
            com.jgoodies.looks.Options.setPopupDropShadowEnabled(true);
            UIManager.setLookAndFeel(lnf);
        } else {
            try {
                UIManager.setLookAndFeel(lookFeel);
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
                // specified look and feel does not exist on the classpath, so use system l&f
                UIManager.setLookAndFeel(systemLookFeel);
                // also set system l&f as default
                Globals.prefs.put(JabRefPreferences.WIN_LOOK_AND_FEEL, systemLookFeel);
                // notify the user
                JOptionPane.showMessageDialog(JabRefGUI.getMainFrame(), Localization.lang("Unable to find the requested look and feel and thus the default one is used."), Localization.lang("Warning"), JOptionPane.WARNING_MESSAGE);
                LOGGER.warn("Unable to find requested look and feel", e);
            }
        }
    } catch (Exception e) {
        LOGGER.warn("Look and feel could not be set", e);
    }
    // In JabRef v2.8, we did it only on NON-Mac. Now, we try on all platforms
    boolean overrideDefaultFonts = Globals.prefs.getBoolean(JabRefPreferences.OVERRIDE_DEFAULT_FONTS);
    if (overrideDefaultFonts) {
        int fontSize = Globals.prefs.getInt(JabRefPreferences.MENU_FONT_SIZE);
        UIDefaults defaults = UIManager.getDefaults();
        Enumeration<Object> keys = defaults.keys();
        for (Object key : Collections.list(keys)) {
            if ((key instanceof String) && ((String) key).endsWith(".font")) {
                FontUIResource font = (FontUIResource) UIManager.get(key);
                font = new FontUIResource(font.getName(), font.getStyle(), fontSize);
                defaults.put(key, font);
            }
        }
    }
}
Also used : UIDefaults(javax.swing.UIDefaults) FontUIResource(javax.swing.plaf.FontUIResource) Plastic3DLookAndFeel(com.jgoodies.looks.plastic.Plastic3DLookAndFeel) DatabaseNotSupportedException(org.jabref.shared.exception.DatabaseNotSupportedException) SQLException(java.sql.SQLException) UnsupportedLookAndFeelException(javax.swing.UnsupportedLookAndFeelException) NotASharedDatabaseException(org.jabref.shared.exception.NotASharedDatabaseException) InvalidDBMSConnectionPropertiesException(org.jabref.shared.exception.InvalidDBMSConnectionPropertiesException) UnsupportedLookAndFeelException(javax.swing.UnsupportedLookAndFeelException) SkyBluer(com.jgoodies.looks.plastic.theme.SkyBluer)

Aggregations

Plastic3DLookAndFeel (com.jgoodies.looks.plastic.Plastic3DLookAndFeel)1 SkyBluer (com.jgoodies.looks.plastic.theme.SkyBluer)1 SQLException (java.sql.SQLException)1 UIDefaults (javax.swing.UIDefaults)1 UnsupportedLookAndFeelException (javax.swing.UnsupportedLookAndFeelException)1 FontUIResource (javax.swing.plaf.FontUIResource)1 DatabaseNotSupportedException (org.jabref.shared.exception.DatabaseNotSupportedException)1 InvalidDBMSConnectionPropertiesException (org.jabref.shared.exception.InvalidDBMSConnectionPropertiesException)1 NotASharedDatabaseException (org.jabref.shared.exception.NotASharedDatabaseException)1