/** * Copyright (C) 2002-2012 The FreeCol Team * * This file is part of FreeCol. * * FreeCol 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 2 of the License, or * (at your option) any later version. * * FreeCol 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 FreeCol. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.freecol.client.gui.plaf; import java.io.File; import java.util.logging.Level; import java.util.logging.Logger; import org.freecolandroid.repackaged.java.awt.Cursor; import org.freecolandroid.repackaged.java.awt.Dimension; import org.freecolandroid.repackaged.java.awt.Font; import org.freecolandroid.repackaged.java.awt.Image; import org.freecolandroid.repackaged.java.awt.Point; import org.freecolandroid.repackaged.java.awt.Toolkit; import org.freecolandroid.repackaged.javax.swing.UIDefaults; import org.freecolandroid.repackaged.javax.swing.UIManager; import org.freecolandroid.repackaged.javax.swing.UnsupportedLookAndFeelException; import org.freecolandroid.repackaged.javax.swing.plaf.ColorUIResource; import org.freecolandroid.repackaged.javax.swing.plaf.metal.DefaultMetalTheme; import org.freecolandroid.repackaged.javax.swing.plaf.metal.MetalLookAndFeel; import net.sf.freecol.common.FreeColException; import net.sf.freecol.common.resources.ResourceManager; /** * Implements the FreeCol look and feel. */ public class FreeColLookAndFeel extends MetalLookAndFeel { private static final Logger logger = Logger.getLogger(FreeColLookAndFeel.class.getName()); /** * Initiates a new FreeCol look and feel. * * @param dataDirectory The home of the FreeCol data files. * @param windowSize The size of the application window. * @exception FreeColException If the ui directory could not be found. */ public FreeColLookAndFeel(File dataDirectory, Dimension windowSize) throws FreeColException { super(); // setCurrentTheme(new DefaultMetalTheme() { // protected ColorUIResource getPrimary1() { // return new ColorUIResource(ResourceManager.getColor("lookAndFeel.primary1.color")); // } // // protected ColorUIResource getPrimary2() { // return new ColorUIResource(ResourceManager.getColor("lookAndFeel.backgroundSelect.color")); // } // // protected ColorUIResource getPrimary3() { // return new ColorUIResource(ResourceManager.getColor("lookAndFeel.primary3.color")); // } // // protected ColorUIResource getSecondary1() { // return new ColorUIResource(ResourceManager.getColor("lookAndFeel.secondary1.color")); // } // // protected ColorUIResource getSecondary2() { // return new ColorUIResource(ResourceManager.getColor("lookAndFeel.disabled.color")); // } // // protected ColorUIResource getSecondary3() { // return new ColorUIResource(ResourceManager.getColor("lookAndFeel.background.color")); // } // // public ColorUIResource getMenuDisabledForeground() { // return new ColorUIResource(ResourceManager.getColor("lookAndFeel.disabledMenu.color")); // } // }); // // if (!dataDirectory.isDirectory()) { // throw new FreeColException("Data directory is not a directory."); // } } /** * Creates the look and feel specific defaults table. * * @return The defaults table. */ public UIDefaults getDefaults() { // UIDefaults u = super.getDefaults(); // // try { // int offset = "FreeCol".length(); // for (Class uiClass : new Class[] { // FreeColButtonUI.class, // FreeColCheckBoxUI.class, // FreeColComboBoxUI.class, // FreeColLabelUI.class, // FreeColListUI.class, // FreeColMenuBarUI.class, // FreeColMenuItemUI.class, // FreeColPanelUI.class, // FreeColPopupMenuUI.class, // FreeColRadioButtonUI.class, // FreeColScrollPaneUI.class, // FreeColTableHeaderUI.class, // FreeColTableUI.class, // FreeColTextAreaUI.class, // FreeColTextFieldUI.class, // FreeColToolTipUI.class, // FreeColTransparentPanelUI.class // }) { // String name = uiClass.getName(); // int index = name.lastIndexOf("FreeCol"); // if (index >= 0) { // index += offset; // String shortName = name.substring(index); // u.put(shortName, name); // u.put(name, uiClass); // } // } // // // Sharing FreeColBrightPanelUI: // String brightPanelUI = "net.sf.freecol.client.gui.plaf.FreeColBrightPanelUI"; // u.put(brightPanelUI, Class.forName(brightPanelUI)); // u.put("InPortPanelUI", brightPanelUI); // u.put("CargoPanelUI", brightPanelUI); // u.put("BuildingsPanelUI", brightPanelUI); // u.put("OutsideColonyPanelUI", brightPanelUI); // u.put("WarehousePanelUI", brightPanelUI); // u.put("ConstructionPanelUI", brightPanelUI); // u.put("PopulationPanelUI", brightPanelUI); // u.put("WarehouseGoodsPanelUI", brightPanelUI); // u.put("ReportPanelUI", brightPanelUI); // u.put("ColopediaPanelUI", brightPanelUI); // u.put("TilePanelUI", brightPanelUI); // u.put("OptionGroupUI", brightPanelUI); // // // Sharing FreeColTransparentPanelUI: // String transparentPanelUI = "net.sf.freecol.client.gui.plaf.FreeColTransparentPanelUI"; // u.put(transparentPanelUI, Class.forName(transparentPanelUI)); // u.put("MarketPanelUI", transparentPanelUI); // u.put("EuropeCargoPanelUI", transparentPanelUI); // u.put("ToAmericaPanelUI", transparentPanelUI); // u.put("ToEuropePanelUI", transparentPanelUI); // u.put("EuropeInPortPanelUI", transparentPanelUI); // u.put("DocksPanelUI", transparentPanelUI); // // // Add cursors: // Image im = ResourceManager.getImage("cursor.go.image"); // if (im != null) { // u.put("cursor.go", Toolkit.getDefaultToolkit() // .createCustomCursor(im, new Point(im.getWidth(null)/2, // im.getHeight(null)/2), "go")); // } else { // u.put("cursor.go", Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); // } // // } catch (ClassNotFoundException e) { // logger.log(Level.SEVERE, "Failed to load look and feel!", e); // System.exit(-1); // } // // return u; return null; } /** * Installs a FreeColLookAndFeel as the default look and feel. * * @param fclaf The <code>FreeColLookAndFeel</code> to install. * @param defaultFont A <code>Font</code> to use by default. * @throws FreeColException if the installation fails. */ public static void install(FreeColLookAndFeel fclaf, Font defaultFont) throws FreeColException { // try { // UIManager.setLookAndFeel(fclaf); // } catch (UnsupportedLookAndFeelException e) { // throw new FreeColException(e.getMessage()); // } // // // Set the default font in all UI elements. // UIDefaults u = UIManager.getDefaults(); // java.util.Enumeration<Object> keys = u.keys(); // while (keys.hasMoreElements()) { // Object key = keys.nextElement(); // if (u.get(key) instanceof com.erik.repackaged.javax.swing.plaf.FontUIResource) { // u.put(key, defaultFont); // } // } } /** * Gets a one line description of this Look and Feel. * * @return "The default Look and Feel for FreeCol" */ public String getDescription() { return "The default Look and Feel for FreeCol"; } /** * Gets the name of this Look and Feel. * * @return "FreeCol Look and Feel" */ public String getName() { return "FreeCol Look and Feel"; } }