// Path: src/main/java/org/primefaces/material/MaterialColors.java
// public enum MaterialColors {
// 	RED("red"),
// 	PINK("pink"),
// 	PURPLE("purple"),
// 	DEEP_PURPLE("deep-purple"),
// 	INDIGO("indigo"),
// 	BLUE("blue"),
// 	LIGHT_BLUE("light-blue"),
// 	CYAN("cyan"),
// 	TEAL("teal"),
// 	GREEN("green"),
// 	LIGHT_GREEN("light-green"),
// 	LIME("lime"),
// 	YELLOW("yellow"),
// 	AMBER("amber"),
// 	ORANGE("orange"),
// 	DEEP_ORANGE("deep-orange"),
// 	BROWN("brown"),
// 	GREY("grey"),
// 	BLUE_GREY("blue-grey");
// 	
// 	
// 	private String colorName;
// 	private static Random random = new Random();
// 	
// 	private MaterialColors(String name){
// 		this.colorName = name;
// 	}
// 	
// 	public String getColorName(){
// 		return this.colorName;
// 	}
// 	
// 	public static MaterialColors random(){
// 		return MaterialColors.values()[random.nextInt(MaterialColors.values().length)];
// 	}
// 	
// }
// 
// Path: src/main/java/org/primefaces/material/MaterialWidgetBuilder.java
// public class MaterialWidgetBuilder extends WidgetBuilder {
// 
// 	private static final String KEY = MaterialWidgetBuilder.class.getName();
// 
// 	public static MaterialWidgetBuilder getInstance(final FacesContext context) {
// 
// 		MaterialWidgetBuilder wb = (MaterialWidgetBuilder) context.getExternalContext().getRequestMap().get(KEY);
// 
// 		if (wb == null) {
// 			wb = new MaterialWidgetBuilder(context);
// 
// 			context.getExternalContext().getRequestMap().put(KEY, wb);
// 		}
// 
// 		return wb;
// 	}
//     
//     public MaterialWidgetBuilder(FacesContext context) {
//         super(context);
//     }
// 
//     protected WidgetBuilder init(String widgetClass, String widgetVar, String id, boolean endFunction) throws IOException {
//     	this.endFunction = endFunction;
// 
//         context.getResponseWriter().write("MaterialPrime.cw(\"");
//         context.getResponseWriter().write(widgetClass);
//         context.getResponseWriter().write("\",\"");
//         context.getResponseWriter().write(widgetVar);
//         context.getResponseWriter().write("\",{");
//         context.getResponseWriter().write("id:\"");
//         context.getResponseWriter().write(id);
//         if (widgetVar == null) {
//         	context.getResponseWriter().write("\"");
//         } else {
// 	        context.getResponseWriter().write("\",widgetVar:\"");
// 	        context.getResponseWriter().write(widgetVar);
// 	        context.getResponseWriter().write("\"");
//         }
// 
//         return this;
//     }
// }


