package com.smartgwt.sample.showcase.client.drawing.gradients;
import com.smartgwt.client.types.Cursor;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.drawing.ColorStop;
import com.smartgwt.client.widgets.drawing.DrawCurve;
import com.smartgwt.client.widgets.drawing.DrawOval;
import com.smartgwt.client.widgets.drawing.DrawPane;
import com.smartgwt.client.widgets.drawing.DrawRect;
import com.smartgwt.client.widgets.drawing.DrawTriangle;
import com.smartgwt.client.widgets.drawing.Point;
import com.smartgwt.client.widgets.drawing.RadialGradient;
import com.smartgwt.client.widgets.events.DrawEvent;
import com.smartgwt.client.widgets.events.DrawHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.events.ItemChangedEvent;
import com.smartgwt.client.widgets.form.events.ItemChangedHandler;
import com.smartgwt.client.widgets.form.fields.ColorPickerItem;
import com.smartgwt.client.widgets.form.fields.SliderItem;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.sample.showcase.client.PanelFactory;
import com.smartgwt.sample.showcase.client.ShowcasePanel;
public class LinearGradientSample extends ShowcasePanel {
private static final String DESCRIPTION = "Sample of using radial type of gradient.";
private DrawPane drawPane;
private DynamicForm radialGradientDynamicForm;
private DynamicForm radielGradientSliderDynamicForm;
public static class Factory implements PanelFactory {
private String id;
public Canvas create() {
LinearGradientSample panel = new LinearGradientSample();
id = panel.getID();
return panel;
}
public String getID() {
return id;
}
public String getDescription() {
return DESCRIPTION;
}
}
public Canvas getViewPanel() {
drawPane = new DrawPane();
drawPane.setTop(1850);
drawPane.setHeight(400);
drawPane.setLeft(25);
drawPane.setWidth(400);
drawPane.setShowEdges(true);
drawPane.setEdgeSize(4);
drawPane.setBackgroundColor("papayawhip");
drawPane.setOverflow(Overflow.HIDDEN);
drawPane.setCursor(Cursor.AUTO);
drawPane.draw();
drawPane.addDrawHandler(new DrawHandler() {
@Override
public void onDraw(DrawEvent event) {
DrawPane drawPane = (DrawPane) event.getSource();
radialGradientShapesDraw(drawPane);
}
});
ColorPickerItem startColorColorPicker = new ColorPickerItem("startColor","Start Color");
ColorPickerItem firstStopColorPicker = new ColorPickerItem("firstStop","First Stop Color");
ColorPickerItem secondStopColorPicker = new ColorPickerItem("secondStop","Second Stop Color");
ColorPickerItem endColorColorPicker = new ColorPickerItem("endColor","End Color");
startColorColorPicker.setDefaultValue("#ff0000");
firstStopColorPicker.setDefaultValue("#ffff00");
secondStopColorPicker.setDefaultValue("#00ff00");
endColorColorPicker.setDefaultValue("#0000ff");
ItemChangedHandler radialGradientItemChangedHandler = new ItemChangedHandler() {
@Override
public void onItemChanged(ItemChangedEvent event) {
radialGradientShapesDraw(drawPane);
}
};
radialGradientDynamicForm = new DynamicForm();
radialGradientDynamicForm.setTop(1850);
radialGradientDynamicForm.setWidth(270);
radialGradientDynamicForm.setLeft(475);
radialGradientDynamicForm.setFields(startColorColorPicker,firstStopColorPicker,secondStopColorPicker,endColorColorPicker);
radialGradientDynamicForm.addItemChangedHandler(radialGradientItemChangedHandler);
radialGradientDynamicForm.draw();
SliderItem rSlider = new SliderItem("r");
rSlider.setDefaultValue(100);
rSlider.setMinValue(0);
rSlider.setMaxValue(100);
rSlider.setHeight(20);
radielGradientSliderDynamicForm = new DynamicForm();
radielGradientSliderDynamicForm.setTop(1950);
radielGradientSliderDynamicForm.setWidth(270);
radielGradientSliderDynamicForm.setLeft(475);
radielGradientSliderDynamicForm.setFields(rSlider);
radielGradientSliderDynamicForm.addItemChangedHandler(radialGradientItemChangedHandler);
radielGradientSliderDynamicForm.draw();
VLayout layout = new VLayout();
layout.addMember(drawPane);
layout.addMember(radialGradientDynamicForm);
layout.addMember(radielGradientSliderDynamicForm);
layout.draw();
return layout;
}
private void radialGradientShapesDraw(DrawPane drawPane) {
drawPane.erase();
ColorStop colorStop1 = new ColorStop();
colorStop1.setColor(radialGradientDynamicForm.getValueAsString("startColor"));
colorStop1.setOffset(0.0f);
ColorStop colorStop2 = new ColorStop();
colorStop2.setColor(radialGradientDynamicForm.getValueAsString("firstStop"));
colorStop2.setOffset(0.33f);
ColorStop colorStop3 = new ColorStop();
colorStop3.setColor(radialGradientDynamicForm.getValueAsString("secondStop"));
colorStop3.setOffset(0.66f);
ColorStop colorStop4 = new ColorStop();
colorStop4.setColor(radialGradientDynamicForm.getValueAsString("endColor"));
colorStop4.setOffset(1.0f);
int r = (Integer) radielGradientSliderDynamicForm.getValue("r");
RadialGradient radialGradient = new RadialGradient();
radialGradient.setCx("0%");
radialGradient.setCy("0%");
radialGradient.setR(r+"%");
radialGradient.setFx("0%");
radialGradient.setFy("0%");
radialGradient.setColorStops(colorStop1,colorStop2,colorStop3,colorStop4);
DrawTriangle drawTriangle = new DrawTriangle();
drawTriangle.setDrawPane(drawPane);
drawTriangle.setFillGradient(radialGradient);
drawTriangle.setPoints(new Point(100,50),new Point(150,150),new Point(50,150));
drawTriangle.draw();
DrawCurve drawCurve = new DrawCurve();
drawCurve.setDrawPane(drawPane);
drawCurve.setFillGradient(radialGradient);
drawCurve.setStartPoint(new Point(200,50));
drawCurve.setEndPoint(new Point(340,150));
drawCurve.setControlPoint1(new Point(270,0));
drawCurve.setControlPoint2(new Point(270,200));
drawCurve.draw();
DrawOval drawOval = new DrawOval();
drawOval.setDrawPane(drawPane);
drawOval.setFillGradient(radialGradient);
drawOval.setLeft(50);
drawOval.setTop(200);
drawOval.setWidth(100);
drawOval.setHeight(150);
drawOval.draw();
DrawRect drawRect = new DrawRect();
drawRect.setDrawPane(drawPane);
drawRect.setFillGradient(radialGradient);
drawRect.setLeft(200);
drawRect.setTop(225);
drawRect.setWidth(150);
drawRect.setHeight(100);
drawRect.draw();
}
public String getIntro() {
return DESCRIPTION;
}
}