📄 oyoahalookandfeel.java
字号:
/* ==================================================================== * Copyright (c) 2001-2003 OYOAHA. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. The names "OYOAHA" must not be used to endorse or promote products * derived from this software without prior written permission. * For written permission, please contact email@oyoaha.com. * * 3. Products derived from this software may not be called "OYOAHA", * nor may "OYOAHA" appear in their name, without prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL OYOAHA OR ITS CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */package com.oyoaha.swing.plaf.oyoaha;import java.awt.*;import java.io.*;import java.net.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.plaf.*;import javax.swing.plaf.metal.*;import com.oyoaha.swing.plaf.oyoaha.pool.*;import com.oyoaha.swing.plaf.oyoaha.border.*;import com.oyoaha.swing.plaf.oyoaha.ui.*;import com.oyoaha.swing.plaf.oyoaha.icon.*;public class OyoahaLookAndFeel extends MetalLookAndFeel{ protected OyoahaTheme oyoahaTheme; protected OyoahaThemeScheme oyoahaThemeScheme; protected boolean forceRollover; public OyoahaLookAndFeel() { this(true); } public OyoahaLookAndFeel(boolean forceRollover) { if(oyoahaThemeScheme==null) { oyoahaThemeScheme = new OyoahaThemeScheme(); } oyoahaTheme = null; this.forceRollover = forceRollover; } public boolean getDefaultRolloverPolicy(Component c) { if(c instanceof MenuElement) return true; return forceRollover; } public void initialize() { OyoahaUtilities.initialize(this); } /** * */ public void uninitialize() { OyoahaUtilities.uninitialize(this); } /** * */ public String getName() { return "Oyoaha LookAndFeel"; } /** * */ public String getID() { return "3.0"; } /** * */ public String getDescription() { StringBuffer buf = new StringBuffer(); buf.append("For more information visit http://www.oyoaha.com"); buf.append("\n Copyright (c) 2000, 2002 oyoaha"); if(oyoahaTheme!=null) { buf.append("\n Use custom OyoahaTheme"); buf.append("\n\n OyoahaTheme Class Name: "); buf.append(oyoahaTheme.getClassName()); buf.append("\n OyoahaTheme Name: "); buf.append(oyoahaTheme.getName()); buf.append("\n OyoahaTheme Version: "); buf.append(oyoahaTheme.getVersion()); buf.append("\n OyoahaTheme Copyright: "); buf.append(oyoahaTheme.getCopyright()); } else { buf.append("\n Use default OyoahaTheme"); } return buf.toString(); }//------------------------------------------------------------------------------// THEME SUPPORT//------------------------------------------------------------------------------ public static void setCurrentTheme(URL _url) { setCurrentTheme(new OyoahaMetalTheme(_url)); } public static void setCurrentTheme(InputStream _inputStream) { setCurrentTheme(new OyoahaMetalTheme(_inputStream)); } public static void setCurrentTheme(File _file) { setCurrentTheme(new OyoahaMetalTheme(_file)); } public void setOyoahaTheme(URL _url) { OyoahaTheme otm = null; if(_url!=null) { otm = new OyoahaTheme(_url); } setOyoahaTheme(otm); } public void setOyoahaTheme(InputStream _inputStream) { OyoahaTheme otm = null; if(_inputStream!=null) { otm = new OyoahaTheme(_inputStream); } setOyoahaTheme(otm); } public void setOyoahaTheme(File _file) { OyoahaTheme otm = null; if(_file!=null || _file.exists()) { otm = new OyoahaTheme(_file); } setOyoahaTheme(otm); } protected void setOyoahaTheme(OyoahaTheme _oyoahaTheme) { if(oyoahaTheme!=null) { //dispose oyoahaTheme disposeOyoahaThemeSchemeListener(); oyoahaTheme.dispose(); } oyoahaTheme = _oyoahaTheme; //check is the current scheme is also the default one if(oyoahaThemeScheme.isDefaultMetalTheme() || oyoahaThemeScheme.isDefaultOyoahaTheme()) { //ok load default... if(oyoahaTheme!=null) { OyoahaThemeSchemeChanged changed = oyoahaTheme.loadDefaultOyoahaThemeScheme(oyoahaThemeScheme); fireOyoahaThemeSchemeListener(oyoahaThemeScheme, changed); } } } public OyoahaTheme getOyoahaTheme() { return oyoahaTheme; } /** * return a OyoahaThemeScheme filled with value of the current MetalTheme */ public OyoahaThemeScheme getOyoahaThemeScheme() { return oyoahaThemeScheme; } public static void setCurrentTheme(MetalTheme _theme) { MetalLookAndFeel.setCurrentTheme(_theme); //try to find the current oyoahalookandfeel LookAndFeel lnf = UIManager.getLookAndFeel(); if(lnf!=null && lnf instanceof OyoahaLookAndFeel) { ((OyoahaLookAndFeel)lnf).updateOyoahaThemeScheme(_theme); } } public void updateOyoahaThemeScheme(MetalTheme _theme) { OyoahaThemeSchemeChanged changed = null; if(OyoahaThemeScheme.isDefaultMetalTheme(_theme)) { //check is the current scheme is also the default if(!oyoahaThemeScheme.isDefaultMetalTheme() && !oyoahaThemeScheme.isDefaultOyoahaTheme()) { //ok load default... if(oyoahaTheme!=null) { changed = oyoahaTheme.loadDefaultOyoahaThemeScheme(oyoahaThemeScheme, _theme); } else { changed = oyoahaThemeScheme.load(_theme); } } } else { //use this metal theme changed = oyoahaThemeScheme.load(_theme); } //if changed !=null fire listener... if(changed!=null) { fireOyoahaThemeSchemeListener(oyoahaThemeScheme, changed); } } protected Vector OyoahaThemeSchemeListeners; public void addOyoahaThemeSchemeListener(OyoahaThemeSchemeListener _listener) { if(OyoahaThemeSchemeListeners==null) { OyoahaThemeSchemeListeners = new Vector(); } if(_listener!=null && !OyoahaThemeSchemeListeners.contains(_listener)) { OyoahaThemeSchemeListeners.addElement(_listener); } } public void removeOyoahaThemeSchemeListener(OyoahaThemeSchemeListener _listener) { if(OyoahaThemeSchemeListeners==null) { return; } OyoahaThemeSchemeListeners.removeElement(_listener); } protected void fireOyoahaThemeSchemeListener(OyoahaThemeScheme _scheme, OyoahaThemeSchemeChanged _changed) { OyoahaUtilities.updateOyoahaThemeScheme(_changed); if(OyoahaThemeSchemeListeners==null) { return; } for(int i=0;i<OyoahaThemeSchemeListeners.size();i++) { OyoahaThemeSchemeListener listener = (OyoahaThemeSchemeListener)OyoahaThemeSchemeListeners.elementAt(i); listener.updateThemeScheme(_scheme, _changed); } } protected void disposeOyoahaThemeSchemeListener() { OyoahaUtilities.updateOyoahaTheme(); if(OyoahaThemeSchemeListeners==null) { return; } for(int i=0;i<OyoahaThemeSchemeListeners.size();i++) { OyoahaThemeSchemeListener listener = (OyoahaThemeSchemeListener)OyoahaThemeSchemeListeners.elementAt(i); listener.dispose(); OyoahaThemeSchemeListeners.removeElement(listener); } }//------------------------------------------------------------------------------// REAL LOOKANDFEEL STUFF//------------------------------------------------------------------------------ protected void initClassDefaults(UIDefaults table) { super.initClassDefaults(table); boolean javaVersion = OyoahaUtilities.isVersion("1.3"); Properties properties = new Properties(); try { if(javaVersion) properties.load(getClass().getResourceAsStream("/com/oyoaha/swing/plaf/oyoaha/uidefaults2.properties"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -