/* * Copyright 2009 Rodrigo Reyes reyes.rr at gmail dot com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package net.kornr.swit.site.buttoneditor; import java.awt.Color; import java.awt.Font; import java.util.LinkedList; import java.util.List; import net.kornr.swit.button.ButtonTemplate; import net.kornr.swit.button.WebTwoButton; import net.kornr.swit.button.effect.Effect; import net.kornr.swit.button.effect.ShadowBorder; import net.kornr.swit.button.effect.VerticalMirror; import net.kornr.swit.util.Pair; import org.apache.wicket.model.IModel; public class EffectUtils { static private Font s_smallFont = new Font("Verdana", Font.BOLD, 12); static private List<Pair<String,IModel<ButtonTemplate>>> s_mirrors = null; static private List<String> s_mirrorsJavaCode = null; static private List<Pair<String,IModel<ButtonTemplate>>> s_shadows = null; static private List<String> s_shadowJavaCode = null; public static List<Pair<String,IModel<ButtonTemplate>>> getMirrorEffects() { if (s_mirrors == null) { // temp variable, to avoid racing issues LinkedList<Pair<String,IModel<ButtonTemplate>>> mirrors = new LinkedList<Pair<String,IModel<ButtonTemplate>>>(); mirrors.add(new Pair<String,IModel<ButtonTemplate>>("No mirror", createMirrorForDisplay(null))); mirrors.add(new Pair<String,IModel<ButtonTemplate>>("Mirror 1", createMirrorForDisplay(new VerticalMirror(0.50f, 0.25f)))); mirrors.add(new Pair<String,IModel<ButtonTemplate>>("Mirror 2", createMirrorForDisplay(new VerticalMirror(0.50f, 0.50f)))); mirrors.add(new Pair<String,IModel<ButtonTemplate>>("Mirror 3", createMirrorForDisplay(new VerticalMirror(0.50f, 0.75f)))); mirrors.add(new Pair<String,IModel<ButtonTemplate>>("Mirror 4", createMirrorForDisplay(new VerticalMirror(0.75f, 0.50f)))); mirrors.add(new Pair<String,IModel<ButtonTemplate>>("Mirror 5", createMirrorForDisplay(new VerticalMirror(0.75f, 0.75f)))); LinkedList<String> java = new LinkedList<String>(); java.add(null); java.add("new VerticalMirror(0.50f, 0.25f)"); java.add("new VerticalMirror(0.50f, 0.50f)"); java.add("new VerticalMirror(0.50f, 0.75f)"); java.add("new VerticalMirror(0.75f, 0.50f)"); java.add("new VerticalMirror(0.75f, 0.75f)"); s_mirrors = mirrors; s_mirrorsJavaCode = java; } return s_mirrors; } public static String getMirrorJavaCode(int index) { if (index >= 1 && index < s_mirrors.size()) return s_mirrorsJavaCode.get(index); return null; } public static Effect getMirrorEffect(int index) { if (index >= 1 && index < s_mirrors.size()) return s_mirrors.get(index).getSecond().getObject().getEffects().get(0); return null; } static IModel<ButtonTemplate> createMirrorForDisplay(Effect e) { ButtonTemplate tmpl = new WebTwoButton(new Color(0x6666CC)); if (e != null) tmpl.addEffect(e); tmpl.setFont(s_smallFont); tmpl.setFontColor(Color.black); tmpl.setHeight(24); Long id = StaticButtonTemplateModel.register(tmpl); return new StaticButtonTemplateModel(id); } public static List<Pair<String,IModel<ButtonTemplate>>> getShadowEffects() { if (s_shadows == null) { // temp variable, to avoid racing issues LinkedList<Pair<String,IModel<ButtonTemplate>>> shadows = new LinkedList<Pair<String,IModel<ButtonTemplate>>>(); shadows.add(new Pair<String,IModel<ButtonTemplate>>("No mirror", createShadowForDisplay(null))); shadows.add(new Pair<String,IModel<ButtonTemplate>>("Glow 1", createShadowForDisplay(new ShadowBorder(4,0,0,Color.black)))); shadows.add(new Pair<String,IModel<ButtonTemplate>>("Glow 2", createShadowForDisplay(new ShadowBorder(8,0,0,Color.black)))); shadows.add(new Pair<String,IModel<ButtonTemplate>>("Shadow 1", createShadowForDisplay(new ShadowBorder(3,1,1,Color.gray)))); shadows.add(new Pair<String,IModel<ButtonTemplate>>("Shadow 2", createShadowForDisplay(new ShadowBorder(4,2,2,Color.gray)))); shadows.add(new Pair<String,IModel<ButtonTemplate>>("Shadow 3", createShadowForDisplay(new ShadowBorder(6,4,4,Color.gray)))); LinkedList<String> java = new LinkedList<String>(); java.add(null); java.add("new ShadowBorder(8,0,0,Color.black)"); java.add("new ShadowBorder(16,0,0,Color.black)"); java.add("new ShadowBorder(3,1,1,Color.gray)"); java.add("new ShadowBorder(4,2,2,Color.gray)"); java.add("new ShadowBorder(8,4,4,Color.gray)"); s_shadows = shadows; s_shadowJavaCode = java; } return s_shadows; } public static Effect getShadowEffect(int index) { if (index >= 1 && index < s_shadows.size()) return s_shadows.get(index).getSecond().getObject().getEffects().get(0); return null; } static IModel<ButtonTemplate> createShadowForDisplay(Effect e) { ButtonTemplate tmpl = new WebTwoButton(Color.white); if (e != null) tmpl.addEffect(e); tmpl.setFont(s_smallFont); tmpl.setFontColor(Color.black); tmpl.setHeight(24); Long id = StaticButtonTemplateModel.register(tmpl); return new StaticButtonTemplateModel(id); } public static String getShadowJavaCode(int index) { if (index >= 1 && index < s_mirrors.size()) return s_shadowJavaCode.get(index); return null; } }