import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.event.ActionEvent;
import org.primefaces.material.MaterialColors;
import org.primefaces.material.MaterialWidgetBuilder;
import org.primefaces.material.util.Strings;
import org.primefaces.renderkit.CoreRenderer;
import org.primefaces.util.WidgetBuilder;
				writer.startElement("i", null);
					writer.writeAttribute("class", "large " + fab.getIcon(), null);
				writer.endElement("i");
			writer.endElement("a");
			writer.startElement("ul", null);
			for (UIComponent child : fab.getChildren()) {
				if (child.isRendered()) {
					renderFabItem(context,writer,(FixedActionButtonItem) child);
				}
			}
			writer.endElement("ul");
		writer.endElement("div");
		
	}

	private String getButtonClass(FacesContext context, FixedActionButton fab) {
		String toReturn = FIXED_ACTION_BTN_CLASS;
		
		if(Strings.isNotEmpty(fab.getStyleClass())){
			toReturn += " " + fab.getStyleClass(); 
		}
		
		if(fab.isHorizontal()){
			toReturn += " horizontal";
		}
		
		if(fab.isClickToToggle()){
			toReturn += " click-to-toggle";
		}
		
// Path: src/main/java/org/primefaces/material/MaterialColors.java
// public enum MaterialColors {
// 	RED("red"),
// 	PINK("pink"),
// 	PURPLE("purple"),
// 	DEEP_PURPLE("deep-purple"),
// 	INDIGO("indigo"),
// 	BLUE("blue"),
// 	LIGHT_BLUE("light-blue"),
// 	CYAN("cyan"),
// 	TEAL("teal"),
// 	GREEN("green"),
// 	LIGHT_GREEN("light-green"),
// 	LIME("lime"),
// 	YELLOW("yellow"),
// 	AMBER("amber"),
// 	ORANGE("orange"),
// 	DEEP_ORANGE("deep-orange"),
// 	BROWN("brown"),
// 	GREY("grey"),
// 	BLUE_GREY("blue-grey");
// 	
// 	
// 	private String colorName;
// 	private static Random random = new Random();
// 	
// 	private MaterialColors(String name){
// 		this.colorName = name;
// 	}
// 	
// 	public String getColorName(){
// 		return this.colorName;
// 	}
// 	
// 	public static MaterialColors random(){
// 		return MaterialColors.values()[random.nextInt(MaterialColors.values().length)];
// 	}
// 	
// }
// 
// Path: src/main/java/org/primefaces/material/MaterialWidgetBuilder.java
// public class MaterialWidgetBuilder extends WidgetBuilder {
// 
// 	private static final String KEY = MaterialWidgetBuilder.class.getName();
// 
// 	public static MaterialWidgetBuilder getInstance(final FacesContext context) {
// 
// 		MaterialWidgetBuilder wb = (MaterialWidgetBuilder) context.getExternalContext().getRequestMap().get(KEY);
// 
// 		if (wb == null) {
// 			wb = new MaterialWidgetBuilder(context);
// 
// 			context.getExternalContext().getRequestMap().put(KEY, wb);
// 		}
// 
// 		return wb;
// 	}
//     
//     public MaterialWidgetBuilder(FacesContext context) {
//         super(context);
//     }
// 
//     protected WidgetBuilder init(String widgetClass, String widgetVar, String id, boolean endFunction) throws IOException {
//     	this.endFunction = endFunction;
// 
//         context.getResponseWriter().write("MaterialPrime.cw(\"");
//         context.getResponseWriter().write(widgetClass);
//         context.getResponseWriter().write("\",\"");
//         context.getResponseWriter().write(widgetVar);
//         context.getResponseWriter().write("\",{");
//         context.getResponseWriter().write("id:\"");
//         context.getResponseWriter().write(id);
//         if (widgetVar == null) {
//         	context.getResponseWriter().write("\"");
//         } else {
// 	        context.getResponseWriter().write("\",widgetVar:\"");
// 	        context.getResponseWriter().write(widgetVar);
// 	        context.getResponseWriter().write("\"");
//         }
// 
//         return this;
//     }
// }


// Path: src/main/java/org/primefaces/material/component/fixedactionbutton/FixedActionButtonRenderer.java
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.event.ActionEvent;
import org.primefaces.material.MaterialColors;
import org.primefaces.material.MaterialWidgetBuilder;
import org.primefaces.material.util.Strings;
import org.primefaces.renderkit.CoreRenderer;
import org.primefaces.util.WidgetBuilder;

				writer.startElement("i", null);
					writer.writeAttribute("class", "large " + fab.getIcon(), null);
				writer.endElement("i");
			writer.endElement("a");
			writer.startElement("ul", null);
			for (UIComponent child : fab.getChildren()) {
				if (child.isRendered()) {
					renderFabItem(context,writer,(FixedActionButtonItem) child);
				}
			}
			writer.endElement("ul");
		writer.endElement("div");
		
	}

	private String getButtonClass(FacesContext context, FixedActionButton fab) {
		String toReturn = FIXED_ACTION_BTN_CLASS;
		
		if(Strings.isNotEmpty(fab.getStyleClass())){
			toReturn += " " + fab.getStyleClass(); 
		}
		
		if(fab.isHorizontal()){
			toReturn += " horizontal";
		}
		
		if(fab.isClickToToggle()){
			toReturn += " click-to-toggle";
		}
		
		return toReturn;