From 90a0950cbf41af66c42b91e50d5c4ca03bfdb7be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Th=C3=A9riault?= Date: Sun, 26 Jun 2016 03:41:27 -0400 Subject: [PATCH 1/6] Basic Visualforce auto completion --- package.json | 2 +- src/extension.ts | 4 +- src/refs/visualforce.ts | 6072 ++++++++++++++++++++++ src/visualforceCompletionItemProvider.ts | 20 + src/vsforce.ts | 10 + 5 files changed, 6105 insertions(+), 3 deletions(-) create mode 100644 src/refs/visualforce.ts create mode 100644 src/visualforceCompletionItemProvider.ts create mode 100644 src/vsforce.ts diff --git a/package.json b/package.json index 17e15a5..31f32da 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "onLanguage:apex", "onLanguage:visualforce" ], - "main": "./out/src/extension", + "main": "./out/src/vsforce", "contributes": { "commands": [ { diff --git a/src/extension.ts b/src/extension.ts index ab405ec..7c63f6c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,7 +6,7 @@ import {Connection} from './connection' let jsforce = require('jsforce'); let fs = require('fs'); var zipFolder = require('zip-folder'); - +/* export function activate(context: vscode.ExtensionContext) { var conn = new Connection(); @@ -55,7 +55,7 @@ export function activate(context: vscode.ExtensionContext) { }); }); } - +*/ // this method is called when your extension is deactivated export function deactivate() { } diff --git a/src/refs/visualforce.ts b/src/refs/visualforce.ts new file mode 100644 index 0000000..e89c76a --- /dev/null +++ b/src/refs/visualforce.ts @@ -0,0 +1,6072 @@ +export var visualforce = { + "analytics:reportChart": { + "simple": false, + "attribs": { + "body": { + "type": "Component[]" + }, + "cacheAge": { + "type": "Long" + }, + "cacheResults": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "developerName": { + "type": "String" + }, + "error": { + "type": "String" + }, + "filter": { + "type": "String" + }, + "hideOnError": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reportId": { + "type": "String" + }, + "showRefreshButton": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "size": { + "type": "String" + } + } + }, + "apex:actionFunction": { + "simple": true, + "attribs": { + "action": { + "type": "ApexPages.Action" + }, + "focus": { + "type": "String" + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "name": { + "type": "String" + }, + "namespace": { + "type": "String" + }, + "onbeforedomupdate": { + "type": "String" + }, + "oncomplete": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "status": { + "type": "String" + }, + "timeout": { + "type": "Integer" + } + } + }, + "apex:actionPoller": { + "simple": true, + "attribs": { + "action": { + "type": "ApexPages.Action" + }, + "enabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "interval": { + "type": "Integer" + }, + "oncomplete": { + "type": "String" + }, + "onsubmit": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "status": { + "type": "String" + }, + "timeout": { + "type": "Integer" + } + } + }, + "apex:actionRegion": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "renderRegionOnly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:actionStatus": { + "simple": false, + "attribs": { + "dir": { + "type": "String" + }, + "for": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "layout": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onstart": { + "type": "String" + }, + "onstop": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "startStyle": { + "type": "String" + }, + "startStyleClass": { + "type": "String" + }, + "startText": { + "type": "String" + }, + "stopStyle": { + "type": "String" + }, + "stopStyleClass": { + "type": "String" + }, + "stopText": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:actionSupport": { + "simple": true, + "attribs": { + "action": { + "type": "ApexPages.Action" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "disableDefault": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "event": { + "type": "String" + }, + "focus": { + "type": "String" + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "onbeforedomupdate": { + "type": "String" + }, + "oncomplete": { + "type": "String" + }, + "onsubmit": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "status": { + "type": "String" + }, + "timeout": { + "type": "Integer" + } + } + }, + "apex:areaSeries": { + "simple": false, + "attribs": { + "axis": { + "type": "String" + }, + "colorSet": { + "type": "String" + }, + "highlight": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "highlightLineWidth": { + "type": "Integer" + }, + "highlightOpacity": { + "type": "String" + }, + "highlightStrokeColor": { + "type": "String" + }, + "id": { + "type": "String" + }, + "opacity": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "showInLegend": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "tips": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "title": { + "type": "String" + }, + "xField": { + "type": "String" + }, + "yField": { + "type": "String" + } + } + }, + "apex:axis": { + "simple": false, + "attribs": { + "dashSize": { + "type": "Integer" + }, + "fields": { + "type": "String" + }, + "grid": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "gridFill": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "margin": { + "type": "Integer" + }, + "maximum": { + "type": "Integer" + }, + "minimum": { + "type": "Integer" + }, + "position": { + "type": "String", + "values": [ + "bottom", + "gauge", + "left", + "radial", + "right", + "top" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "steps": { + "type": "Integer" + }, + "title": { + "type": "String" + }, + "type": { + "type": "String", + "values": [ + "Category", + "Gauge", + "Numeric", + "Radial" + ] + } + } + }, + "apex:barSeries": { + "simple": false, + "attribs": { + "axis": { + "type": "String" + }, + "colorSet": { + "type": "String" + }, + "colorsProgressWithinSeries": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "groupGutter": { + "type": "Integer" + }, + "gutter": { + "type": "Integer" + }, + "highlight": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "highlightColor": { + "type": "String" + }, + "highlightLineWidth": { + "type": "Integer" + }, + "highlightOpacity": { + "type": "String" + }, + "highlightStroke": { + "type": "String" + }, + "id": { + "type": "String" + }, + "orientation": { + "type": "String", + "values": [ + "horizontal", + "vertical" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "showInLegend": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "stacked": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "tips": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "title": { + "type": "String" + }, + "xField": { + "type": "String" + }, + "xPadding": { + "type": "Integer" + }, + "yField": { + "type": "String" + }, + "yPadding": { + "type": "Integer" + } + } + }, + "apex:canvasApp": { + "simple": true, + "attribs": { + "applicationName": { + "type": "String" + }, + "border": { + "type": "String" + }, + "canvasId": { + "type": "String" + }, + "containerId": { + "type": "String" + }, + "developerName": { + "type": "String" + }, + "entityFields": { + "type": "String" + }, + "height": { + "type": "String" + }, + "id": { + "type": "String" + }, + "maxHeight": { + "type": "String" + }, + "maxWidth": { + "type": "String" + }, + "namespacePrefix": { + "type": "String" + }, + "onCanvasAppError": { + "type": "String" + }, + "onCanvasAppLoad": { + "type": "String" + }, + "parameters": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "scrolling": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:chart": { + "simple": false, + "attribs": { + "animate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "background": { + "type": "String" + }, + "colorSet": { + "type": "String" + }, + "data": { + "type": "Object" + }, + "floating": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "height": { + "type": "String" + }, + "hidden": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "legend": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "name": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "renderTo": { + "type": "String" + }, + "resizable": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "theme": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:chartLabel": { + "simple": true, + "attribs": { + "color": { + "type": "String" + }, + "display": { + "type": "String", + "values": [ + "insideEnd", + "insideStart", + "middle", + "none", + "outside", + "over", + "rotate", + "under" + ] + }, + "field": { + "type": "String" + }, + "font": { + "type": "String" + }, + "id": { + "type": "String" + }, + "minMargin": { + "type": "Integer" + }, + "orientation": { + "type": "String", + "values": [ + "horizontal", + "vertical" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "rotate": { + "type": "Integer" + } + } + }, + "apex:chartTips": { + "simple": true, + "attribs": { + "height": { + "type": "Integer" + }, + "id": { + "type": "String" + }, + "labelField": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "trackMouse": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "valueField": { + "type": "String" + }, + "width": { + "type": "Integer" + } + } + }, + "apex:column": { + "simple": true, + "attribs": { + "breakBefore": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "colspan": { + "type": "Integer" + }, + "dir": { + "type": "String" + }, + "footerClass": { + "type": "String" + }, + "footerValue": { + "type": "String" + }, + "headerClass": { + "type": "String" + }, + "headerValue": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rowspan": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:commandButton": { + "simple": true, + "attribs": { + "accesskey": { + "type": "String" + }, + "action": { + "type": "ApexPages.Action" + }, + "alt": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "image": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "lang": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "oncomplete": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "status": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "timeout": { + "type": "Integer" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:commandLink": { + "simple": true, + "attribs": { + "accesskey": { + "type": "String" + }, + "action": { + "type": "ApexPages.Action" + }, + "charset": { + "type": "String" + }, + "coords": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "hreflang": { + "type": "String" + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "lang": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "oncomplete": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rel": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "rev": { + "type": "String" + }, + "shape": { + "type": "String" + }, + "status": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "target": { + "type": "String" + }, + "timeout": { + "type": "Integer" + }, + "title": { + "type": "String" + }, + "type": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:componentExample": { + "simple": true, + "attribs": { + "demoPage": { + "type": "ApexPages.PageReference" + }, + "description": { + "type": "String" + }, + "examplePage": { + "type": "ApexPages.PageReference" + }, + "id": { + "type": "String" + }, + "imageURL": { + "type": "String" + }, + "name": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:composition": { + "simple": false, + "attribs": { + "rendered": { + "type": "String" + }, + "template": { + "type": "ApexPages.PageReference" + } + } + }, + "apex:dataList": { + "simple": false, + "attribs": { + "dir": { + "type": "String" + }, + "first": { + "type": "Integer" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rows": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + }, + "type": { + "type": "String" + }, + "value": { + "type": "Object" + }, + "var": { + "type": "String" + } + } + }, + "apex:dataTable": { + "simple": false, + "attribs": { + "align": { + "type": "String" + }, + "bgcolor": { + "type": "String" + }, + "border": { + "type": "String" + }, + "captionClass": { + "type": "String" + }, + "captionStyle": { + "type": "String" + }, + "cellpadding": { + "type": "String" + }, + "cellspacing": { + "type": "String" + }, + "columnClasses": { + "type": "String" + }, + "columns": { + "type": "Integer" + }, + "columnsWidth": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "first": { + "type": "Integer" + }, + "footerClass": { + "type": "String" + }, + "frame": { + "type": "String" + }, + "headerClass": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onRowClick": { + "type": "String" + }, + "onRowDblClick": { + "type": "String" + }, + "onRowMouseDown": { + "type": "String" + }, + "onRowMouseMove": { + "type": "String" + }, + "onRowMouseOut": { + "type": "String" + }, + "onRowMouseOver": { + "type": "String" + }, + "onRowMouseUp": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rowClasses": { + "type": "String" + }, + "rows": { + "type": "Integer" + }, + "rules": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "summary": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + }, + "var": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:define": { + "simple": false, + "attribs": { + "name": { + "type": "String" + } + } + }, + "apex:description": { + "simple": false, + "attribs": {} + }, + "apex:detail": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "inlineEdit": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "oncomplete": { + "type": "String" + }, + "relatedList": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "relatedListHover": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rerender": { + "type": "Object" + }, + "showChatter": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "subject": { + "type": "String" + }, + "title": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:dynamicComponent": { + "simple": true, + "attribs": { + "componentValue": { + "type": "UIComponent" + }, + "id": { + "type": "String" + }, + "invokeAfterAction": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:enhancedList": { + "simple": true, + "attribs": { + "customizable": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "height": { + "type": "Integer" + }, + "id": { + "type": "String" + }, + "listId": { + "type": "String" + }, + "oncomplete": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "rowsPerPage": { + "type": "Integer" + }, + "type": { + "type": "String" + }, + "width": { + "type": "Integer" + } + } + }, + "apex:facet": { + "simple": false, + "attribs": { + "name": { + "type": "String" + } + } + }, + "apex:flash": { + "simple": false, + "attribs": { + "flashvars": { + "type": "String" + }, + "height": { + "type": "String" + }, + "id": { + "type": "String" + }, + "loop": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "play": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "src": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:form": { + "simple": false, + "attribs": { + "accept": { + "type": "String" + }, + "acceptcharset": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "enctype": { + "type": "String" + }, + "forceSSL": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onreset": { + "type": "String" + }, + "onsubmit": { + "type": "String" + }, + "prependId": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "target": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:gaugeSeries": { + "simple": false, + "attribs": { + "colorSet": { + "type": "String" + }, + "dataField": { + "type": "String" + }, + "donut": { + "type": "Integer" + }, + "highlight": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "labelField": { + "type": "String" + }, + "needle": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "tips": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:iframe": { + "simple": true, + "attribs": { + "frameborder": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "height": { + "type": "String" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "scrolling": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "src": { + "type": "String" + }, + "title": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:image": { + "simple": true, + "attribs": { + "alt": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "height": { + "type": "String" + }, + "id": { + "type": "String" + }, + "ismap": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "lang": { + "type": "String" + }, + "longdesc": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + }, + "url": { + "type": "String" + }, + "usemap": { + "type": "String" + }, + "value": { + "type": "Object" + }, + "width": { + "type": "String" + } + } + }, + "apex:include": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "pageName": { + "type": "ApexPages.PageReference" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:includeLightning": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:includeScript": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "loadOnReady": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "value": { + "type": "Object" + } + } + }, + "apex:inlineEditSupport": { + "simple": true, + "attribs": { + "changedStyleClass": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "event": { + "type": "String" + }, + "hideOnEdit": { + "type": "Object" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "resetFunction": { + "type": "String" + }, + "showOnEdit": { + "type": "Object" + } + } + }, + "apex:input": { + "simple": true, + "attribs": { + "accesskey": { + "type": "String" + }, + "alt": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "list": { + "type": "Object" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "size": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "type": { + "type": "String", + "values": [ + "auto", + "date", + "datetime", + "datetime-local", + "email", + "month", + "number", + "range", + "search", + "tel", + "text", + "time", + "url", + "week" + ] + }, + "value": { + "type": "Object" + } + } + }, + "apex:inputCheckbox": { + "simple": true, + "attribs": { + "accesskey": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onselect": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "selected": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:inputField": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "list": { + "type": "Object" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onselect": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showDatePicker": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "taborderhint": { + "type": "Integer" + }, + "type": { + "type": "String", + "values": [ + "auto", + "date", + "datetime", + "datetime-local", + "email", + "month", + "number", + "range", + "search", + "tel", + "text", + "time", + "url", + "week" + ] + }, + "value": { + "type": "Object" + } + } + }, + "apex:inputFile": { + "simple": false, + "attribs": { + "accept": { + "type": "String" + }, + "accessKey": { + "type": "String" + }, + "alt": { + "type": "String" + }, + "contentType": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "fileName": { + "type": "String" + }, + "fileSize": { + "type": "Integer" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "java://java.lang.Boolean" + }, + "size": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleclass": { + "type": "String" + }, + "tabindex": { + "type": "Integer" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Blob" + } + } + }, + "apex:inputHidden": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "value": { + "type": "Object" + } + } + }, + "apex:inputSecret": { + "simple": true, + "attribs": { + "accesskey": { + "type": "String" + }, + "alt": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "maxlength": { + "type": "Integer" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onselect": { + "type": "String" + }, + "readonly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "redisplay": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "size": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:inputText": { + "simple": true, + "attribs": { + "accesskey": { + "type": "String" + }, + "alt": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "list": { + "type": "Object" + }, + "maxlength": { + "type": "Integer" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "size": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:inputTextarea": { + "simple": true, + "attribs": { + "accesskey": { + "type": "String" + }, + "cols": { + "type": "Integer" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onselect": { + "type": "String" + }, + "readonly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "richText": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rows": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:insert": { + "simple": false, + "attribs": { + "name": { + "type": "String" + } + } + }, + "apex:legend": { + "simple": false, + "attribs": { + "font": { + "type": "String" + }, + "id": { + "type": "String" + }, + "padding": { + "type": "Integer" + }, + "position": { + "type": "String", + "values": [ + "bottom", + "left", + "right", + "top" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "spacing": { + "type": "Integer" + } + } + }, + "apex:lineSeries": { + "simple": false, + "attribs": { + "axis": { + "type": "String" + }, + "fill": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "fillColor": { + "type": "String" + }, + "highlight": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "highlightStrokeWidth": { + "type": "String" + }, + "id": { + "type": "String" + }, + "markerFill": { + "type": "String" + }, + "markerSize": { + "type": "Integer" + }, + "markerType": { + "type": "String", + "values": [ + "circle", + "cross" + ] + }, + "opacity": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "showInLegend": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "smooth": { + "type": "Integer" + }, + "strokeColor": { + "type": "String" + }, + "strokeWidth": { + "type": "String" + }, + "tips": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "title": { + "type": "String" + }, + "xField": { + "type": "String" + }, + "yField": { + "type": "String" + } + } + }, + "apex:listViews": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "type": { + "type": "String" + } + } + }, + "apex:logCallPublisher": { + "simple": false, + "attribs": { + "autoCollapseBody": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "entityId": { + "type": "id" + }, + "id": { + "type": "String" + }, + "logCallBody": { + "type": "String" + }, + "logCallBodyHeight": { + "type": "String" + }, + "onSubmitFailure": { + "type": "String" + }, + "onSubmitSuccess": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "showAdditionalFields": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showSubmitButton": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "submitButtonName": { + "type": "String" + }, + "submitFunctionName": { + "type": "String" + }, + "title": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:message": { + "simple": true, + "attribs": { + "dir": { + "type": "String" + }, + "for": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:messages": { + "simple": true, + "attribs": { + "dir": { + "type": "String" + }, + "globalOnly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "layout": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:outputField": { + "simple": true, + "attribs": { + "dir": { + "type": "String" + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:outputLabel": { + "simple": false, + "attribs": { + "accesskey": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "escape": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "for": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:outputLink": { + "simple": false, + "attribs": { + "accesskey": { + "type": "String" + }, + "charset": { + "type": "String" + }, + "coords": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "hreflang": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rel": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rev": { + "type": "String" + }, + "shape": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "target": { + "type": "String" + }, + "title": { + "type": "String" + }, + "type": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:outputPanel": { + "simple": false, + "attribs": { + "dir": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "layout": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:outputText": { + "simple": false, + "attribs": { + "dir": { + "type": "String" + }, + "escape": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:page": { + "simple": false, + "attribs": { + "action": { + "type": "ApexPages.Action" + }, + "apiVersion": { + "type": "double" + }, + "applyBodyTag": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "applyHtmlTag": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "cache": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "contentType": { + "type": "String" + }, + "controller": { + "type": "String" + }, + "deferLastCommandUntilReady": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "docType": { + "type": "String" + }, + "expires": { + "type": "Integer" + }, + "extensions": { + "type": "String" + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "language": { + "type": "String" + }, + "manifest": { + "type": "String" + }, + "name": { + "type": "String" + }, + "pageStyle": { + "type": "String" + }, + "readOnly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "recordSetVar": { + "type": "String" + }, + "renderAs": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "setup": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showChat": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showHeader": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showQuickActionVfHeader": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "sidebar": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "standardController": { + "type": "String" + }, + "standardStylesheets": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "tabStyle": { + "type": "String" + }, + "title": { + "type": "String" + }, + "wizard": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:pageBlock": { + "simple": false, + "attribs": { + "dir": { + "type": "String" + }, + "helpTitle": { + "type": "String" + }, + "helpUrl": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "mode": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "tabStyle": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:pageBlockButtons": { + "simple": false, + "attribs": { + "dir": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "location": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:pageBlockSection": { + "simple": false, + "attribs": { + "collapsible": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "columns": { + "type": "Integer" + }, + "dir": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showHeader": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "title": { + "type": "String" + } + } + }, + "apex:pageBlockSectionItem": { + "simple": false, + "attribs": { + "dataStyle": { + "type": "String" + }, + "dataStyleClass": { + "type": "String" + }, + "dataTitle": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "helpText": { + "type": "String" + }, + "id": { + "type": "String" + }, + "labelStyle": { + "type": "String" + }, + "labelStyleClass": { + "type": "String" + }, + "labelTitle": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onDataclick": { + "type": "String" + }, + "onDatadblclick": { + "type": "String" + }, + "onDatakeydown": { + "type": "String" + }, + "onDatakeypress": { + "type": "String" + }, + "onDatakeyup": { + "type": "String" + }, + "onDatamousedown": { + "type": "String" + }, + "onDatamousemove": { + "type": "String" + }, + "onDatamouseout": { + "type": "String" + }, + "onDatamouseover": { + "type": "String" + }, + "onDatamouseup": { + "type": "String" + }, + "onLabelclick": { + "type": "String" + }, + "onLabeldblclick": { + "type": "String" + }, + "onLabelkeydown": { + "type": "String" + }, + "onLabelkeypress": { + "type": "String" + }, + "onLabelkeyup": { + "type": "String" + }, + "onLabelmousedown": { + "type": "String" + }, + "onLabelmousemove": { + "type": "String" + }, + "onLabelmouseout": { + "type": "String" + }, + "onLabelmouseover": { + "type": "String" + }, + "onLabelmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:pageBlockTable": { + "simple": false, + "attribs": { + "align": { + "type": "String" + }, + "border": { + "type": "String" + }, + "captionClass": { + "type": "String" + }, + "captionStyle": { + "type": "String" + }, + "cellpadding": { + "type": "String" + }, + "cellspacing": { + "type": "String" + }, + "columnClasses": { + "type": "String" + }, + "columns": { + "type": "Integer" + }, + "columnsWidth": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "first": { + "type": "Integer" + }, + "footerClass": { + "type": "String" + }, + "frame": { + "type": "String" + }, + "headerClass": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onRowClick": { + "type": "String" + }, + "onRowDblClick": { + "type": "String" + }, + "onRowMouseDown": { + "type": "String" + }, + "onRowMouseMove": { + "type": "String" + }, + "onRowMouseOut": { + "type": "String" + }, + "onRowMouseOver": { + "type": "String" + }, + "onRowMouseUp": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rowClasses": { + "type": "String" + }, + "rows": { + "type": "Integer" + }, + "rules": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "summary": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + }, + "var": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:pageMessage": { + "simple": false, + "attribs": { + "detail": { + "type": "String" + }, + "escape": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "severity": { + "type": "String" + }, + "strength": { + "type": "Integer" + }, + "summary": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:pageMessages": { + "simple": false, + "attribs": { + "escape": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showDetail": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:panelBar": { + "simple": false, + "attribs": { + "contentClass": { + "type": "String" + }, + "contentStyle": { + "type": "String" + }, + "headerClass": { + "type": "String" + }, + "headerClassActive": { + "type": "String" + }, + "headerStyle": { + "type": "String" + }, + "headerStyleActive": { + "type": "String" + }, + "height": { + "type": "String" + }, + "id": { + "type": "String" + }, + "items": { + "type": "Object" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "switchType": { + "type": "String" + }, + "value": { + "type": "Object" + }, + "var": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:panelBarItem": { + "simple": false, + "attribs": { + "contentClass": { + "type": "String" + }, + "contentStyle": { + "type": "String" + }, + "expanded": { + "type": "String" + }, + "headerClass": { + "type": "String" + }, + "headerClassActive": { + "type": "String" + }, + "headerStyle": { + "type": "String" + }, + "headerStyleActive": { + "type": "String" + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "name": { + "type": "Object" + }, + "onenter": { + "type": "String" + }, + "onleave": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:panelGrid": { + "simple": false, + "attribs": { + "bgcolor": { + "type": "String" + }, + "border": { + "type": "Integer" + }, + "captionClass": { + "type": "String" + }, + "captionStyle": { + "type": "String" + }, + "cellpadding": { + "type": "String" + }, + "cellspacing": { + "type": "String" + }, + "columnClasses": { + "type": "String" + }, + "columns": { + "type": "Integer" + }, + "dir": { + "type": "String" + }, + "footerClass": { + "type": "String" + }, + "frame": { + "type": "String" + }, + "headerClass": { + "type": "String" + }, + "id": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rowClasses": { + "type": "String" + }, + "rules": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "summary": { + "type": "String" + }, + "title": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:panelGroup": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "layout": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + } + } + }, + "apex:param": { + "simple": true, + "attribs": { + "assignTo": { + "type": "Object" + }, + "id": { + "type": "String" + }, + "name": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:pieSeries": { + "simple": false, + "attribs": { + "colorSet": { + "type": "String" + }, + "dataField": { + "type": "String" + }, + "donut": { + "type": "Integer" + }, + "highlight": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "labelField": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "showInLegend": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "tips": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:radarSeries": { + "simple": false, + "attribs": { + "fill": { + "type": "String" + }, + "highlight": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "markerFill": { + "type": "String" + }, + "markerSize": { + "type": "Integer" + }, + "markerType": { + "type": "String", + "values": [ + "circle", + "cross" + ] + }, + "opacity": { + "type": "Integer" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showInLegend": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "strokeColor": { + "type": "String" + }, + "strokeWidth": { + "type": "Integer" + }, + "tips": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "title": { + "type": "String" + }, + "xField": { + "type": "String" + }, + "yField": { + "type": "String" + } + } + }, + "apex:relatedList": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "list": { + "type": "String" + }, + "pageSize": { + "type": "Integer" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "subject": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:remoteObjectField": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "jsShorthand": { + "type": "String" + }, + "name": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "apex:remoteObjectModel": { + "simple": false, + "attribs": { + "create": { + "type": "String" + }, + "delete": { + "type": "String" + }, + "fields": { + "type": "String" + }, + "id": { + "type": "String" + }, + "jsShorthand": { + "type": "String" + }, + "name": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "retrieve": { + "type": "String" + }, + "update": { + "type": "String" + } + } + }, + "apex:remoteObjects": { + "simple": false, + "attribs": { + "create": { + "type": "String" + }, + "delete": { + "type": "String" + }, + "id": { + "type": "String" + }, + "jsNamespace": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "retrieve": { + "type": "String" + }, + "update": { + "type": "String" + } + } + }, + "apex:repeat": { + "simple": false, + "attribs": { + "first": { + "type": "Integer" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rows": { + "type": "Integer" + }, + "value": { + "type": "Object" + }, + "var": { + "type": "String" + } + } + }, + "apex:scatterSeries": { + "simple": false, + "attribs": { + "axis": { + "type": "String" + }, + "highlight": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "markerFill": { + "type": "String" + }, + "markerSize": { + "type": "Integer" + }, + "markerType": { + "type": "String", + "values": [ + "circle", + "cross" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendererFn": { + "type": "String" + }, + "showInLegend": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "tips": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "title": { + "type": "String" + }, + "xField": { + "type": "String" + }, + "yField": { + "type": "String" + } + } + }, + "apex:scontrol": { + "simple": true, + "attribs": { + "controlName": { + "type": "String" + }, + "height": { + "type": "Integer" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "scrollbars": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "subject": { + "type": "Object" + }, + "width": { + "type": "Integer" + } + } + }, + "apex:sectionHeader": { + "simple": true, + "attribs": { + "description": { + "type": "String" + }, + "help": { + "type": "String" + }, + "id": { + "type": "String" + }, + "printUrl": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "subtitle": { + "type": "String" + }, + "title": { + "type": "String" + } + } + }, + "apex:selectCheckboxes": { + "simple": false, + "attribs": { + "accesskey": { + "type": "String" + }, + "border": { + "type": "Integer" + }, + "borderVisible": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "disabledClass": { + "type": "String" + }, + "enabledClass": { + "type": "String" + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "layout": { + "type": "String" + }, + "legendInvisible": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "legendText": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onselect": { + "type": "String" + }, + "readonly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:selectList": { + "simple": false, + "attribs": { + "accesskey": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "disabledClass": { + "type": "String" + }, + "enabledClass": { + "type": "String" + }, + "id": { + "type": "String" + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "multiselect": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onselect": { + "type": "String" + }, + "readonly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "size": { + "type": "Integer" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:selectOption": { + "simple": false, + "attribs": { + "dir": { + "type": "String" + }, + "id": { + "type": "String" + }, + "itemDescription": { + "type": "String" + }, + "itemDisabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "itemEscaped": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "itemLabel": { + "type": "String" + }, + "itemValue": { + "type": "Object" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:selectOptions": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "value": { + "type": "Object" + } + } + }, + "apex:selectRadio": { + "simple": false, + "attribs": { + "accesskey": { + "type": "String" + }, + "border": { + "type": "Integer" + }, + "borderVisible": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "dir": { + "type": "String" + }, + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "disabledClass": { + "type": "String" + }, + "enabledClass": { + "type": "String" + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "label": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "layout": { + "type": "String" + }, + "legendInvisible": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "legendText": { + "type": "String" + }, + "onblur": { + "type": "String" + }, + "onchange": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onfocus": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "onselect": { + "type": "String" + }, + "readonly": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "required": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "tabindex": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:stylesheet": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "value": { + "type": "Object" + } + } + }, + "apex:tab": { + "simple": false, + "attribs": { + "disabled": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "focus": { + "type": "String" + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "label": { + "type": "String" + }, + "labelWidth": { + "type": "String" + }, + "name": { + "type": "Object" + }, + "onclick": { + "type": "String" + }, + "oncomplete": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "ontabenter": { + "type": "String" + }, + "ontableave": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "status": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "switchType": { + "type": "String" + }, + "timeout": { + "type": "Integer" + }, + "title": { + "type": "String" + } + } + }, + "apex:tabPanel": { + "simple": false, + "attribs": { + "activeTabClass": { + "type": "String" + }, + "contentClass": { + "type": "String" + }, + "contentStyle": { + "type": "String" + }, + "dir": { + "type": "String" + }, + "disabledTabClass": { + "type": "String" + }, + "headerAlignment": { + "type": "String" + }, + "headerClass": { + "type": "String" + }, + "headerSpacing": { + "type": "String" + }, + "height": { + "type": "String" + }, + "id": { + "type": "String" + }, + "immediate": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "inactiveTabClass": { + "type": "String" + }, + "lang": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "selectedTab": { + "type": "Object" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "switchType": { + "type": "String" + }, + "tabClass": { + "type": "String" + }, + "title": { + "type": "String" + }, + "value": { + "type": "Object" + }, + "width": { + "type": "String" + } + } + }, + "apex:toolbar": { + "simple": false, + "attribs": { + "contentClass": { + "type": "String" + }, + "contentStyle": { + "type": "String" + }, + "height": { + "type": "String" + }, + "id": { + "type": "String" + }, + "itemSeparator": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onitemclick": { + "type": "String" + }, + "onitemdblclick": { + "type": "String" + }, + "onitemkeydown": { + "type": "String" + }, + "onitemkeypress": { + "type": "String" + }, + "onitemkeyup": { + "type": "String" + }, + "onitemmousedown": { + "type": "String" + }, + "onitemmousemove": { + "type": "String" + }, + "onitemmouseout": { + "type": "String" + }, + "onitemmouseover": { + "type": "String" + }, + "onitemmouseup": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "separatorClass": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "width": { + "type": "String" + } + } + }, + "apex:toolbarGroup": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "itemSeparator": { + "type": "String" + }, + "location": { + "type": "String" + }, + "onclick": { + "type": "String" + }, + "ondblclick": { + "type": "String" + }, + "onkeydown": { + "type": "String" + }, + "onkeypress": { + "type": "String" + }, + "onkeyup": { + "type": "String" + }, + "onmousedown": { + "type": "String" + }, + "onmousemove": { + "type": "String" + }, + "onmouseout": { + "type": "String" + }, + "onmouseover": { + "type": "String" + }, + "onmouseup": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "separatorClass": { + "type": "String" + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + } + } + }, + "apex:variable": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "value": { + "type": "Object" + }, + "var": { + "type": "String" + } + } + }, + "apex:vote": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "objectId": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rerender": { + "type": "String" + } + } + }, + "chatter:feed": { + "simple": true, + "attribs": { + "entityId": { + "type": "id" + }, + "feedItemType": { + "type": "String" + }, + "id": { + "type": "String" + }, + "onComplete": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "showPublisher": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "chatter:feedWithFollowers": { + "simple": true, + "attribs": { + "entityId": { + "type": "id" + }, + "id": { + "type": "String" + }, + "onComplete": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + }, + "showHeader": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "chatter:follow": { + "simple": true, + "attribs": { + "entityId": { + "type": "id" + }, + "id": { + "type": "String" + }, + "onComplete": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + } + } + }, + "chatter:followers": { + "simple": true, + "attribs": { + "entityId": { + "type": "id" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "chatter:newsfeed": { + "simple": true, + "attribs": { + "id": { + "type": "String" + }, + "onComplete": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "reRender": { + "type": "Object" + } + } + }, + "chatter:userPhotoUpload": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "showOriginalPhoto": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "flow:interview": { + "simple": false, + "attribs": { + "allowShowPause": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "buttonLocation": { + "type": "String", + "values": [ + "top", + "bottom", + "both" + ] + }, + "buttonStyle": { + "type": "String" + }, + "finishLocation": { + "type": "ApexPages.PageReference" + }, + "id": { + "type": "String" + }, + "interview": { + "type": "Flow.Interview" + }, + "name": { + "type": "String" + }, + "pausedInterviewId": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "rerender": { + "type": "Object" + }, + "showHelp": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "ideas:detailOutputLink": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "ideaId": { + "type": "String" + }, + "page": { + "type": "ApexPages.PageReference" + }, + "pageNumber": { + "type": "Integer" + }, + "pageOffset": { + "type": "Integer" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + } + } + }, + "ideas:listOutputLink": { + "simple": false, + "attribs": { + "category": { + "type": "String" + }, + "communityId": { + "type": "String" + }, + "id": { + "type": "String" + }, + "page": { + "type": "ApexPages.PageReference" + }, + "pageNumber": { + "type": "Integer" + }, + "pageOffset": { + "type": "Integer" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "sort": { + "type": "String" + }, + "status": { + "type": "String" + }, + "stickyAttributes": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + } + } + }, + "ideas:profileListOutputLink": { + "simple": false, + "attribs": { + "communityId": { + "type": "String" + }, + "id": { + "type": "String" + }, + "page": { + "type": "ApexPages.PageReference" + }, + "pageNumber": { + "type": "Integer" + }, + "pageOffset": { + "type": "Integer" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "sort": { + "type": "String" + }, + "stickyAttributes": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "style": { + "type": "String" + }, + "styleClass": { + "type": "String" + }, + "userId": { + "type": "String" + } + } + }, + "site:googleAnalyticsTracking": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "site:previewAsAdmin": { + "simple": false, + "attribs": { + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "social:profileViewer": { + "simple": false, + "attribs": { + "entityId": { + "type": "id" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "support:caseFeed": { + "simple": false, + "attribs": { + "caseId": { + "type": "id" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "support:caseUnifiedFiles": { + "simple": false, + "attribs": { + "entityId": { + "type": "String" + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "support:clickToDial": { + "simple": false, + "attribs": { + "entityId": { + "type": "String" + }, + "id": { + "type": "String" + }, + "number": { + "type": "String" + }, + "params": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + } + } + }, + "topics:widget": { + "simple": true, + "attribs": { + "customUrl": { + "type": "string" + }, + "entity": { + "type": "string" + }, + "hideSuccessMessage": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "id": { + "type": "String" + }, + "rendered": { + "type": "Boolean", + "values": [ + "true", + "false" + ] + }, + "renderStyle": { + "type": "string", + "values": [ + "enhanced", + "simple" + ] + } + } + } +} diff --git a/src/visualforceCompletionItemProvider.ts b/src/visualforceCompletionItemProvider.ts new file mode 100644 index 0000000..7990186 --- /dev/null +++ b/src/visualforceCompletionItemProvider.ts @@ -0,0 +1,20 @@ +import vscode = require('vscode') +import {visualforce} from './refs/visualforce' + +export class VisualforceCompletionItemProvider implements vscode.CompletionItemProvider { + private autoCompleteData = visualforce; + + public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { + return new Promise((resolve, reject) => { + var autoCompletionItems: vscode.CompletionItem[] = []; + + for (var tag in this.autoCompleteData) { + autoCompletionItems.push(new vscode.CompletionItem(tag)); + } + + resolve(autoCompletionItems); + }); + } +} + + diff --git a/src/vsforce.ts b/src/vsforce.ts new file mode 100644 index 0000000..0702a4e --- /dev/null +++ b/src/vsforce.ts @@ -0,0 +1,10 @@ +import vscode = require('vscode'); +import {VisualforceCompletionItemProvider} from './visualforceCompletionItemProvider' + +const apexDocumentFilter: vscode.DocumentFilter = { language: 'visualforce' }; + +export function activate(context: vscode.ExtensionContext) { + + // Activate Visualforce CompletionItemProvider + vscode.languages.registerCompletionItemProvider(apexDocumentFilter, new VisualforceCompletionItemProvider(), "<"); +} From 2e5250410c8024a7833e3e3470805d5ffbf3bcbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Th=C3=A9riault?= Date: Sun, 26 Jun 2016 03:52:19 -0400 Subject: [PATCH 2/6] Now build the Completion list only once --- src/visualforceCompletionItemProvider.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/visualforceCompletionItemProvider.ts b/src/visualforceCompletionItemProvider.ts index 7990186..2b5dc1e 100644 --- a/src/visualforceCompletionItemProvider.ts +++ b/src/visualforceCompletionItemProvider.ts @@ -2,17 +2,19 @@ import vscode = require('vscode') import {visualforce} from './refs/visualforce' export class VisualforceCompletionItemProvider implements vscode.CompletionItemProvider { - private autoCompleteData = visualforce; + private autoCompletionItems: vscode.CompletionItem[] = []; - public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { - return new Promise((resolve, reject) => { - var autoCompletionItems: vscode.CompletionItem[] = []; + public constructor () { + for (var tag in visualforce) { + this.autoCompletionItems.push(new vscode.CompletionItem(tag)); + } + } - for (var tag in this.autoCompleteData) { - autoCompletionItems.push(new vscode.CompletionItem(tag)); - } + public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { + var _this = this; - resolve(autoCompletionItems); + return new Promise((resolve, reject) => { + resolve(_this.autoCompletionItems); }); } } From b9bd359357e707a0680797a5a9ec9a251639c952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Th=C3=A9riault?= Date: Sun, 26 Jun 2016 04:02:33 -0400 Subject: [PATCH 3/6] Fix word pattern, now ":" doesn't break a work (ex. apex:test now counts as a word) --- src/visualforceCompletionItemProvider.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/visualforceCompletionItemProvider.ts b/src/visualforceCompletionItemProvider.ts index 2b5dc1e..63691d0 100644 --- a/src/visualforceCompletionItemProvider.ts +++ b/src/visualforceCompletionItemProvider.ts @@ -4,10 +4,14 @@ import {visualforce} from './refs/visualforce' export class VisualforceCompletionItemProvider implements vscode.CompletionItemProvider { private autoCompletionItems: vscode.CompletionItem[] = []; - public constructor () { + public constructor() { for (var tag in visualforce) { this.autoCompletionItems.push(new vscode.CompletionItem(tag)); } + + vscode.languages.setLanguageConfiguration("visualforce", { + wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\'\"\,\.\<\>\/\?\s]+)/g + }); } public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { From f2a5f4ef5718b65fe36f17ec008e16e2409be001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Th=C3=A9riault?= Date: Sun, 26 Jun 2016 04:32:06 -0400 Subject: [PATCH 4/6] Add support for visualforce attribute completion --- src/visualforceCompletionItemProvider.ts | 14 ++++++++++++++ src/vsforce.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/visualforceCompletionItemProvider.ts b/src/visualforceCompletionItemProvider.ts index 63691d0..36d710c 100644 --- a/src/visualforceCompletionItemProvider.ts +++ b/src/visualforceCompletionItemProvider.ts @@ -17,6 +17,20 @@ export class VisualforceCompletionItemProvider implements vscode.CompletionItemP public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { var _this = this; + var line = document.lineAt(position.line); + var symbolMatches = /<(\w+:\w+).*>/.exec(line.text); + + if (symbolMatches && symbolMatches.length == 2) { + var attribsCompletionItems: vscode.CompletionItem[] = [] + for (var attr in visualforce[symbolMatches[1]].attribs) { + attribsCompletionItems.push(new vscode.CompletionItem(attr)); + } + + return new Promise((resolve, reject) => { + resolve(attribsCompletionItems); + }); + } + return new Promise((resolve, reject) => { resolve(_this.autoCompletionItems); }); diff --git a/src/vsforce.ts b/src/vsforce.ts index 0702a4e..4433800 100644 --- a/src/vsforce.ts +++ b/src/vsforce.ts @@ -6,5 +6,5 @@ const apexDocumentFilter: vscode.DocumentFilter = { language: 'visualforce' }; export function activate(context: vscode.ExtensionContext) { // Activate Visualforce CompletionItemProvider - vscode.languages.registerCompletionItemProvider(apexDocumentFilter, new VisualforceCompletionItemProvider(), "<"); + vscode.languages.registerCompletionItemProvider(apexDocumentFilter, new VisualforceCompletionItemProvider(), "<", " "); } From 48b1a5a4f4439932dbeda8bd35c9c4edab0b647f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Th=C3=A9riault?= Date: Sun, 26 Jun 2016 15:03:23 -0400 Subject: [PATCH 5/6] Support for custom visualforce component (from Salesforce) --- src/connection.ts | 5 +++ src/visualforceCompletionItemProvider.ts | 52 ++++++++++++++++++++---- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/connection.ts b/src/connection.ts index 111a118..687216a 100644 --- a/src/connection.ts +++ b/src/connection.ts @@ -4,6 +4,11 @@ import * as vscode from 'vscode'; import * as xml2js from 'xml2js'; import * as fs from 'fs'; +export interface QueryResult { + totalSize: number, + records: any[] +} + export class Connection { private jsforceConn: any; private outputConsole: vscode.OutputChannel; diff --git a/src/visualforceCompletionItemProvider.ts b/src/visualforceCompletionItemProvider.ts index 36d710c..2d75d81 100644 --- a/src/visualforceCompletionItemProvider.ts +++ b/src/visualforceCompletionItemProvider.ts @@ -1,29 +1,50 @@ import vscode = require('vscode') import {visualforce} from './refs/visualforce' +import {Connection, QueryResult} from './connection' export class VisualforceCompletionItemProvider implements vscode.CompletionItemProvider { private autoCompletionItems: vscode.CompletionItem[] = []; + private conn: Connection; public constructor() { - for (var tag in visualforce) { - this.autoCompletionItems.push(new vscode.CompletionItem(tag)); - } - vscode.languages.setLanguageConfiguration("visualforce", { wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\'\"\,\.\<\>\/\?\s]+)/g }); + + this.conn = new Connection(); } - public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { - var _this = this; + private getVisualforceComponentFromSalesforce(items: vscode.CompletionItem[]): Thenable { + return new Promise((resolve, reject) => { + this.conn.executeQuery("SELECT Description, Name, NamespacePrefix FROM ApexComponent", (results: QueryResult) => { + if (results && results.totalSize != 0) { + for (var record in results.records) { + var completionItem = new vscode.CompletionItem((results.records[record].NamespacePrefix ? results.records[record].NamespacePrefix : "c") + ":" + results.records[record].Name); + completionItem.documentation = results.records[record].Description; + completionItem.detail = results.records[record].Name; + completionItem.kind = vscode.CompletionItemKind.Class; + completionItem.insertText = completionItem.label + ">"; + + items.push(completionItem); + } + } + resolve(items); + }); + }); + } + public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { var line = document.lineAt(position.line); var symbolMatches = /<(\w+:\w+).*>/.exec(line.text); - if (symbolMatches && symbolMatches.length == 2) { + if (symbolMatches && symbolMatches.length >= 2) { var attribsCompletionItems: vscode.CompletionItem[] = [] for (var attr in visualforce[symbolMatches[1]].attribs) { - attribsCompletionItems.push(new vscode.CompletionItem(attr)); + var completionItem = new vscode.CompletionItem(attr); + completionItem.kind = vscode.CompletionItemKind.Property; + completionItem.insertText = completionItem.label + "=\"\""; + + attribsCompletionItems.push(completionItem); } return new Promise((resolve, reject) => { @@ -32,7 +53,20 @@ export class VisualforceCompletionItemProvider implements vscode.CompletionItemP } return new Promise((resolve, reject) => { - resolve(_this.autoCompletionItems); + this.autoCompletionItems = []; + + for (var tag in visualforce) { + var completionItem = new vscode.CompletionItem(tag); + completionItem.kind = vscode.CompletionItemKind.Class; + completionItem + completionItem.insertText = completionItem.label + ">"; + + this.autoCompletionItems.push(completionItem); + } + + this.getVisualforceComponentFromSalesforce(this.autoCompletionItems).then((values: vscode.CompletionItem[]) => { + resolve(values); + }); }); } } From 2428c2f5f15c2ab90f6116b90558837c45c44d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Th=C3=A9riault?= Date: Wed, 6 Jul 2016 23:16:39 -0400 Subject: [PATCH 6/6] Visualforce Completion cleanup + file support --- src/providers/visualforceComponentCIP.ts | 27 +++++++ .../visualforceBaseComponents.ts} | 2 +- src/symbols/visualforceComponent.ts | 11 +++ src/symbols/visualforceComponentCache.ts | 48 ++++++++++++ src/symbols/visualforceComponentFetcher.ts | 4 + .../visualforceComponentFetcherBase.ts | 31 ++++++++ .../visualforceComponentFetcherFile.ts | 49 ++++++++++++ .../visualforceComponentFetcherSalesforce.ts | 26 +++++++ src/utils.ts | 5 ++ src/visualforceCompletionItemProvider.ts | 74 ------------------- src/vsforce.ts | 6 +- 11 files changed, 205 insertions(+), 78 deletions(-) create mode 100644 src/providers/visualforceComponentCIP.ts rename src/{refs/visualforce.ts => symbols/visualforceBaseComponents.ts} (99%) create mode 100644 src/symbols/visualforceComponent.ts create mode 100644 src/symbols/visualforceComponentCache.ts create mode 100644 src/symbols/visualforceComponentFetcher.ts create mode 100644 src/symbols/visualforceComponentFetcherBase.ts create mode 100644 src/symbols/visualforceComponentFetcherFile.ts create mode 100644 src/symbols/visualforceComponentFetcherSalesforce.ts create mode 100644 src/utils.ts delete mode 100644 src/visualforceCompletionItemProvider.ts diff --git a/src/providers/visualforceComponentCIP.ts b/src/providers/visualforceComponentCIP.ts new file mode 100644 index 0000000..e7986c6 --- /dev/null +++ b/src/providers/visualforceComponentCIP.ts @@ -0,0 +1,27 @@ +import vscode = require('vscode') +import {VisualforceComponentCacheInstance} from '../symbols/visualforceComponentCache' + +export class VisualforceCompletionItemProvider implements vscode.CompletionItemProvider { + public constructor() { + vscode.languages.setLanguageConfiguration("visualforce", { + wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\'\"\,\.\<\>\/\?\s]+)/g + }); + } + + public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { + return new Promise((resolve, reject) => { + var completionItems: vscode.CompletionItem[] = []; + + VisualforceComponentCacheInstance.getComponentNames().forEach(cmp => { + var completionItem = new vscode.CompletionItem(cmp); + completionItem.kind = vscode.CompletionItemKind.Class; + completionItem.insertText = completionItem.label + ">"; + + completionItems.push(completionItem); + }); + resolve(completionItems); + }); + } +} + + diff --git a/src/refs/visualforce.ts b/src/symbols/visualforceBaseComponents.ts similarity index 99% rename from src/refs/visualforce.ts rename to src/symbols/visualforceBaseComponents.ts index e89c76a..4e2a6ea 100644 --- a/src/refs/visualforce.ts +++ b/src/symbols/visualforceBaseComponents.ts @@ -1,4 +1,4 @@ -export var visualforce = { +export var VisualforceBaseComponent = { "analytics:reportChart": { "simple": false, "attribs": { diff --git a/src/symbols/visualforceComponent.ts b/src/symbols/visualforceComponent.ts new file mode 100644 index 0000000..15ca512 --- /dev/null +++ b/src/symbols/visualforceComponent.ts @@ -0,0 +1,11 @@ +interface VisualforceComponentAttribute { + name: string; + type: string; + values: string[]; +} + +interface VisualforceComponent { + name: string; + attributes: VisualforceComponentAttribute[]; + file?: string +} diff --git a/src/symbols/visualforceComponentCache.ts b/src/symbols/visualforceComponentCache.ts new file mode 100644 index 0000000..113ba20 --- /dev/null +++ b/src/symbols/visualforceComponentCache.ts @@ -0,0 +1,48 @@ +import {VisualforceComponentFetcher} from './visualforceComponentFetcher' +import {VisualforceComponentFetcherBase} from './visualforceComponentFetcherBase' +import {VisualforceComponentFetcherFile} from './visualforceComponentFetcherFile' +import {VisualforceComponentFetcherSalesforce} from './visualforceComponentFetcherSalesforce' + +export class VisualforceComponentCache { + private cache: { [name: string]: VisualforceComponent } = {}; + private fetchers: VisualforceComponentFetcher[] = []; + + constructor() { + this.fetchers.push(new VisualforceComponentFetcherBase()); + this.fetchers.push(new VisualforceComponentFetcherFile(this)); + this.fetchers.push(new VisualforceComponentFetcherSalesforce()); + + this.fetchers.forEach((f) => { + f.fetchAll().then((components) => { + components.forEach(component => { + if (this.getComponent(component.name) == null || + (this.getComponent(component.name) != null && f.canOverwrite)) { + this.cache[component.name] = component; + } + }); + }); + }) + } + + public getComponent(name: string): VisualforceComponent { + return this.cache[name]; + } + + public getComponents(): VisualforceComponent[] { + return Object.keys(this.cache).map(name => this.cache[name]); + } + + public getComponentNames(): string[] { + return Object.keys(this.cache); + } + + public updateComponent(component: VisualforceComponent) { + this.cache[component.name] = component; + } + + public removeComponent(name: string) { + this.cache[name] = null; + } +} + +export var VisualforceComponentCacheInstance = new VisualforceComponentCache(); diff --git a/src/symbols/visualforceComponentFetcher.ts b/src/symbols/visualforceComponentFetcher.ts new file mode 100644 index 0000000..68a4997 --- /dev/null +++ b/src/symbols/visualforceComponentFetcher.ts @@ -0,0 +1,4 @@ +export interface VisualforceComponentFetcher { + fetchAll(): Thenable + canOverwrite: boolean +} diff --git a/src/symbols/visualforceComponentFetcherBase.ts b/src/symbols/visualforceComponentFetcherBase.ts new file mode 100644 index 0000000..02d216f --- /dev/null +++ b/src/symbols/visualforceComponentFetcherBase.ts @@ -0,0 +1,31 @@ +import {VisualforceComponentFetcher} from './visualforceComponentFetcher' +import {VisualforceBaseComponent} from './visualforceBaseComponents' + +export class VisualforceComponentFetcherBase implements VisualforceComponentFetcher { + public canOverwrite:boolean = true; + + public fetchAll(): Thenable { + return new Promise((resolve, reject) => { + var componentList: VisualforceComponent[] = []; + + for (var cmp in VisualforceBaseComponent) { + var attributes: VisualforceComponentAttribute[] = []; + + for (var attr in VisualforceBaseComponent[cmp].attribs) { + attributes.push({ + name: attr, + type: VisualforceBaseComponent[cmp].attribs[attr].type, + values: VisualforceBaseComponent[cmp].attribs[attr].values + }); + } + + componentList.push({ + name: cmp, + attributes: attributes + }); + } + + resolve(componentList); + }); + } +} diff --git a/src/symbols/visualforceComponentFetcherFile.ts b/src/symbols/visualforceComponentFetcherFile.ts new file mode 100644 index 0000000..ddb6bf8 --- /dev/null +++ b/src/symbols/visualforceComponentFetcherFile.ts @@ -0,0 +1,49 @@ +import vscode = require('vscode'); +import * as utils from '../utils'; +import {VisualforceComponentCache} from './visualforceComponentCache' +import {VisualforceComponentFetcher} from './visualforceComponentFetcher' +import {VisualforceComponentCacheInstance} from './visualforceComponentCache' + +export class VisualforceComponentFetcherFile implements VisualforceComponentFetcher { + public canOverwrite: boolean = true; + + constructor(private cache: VisualforceComponentCache) { + var fileWatcher = vscode.workspace.createFileSystemWatcher("**/*.component"); + fileWatcher.onDidChange((uri: vscode.Uri) => this.handleFileChange(uri)); + fileWatcher.onDidCreate((uri: vscode.Uri) => this.handleFileChange(uri)); + fileWatcher.onDidDelete((uri: vscode.Uri) => this.handleFileDelete(uri)); + } + + private handleFileChange(uri: vscode.Uri) { + this.cache.updateComponent(this.createComponentFromUri(uri)); + } + + private handleFileDelete(uri: vscode.Uri) { + this.cache.removeComponent(this.getComponentNameByUri(uri)); + } + + private createComponentFromUri(uri: vscode.Uri): VisualforceComponent { + return { + name: this.getComponentNameByUri(uri), + attributes: [], + file: uri.path + }; + } + + private getComponentNameByUri(uri: vscode.Uri) { + return "c:" + utils.getFileNameFromUri(uri).split('.')[0]; + } + + public fetchAll(): Thenable { + return new Promise((resolve, reject) => { + var componentList: VisualforceComponent[] = []; + vscode.workspace.findFiles("**/*.component", "").then(uris => { + uris.forEach(uri => { + componentList.push(this.createComponentFromUri(uri)); + }); + + resolve(componentList); + }); + }); + } +} diff --git a/src/symbols/visualforceComponentFetcherSalesforce.ts b/src/symbols/visualforceComponentFetcherSalesforce.ts new file mode 100644 index 0000000..d29215b --- /dev/null +++ b/src/symbols/visualforceComponentFetcherSalesforce.ts @@ -0,0 +1,26 @@ +import {VisualforceComponentFetcher} from './visualforceComponentFetcher' +import {Connection, QueryResult} from './../connection' + +export class VisualforceComponentFetcherSalesforce implements VisualforceComponentFetcher { + private conn: Connection = new Connection(); + + public canOverwrite: boolean = false; + + public fetchAll(): Thenable { + return new Promise((resolve, reject) => { + var componentList: VisualforceComponent[] = []; + this.conn.executeQuery("SELECT Description, Name, NamespacePrefix FROM ApexComponent", (results: QueryResult) => { + if (results && results.totalSize != 0) { + for (var record in results.records) { + componentList.push({ + name: results.records[record].NamespacePrefix ? results.records[record].NamespacePrefix : "c:" + results.records[record].Name, + attributes: [] + }) + } + + resolve(componentList); + } + }); + }); + } +} diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..7e85a8b --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,5 @@ +import vscode = require('vscode'); + +export function getFileNameFromUri(uri: vscode.Uri): string { + return uri.path.replace(/^.*[\\\/]/, '') +} diff --git a/src/visualforceCompletionItemProvider.ts b/src/visualforceCompletionItemProvider.ts deleted file mode 100644 index 2d75d81..0000000 --- a/src/visualforceCompletionItemProvider.ts +++ /dev/null @@ -1,74 +0,0 @@ -import vscode = require('vscode') -import {visualforce} from './refs/visualforce' -import {Connection, QueryResult} from './connection' - -export class VisualforceCompletionItemProvider implements vscode.CompletionItemProvider { - private autoCompletionItems: vscode.CompletionItem[] = []; - private conn: Connection; - - public constructor() { - vscode.languages.setLanguageConfiguration("visualforce", { - wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\'\"\,\.\<\>\/\?\s]+)/g - }); - - this.conn = new Connection(); - } - - private getVisualforceComponentFromSalesforce(items: vscode.CompletionItem[]): Thenable { - return new Promise((resolve, reject) => { - this.conn.executeQuery("SELECT Description, Name, NamespacePrefix FROM ApexComponent", (results: QueryResult) => { - if (results && results.totalSize != 0) { - for (var record in results.records) { - var completionItem = new vscode.CompletionItem((results.records[record].NamespacePrefix ? results.records[record].NamespacePrefix : "c") + ":" + results.records[record].Name); - completionItem.documentation = results.records[record].Description; - completionItem.detail = results.records[record].Name; - completionItem.kind = vscode.CompletionItemKind.Class; - completionItem.insertText = completionItem.label + ">"; - - items.push(completionItem); - } - } - resolve(items); - }); - }); - } - - public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Thenable { - var line = document.lineAt(position.line); - var symbolMatches = /<(\w+:\w+).*>/.exec(line.text); - - if (symbolMatches && symbolMatches.length >= 2) { - var attribsCompletionItems: vscode.CompletionItem[] = [] - for (var attr in visualforce[symbolMatches[1]].attribs) { - var completionItem = new vscode.CompletionItem(attr); - completionItem.kind = vscode.CompletionItemKind.Property; - completionItem.insertText = completionItem.label + "=\"\""; - - attribsCompletionItems.push(completionItem); - } - - return new Promise((resolve, reject) => { - resolve(attribsCompletionItems); - }); - } - - return new Promise((resolve, reject) => { - this.autoCompletionItems = []; - - for (var tag in visualforce) { - var completionItem = new vscode.CompletionItem(tag); - completionItem.kind = vscode.CompletionItemKind.Class; - completionItem - completionItem.insertText = completionItem.label + ">"; - - this.autoCompletionItems.push(completionItem); - } - - this.getVisualforceComponentFromSalesforce(this.autoCompletionItems).then((values: vscode.CompletionItem[]) => { - resolve(values); - }); - }); - } -} - - diff --git a/src/vsforce.ts b/src/vsforce.ts index 4433800..5f15914 100644 --- a/src/vsforce.ts +++ b/src/vsforce.ts @@ -1,10 +1,10 @@ import vscode = require('vscode'); -import {VisualforceCompletionItemProvider} from './visualforceCompletionItemProvider' +import {VisualforceCompletionItemProvider} from './providers/visualforceComponentCIP' const apexDocumentFilter: vscode.DocumentFilter = { language: 'visualforce' }; export function activate(context: vscode.ExtensionContext) { - // Activate Visualforce CompletionItemProvider - vscode.languages.registerCompletionItemProvider(apexDocumentFilter, new VisualforceCompletionItemProvider(), "<", " "); + // Activate Visualforce Component CompletionItemProvider + vscode.languages.registerCompletionItemProvider(apexDocumentFilter, new VisualforceCompletionItemProvider(), "<"); }