package org.eclipselabs.spray.generator.graphiti.util; import org.eclipse.graphiti.util.IColorConstant; import org.eclipselabs.spray.mm.spray.Color; import org.eclipselabs.spray.mm.spray.ColorConstantRef; import org.eclipselabs.spray.mm.spray.MetaClass; import org.eclipselabs.spray.mm.spray.MetaReference; import org.eclipselabs.spray.mm.spray.RGBColor; import org.eclipselabs.spray.mm.spray.Shape; import com.google.inject.Inject; public class LayoutExtensions { @Inject private ImportUtil importUtil; // -------------------------------------------------------------------------------------------- // Shape colors // -------------------------------------------------------------------------------------------- protected String colorString(Color color) { if (color == null) { return importUtil.shortName(IColorConstant.class) + ".BLACK"; } if (color instanceof ColorConstantRef) { ColorConstantRef colorConstant = (ColorConstantRef) color; if (colorConstant != null) { return importUtil.shortName(colorConstant.getField().getDeclaringType().getSimpleName()) + "." + colorConstant.getField().getSimpleName(); } return null; } else if (color instanceof RGBColor) { RGBColor rgb = (RGBColor) color; return String.format("%s,%s,%s", rgb.getRed(), rgb.getGreen(), rgb.getBlue()); } else { throw new IllegalArgumentException(color.getClass().getName()); } } public boolean hasFillColor(Shape element) { return element.getLayout().getFillColor() != null; } public String fillColor(Shape element) { Color color = element.getLayout().getFillColor(); return colorString(color); } public boolean hasLineColor(Shape element) { return element.getLayout().getLineColor() != null; } public String lineColor(Shape element) { Color color = element.getLayout().getLineColor(); return colorString(color); } public boolean hasTextColor(Shape element) { return element.getLayout().getTextColor() != null; } public String textColor(Shape element) { Color color = element.getLayout().getTextColor(); return colorString(color); } // -------------------------------------------------------------------------------------------- // MetaClass colors // -------------------------------------------------------------------------------------------- public boolean hasFillColor(MetaClass element) { return hasFillColor(element.getRepresentedBy()); } public String fillColor(MetaClass element) { return fillColor(element.getRepresentedBy()); } public boolean hasLineColor(MetaClass element) { return hasLineColor(element.getRepresentedBy()); } public String lineColor(MetaClass element) { return lineColor(element.getRepresentedBy()); } public boolean hasTextColor(MetaClass element) { return hasTextColor(element.getRepresentedBy()); } public String textColor(MetaClass element) { return textColor(element.getRepresentedBy()); } // -------------------------------------------------------------------------------------------- // MetaReference colors // -------------------------------------------------------------------------------------------- public boolean hasFillColor(MetaReference element) { return hasFillColor(element.getRepresentedBy()); } public String fillColor(MetaReference element) { return fillColor(element.getRepresentedBy()); } public boolean hasLineColor(MetaReference element) { return hasLineColor(element.getRepresentedBy()); } public String lineColor(MetaReference element) { return lineColor(element.getRepresentedBy()); } public boolean hasTextColor(MetaReference element) { return hasTextColor(element.getRepresentedBy()); } public String textColor(MetaReference element) { return textColor(element.getRepresentedBy()); } // -------------------------------------------------------------------------------------------- // Container colors // -------------------------------------------------------------------------------------------- }