Changeset 7634 in josm for trunk


Ignore:
Timestamp:
2014-10-19T18:49:43+02:00 (10 years ago)
Author:
Don-vip
Message:

allow plugins to install custom look-and-feels

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/Main.java

    r7476 r7634  
    4545import javax.swing.JTextArea;
    4646import javax.swing.KeyStroke;
     47import javax.swing.LookAndFeel;
    4748import javax.swing.UIManager;
    4849import javax.swing.UnsupportedLookAndFeelException;
     
    9596import org.openstreetmap.josm.io.OnlineResource;
    9697import org.openstreetmap.josm.io.OsmApi;
     98import org.openstreetmap.josm.plugins.PluginHandler;
    9799import org.openstreetmap.josm.tools.CheckParameterUtil;
    98100import org.openstreetmap.josm.tools.I18n;
     
    826828            }
    827829            catch (final NoClassDefFoundError | ClassNotFoundException e) {
    828                 info("Look and Feel not found: " + laf);
    829                 Main.pref.put("laf", defaultlaf);
     830                // Try to find look and feel in plugin classloaders
     831                Class<?> klass = null;
     832                for (ClassLoader cl : PluginHandler.getResourceClassLoaders()) {
     833                    try {
     834                        klass = cl.loadClass(laf);
     835                        break;
     836                    } catch (ClassNotFoundException ex) {
     837                        // Do nothing
     838                    }
     839                }
     840                if (klass != null && LookAndFeel.class.isAssignableFrom(klass)) {
     841                    try {
     842                        UIManager.setLookAndFeel((LookAndFeel) klass.newInstance());
     843                    } catch (Exception ex) {
     844                        warn("Cannot set Look and Feel: " + laf + ": "+ex.getMessage());
     845                    }
     846                } else {
     847                    info("Look and Feel not found: " + laf);
     848                    Main.pref.put("laf", defaultlaf);
     849                }
    830850            }
    831851            catch (final UnsupportedLookAndFeelException e) {
Note: See TracChangeset for help on using the changeset viewer.