/* * 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; import java.awt.Color; import java.awt.Font; import java.util.Arrays; import java.util.HashMap; import java.util.List; import net.kornr.swit.button.AmazonianButton; import net.kornr.swit.button.ButtonResource; import net.kornr.swit.button.ButtonTemplate; import net.kornr.swit.button.effect.AutoClip; import net.kornr.swit.button.effect.ShadowBorder; import net.kornr.swit.site.buttoneditor.ButtonEditor; import net.kornr.swit.site.jquery.JQuery; import net.kornr.swit.site.quickstart.QuickStart; import net.kornr.swit.util.MappedString; import net.kornr.swit.util.Pair; import net.kornr.swit.wicket.border.graphics.GfxEffects; import org.apache.wicket.RequestCycle; import org.apache.wicket.markup.html.IHeaderContributor; import org.apache.wicket.markup.html.IHeaderResponse; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.util.value.ValueMap; public class Menu extends Panel implements IHeaderContributor { static AmazonianButton s_button = new AmazonianButton(); static AmazonianButton s_button_hover = new AmazonianButton(); static AmazonianButton s_button_selected = new AmazonianButton(); static { s_button.setFont(new Font("Verdana", Font.BOLD, 18)); s_button.setWidth(225); s_button.setHeight(24); s_button.setRightHanded(true); s_button.setIcon(null); s_button.setFontColor(new Color(0xDDDDDD)); s_button.setAutoExtend(Boolean.TRUE); s_button.setShadowDisplayed(Boolean.TRUE); s_button.addEffect(new ShadowBorder(4,0,0,Color.black)).addEffect(new AutoClip()); s_button.setInnerColor(new Color(0x3a7ab3)); s_button.setOuterColor(new Color(0x5263a8)); s_button_hover.setFont(new Font("Verdana", Font.BOLD, 18)); s_button_hover.setWidth(225); s_button_hover.setHeight(24); s_button_hover.setRightHanded(true); s_button_hover.setIcon(null); s_button_hover.setFontColor(new Color(0xFFFFFF)); s_button_hover.setAutoExtend(Boolean.TRUE); s_button_hover.setShadowDisplayed(Boolean.TRUE); s_button_hover.addEffect(new ShadowBorder(4,0,0,Color.black)).addEffect(new AutoClip()); s_button_hover.setInnerColor(GfxEffects.adjustBrightness(new Color(0x3a7ab3), 1.5f)); s_button_hover.setOuterColor(GfxEffects.adjustBrightness(new Color(0x5263a8), 1.5f)); s_button_selected.setFont(new Font("Verdana", Font.BOLD, 18)); s_button_selected.setWidth(225); s_button_selected.setHeight(24); s_button_selected.setFontColor(new Color(0xFFFFFF)); s_button_selected.setAutoExtend(Boolean.TRUE); s_button_selected.setShadowDisplayed(Boolean.TRUE); s_button_selected.addEffect(new ShadowBorder(4,0,0,Color.black)).addEffect(new AutoClip()); s_button_selected.setInnerColor(GfxEffects.adjustBrightness(new Color(0x3a7ab3), 1.7f)); s_button_selected.setOuterColor(GfxEffects.adjustBrightness(new Color(0x5263a8), 1.7f)); s_button_selected.setRightHanded(true); } static private List<Pair> s_menus = Arrays.asList(new Pair[] { new Pair<String,Class>("Home", HomePage.class), new Pair<String,Class>("Button Editor", ButtonEditor.class), new Pair<String,Class>("QuickStart", QuickStart.class), new Pair<String,Class>("Download", Download.class) }); private HashMap<String, String> m_ids = new HashMap<String, String>(); private Class m_selectedClass = null; public Menu(String id) { super(id); this.add(new ListView<Pair>("items", s_menus) { @Override protected void populateItem(ListItem<Pair> item) { Pair<String,Class> p = item.getModelObject(); BookmarkablePageLink link = new BookmarkablePageLink("link", p.getSecond()); item.add(link); Image img; if (p.getSecond().equals(m_selectedClass)) { link.add(img = ButtonResource.getImage("img", s_button_selected, p.getFirst())); link.setEnabled(false); } else link.add(img = ButtonResource.getImage("img", s_button, p.getFirst())); img.setOutputMarkupId(true); m_ids.put(p.getFirst(), img.getMarkupId()); } }); } public void renderHead(IHeaderResponse response) { response.renderJavascriptReference(JQuery.getReference()); MappedString script = new MappedString("$('#${0}').hover(function(){$(this).attr('src', '${2}');}, function(){$(this).attr('src', '${1}');});"); for (Pair<String,Class> p: s_menus) { if (p.getSecond().equals(m_selectedClass) == false) { String url = RequestCycle.get().urlFor(ButtonResource.getReference(), ButtonResource.getValueMap(s_button, p.getFirst())).toString(); String hoverurl= RequestCycle.get().urlFor(ButtonResource.getReference(), ButtonResource.getValueMap(s_button_hover, p.getFirst())).toString(); response.renderJavascript(JQuery.getOnReadyScript(script.map(m_ids.get(p.getFirst()), url, hoverurl)), null); } } } public Class getSelectedClass() { return m_selectedClass; } public void setSelectedClass(Class selectedClass) { m_selectedClass = selectedClass; } }