package org.andrewberman.ui.menu; import java.awt.GradientPaint; import java.awt.Paint; import java.awt.geom.Area; import java.awt.geom.GeneralPath; import org.andrewberman.ui.Color; import org.andrewberman.ui.Style; import org.andrewberman.ui.UIPlatform; import processing.core.PFont; public class MenuStyle extends Style { public MenuStyle() { super(); loadDefaults(this); } protected void loadDefaults(MenuStyle defaults) { // MenuStyle defaults = new MenuStyle(); defaults.set("c.background", new Color(245, 245, 255)); defaults.set("c.foreground", new Color(0,0,0)); defaults.set("c.foregroundDisabled", new Color(0,0,0).brighter(100)); defaults.set("c.disabled", new Color(245, 245, 255).darker(30)); defaults.set("c.gradientLo", new Color(245, 245, 255)); defaults.set("c.gradientHi", new Color(190, 210, 245)); defaults.set("f.fontSize", 11f); defaults.set("font", UIPlatform.getInstance().getThisAppContext().getPFont()); defaults.set("c.font", new Color(0, 0, 0)); defaults.set("f.padY", 3.5f); defaults.set("f.padX", 3.5f); defaults.set("f.roundOff", 6f); defaults.set("f.strokeWeight",.5f); GeneralPath p = new GeneralPath(GeneralPath.WIND_EVEN_ODD, 3); p.moveTo(0f, -.5f); p.lineTo(.5f, 0f); p.lineTo(0f, .5f); p.closePath(); defaults.set("subTriangle", new Area(p)); } public PFont getFont(Object key) { return (PFont)get(key); } public Paint getGradient(int state, float loY, float hiY) { return getGradient(state,0,loY,0,hiY); } public Paint getGradient(int state, float loX, float loY, float hiX, float hiY) { Color gradLo = getC("c.gradientLo"); Color gradHi = getC("c.gradientHi"); switch (state) { case (MenuItem.UP): return new GradientPaint(loX, loY, gradLo, hiX, hiY, gradHi, true); case (MenuItem.OVER): return new GradientPaint(loX, loY, gradLo.brighter(15), hiX, hiY, gradHi.brighter(15), true); case (MenuItem.DOWN): default: return new GradientPaint(loX, loY, gradLo.darker(15), hiX, hiY, gradHi.darker(15), true); } } }