Etiqueta

25 octubre 2017

Componentes JSON&JS (Parte 9 de 12)

events  

Es opcional y permite especificar los eventos que generará el control (además de los indicados en el grupo "flags"). Cada miembro del objeto events identifica un evento. El nombre de cada uno es también el nombre del evento, incluyendo su prefijo "ev". Se pueden incluir ciertos eventos estándar, tales como: "evClick", "evDoubleClick", "evTabSelected", "evCellChanges", "evHeaderClick" y "evHeadedListDisplayOrderChanged". Los elementos válidos de cada objeto-evento son:
  • id
No debe especificarse para eventos estándar, pero, para el resto es obligatorio y debe ser un número entero positivo. Este identificador deberá coincidir con el identificador de evento, usado en la construcción del control JavaScript  y ser único dentro del contexto del mismo. 
  • desc
No debe especificarse para eventos estándar, pero, para el resto es obligatorio y deberá consistir en un texto descriptivo del evento. 
  • parameters
Define los parámetros del evento. Consiste es una lista, donde cada línea de la misma, identifica a cada uno de los parámetros, conformando por los siguientes elementos: 
  • name
Es obligatorio y da nombre al parámetro. No deberá incluirse el prefijo "p". (ya que será agregado por Omnis) Tenga en cuenta que si se usara de nuevo el mismo nombre para definir otro parámetro, se tomará sólo su primera definición, ignorándose el resto, incluyendo su tipo y descripción.
  • type
Es obligatorio e indica el tipo de datos que admitirá el parámetro. ("integer", "character", "boolean" o "list").
  • desc
Es obligatorio y deberá consistir en un texto descriptivo del parámetro. 
 Ejemplo:
"events": {
   "evNetOmnisControlOpened": { 
      "id": 1,
      "desc": "The event sent when the control opens", 
      "parameters": [
         {
            "name": "name",
            "type": "character",
            "desc": "The name event parameter"
         },
        {
           "name": "name2",
           "type": "integer",
           "desc": "The second event parameter"
        }
      ]
     },
     "evClick": {
     "parameters": [
        {
           "name": "zname1",
           "type": "character",
           "desc": "The zname1 event parameter"
        },
        {
           "name": "zname2",
           "type": "integer",
           "desc": "The zname2 event parameter"
        },
        {
          "name": "horzcell",
          "type": "character",
          "desc": "the horz cell event parameter"
        }
      ]
   }

16 octubre 2017

Componentes JSON&JS (Parte 8 de 12)

multivalueproperties 

El grupo de propiedades multivalor es opcional y permite configurar propiedades que pueden contener múltiples valores. A continuación describimos cada uno de sus miembros:
  • itemlistproperty
Es obligatorio. Cuando un control admite propiedades con varios valores, éstas son guardadas en una lista. Cada fila de la lista contendrá el conjunto de propiedades de la pestaña o columna en particular. Llamaremos a la pestaña o columna "elemento". Esto significa que éstas propiedades mostrarán una lista de tipos, que se ocultará automáticamente sobre el "Property manager". 
  • itemcountproperty
Es obligatorio y debe ser el nombre de una propiedad "integer" definida en el grupo de propiedades, de modo que se podrá especificar el número de elementos en la lista. Se podrá especificar un valor máximo para esta propiedad, a fin de restringir el número de elementos, de lo contrario se limitará a no más de 256. 
  • currentitemproperty
Es obligatorio y debe ser el nombre de una propiedad "integer" definida en el grupo de propiedades. Identifica al elemento actual seleccionado en el "Property Manager", los cambios aplican sólo a propiedades multi-valor. 
  • moveitemproperty
Es obligatorio y debe ser el nombre de una propiedad "integer" definida en el grupo de propiedades. Es utilizado para mover el elemento actual a una nueva posición en la lista de elementos.
  • properties
Es obligatorio. Permite conformar su lista de valores. Cada miembro ("Property Name") deberá corresponder con el nombre de una propiedad de entre el grupo de propiedades principal; El valor para cada miembro conforma la lista de valores para la propiedad. Es importante no cambiar el orden de las columnas una vez se haya comenzado a utilizar el control.
Ejemplo: 
"multivalueproperties": { 
     "currentitemproperty": "curitem",
     "itemlistproperty": "itemlist",
     "moveitemproperty": "move",
     "itemcountproperty": "itemcount", 
     "properties": {
          "mvprop1": 1,
          "mvprop2": 2
         }
      }
}

constants 

Es obligatorio y permite definir las constantes del control. Cada miembro del objeto constantes es en sí mismo un objeto que contiene los miembros que describen cada constante. Su nombre será también el nombre de la constante. Los elementos válidos para definir cada objeto constante son:
  • value
Es el valor de tipo "integer" de la constante y es obligatorio.
  • desc
Descripción de la constante. Un texto obligatorio, utilizado por el IDE como información adicional para la herramienta "catalog". 
  • group
