package magic.ui.helpers; import java.awt.Color; import java.awt.Dimension; import javax.swing.UIDefaults; import javax.swing.UIManager; import magic.data.GeneralConfig; import magic.ui.theme.Theme; import magic.ui.utility.MagicStyle; public final class LaFHelper { public static void setDefaultLookAndFeel() { if (trySetNimbusLookAndFeel()) { final UIDefaults defaults = UIManager.getLookAndFeelDefaults(); // // ** JTable // defaults.put("Table.showGrid", true); // theme-based selection background color. final Color oldColor = MagicStyle.getTheme().getColor(Theme.COLOR_TITLE_BACKGROUND); final Color newColor = ColorHelper.bleach1(oldColor, 0.2f); defaults.put("Table[Enabled+Selected].textBackground", newColor); // // ** JList // // set JList selection colors the same as JTable. defaults.put("List[Selected].textBackground", defaults.getColor("Table[Enabled+Selected].textBackground")); defaults.put("List[Selected].textForeground", defaults.getColor("Table[Enabled+Selected].textForeground")); // // ** JScrollPane // // removes hardcoded border defaults.put("ScrollPane[Enabled].borderPainter", null); // // ** JScrollBar // // custom scrollbar if (GeneralConfig.getInstance().isCustomScrollBar()) { defaults.put("ScrollBarUI", "magic.ui.widget.scrollbar.MScrollBarUI"); final Dimension d = (Dimension) UIManager.get("ScrollBar.minimumThumbSize"); defaults.put("ScrollBar.minimumThumbSize", new Dimension( d.width < 50 ? 50 : d.width, d.height < 50 ? 50 : d.height) ); } } } private static boolean trySetNimbusLookAndFeel() { try { for (final UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); break; } } return true; } catch (Exception ex) { System.err.println(ex); } return false; } private LaFHelper() { } }