## Property Type

There are several different type of widget properties, such as Boolean, Double, Color, Font and so on. The method `widget.setPropertyValue(prop_id, value)` only accepts certain value types corresponding to the property type. Here is the list of the acceptable value types for each type of property. Property Value Type is the type of the object returned from `widget.getPropertyValue(prop_id)`.

Property Type | Example Properties
Boolean Property | Enabled, Visible
Integer Property | Height, Width, X, Y
Double Property | Meter.Level HIHI, Meter.Maximum
Combo Property | Border Style
String Property | Name, PV Name, Text
Color Property | Background Color, Foreground Color
Font Property | Font
File Path Property | Image.Image File, Linking Container.OPI File
PointList Property | Polyline.Points, Polygon.Points
Macros Property | Macros
ColorMap Property | IntensityGraph.Color Map

### Boolean Property

  Acceptable Value Type
    boolean
  Property Value Type
    Boolean
  Examples:

      	widget.setPropertyValue("enable", false);
      	widget.setPropertyValue("visible", true);

  ### Integer Property

  Acceptable Value Type
    int, double
  Property Value Type
    Integer
  Examples:

      	widget.setPropertyValue("x", 10);

  ### Double Property

  Acceptable Value Type
    double, int
  Property Value Type
    Double
  Examples:

      	widget.setPropertyValue("fill_level", 35.6);

  ### Combo Property

  Acceptable Value Type
    int - it is the index of the item in the combo box of the property
  Property Value Type
    Integer
  Examples:

      	//set border style to line style
      	widget.setPropertyValue("border_style", 1);

  ### String Property

  Acceptable Value Type
    String - allow macros in string
    any object(the method `toString()` will be automatically called)
  Property Value Type
    String
  Examples:

      	widget.setPropertyValue("text", "Hello, World!");

  ### Color Property

  Acceptable Value Type
    RGB
    String(must be predefined in Color Macro file)
  Property Value Type
    OPIColor
  Examples:

      	importPackage(Packages.org.csstudio.opibuilder.scriptUtil);

      	var ORANGE = ColorFontUtil.getColorFromRGB(255,255,0);
      	widget.setPropertyValue("foreground_color",ORANGE);
      	widget.setPropertyValue("background_color", "Major"); //"Major" is a color macro

  ### Font Property

  Acceptable Value Type
    FontData
    String(must be predefined in Font Macro file)
  Property Value Type
    OPIFont
  Examples:

      	importPackage(Packages.org.csstudio.opibuilder.scriptUtil);

      	var bigFont = ColorFontUtil.getFont("Times New Roman", 20, 1);
      	widget.setPropertyValue("font", bigFont);

  ### Macros Property

  Acceptable Value Type
    MacrosInput
  Property Value Type
    MacrosInput
  Examples:

      	importPackage(Packages.org.csstudio.opibuilder.scriptUtil);
      	var macroInput = DataUtil.createMacrosInput(true);
      	macroInput.put("pv", PVUtil.getString(pvs[0]));
      	widget.setPropertyValue("macros", macroInput);

  ### File Path Property

  Acceptable Value Type
    String - allow url start with `http://` or `ftp://`
    org.eclipse.core.runtime.IPath
  Property Value Type
    org.eclipse.core.runtime.IPath
  Examples:

      	//load image from relative path
      	widget.getWidgetModel().setPropertyValue("image_file", "../pictures/fish.gif");
      	//load image from url
      	widget.getWidgetModel().setPropertyValue("image_file", "http://neutrons.ornl.gov/images/sns_aerial.jpg");
      	//load image from absolute workspace path
      	widget.getWidgetModel().setPropertyValue("image_file", "/BOY Examples/widgets/DynamicSymbols/Scared.jpg");
      	//load image from local file system
      	widget.getWidgetModel().setPropertyValue("image_file", "C:\\Users\\5hz\\Pictures\\me.gif");

  ### PointList Property

  Acceptable Value Type
    int[]
    org.eclipse.draw2d.geometry.PointList
  Property Value Type
    org.eclipse.draw2d.geometry.PointList
  Examples:

      	importPackage(Packages.org.csstudio.opibuilder.scriptUtil);

      	var jsArray = new Array(20,260,34,56,320,230);
      	//set the points for a polygon/polyline widget
      	widget.setPropertyValue("points", DataUtil.toJavaIntArray(jsArray));

  ### ColorMap Property

  Acceptable Value Type
    String, which must be one of "JET", "GrayScale", "ColorSpectrum", "Hot", "Cool" and "Shaded".
  Property Value Type
    org.csstudio.swt.widgets.datadefinition.ColorMap
  Examples:

      	importPackage(Packages.org.csstudio.opibuilder.scriptUtil);
      	var value = PVUtil.getString(pvs[0]);
      	widget.setPropertyValue("color_map", value);

  Actions Property and Script Property are not changeable from script becaues they are only loaded once during the initialization of widget.