File: /home/mmickelson/theflexguy.com/apps/silicondesigner/sg/assets/docs/SDFlexJsAPI.htm
<html>
<head>
<meta name=Title content="">
<meta name=Keywords content="">
<meta http-equiv=Content-Type content="text/html; charset=macintosh">
<meta name=Generator content="Microsoft Word 14 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Arial;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:"\FF2D\FF33 \660E\671D";}
@font-face
{font-family:"\FF2D\FF33 \30B4\30B7\30C3\30AF";}
@font-face
{font-family:"\FF2D\FF33 \30B4\30B7\30C3\30AF";}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:"Arial Unicode MS";
panose-1:2 11 6 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:Arial;}
h1
{margin-top:24.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:0in;
margin-bottom:.0001pt;
font-size:16.0pt;
font-family:Calibri;
color:#345A8A;}
pre
{margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:Courier;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:Arial;}
p.code, li.code, div.code
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.25in;
margin-bottom:.0001pt;
text-indent:-.25in;
background:#F3F3F3;
border:none;
padding:0in;
font-size:10.0pt;
font-family:Courier;}
span.HTMLPreformattedChar
{font-family:Courier;}
span.Heading1Char
{font-family:Calibri;
color:#345A8A;
font-weight:bold;}
.MsoChpDefault
{font-family:Cambria;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in .75in 1.0in .75in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
</head>
<body lang=EN-US>
<div class=WordSection1>
<h1>Silicon Designer JavaScript API</h1>
<p class=MsoNormal> </p>
<p class=MsoNormal>Included in the js/app folder is SDExternalInterface.js.
This file includes the APIs that allow communication between the Flex
application and the JavaScript at runtime. The file can be a starting point for
client JavaScript developers to integrate with their environment.</p>
<p class=MsoNormal> </p>
<div style='border:solid #EEECE1 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=code>// Called from JavaScript to Flex -----</p>
<p class=code><span style='color:black'>function SDExternalInterface(){</span></p>
<p class=code> </p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code><span style='color:black'>SDExternalInterface.app;</span>//static</p>
<p class=code> </p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.registerCallBackInstance
= function(functionName){ </span>//functionName must be a string!</p>
<p class=code><span style='color:black'> document[SDExternalInterface.app].registerCallBackInstance(
functionName );</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// UPDATE INSTANCE: Saves all pages in the instance.</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.updateInstance
= function(){</span></p>
<p class=code><span style='color:black'> document[SDExternalInterface.app].updateInstance();</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code><span style='color:black'> </span></p>
<p class=code>// UPDATE LAYOUT NUM: Saves a specific layout number (similar to</p>
<p class=code>// page number) in the instance. If none is provided, the
selected</p>
<p class=code>// page is saved.</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.updateLayoutNum
= function(layoutNum){</span></p>
<p class=code><span style='color:black'> document[SDExternalInterface.app].updateLayoutNum(layoutNum);</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// GET INSTANCE ID: Returns the instanceId of the current
project.</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.getInstanceId
= function(){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>return</span></b><span style='color:black'>
document[SDExternalInterface.app].getInstanceId();</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// GET SESSION ID: Returns the instanceId of the current project.</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.getSessionId
= function(){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>return</span></b><span style='color:black'>
document[SDExternalInterface.app].getSessionId();</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// GET SELECTED LAYOUT: Returns the currently selected layout
number.</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.getSelectedLayout
= function(){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>return</span></b><span style='color:black'>
document[SDExternalInterface.app].getSelectedLayout();</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// IS DOCUMENT VALID: Returns whether or not a document has
validation warnings</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.isDocumentValid
= function(){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>return</span></b><span style='color:black'> document[SDExternalInterface.app].isDocumentValid();</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// ENABLE/DISABLE SPELL CHECK: activates and sets the location
for spell check</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.setSpellCheckState
= function( enabled, languageCode ){</span></p>
<p class=code><span style='color:black'> languageCode = (typeof
languageCode === </span><span style='color:#2A00FF'>"undefined"</span><span
style='color:black'>) ? </span><span style='color:#2A00FF'>"en_US"</span><span
style='color:black'> : languageCode;</span></p>
<p class=code><span style='color:black'> document[SDExternalInterface.app].setSpellCheckState(
enabled, languageCode );</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// GET ERROR SUMMARY: Returns object array of validators in the
currents errors array</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.getErrorSummary
= function(){</span></p>
<p class=code><span style='color:black'> var results =
document[SDExternalInterface.app].getErrorSummary();</span></p>
<p class=code><span style='color:black'> console.log(results);</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>return</span></b><span style='color:black'> results;</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// CLEAR LOCAL SHARED OBJECT FOR THIS APP: Clears any data stored
locally for this app including screen overlay settings</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.clearLocalSharedObject
= function(){</span></p>
<p class=code><span style='color:black'> document[SDExternalInterface.app].clearLocalSharedObject();</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code> </p>
<p class=code>// CALLED FROM Flex to JavaScript
--------------------------------</p>
<p class=code> </p>
<p class=code>// TRACK METRIC: Passes metric name and value to be passed to
tracking api</p>
<p class=code>// Implement your tracking code here</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.trackMetric
= function(label, value){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>( console !==
undefined && console !== </span><b><span style='color:#7F0055'>null</span></b><span
style='color:black'> ) {</span></p>
<p class=code><span style='color:black'> console.log(</span><span
style='color:#2A00FF'>"SDExternalInterface.prototype.trackMetric called
label: "</span><span style='color:black'> + label + </span><span
style='color:#2A00FF'>" value: "</span><span style='color:black'> + value);</span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// INSTANCE ID CREATED: Gives the instance ID. Useful when</p>
<p class=code>// starting with a templateId.</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.instanceIdCreated
= function(instanceId){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>( console !==
undefined && console !== </span><b><span style='color:#7F0055'>null</span></b><span
style='color:black'> ) {</span></p>
<p class=code><span style='color:black'> console.log(</span><span
style='color:#2A00FF'>"instanceId created:"</span><span
style='color:black'>);</span></p>
<p class=code><span style='color:black'> console.log(instanceId);</span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// CONTINUE REQUESTED: User has clicked the continue button</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.continueRequested
= function(){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>( console !==
undefined && console !== </span><b><span style='color:#7F0055'>null</span></b><span
style='color:black'> ) {</span></p>
<p class=code><span style='color:black'> console.log(</span><span
style='color:#2A00FF'>"continue requested"</span><span
style='color:black'>);</span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// SAVE REQUESTED: User has clicked the save button</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.saveRequested
= function(){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>( console !==
undefined && console !== </span><b><span style='color:#7F0055'>null</span></b><span
style='color:black'> ) {</span></p>
<p class=code><span style='color:black'> console.log(</span><span
style='color:#2A00FF'>"save requested"</span><span style='color:black'>);</span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// SAVE COMPLETE: A save has been made and completed</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.saveComplete
= function(instanceId){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>( console !==
undefined && console !== </span><b><span style='color:#7F0055'>null</span></b><span
style='color:black'> ) {</span></p>
<p class=code><span style='color:black'> console.log(</span><span
style='color:#2A00FF'>"save complete for instance:"</span><span
style='color:black'>);</span></p>
<p class=code><span style='color:black'> console.log(instanceId);</span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// EXIT REQUESTED: User has clicked the button to leave the application.</p>
<p class=code>// This does not trigger a save in the flex but could be
done with updateInstance().</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.exitRequested
= function(){</span></p>
<p class=code><span style='color:black'> window.history.back();</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
<p class=code>// PREVIEW REQUESTED: User has clicked the preview button</p>
<p class=code><span style='color:black'>SDExternalInterface.prototype.previewRequested
= function(layoutNum){</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>( console !==
undefined && console !== </span><b><span style='color:#7F0055'>null</span></b><span
style='color:black'> ) {</span></p>
<p class=code><span style='color:black'> console.log(</span><span
style='color:#2A00FF'>"preview requested for layout:"</span><span
style='color:black'>);</span></p>
<p class=code><span style='color:black'> console.log(layoutNum);</span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'> var instanceID =
document[SDExternalInterface.app].getInstanceId();</span></p>
<p class=code><span style='color:black'> var sessionID =
document[SDExternalInterface.app].getSessionId();</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>(typeof instanceID
!== </span><span style='color:#2A00FF'>"undefined"</span><span
style='color:black'> && instanceID !== </span><b><span
style='color:#7F0055'>null</span></b><span style='color:black'> &&
typeof sessionID !== </span><span style='color:#2A00FF'>"undefined"</span><span
style='color:black'> && sessionID !== </span><b><span style='color:
#7F0055'>null</span></b><span style='color:black'> ){</span></p>
<p class=code><span style='color:black'> var
baseURL = ( flashvars.baseUrl.substr( flashvars.baseUrl.length - 1 ) != </span><span
style='color:#2A00FF'>"/"</span><span style='color:black'> ) ?
flashvars.baseUrl + </span><span style='color:#2A00FF'>"/"</span><span
style='color:black'> : flashvars.baseUrl ;</span></p>
<p class=code><span style='color:black'> </span><b><span
style='color:#7F0055'>if</span></b><span style='color:black'>(typeof layoutNum
!= </span><span style='color:#2A00FF'>"undefined"</span><span
style='color:black'> && layoutNum != </span><b><span style='color:#7F0055'>null</span></b><span
style='color:black'>) {</span></p>
<p class=code><span style='color:black'> window.open(
baseURL + </span><span style='color:#2A00FF'>"sdsession/"</span><span
style='color:black'> + sessionID + </span><span style='color:#2A00FF'>"/instance/"</span><span
style='color:black'> + instanceID + </span><span style='color:#2A00FF'>"/layoutnumber/"</span><span
style='color:black'> + layoutNum + </span><span style='color:#2A00FF'>"/output/pdf"</span><span
style='color:black'> ); </span></p>
<p class=code><span style='color:black'> } </span><b><span
style='color:#7F0055'>else</span></b><span style='color:black'> {</span></p>
<p class=code><span style='color:black'> window.open(
baseURL + </span><span style='color:#2A00FF'>"sdsession/"</span><span
style='color:black'> + sessionID + </span><span style='color:#2A00FF'>"/instance/"</span><span
style='color:black'> + instanceID + </span><span style='color:#2A00FF'>"/output/pdf"</span><span
style='color:black'> ); </span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'> }</span></p>
<p class=code><span style='color:black'>}</span></p>
<p class=code> </p>
</div>
<span style='font-size:12.0pt;font-family:Arial'><br clear=all
style='page-break-before:always'>
</span>
<p class=MsoNormal> </p>
<h1>Appendix A - Document updates</h1>
<p class=MsoNormal>10/9/13</p>
<p class=MsoListParagraph style='text-indent:-.25in'><span>1.<span
style='font:7.0pt "Times New Roman"'> </span></span>Added
isDocumentValid()</p>
<p class=MsoNormal> </p>
<p class=MsoNormal><span style='font-family:Cambria'> </span></p>
</div>
</body>
</html>