SlideShare a Scribd company logo
ColdFusion Builder ExtensionsTerry RyanAdobe ColdFusion Evangelisthttp://terrenceryan.com@tpryan
Google Translator
Builder Stats
Riaforge Download
Getting Started Using
InstallationInstallPackaged Zip filesImport
Using ExtensionsAvailable as Context Menus (Right Click thingies) for:RDS ViewProject ViewOutline ViewEditor
RDS VIEWEDITOR VIEWPROJECT VIEWOUTLINE VIEW
Getting Started Writing
Extension ComponentsIde_config.xmlCFML HandlersSupporting Code
<application>[Metadata][Menu Contributions][Handlers]</application>ide_config.xml
ide_config.xml<application><name>DemoExtensions</name><author>Terrence Ryan</author><version>1.0</version><email>terry.ryan@adobe.com</email><description>Simple Extension</description>[Menu Contributions][Handlers]</application>
LicensingAdd License agreement to metadata.
ide_config.xml<application>[Metadata]<menucontributions><contribution target="rdsview" >	<menu name="Database Info"><action name=“DBVersion" handlerid="databaseVersion" />	</menu></contribution></menucontributions>[Handlers]</application>
ide_config.xml<application>[Metadata][Menu Contributions]<handlers>	<handler id="databaseVersion" type="CFM" filename="databaseVersion.cfm" /></handlers></application>
ide_config.xml<application><name>DemoExtensions</name><author>Terrence Ryan</author><version>1.0</version><email>terry.ryan@adobe.com</email><description>Simple Extension</description><menucontributions><contribution target="rdsview" >	<menu name="Database Info"><action name=“DBVersion" handlerid="databaseVersion" /><action name="Inspect Table" handlerid="inspectTables" />	</menu></contribution></menucontributions><handlers>	<handler id="databaseVersion" type="CFM" filename="databaseVersion.cfm" /></handlers></application>
Handlers[Parse IDE input][Do something][Respond to IDE]
Parse IDE Input<event><ide version="2.0"><callbackurl>     http://192.168.180.208:53301/index.cfm?extension=ColdFusion Builder Test Creator</callbackurl><rdsview><database name="cfartgallery"><table name="APP.ART"><fields><field name="ARTID" type="INTEGER" length="10"/><field name="ARTISTID" type="INTEGER" length="10"/><field name="ARTNAME" type="VARCHAR" length="50"/><field name="DESCRIPTION" type="CLOB" length="2147483647"/><field name="PRICE" type="DECIMAL" length="19"/><field name="LARGEIMAGE" type="VARCHAR" length="30"/><field name="MEDIAID" type="INTEGER" length="10"/><field name="ISSOLD" type="SMALLINT" length="5"/></fields></table></database></rdsview></ide></event>
Parse IDE Input<cfsetXMLDoc= XMLParse(form.ideeventInfo) /><cfsetdb.dbname=XMLDoc.event.ide.rdsview.database[1].XMLAttributes.name />[Do something][Respond to IDE]
Do Something[Parse IDE input]<cfdbinfodatasource="#db.dbname#" name="version" type="version" />[Respond to IDE]
Respond to IDE[Parse IDE input][Do something]<cfheader name="Content-Type" value="text/xml"><response status="success" showresponse="true"><ide><dialog width="600" height="400" /><body><![CDATA[	<cf_versionDisplayversionQuery = "#version#" />]]></body></ide></response>
Put it all together<cfsetXMLDoc= XMLParse(form.ideeventInfo) /><cfsetdb.dbname=XMLDoc.event.ide.rdsview.database[1].XMLAttributes.name /><cfdbinfodatasource="#db.dbname#" name="version" type="version" /><cfheader name="Content-Type" value="text/xml"><response status="success" showresponse="true"><ide><dialog width="600" height="400" /><body><![CDATA[	<cf_versionDisplayversionQuery = "#version#" />]]></body></ide></response>
Interacting with IDE
Collecting Input <menucontributions><contribution target="rdsview" ><menu name="Database Info"><action name="Database Version" handlerid="databaseVersion" /><action name="Inspect Table" handlerid="inspectTables"><input name="showPK" label="Show Primary Key"  type="boolean"/><input name="showFK" label="Show Foreign Key" type="boolean"/></action>	</menu></contribution></menucontributions>
User input<event><user><input name="showPK" value="true"/><input name="showFK" value="true"/></user></event>
Collecting Input TypesStringDirBooleanFilePasswordListNameLabelTooltipRequiredDefaultCheckedPatternErrorMessageHelpMessage
Workspace KeywordsLeverage Workspace Valuesprojectlocationprojectnameserverhomewwwroot<input name=“outputDir" label=“Output Folder" default="{$projectlocation}" type="dir"/>
Workspace Keywords - GotchasDoes not work in RDSviewKeywords are case sensitive
Menu FiltersAdd Context-Menus only to specific itemsFoldersProjectsFilesOutline NodesPattern match against name or RegEx<filters>	<filter type="file" pattern=“index.cfm" /><filter type=“cffunction" /></filters>
Menu Filters - Gotchas*.cfc does not workIt’s a regular expression.*\.cfc
MenusRDS ViewProject ViewOutline ViewEditor
RDS View<event><ide version="2.0"><callbackurl>http://192.168.180.208:53301/index.cfm?extension=ColdFusion Builder Test Creator</callbackurl><rdsview><database name="cfartgallery"><table name="APP.ART"><fields><field name="ARTID" type="INTEGER" length="10"/><field name="ARTISTID" type="INTEGER" length="10"/><field name="ARTNAME" type="VARCHAR" length="50"/><field name="DESCRIPTION" type="CLOB" length="2147483647"/><field name="PRICE" type="DECIMAL" length="19"/><field name="LARGEIMAGE" type="VARCHAR" length="30"/><field name="MEDIAID" type="INTEGER" length="10"/><field name="ISSOLD" type="SMALLINT" length="5"/></fields></table></database></rdsview></ide></event>
Project View<event><ide version="2.0"><callbackurl>     http://192.168.180.208:53301/index.cfm?extension=ColdFusion Builder Test Creator</callbackurl><projectviewprojectname="DemoExtensions" projectlocation=”[Project Path]"><resource path=”[File Path]" type="file"/></projectview></ide></event>
Outline View<event><ide version="2.0"><callbackurl>     http://192.168.180.208:53301/index.cfm?extension=ColdFusion Builder Test Creator</callbackurl><outlineviewprojectname="FlexGumboDemo" projectlocation="[Project Path]"><source filename="artists.cfc" path="[FilePath]"><node type="cffunction"><function name="getIDName" returntype=" void"></function></node></source></outlineview></ide></event>
Editor View<event><ide version="2.0"><callbackurl>     http://192.168.180.208:53301/index.cfm?extension=ColdFusion Builder Test Creator</callbackurl><editor><file location="/Users/terryr/Sites/centaur.dev/translator/test.cfm" 		name="test.cfm" project="Translator" projectlocation="/Users/terryr/Sites/centaur.dev/translator" 		projectrelativelocation="test.cfm" /><selection endcolumn="86" endline="4" startcolumn="1" startline="1"><text>				Editor contentEditor contentEditor contentEditor content</text></selection></editor></ide></event>
Getting information via callbacks<event><ide version="2.0"><callbackurl>     http://192.168.180.208:53301/index.cfm?extension=ColdFusion Builder Test Creator</callbackurl>…</event>
Getting information via callbacks<cfsetcallbackURL= XMLParse(form.ideeventinfo).event.ide.callbackurl.XMLText/><cfsavecontent variable="postData"><response><ide><commands><command type="getdatasources"></command></commands></ide></response></cfsavecontent>	<cfhttp method="post" url="#callbackURL#"><cfhttpparam type="body" value="#postData#" ></cfhttp>
Callback results<?xml version="1.0" encoding="UTF-8"?><event><ide version="2.0"><callbackurl>			http://192.168.180.208:53301/index.cfm?extension=Storm Extensions</callbackurl><command_results><command_resulttype="getdatasources"><datasources><datasourcename="max2010" server="centaur.dev"/><datasourcename="webdu" server="centaur.dev"/><datasourcename="indy" server="centaur.dev"/><datasourcename="inventory" server="centaur.dev"/>					...</datasources></command_result></command_results></ide></event>
Callbacks data fetchesgetServersgetDatasourcesgetTablesgetTablesearchFilegetFunctionsAndVariables
Callbacks can perform operationsrefreshProjectrefreshFolderrefreshFileinsertTextopenFile
Callbacks- GotchasIDE has to have them enabled (it does by default)
Creating Dynamic ExtensionsColdFusion Builder Extensions ResponsesXMLHTMLFlashEclipse SWT
XML Response to Create Dynamic UI<response status="success" type="default"><idemessage=""><dialog height="400" width="400" ><input name="location" default="${projectlocation}" /><input name="Generate View" type="boolean" checked="yes" /></dialog></ide></response>
XML Response to Create HTML UI<response status="success" showresponse="true"><ide><dialog width="600" height="400" /><body><![CDATA[	<p>This is an HTML Response</p>]]></body></ide></response>
Two BrowsersInternally, ColdFusion Builder utilizes two different browsers to render extensionsInternal browserSystem default browser
IDE BrowserProsCrappy CSS SupportConsCall backs for more interaction with the IDE
Native BrowserProsFull CSS	ConsNo Callbacks
XML Response to Native Browser<response status="success" showresponse="true"><ide url="#attributes.messageURL#" ><dialog width="600" height="400" /></ide></response>
Responding to views<cfheader name="Content-Type" value="text/xml"><response status="success" showresponse="true"><ide ><view id="stormExtensions" title="Storm Extensions Test" icon="" /><body><![CDATA[…]]></body></ide></response>
<codeassistcontribution><functions><function name="linkTo" variableName="event" componentName=""  handlerId="CodeAssistHandler"><parameterindex="1" /></function></functions></codeassistcontribution>Extension Code Assist
<codeassist_response><proposal display="display_value" insert="insert_this_value" inquotes="true/false"/></codeassist_response>Extension Code Assist
Development Tips
Development Tips<cfsettingsshowdebugoutput=“false” />
Development TipsReload / Import ExtensionsPreferences > ColdFusion > ExtensionsHave to do when you alter ide_config.xml
Development TipsErrors output to Eclipse error logsWindow > Show View > Other > General > Error Log
Development TipsSimulate submissionsCapture IDE input to text fileRead IDE input from text fileDevelop like a webapp, until you are ready for full testing with IDE
Testing and Debugging
Run ColdFusion from command line and dump to the console
Use a custom tag to dump to the IDE window
Use ColdFusion Builder Tester Extension
DemoColdFusion Builder Tester
Skinning
HTML/CSS/JSProsEasy to writeCompliments other things you doConsSome Concepts aren’t well expressed
FlexProsCan do some cool stuffConsHarder to just throw together an extensions
LogoYou can place a logo in the upper right hand corner
<response showresponse="true" ><ide ><dialog title="Apptacular" image="handlers/logo.png" width="710" height="690"/></ide></response>
Menu SpacerYou can add spacers to menu items.They’re clickable, but do nothing
<menucontributions><contribution target="rdsview" ><menu name="Apptacular"><action name="------------------------------" /></menu></contribution>
Like an app put ui in Custom tags
Instant Code Review
Follow up?Feel free to contact meterry.ryan@adobe.comhttp://terrenceryan.comTwitter: @tpryan

More Related Content

Viewers also liked (7)

PDF
Implementation and Optimisation of Queries in XSPARQL
Stefan Bischof
 
PDF
Xml Demystified
Viraf Karai
 
PDF
IQPC Canada XML 2001: How to Use XML Parsing to Enhance Electronic Communication
Ted Leung
 
PPT
1 +óptica+e+reflexão+da+luz
Wagner Tenorio
 
PDF
Projeto valores sustentabilidade
Delziene Jesus
 
PPT
Ecommerce 2012
Marcelo Cidral
 
PPT
Teste para curso
mogimidias
 
Implementation and Optimisation of Queries in XSPARQL
Stefan Bischof
 
Xml Demystified
Viraf Karai
 
IQPC Canada XML 2001: How to Use XML Parsing to Enhance Electronic Communication
Ted Leung
 
1 +óptica+e+reflexão+da+luz
Wagner Tenorio
 
Projeto valores sustentabilidade
Delziene Jesus
 
Ecommerce 2012
Marcelo Cidral
 
Teste para curso
mogimidias
 

More from Terry Ryan (20)

PPT
Making the Mobile Web Work
Terry Ryan
 
PDF
The Users are Restless
Terry Ryan
 
KEY
HTML Design for Devices
Terry Ryan
 
KEY
The Future of HTML5 Motion Design
Terry Ryan
 
KEY
Adobe and Modern Web Development
Terry Ryan
 
KEY
Semantic HTML5
Terry Ryan
 
KEY
The Future of HTML Motion Design
Terry Ryan
 
KEY
Skip the IDE with PhoneGap Build
Terry Ryan
 
KEY
D2WC Keynote
Terry Ryan
 
PPTX
WebDU Keynote
Terry Ryan
 
PPTX
Beautiful PhoneGap Apps
Terry Ryan
 
PPTX
Introduction to HTML5
Terry Ryan
 
PPTX
The Future of HTML5 Motion Design
Terry Ryan
 
PPTX
Adobe & HTML5
Terry Ryan
 
PPTX
Mobile Apps with PhoneGap and jQuery Mobile
Terry Ryan
 
PPTX
Design for Developers
Terry Ryan
 
PDF
cf.Objective ANZ Keynote
Terry Ryan
 
POTX
Flex Mobile Skinning Workshop
Terry Ryan
 
PPTX
HTML5 Semantic Web
Terry Ryan
 
PPTX
Intro to Coldfusion
Terry Ryan
 
Making the Mobile Web Work
Terry Ryan
 
The Users are Restless
Terry Ryan
 
HTML Design for Devices
Terry Ryan
 
The Future of HTML5 Motion Design
Terry Ryan
 
Adobe and Modern Web Development
Terry Ryan
 
Semantic HTML5
Terry Ryan
 
The Future of HTML Motion Design
Terry Ryan
 
Skip the IDE with PhoneGap Build
Terry Ryan
 
D2WC Keynote
Terry Ryan
 
WebDU Keynote
Terry Ryan
 
Beautiful PhoneGap Apps
Terry Ryan
 
Introduction to HTML5
Terry Ryan
 
The Future of HTML5 Motion Design
Terry Ryan
 
Adobe & HTML5
Terry Ryan
 
Mobile Apps with PhoneGap and jQuery Mobile
Terry Ryan
 
Design for Developers
Terry Ryan
 
cf.Objective ANZ Keynote
Terry Ryan
 
Flex Mobile Skinning Workshop
Terry Ryan
 
HTML5 Semantic Web
Terry Ryan
 
Intro to Coldfusion
Terry Ryan
 
Ad

Recently uploaded (20)

PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PPTX
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
PDF
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
The Future of Artificial Intelligence (AI)
Mukul
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
 
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Ad

ColdFusion Builder Extensions