Identifica al grupo en el "catalog" al que pertenece la constante y es opcional. De forma predeterminada, todas las constantes pertenecerán al grupo "RF:jsControls-≤control name≥". Todas las constantes que figuren a continuación de la que contenga un nombre del grupo, se entenderá como pertenecientes a ese grupo, hasta que se especifique un nuevo nombre de grupo (si procede).
Ejemplo: 
"constants": { 
     "kNetOmnisControlHeaderColor": {
         "value": 123,
         "desc": "The description of this constant"
     },
     "kNetOmnisControl1Range1": { 
        "value": 3,
        "desc": "Range constant 1”, 
        “group": “Ranges"
     },
     "kNetOmnisControl1Range2": { 
        "value": 5,
        "desc": "Range constant 2"
     }
}

09 octubre 2017

Componentes JSON&JS (Parte 7 de 12)

properties

Éste grupo es obligatorio. Contiene el conjunto de propiedades específicas del control. Cada uno de sus miembros es una propiedad y es en sí mismo un objeto que a su vez contiene los elementos que la describen. El nombre de cada miembro constituye el nombre de la propiedad, sin el prefijo "$".
Los miembros válidos para cada propiedad son los siguientes:

  • id
Es el identificador de la propiedad. Un entero positivo. Es obligatorio y es un campo crítico ya que Omnis usa éste dato para identificar la propiedad. Lo cual significa que no deberá cambiar estos valores de ID una vez que se ha comenzado a hacer uso del control. Id, debe ser único para todas las propiedades del control. Cuando "jsControls" carga el control, validará su unicidad. Normalmente se comenzar a numerar las propiedades desde 1. 

  • desc
Es la descripción de la propiedad. Un texto obligatorio, utilizado por el IDE, por ejemplo, como "tooltip" de la propiedad en el "Property Manager". 

  • tab
Es opcional y es el texto que identifica la ficha a la que pertenece en el "Property Manager". "custom" será la ficha predeterminada, si se omite. De lo contrario, deberá usarse uno de los siguientes valores: "custom", "general", "data", "appearance", "action", "prefs", "text", "pane", "sections", "java" o "column".

  • type
Es obligatorio. Identifica el tipo de la propiedad. Puede ser uno de los básicos (integer, character, boolean o list) o uno específico como (color, dataname, font, icon, pattern, fontstyle, linestyle, multiline, set, o remotemenu). 

  • runtimeonly
Es opcional y booleano, si es "true" indica que la propiedad es "runtime only". Su valor predeterminado si es omitido es "false". 

  • findandreplace
Es opcional y booleano, si es "true" indica que la propiedad puede ser localizada mediante "find and replace". Su valor predeterminado es "false". 

  • extconstant
Es opcional y booleano, si es "true" indica que la propiedad está restringida a un rango de constantes predefinidas para este control. Esto afectará al menú emergente en el "Property Manager". Puede usarse tanto con propiedades de tipo "integer" como con las de tipo "set"; En este último caso, el primer miembro del rango deberá ser una constante con valor cero, para representar al "set" vacío. 

  • intconstant
Es opcional y booleano, si es "true" indica que la propiedad está restringida a un rango de constantes predefinidas desde el núcleo de Omnis. Esto afectará al menú emergente en el "Property Manager". Puede usarse tanto con propiedades de tipo "integer" como con las de tipo "set"; En este último caso, el primer miembro del rango deberá ser una constante con valor cero, para representar al "set" vacío. "extconstant" y "intcontant" no deben ser "true" al mismo tiempo. 

  • constrangestart y constrangeend
Ambos deben existir si "extconstant" o "intconstant" son "true". En el caso de "intconstant", son "idents" (identificadores) de constantes que conformarán el rango de constantes a usar (podrá saber cuales son los "idents" de las constantes de núcleo Omnis, consultando el grupo "$constants" mediante el "Notation inspector"). En el caso de "extconstant", serán los nombres de las constantes definidas para el control; El conjunto estará entre "constrangestart" y "constrangeend" y en el orden en que figuren en el fichero "control.json". Tenga en cuenta que cuando se utiliza con un "set", los valores de las constantes deberán corresponderse con el "bit mask" (máscara) usada para representar el "set". 

  • min  y 
--> max
Son opcionales y solo se aplican cuando el tipo es "integer". Especifican los valores mínimos y máximos de la propiedad. 

  • initial
Es opcional y puede ser utilizado para indicar el valor inicial de la propiedad. Para los tipos "character", deberá ser un texto. Para tipos "integer", deberá ser un número entero. Para tipos "boolean" deberá ser un valor booleano.
Ejemplo:
"properties": { 
     "headercolor": {
          "id": 1, 
          "desc": "The header color of the control", 
          "type": "color",
          "tab": “appearance”,
          "initial": 255
     },
     "headericon": { 
          "id": 2,
          "desc": "The header icon of the control", 
          "popuptype": "icon",
          "tab": "appearance"
     },
     "rangeofexternalconstants": { 
       "id": 3,
       "desc": "Range of external constants", 
       "type": "integer",
       "extconstant": true,
       "constrangestart": "kNetOmnisControl1Range1",
       "constrangeend": "kNetOmnisControl1Range3",
     }
}