[richfaces-svn-commits] JBoss Rich Faces SVN: r6205 - trunk/framework/impl/src/main/java/org/richfaces/renderkit/html.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Feb 20 08:53:37 EST 2008


Author: abelevich
Date: 2008-02-20 08:53:36 -0500 (Wed, 20 Feb 2008)
New Revision: 6205

Added:
   trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/BaseGradient.java
   trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/GradientA.java
Log:


Added: trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/BaseGradient.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/BaseGradient.java	                        (rev 0)
+++ trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/BaseGradient.java	2008-02-20 13:53:36 UTC (rev 6205)
@@ -0,0 +1,245 @@
+/**
+ * License Agreement.
+ *
+ *  JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007  Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+package org.richfaces.renderkit.html;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GradientPaint;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.geom.Rectangle2D;
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.resource.GifRenderer;
+import org.ajax4jsf.resource.InternetResourceBuilder;
+import org.ajax4jsf.resource.Java2Dresource;
+import org.ajax4jsf.resource.ResourceContext;
+import org.ajax4jsf.util.HtmlColor;
+import org.ajax4jsf.util.Zipper2;
+import org.richfaces.skin.Skin;
+import org.richfaces.skin.SkinFactory;
+
+/**
+ * @author Nick Belaevski - nbelaevski at exadel.com
+ * created 02.02.2007
+ * 
+ */
+public class BaseGradient extends Java2Dresource {
+
+	private int width;
+	private int height;
+	private int gradientHeight;
+	private String baseColor;
+	private String gradientColor;
+    private boolean horizontal = false;
+	
+	public BaseGradient(int width, int height, int gradientHeight) {
+		super();
+		this.width = width;
+		this.height = height;
+		this.gradientHeight = gradientHeight;
+
+		setRenderer(new GifRenderer());
+		setLastModified(new Date(InternetResourceBuilder.getInstance().getStartTime()));
+	}
+
+	public BaseGradient(int width, int height, int gradientHeight, String baseColor, String gradientColor) {
+		this(width, height, gradientHeight);
+		this.baseColor = baseColor;
+		this.gradientColor = gradientColor;
+	}
+
+	public BaseGradient(int width, int height) {
+		this(width, height, height);
+	}
+
+	public BaseGradient(int width, int height, String baseColor, String gradientColor) {
+		this(width, height, height);
+		this.baseColor = baseColor;
+		this.gradientColor = gradientColor;
+	}
+
+	public BaseGradient() {
+		this(30, 50, 20);
+	}
+	
+	public BaseGradient(String baseColor, String gradientColor) {
+		this(30, 50, 20);
+		this.baseColor = baseColor;
+		this.gradientColor = gradientColor;
+	}
+    
+    public BaseGradient(int width, int height, int gradientHeight, boolean horizontal) {
+        this(width, height, gradientHeight);
+        this.horizontal = horizontal;
+    }
+    
+    public BaseGradient(int width, int height, int gradientHeight, String baseColor, String gradientColor, boolean horizontal) {
+        this(width, height, gradientHeight);
+        this.baseColor = baseColor;
+        this.gradientColor = gradientColor;
+        this.horizontal = horizontal;
+    }
+    
+    public BaseGradient(int width, int height, boolean horizontal) {
+        this(width, height, horizontal?width:height);
+        this.horizontal = horizontal;
+    }
+    
+    public BaseGradient(int width, int height, String baseColor, String gradientColor, boolean horizontal) {
+        this(width, height, horizontal?width:height);
+        this.baseColor = baseColor;
+        this.gradientColor = gradientColor;
+        this.horizontal = horizontal;
+    }
+
+    public BaseGradient(boolean horizontal) {
+        this(30, 50, 20);
+        this.horizontal = horizontal;
+    }
+    
+    public BaseGradient(String baseColor, String gradientColor, boolean horizontal) {
+        this(30, 50, 20);
+        this.baseColor = baseColor;
+        this.gradientColor = gradientColor;
+        this.horizontal = horizontal;
+    }
+    
+	public Dimension getDimensions(FacesContext facesContext, Object data) {
+		return new Dimension(width, height);
+	}
+
+	protected Dimension getDimensions(ResourceContext resourceContext) {
+		return getDimensions(null, restoreData(resourceContext));
+	}
+
+	protected void paint(ResourceContext resourceContext, Graphics2D g2d) {
+		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
+		g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+		Data dataToStore = (Data) restoreData(resourceContext);
+		if (dataToStore != null && dataToStore.headerBackgroundColor!=null && dataToStore.headerGradientColor!=null) {
+			Color baseColor = new Color(dataToStore.headerBackgroundColor.intValue());
+			Dimension dim =getDimensions(resourceContext);
+			Rectangle2D rect = 
+				new Rectangle2D.Float(
+						0, 
+						0, 
+						dim.width, 
+						dim.height);
+			int gradStart = 0;
+			int gradEnd = gradientHeight;
+			Color alternateColor = new Color(dataToStore.headerGradientColor.intValue());
+            GradientPaint gragient;
+            if (horizontal) {
+                gragient = new GradientPaint(gradStart, 0, baseColor, gradEnd, 0, alternateColor);
+            } else {
+                gragient = new GradientPaint(0, gradStart, baseColor, 0, gradEnd, alternateColor);
+            }
+			g2d.setPaint(gragient);
+			g2d.fill(rect);
+		}
+	}
+
+	protected Object deserializeData(byte[] objectArray) {
+		Data data = new Data();
+		if (objectArray != null) {
+			Zipper2 zipper2 = new Zipper2(objectArray);
+			data.headerBackgroundColor = new Integer(zipper2.nextIntColor());
+			data.headerGradientColor = new Integer(zipper2.nextIntColor());
+		}
+
+		return data;
+	}
+	
+	protected Object getDataToStore(FacesContext context, Object data) {
+		if (baseColor == null) {
+			return new Data(context).toByteArray();
+		} else {
+			return new Data(context, baseColor, gradientColor).toByteArray();
+		}
+	}
+	
+	public boolean isCacheable() {
+		return true;
+	}
+	
+	protected static class Data implements Serializable {
+		public Data() {
+		}
+
+		protected Data(FacesContext context) {
+			this(context, Skin.headerBackgroundColor, "headerGradientColor");
+		}
+
+		protected Data(FacesContext context, String baseColor, String gradientColor) {
+			this.headerBackgroundColor = getColorValueParameter(context, baseColor, false);
+			this.headerGradientColor = getColorValueParameter(context, gradientColor, false);
+
+			if (!(this.headerBackgroundColor == null && this.headerGradientColor == null)) {
+				if (this.headerBackgroundColor == null) {
+					this.headerBackgroundColor = getColorValueParameter(context, baseColor, true);
+				}
+				
+				if (this.headerGradientColor == null) {
+					this.headerGradientColor = getColorValueParameter(context, gradientColor, true);
+				}
+			}
+		}
+
+		private Integer getColorValueParameter(FacesContext context, String name, boolean useDefault) {
+			Skin skin;
+			if (useDefault) {
+				skin = SkinFactory.getInstance().getDefaultSkin(context);
+			} else {
+				skin = SkinFactory.getInstance().getSkin(context);
+			}
+			
+			String tmp = (String) skin.getParameter(context,name); 
+			if (tmp!=null && tmp.length() != 0) {
+				return new Integer(HtmlColor.decode(tmp).getRGB());
+			} else {
+				return null;
+			}
+		}
+
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1732700513743861250L;
+		protected Integer headerBackgroundColor;
+		protected Integer headerGradientColor;
+		public byte[] toByteArray() {
+			if (headerBackgroundColor != null && headerGradientColor != null) {
+				byte[] ret = new byte[6];
+				new Zipper2(ret).addColor(headerBackgroundColor.intValue()).addColor(headerGradientColor.intValue());
+				return ret;
+			} else {
+				return null;
+			}
+		}
+	}
+
+}

Added: trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/GradientA.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/GradientA.java	                        (rev 0)
+++ trunk/framework/impl/src/main/java/org/richfaces/renderkit/html/GradientA.java	2008-02-20 13:53:36 UTC (rev 6205)
@@ -0,0 +1,28 @@
+/**
+ * License Agreement.
+ *
+ *  JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007  Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+package org.richfaces.renderkit.html;
+
+public class GradientA extends BaseGradient {
+	public GradientA() {
+		super(30, 50, 20, "headerGradientColor", "headerBackgroundColor");
+	}
+}
\ No newline at end of file




More information about the richfaces-svn-commits mailing list