package org.pzone.crypto; import java.io.File; import java.io.FileWriter; import java.io.IOException; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.UIManager; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.jvnet.substance.SubstanceLookAndFeel; import org.jvnet.substance.border.ClassicBorderPainter; import org.jvnet.substance.border.FlatBorderPainter; import org.jvnet.substance.border.GlassBorderPainter; import org.jvnet.substance.border.NullBorderPainter; import org.jvnet.substance.border.SimplisticSoftBorderPainter; import org.jvnet.substance.border.StandardBorderPainter; import org.jvnet.substance.border.SubstanceBorderPainter; import org.jvnet.substance.button.ClassicButtonShaper; import org.jvnet.substance.button.StandardButtonShaper; import org.jvnet.substance.button.SubstanceButtonShaper; import org.jvnet.substance.painter.ClassicGradientPainter; import org.jvnet.substance.painter.FlatGradientPainter; import org.jvnet.substance.painter.GlassGradientPainter; import org.jvnet.substance.painter.GradientWaveGradientPainter; import org.jvnet.substance.painter.MatteGradientPainter; import org.jvnet.substance.painter.NoiseGradientPainter; import org.jvnet.substance.painter.SimplisticGradientPainter; import org.jvnet.substance.painter.SpecularGradientPainter; import org.jvnet.substance.painter.SpecularWaveGradientPainter; import org.jvnet.substance.painter.StandardGradientPainter; import org.jvnet.substance.painter.SubduedGradientPainter; import org.jvnet.substance.painter.SubstanceGradientPainter; import org.jvnet.substance.painter.WaveGradientPainter; import org.jvnet.substance.skin.AutumnSkin; import org.jvnet.substance.skin.BusinessBlackSteelSkin; import org.jvnet.substance.skin.BusinessBlueSteelSkin; import org.jvnet.substance.skin.BusinessSkin; import org.jvnet.substance.skin.ChallengerDeepSkin; import org.jvnet.substance.skin.CremeSkin; import org.jvnet.substance.skin.EbonyHighContrastSkin; import org.jvnet.substance.skin.EmeraldDuskSkin; import org.jvnet.substance.skin.FieldOfWheatSkin; import org.jvnet.substance.skin.FindingNemoSkin; import org.jvnet.substance.skin.GreenMagicSkin; import org.jvnet.substance.skin.MagmaSkin; import org.jvnet.substance.skin.MangoSkin; import org.jvnet.substance.skin.MistAquaSkin; import org.jvnet.substance.skin.MistSilverSkin; import org.jvnet.substance.skin.ModerateSkin; import org.jvnet.substance.skin.NebulaBrickWallSkin; import org.jvnet.substance.skin.NebulaSkin; import org.jvnet.substance.skin.OfficeBlue2007Skin; import org.jvnet.substance.skin.OfficeSilver2007Skin; import org.jvnet.substance.skin.RavenGraphiteGlassSkin; import org.jvnet.substance.skin.RavenGraphiteSkin; import org.jvnet.substance.skin.RavenSkin; import org.jvnet.substance.skin.SaharaSkin; import org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel; import org.jvnet.substance.skin.SubstanceSkin; import org.jvnet.substance.theme.SubstanceAquaTheme; import org.jvnet.substance.theme.SubstanceBarbyPinkTheme; import org.jvnet.substance.theme.SubstanceBlendBiTheme; import org.jvnet.substance.theme.SubstanceBottleGreenTheme; import org.jvnet.substance.theme.SubstanceBrownTheme; import org.jvnet.substance.theme.SubstanceCharcoalTheme; import org.jvnet.substance.theme.SubstanceCremeTheme; import org.jvnet.substance.theme.SubstanceDarkVioletTheme; import org.jvnet.substance.theme.SubstanceDesertSandTheme; import org.jvnet.substance.theme.SubstanceEbonyTheme; import org.jvnet.substance.theme.SubstanceJadeForestTheme; import org.jvnet.substance.theme.SubstanceLightAquaTheme; import org.jvnet.substance.theme.SubstanceLimeGreenTheme; import org.jvnet.substance.theme.SubstanceOliveTheme; import org.jvnet.substance.theme.SubstanceOrangeTheme; import org.jvnet.substance.theme.SubstancePurpleTheme; import org.jvnet.substance.theme.SubstanceRaspberryTheme; import org.jvnet.substance.theme.SubstanceSepiaTheme; import org.jvnet.substance.theme.SubstanceSteelBlueTheme; import org.jvnet.substance.theme.SubstanceSunGlareTheme; import org.jvnet.substance.theme.SubstanceSunsetTheme; import org.jvnet.substance.theme.SubstanceTerracottaTheme; import org.jvnet.substance.theme.SubstanceTheme; import org.jvnet.substance.theme.SubstanceUltramarineTheme; import org.jvnet.substance.title.ArcHeaderPainter; import org.jvnet.substance.title.BrushedMetalHeaderPainter; import org.jvnet.substance.title.ClassicTitlePainter; import org.jvnet.substance.title.FlatTitlePainter; import org.jvnet.substance.title.Glass3DTitlePainter; import org.jvnet.substance.title.MarbleNoiseHeaderPainter; import org.jvnet.substance.title.MatteHeaderPainter; import org.jvnet.substance.title.RandomCubesTitlePainter; import org.jvnet.substance.title.SubstanceTitlePainter; import org.jvnet.substance.watermark.SubstanceBinaryWatermark; import org.jvnet.substance.watermark.SubstanceBubblesWatermark; import org.jvnet.substance.watermark.SubstanceCopperplateEngravingWatermark; import org.jvnet.substance.watermark.SubstanceCrosshatchWatermark; import org.jvnet.substance.watermark.SubstanceFabricWatermark; import org.jvnet.substance.watermark.SubstanceGenericNoiseWatermark; import org.jvnet.substance.watermark.SubstanceKatakanaWatermark; import org.jvnet.substance.watermark.SubstanceLatchWatermark; import org.jvnet.substance.watermark.SubstanceMagneticFieldWatermark; import org.jvnet.substance.watermark.SubstanceMarbleVeinWatermark; import org.jvnet.substance.watermark.SubstanceMazeWatermark; import org.jvnet.substance.watermark.SubstanceMetalWallWatermark; import org.jvnet.substance.watermark.SubstanceMosaicWatermark; import org.jvnet.substance.watermark.SubstanceNoneWatermark; import org.jvnet.substance.watermark.SubstanceNullWatermark; import org.jvnet.substance.watermark.SubstancePlanktonWatermark; import org.jvnet.substance.watermark.SubstanceStripeWatermark; import org.jvnet.substance.watermark.SubstanceWatermark; import org.jvnet.substance.watermark.SubstanceWoodWatermark; public class SkinConfig { static public final String ConfigFileName = "skin_config.xml"; static public final int ProgamTypeType_PC = 0; static public final int ProgamTypeType_PAD = 1; static public final int ShowLowMonBarType_Count = 0; static public final int ShowLowMonBarType_Percent = 1; public String mTheme = "Steel Blue"; public String mButtonShaper = "Standard"; public String mWatermark = "Metal Wall"; public String mBorderPainter = "Classic"; public String mGradientPainter = "Wave"; public String mTitlePainter = "Glass 3D"; public SkinConfig() { File f = new File(ConfigFileName); if(false == f.exists()) { writeConfigToXml(); } readConfigFromXml(); } public void writeConfigToXml() { try { Document document = DocumentHelper.createDocument(); Element root = document.addElement("root"); //root.addComment("���һ��ע��"); Element param = root.addElement("theme"); param.addText(mTheme); param = root.addElement("button_shaper"); param.addText(mButtonShaper); param = root.addElement("water_mark"); param.addText(mWatermark); param = root.addElement("border_painter"); param.addText(mBorderPainter); param = root.addElement("gradient_painter"); param.addText(mGradientPainter); param = root.addElement("title_painter"); param.addText(mTitlePainter); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("gbk"); XMLWriter writer2 = new XMLWriter(new FileWriter(ConfigFileName), format); writer2.write(document); writer2.close(); } catch (IllegalArgumentException | IOException e) { e.printStackTrace(); } } public void readConfigFromXml() { boolean res = true; try { SAXReader reader = new SAXReader(); Document document = reader.read(new File(ConfigFileName)); Element rootnode = document.getRootElement(); Element node = rootnode.element("theme"); mTheme = node.getTextTrim(); node = rootnode.element("button_shaper"); mButtonShaper = node.getTextTrim(); node = rootnode.element("water_mark"); mWatermark = node.getTextTrim(); node = rootnode.element("border_painter"); mBorderPainter = node.getTextTrim(); node = rootnode.element("gradient_painter"); mGradientPainter = node.getTextTrim(); node = rootnode.element("title_painter"); mTitlePainter = node.getTextTrim(); } catch (NullPointerException | DocumentException e) { res = false; e.printStackTrace(); } finally{ if(false == res) writeConfigToXml(); } } public void saveLookAndFeel() { mTheme = SubstanceLookAndFeel.getCurrentThemeName(); mButtonShaper = SubstanceLookAndFeel.getCurrentButtonShaperName(); mWatermark = SubstanceLookAndFeel.getCurrentWatermarkName(); mBorderPainter = SubstanceLookAndFeel.getCurrentBorderPainterName(); mGradientPainter = SubstanceLookAndFeel.getCurrentGradientPainterName(); mTitlePainter = SubstanceLookAndFeel.getCurrentTitlePainterName(); if((null != mTheme) && (null != mButtonShaper)) { writeConfigToXml(); } /* System.out.println("ThemeName: " + mTheme); System.out.println("ButtonShaperName: " + mButtonShaper); System.out.println("WatermarkName: " + mWatermark); System.out.println("BorderPainterName: " + mBorderPainter); System.out.println("GradientPainterName: " + mGradientPainter); System.out.println("TitlePainterName: " + mTitlePainter); */ } public SubstanceSkin getSkin() { SubstanceSkin sk = new BusinessSkin(); String skin = mTheme; if(skin.equals("Autumn")) { sk = new AutumnSkin(); } if(skin.equals("Business Black Steel")) { sk = new BusinessBlackSteelSkin(); } if(skin.equals("Business Blue Steel")) { sk = new BusinessBlueSteelSkin(); } if(skin.equals("Business")) { sk = new BusinessSkin(); } if(skin.equals("Challenger Deep")) { sk = new ChallengerDeepSkin(); } if(skin.equals("Creme")) { sk = new CremeSkin(); } if(skin.equals("Ebony High Contrast")) { sk = new EbonyHighContrastSkin(); } if(skin.equals("Emerald Dusk")) { sk = new EmeraldDuskSkin(); } if(skin.equals("Field Of Wheat")) { sk = new FieldOfWheatSkin(); } if(skin.equals("Finding Nemo")) { sk = new FindingNemoSkin(); } if(skin.equals("Green Magic")) { sk = new GreenMagicSkin(); } if(skin.equals("Magma")) { sk = new MagmaSkin(); } if(skin.equals("Mango")) { sk = new MangoSkin(); } if(skin.equals("Mist Aqua")) { sk = new MistAquaSkin(); } if(skin.equals("Mist Silver")) { sk = new MistSilverSkin(); } if(skin.equals("Moderate")) { sk = new ModerateSkin(); } if(skin.equals("Nebula Brick Wall")) { sk = new NebulaBrickWallSkin(); } if(skin.equals("Nebula")) { sk = new NebulaSkin(); } if(skin.equals("Office Blue 2007")) { sk = new OfficeBlue2007Skin(); } if(skin.equals("Office Silver 2007")) { sk = new OfficeSilver2007Skin(); } if(skin.equals("Raven Graphite Glass")) { sk = new RavenGraphiteGlassSkin(); } if(skin.equals("Raven Graphite")) { sk = new RavenGraphiteSkin(); } if(skin.equals("Raven")) { sk = new RavenSkin(); } if(skin.equals("Sahara")) { sk = new SaharaSkin(); } return sk; } public SubstanceTheme getTheme() { SubstanceTheme st = null; if(mTheme.equals("Aqua")) { st = new SubstanceAquaTheme(); } if(mTheme.equals("Barby Pink")) { st = new SubstanceBarbyPinkTheme(); } if(mTheme.equals("Blend Bi")) { st = new SubstanceBlendBiTheme(null, null, 0); } if(mTheme.equals("Bottle Green")) { st = new SubstanceBottleGreenTheme(); } if(mTheme.equals("Brown")) { st = new SubstanceBrownTheme(); } if(mTheme.equals("Charcoal")) { st = new SubstanceCharcoalTheme(); } if(mTheme.equals("Creme")) { st = new SubstanceCremeTheme(); } if(mTheme.equals("Dark Violet")) { st = new SubstanceDarkVioletTheme(); } if(mTheme.equals("Desert Sand")) { st = new SubstanceDesertSandTheme(); } if(mTheme.equals("Ebony")) { st = new SubstanceEbonyTheme(); } if(mTheme.equals("Jade Forest")) { st = new SubstanceJadeForestTheme(); } if(mTheme.equals("Light Aqua")) { st = new SubstanceLightAquaTheme(); } if(mTheme.equals("Lime Green")) { st = new SubstanceLimeGreenTheme(); } if(mTheme.equals("Olive")) { st = new SubstanceOliveTheme(); } if(mTheme.equals("Orange")) { st = new SubstanceOrangeTheme(); } if(mTheme.equals("Purple")) { st = new SubstancePurpleTheme(); } if(mTheme.equals("Raspberry")) { st = new SubstanceRaspberryTheme(); } if(mTheme.equals("Sepia")) { st = new SubstanceSepiaTheme(); } if(mTheme.equals("Steel Blue")) { st = new SubstanceSteelBlueTheme(); } if(mTheme.equals("Sun Glare")) { st = new SubstanceSunGlareTheme(); } if(mTheme.equals("Sunset")) { st = new SubstanceSunsetTheme(); } if(mTheme.equals("Terracotta")) { st = new SubstanceTerracottaTheme(); } if(mTheme.equals("Ultramarine")) { st = new SubstanceUltramarineTheme(); } return st; } public SubstanceButtonShaper getButtonShaper() { if(mButtonShaper.equals("Classic")) { return new ClassicButtonShaper(); } if(mButtonShaper.equals("Standard")) { return new StandardButtonShaper(); } return new ClassicButtonShaper(); } public SubstanceWatermark getWatermark() { if(mWatermark.equals("Binary")) { return new SubstanceBinaryWatermark(); } if(mWatermark.equals("Bubbles")) { return new SubstanceBubblesWatermark(); } if(mWatermark.equals("Copperplate Engraving")) { return new SubstanceCopperplateEngravingWatermark(); } if(mWatermark.equals("Crosshatch")) { return new SubstanceCrosshatchWatermark(); } if(mWatermark.equals("Fabric")) { return new SubstanceFabricWatermark(); } if(mWatermark.equals("Generic Noise")) { return new SubstanceGenericNoiseWatermark(); } if(mWatermark.equals("Katakana")) { return new SubstanceKatakanaWatermark(); } if(mWatermark.equals("Latch")) { return new SubstanceLatchWatermark(); } if(mWatermark.equals("Magnetic Field")) { return new SubstanceMagneticFieldWatermark(); } if(mWatermark.equals("Marble Vein")) { return new SubstanceMarbleVeinWatermark(); } if(mWatermark.equals("Maze")) { return new SubstanceMazeWatermark(); } if(mWatermark.equals("Metal Wall")) { return new SubstanceMetalWallWatermark(); } if(mWatermark.equals("Mosaic")) { return new SubstanceMosaicWatermark(); } if(mWatermark.equals("None")) { return new SubstanceNoneWatermark(); } if(mWatermark.equals("Null")) { return new SubstanceNullWatermark(); } if(mWatermark.equals("Plankton")) { return new SubstancePlanktonWatermark(); } if(mWatermark.equals("Stripe")) { return new SubstanceStripeWatermark(); } if(mWatermark.equals("Wood")) { return new SubstanceWoodWatermark(); } return new SubstanceBinaryWatermark(); } public SubstanceBorderPainter getBorderPainter() { if(mBorderPainter.equals("Classic")) { return new ClassicBorderPainter(); } if(mBorderPainter.equals("Flat")) { return new FlatBorderPainter(); } if(mBorderPainter.equals("Glass")) { return new GlassBorderPainter(); } if(mBorderPainter.equals("Null")) { return new NullBorderPainter(); } if(mBorderPainter.equals("Simplistic Soft")) { return new SimplisticSoftBorderPainter(); } if(mBorderPainter.equals("Standard")) { return new StandardBorderPainter(); } return new ClassicBorderPainter(); } public SubstanceGradientPainter getGradientPainter() { if(mGradientPainter.equals("Classic")) { return new ClassicGradientPainter(); } if(mGradientPainter.equals("Flat")) { return new FlatGradientPainter(); } if(mGradientPainter.equals("Glass")) { return new GlassGradientPainter(); } if(mGradientPainter.equals("Gradient Wave")) { return new GradientWaveGradientPainter(); } if(mGradientPainter.equals("Matte")) { return new MatteGradientPainter(); } if(mGradientPainter.equals("Noise")) { return new NoiseGradientPainter(); } if(mGradientPainter.equals("Simplistic")) { return new SimplisticGradientPainter(); } if(mGradientPainter.equals("Specular")) { return new SpecularGradientPainter(); } if(mGradientPainter.equals("Specular Wave")) { return new SpecularWaveGradientPainter(); } if(mGradientPainter.equals("Standard")) { return new StandardGradientPainter(); } if(mGradientPainter.equals("Subdued")) { return new SubduedGradientPainter(); } if(mGradientPainter.equals("Wave")) { return new WaveGradientPainter(); } return new ClassicGradientPainter(); } public SubstanceTitlePainter getTitlePainter() { if(mTitlePainter.equals("Arc")) { return new ArcHeaderPainter(); } if(mTitlePainter.equals("Brushed Metal")) { return new BrushedMetalHeaderPainter(); } if(mTitlePainter.equals("Classic")) { return new ClassicTitlePainter(); } if(mTitlePainter.equals("Flat")) { return new FlatTitlePainter(); } if(mTitlePainter.equals("Glass 3D")) { return new Glass3DTitlePainter(); } if(mTitlePainter.equals("Marble Noise")) { return new MarbleNoiseHeaderPainter(); } if(mTitlePainter.equals("Matte")) { return new MatteHeaderPainter(); } if(mTitlePainter.equals("Random Cubes")) { return new RandomCubesTitlePainter(); } return new ArcHeaderPainter(); } public static void setupLookAndFeel(boolean hide_title_bar) { try { UIManager.setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel()); if(false == hide_title_bar) { JFrame.setDefaultLookAndFeelDecorated(true); //���ϴ������ͬ�������Ҳ�ı� } JDialog.setDefaultLookAndFeelDecorated(true); //���ϴ�����ʹ�����ĶԻ���Ҳ�ı� SkinConfig sc = new SkinConfig(); if(null != sc.getTheme()) { SubstanceLookAndFeel.setCurrentTheme(sc.getTheme()); } else { SubstanceLookAndFeel.setSkin(sc.getSkin()); } SubstanceLookAndFeel.setCurrentButtonShaper(sc.getButtonShaper()); SubstanceLookAndFeel.setCurrentWatermark(sc.getWatermark()); SubstanceLookAndFeel.setCurrentBorderPainter(sc.getBorderPainter()); SubstanceLookAndFeel.setCurrentGradientPainter(sc.getGradientPainter()); SubstanceLookAndFeel.setCurrentTitlePainter(sc.getTitlePainter()); } catch (Exception e) { e.printStackTrace(); System.out.println("SubstanceLookAndFeel: " + e.getMessage()); } } }