package edu.ucdavis.cstars.client.symbol;
import com.google.gwt.core.client.JavaScriptObject;
import edu.ucdavis.cstars.client.dojo.Color;
/**
* Marker symbols are used to draw points and multipoints on the graphics layer. SimpleMarkerSymbol is used to display
* points as a simple shape, for example, a circle. In addition, the symbol can have an optional outline, which is defined by a line symbol.
*
* @author Justin Merz
*/
public class SimpleMarkerSymbol extends MarkerSymbol {
public static enum StyleType {
NOT_SET(""),
STYLE_CIRCLE("circle"),
STYLE_CROSS("cross"),
STYLE_DIAMOND("diamond"),
STYLE_SQUARE("square"),
STYLE_X("x");
private String val;
private StyleType(String value){
val = value;
}
public String getValue(){
return val;
}
}
protected SimpleMarkerSymbol() {}
/**
* Creates a new SimpleMarkerSymbol object using a JSON object.
*
* @param json - JSON object representing the SimpleMarkerSymbol.
* @return SimpleMarkerSymbol
*/
public static native SimpleMarkerSymbol create(JavaScriptObject json) /*-{
return new $wnd.esri.symbol.SimpleMarkerSymbol(json);
}-*/;
/**
* Creates a new empty SimpleMarkerSymbol object.
*
* @return SimpleMarkerSymbol
*/
public static native SimpleMarkerSymbol create() /*-{
return new $wnd.esri.symbol.SimpleMarkerSymbol();
}-*/;
/**
* Creates a new SimpleMarkerSymbol object with parameters.
*
* @param style - Marker style.
* @param size - Size of marker in pixels.
* @param outline - Outline of marker
* @param color - Symbol color.
* @return SimpleMarkerSymbol
*/
public static SimpleMarkerSymbol create(StyleType style, int size, SimpleLineSymbol outline, Color color ) {
return _create(style.getValue(), size, outline, color);
}
private static native SimpleMarkerSymbol _create(String style, int size, SimpleLineSymbol outline, Color color) /*-{
return new $wnd.esri.symbol.SimpleMarkerSymbol(style, size, outline, color);
}-*/;
/**
* Outline of the marker.
*
* @return SimpleLineSymbol
*/
public final native SimpleLineSymbol getOutline() /*-{
return this.outline;
}-*/;
/**
* The marker style. The default value is STYLE_CIRCLE.
*
* @return StyleType
*/
public final StyleType getStyle() {
String s = _getStyle();
for( int i = 0; i < StyleType.values().length; i++ ){
if( StyleType.values()[i].getValue().contentEquals(s) ){
return StyleType.values()[i];
}
}
return StyleType.NOT_SET;
}
private final native String _getStyle() /*-{
return this.style;
}-*/;
/**
* Sets the outline of the marker symbol.
*
* @param outline - Symbol used for outline.
* @return SimpleMarkerSymbol
*/
public final native SimpleMarkerSymbol setOutline(SimpleLineSymbol outline) /*-{
return this.setOutline(outline);
}-*/;
/**
* Sets the marker symbol style.
*
* @param style - Marker style. See the Constants table for valid values.
* @return SimpleMarkerSymbol
*/
public final SimpleMarkerSymbol setStyle(StyleType style) {
return _setStyle(style.getValue());
}
private final native SimpleMarkerSymbol _setStyle(String style) /*-{
return this.setStyle(style);
}-*/;
}