Browse files

Added code base

  • Loading branch information...
1 parent c13d71e commit ed2d559cbf46008f8dee36fce312d5ccbf621bb1 @goliatone committed Sep 1, 2011
Showing with 10,034 additions and 0 deletions.
  1. +10 −0 .gitignore
  2. +13 −0 SWCSettings.lxml
  3. +21 −0 TODO.txt
  4. BIN bin/assets/swf/LoggerShell.swf
  5. +64 −0 bin/assets/xml/loggerconfig.xml
  6. BIN bin/expressInstall.swf
  7. BIN bin/gLogger.swf
  8. +40 −0 bin/index.html
  9. +4 −0 bin/js/swfobject.js
  10. +631 −0 dependencies/com/hexagonstar/util/debug/Debug.as
  11. +177 −0 dependencies/com/hexagonstar/util/debug/FPSMeter.as
  12. +199 −0 dependencies/com/hexagonstar/util/debug/StopWatch.as
  13. +200 −0 dependencies/org/flashdevelop/utils/FlashConnect.as
  14. +59 −0 dependencies/org/flashdevelop/utils/FlashViewer.as
  15. +21 −0 dependencies/org/flashdevelop/utils/TraceLevel.as
  16. +129 −0 docs/AC_OETags.js
  17. +24 −0 docs/FormatterTest.html
  18. +88 −0 docs/all-classes.html
  19. +22 −0 docs/all-index-A.html
  20. +13 −0 docs/all-index-B.html
  21. +25 −0 docs/all-index-C.html
  22. +25 −0 docs/all-index-D.html
  23. +13 −0 docs/all-index-E.html
  24. +28 −0 docs/all-index-F.html
  25. +30 −0 docs/all-index-G.html
  26. +17 −0 docs/all-index-H.html
  27. +20 −0 docs/all-index-I.html
  28. +13 −0 docs/all-index-J.html
  29. +13 −0 docs/all-index-K.html
  30. +22 −0 docs/all-index-L.html
  31. +26 −0 docs/all-index-M.html
  32. +13 −0 docs/all-index-N.html
  33. +30 −0 docs/all-index-O.html
  34. +23 −0 docs/all-index-P.html
  35. +13 −0 docs/all-index-Q.html
  36. +13 −0 docs/all-index-R.html
  37. +24 −0 docs/all-index-S.html
  38. +13 −0 docs/all-index-T.html
  39. +13 −0 docs/all-index-U.html
  40. +13 −0 docs/all-index-V.html
  41. +13 −0 docs/all-index-W.html
  42. +13 −0 docs/all-index-X.html
  43. +13 −0 docs/all-index-Y.html
  44. +13 −0 docs/all-index-Z.html
  45. +286 −0 docs/asdoc.js
  46. +1 −0 docs/class-list.html
  47. +38 −0 docs/class-summary.html
  48. +48 −0 docs/com/enjoymondays/logging/core/ILogLevel.html
  49. +58 −0 docs/com/enjoymondays/logging/core/ILogMessage.html
  50. +31 −0 docs/com/enjoymondays/logging/core/ILogMessageConverter.html
  51. +41 −0 docs/com/enjoymondays/logging/core/ILoggerFormatter.html
  52. +45 −0 docs/com/enjoymondays/logging/core/LogLevel.html
  53. +85 −0 docs/com/enjoymondays/logging/core/LogMessage.html
  54. +1 −0 docs/com/enjoymondays/logging/core/class-list.html
  55. +20 −0 docs/com/enjoymondays/logging/core/package-detail.html
  56. +32 −0 docs/com/enjoymondays/logging/formaters/AbstractFormater.html
  57. +87 −0 docs/com/enjoymondays/logging/formaters/PatternFormater.html
  58. +1 −0 docs/com/enjoymondays/logging/formaters/class-list.html
  59. +45 −0 docs/com/enjoymondays/logging/formaters/converters/AbstractLayouter.html
  60. +40 −0 docs/com/enjoymondays/logging/formaters/converters/ClassConverter.html
  61. +42 −0 docs/com/enjoymondays/logging/formaters/converters/DateConverter.html
  62. +40 −0 docs/com/enjoymondays/logging/formaters/converters/FileConverter.html
  63. +45 −0 docs/com/enjoymondays/logging/formaters/converters/LevelConverter.html
  64. +39 −0 docs/com/enjoymondays/logging/formaters/converters/LineNumberConverter.html
  65. +35 −0 docs/com/enjoymondays/logging/formaters/converters/MessageConverter.html
  66. +45 −0 docs/com/enjoymondays/logging/formaters/converters/MethodConverter.html
  67. +53 −0 docs/com/enjoymondays/logging/formaters/converters/StackConverter.html
  68. +44 −0 docs/com/enjoymondays/logging/formaters/converters/StackPart.html
  69. +1 −0 docs/com/enjoymondays/logging/formaters/converters/class-list.html
  70. +25 −0 docs/com/enjoymondays/logging/formaters/converters/package-detail.html
  71. +15 −0 docs/com/enjoymondays/logging/formaters/package-detail.html
  72. +49 −0 docs/com/enjoymondays/logging/plugins/StackTrace.html
  73. +1 −0 docs/com/enjoymondays/logging/plugins/class-list.html
  74. +13 −0 docs/com/enjoymondays/logging/plugins/package-detail.html
  75. +24 −0 docs/com/enjoymondays/logging/vos/FormatLayoutVO.html
  76. +26 −0 docs/com/enjoymondays/logging/vos/PatternVO.html
  77. +1 −0 docs/com/enjoymondays/logging/vos/class-list.html
  78. +15 −0 docs/com/enjoymondays/logging/vos/package-detail.html
  79. +228 −0 docs/com/hexagonstar/util/debug/Debug.html
  80. +48 −0 docs/com/hexagonstar/util/debug/FPSMeter.html
  81. +77 −0 docs/com/hexagonstar/util/debug/StopWatch.html
  82. +1 −0 docs/com/hexagonstar/util/debug/class-list.html
  83. +18 −0 docs/com/hexagonstar/util/debug/package-detail.html
  84. +84 −0 docs/cookies.js
  85. +941 −0 docs/help.js
  86. BIN docs/images/AirIcon12x12.gif
  87. BIN docs/images/P_AlternativeMetadataIndicator_30x28_N.png
  88. BIN docs/images/collapsed.gif
  89. BIN docs/images/detailHeaderRule.jpg
  90. BIN docs/images/detailSectionHeader.jpg
  91. BIN docs/images/expanded.gif
  92. BIN docs/images/inherit-arrow.gif
  93. BIN docs/images/inheritedSummary.gif
  94. BIN docs/images/logo.jpg
  95. BIN docs/images/titleTableBottom.jpg
  96. BIN docs/images/titleTableMiddle.jpg
  97. BIN docs/images/titleTableTop.jpg
  98. +70 −0 docs/index-list.html
  99. +40 −0 docs/index.html
  100. +731 −0 docs/otd_toc.xml
  101. +12 −0 docs/override.css
  102. +14 −0 docs/package-detail.html
  103. +18 −0 docs/package-frame.html
  104. +1 −0 docs/package-list.html
  105. +13 −0 docs/package-summary.html
  106. +110 −0 docs/print.css
  107. +578 −0 docs/style.css
  108. +41 −0 docs/title-bar.html
  109. +86 −0 gLogger.as3proj
  110. +14 −0 gLogger.lxml
  111. BIN lib/as3LoggerFramework.swc
  112. +9 −0 obj/Version.xml
  113. +700 −0 obj/exclude.xml
  114. +99 −0 obj/gLogger.flex.compc.xml
  115. +34 −0 obj/gLoggerConfig.old
  116. +34 −0 obj/gLoggerConfig.xml
  117. +264 −0 obj/gLoggerReport.xml
  118. +60 −0 src/FormatterTest.as
  119. +153 −0 src/LoggerShell.as
  120. +179 −0 src/Main.as
  121. +12 −0 src/Version.as
  122. +214 −0 src/com/enjoymondays/logging/Logger.as
  123. +295 −0 src/com/enjoymondays/logging/config/LoggerConfig.as
  124. +62 −0 src/com/enjoymondays/logging/core/IDebugger.as
  125. +21 −0 src/com/enjoymondays/logging/core/IDebuggerPlugin.as
  126. +57 −0 src/com/enjoymondays/logging/core/ILogLevel.as
  127. +96 −0 src/com/enjoymondays/logging/core/ILogMessage.as
  128. +35 −0 src/com/enjoymondays/logging/core/ILogMessageConverter.as
  129. +135 −0 src/com/enjoymondays/logging/core/ILogger.as
  130. +115 −0 src/com/enjoymondays/logging/core/ILoggerConfig.as
  131. +29 −0 src/com/enjoymondays/logging/core/ILoggerFactory.as
  132. +47 −0 src/com/enjoymondays/logging/core/ILoggerFilter.as
  133. +54 −0 src/com/enjoymondays/logging/core/ILoggerFilterManager.as
  134. +50 −0 src/com/enjoymondays/logging/core/ILoggerFormatter.as
  135. +102 −0 src/com/enjoymondays/logging/core/ILoggerManager.as
  136. +71 −0 src/com/enjoymondays/logging/core/ILoggerPublisher.as
  137. +71 −0 src/com/enjoymondays/logging/core/IPublisherVO.as
  138. +56 −0 src/com/enjoymondays/logging/core/IStackTrace.as
  139. +103 −0 src/com/enjoymondays/logging/core/LogLevel.as
  140. +129 −0 src/com/enjoymondays/logging/core/LogMessage.as
  141. +97 −0 src/com/enjoymondays/logging/debuggers/DefaultDebugger.as
Sorry, we could not display the entire diff because it was too big.
View
10 .gitignore
@@ -0,0 +1,10 @@
+# Logs and databases #
+######################
+*.log
+
+# OS generated files #
+######################
+.DS_Store?
+ehthumbs.db
+Icon?
+Thumbs.db
View
13 SWCSettings.lxml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SWCProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <FlexBinPath />
+ <FlashBinPath />
+ <FlexIncludeASI>false</FlexIncludeASI>
+ <MakeCS3>false</MakeCS3>
+ <MakeMXI>false</MakeMXI>
+ <LaunchAEM>false</LaunchAEM>
+ <MXPIncludeASI>false</MXPIncludeASI>
+ <Flex_IgnoreClasses />
+ <CS3_IgnoreClasses />
+ <CS3_PreviewType>None</CS3_PreviewType>
+</SWCProject>
View
21 TODO.txt
@@ -0,0 +1,21 @@
+MAIN GOALS:
+>>One;
+Have an implementation that allow us to remove the dependency and weight of the concrete logging framework on deployed escenarios.
+Since we code to interfaces, we only need one concrete class and some interfaces in our main application. The rest should be loaded
+at runtime if/as needed.
+Perhaps we can use a workflow were we load a config XML and check what type of session we want. If is a "release" mode, we don't need
+to load the shell.swf and the app does not resent. Or we can load a lighter one that only logs above WARN/ERROR to a DDBB...or whatever.
+
+>>Two:
+Create a remote debugging mechanism for two things.
+We can pull the type fo session when we start, so debugging sessions would be dynamic.
+Allow for
+
+
+Remote configuration:
+DefferedLogger:
+
+
+>>ADD A CONFIG EXAMPLE WHERE WE SHOW ITS STRENGHTS.
+We could have one logger on debug that points to a local DDBB and logs ALL levels, and have the same publisher that points to a different DDBB and logs above a
+certain level.
View
BIN bin/assets/swf/LoggerShell.swf
Binary file not shown.
View
64 bin/assets/xml/loggerconfig.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<logging mode="debug" build="com.enjoymondays.logging.config.LoggerConfig">
+ <debug threshold="ALL" >
+ <publisher>
+ <target build = "com.enjoymondays.logging.publishers.AlconLogger" />
+ <formater build = "com.enjoymondays.logging.formaters.PatternFormater" >
+ <pattern fallback="true"><![CDATA[%d{H:i:s} [%5p] %C{10} >>%n%m%n-----------------]]></pattern>
+ <pattern level="ERROR" ><![CDATA[%C{10} >> %n %m @%d{H:i:s}]]></pattern>
+ </formater>
+ <config>
+ <parameter name="serviceURL"><![CDATA[http://www.enjoymondays.com/logger/gateway]]></parameter>
+ </config>
+ </publisher>
+ <!--publisher>
+ <target build = "com.enjoymondays.logging.publishers.FDTracer" delayed="true" />
+ <formater build = "com.enjoymondays.logging.formaters.PatternFormater">
+ <pattern level="INFO" fallback="true"><![CDATA[%C{10} - %m%n]]></pattern>
+ <pattern level="ERROR"><![CDATA[%d{H:i:s} [%5p] %C{10} >> %n %m]]></pattern>
+ </formater>
+ </publisher-->
+ <logger build = "com.enjoymondays.logging.loggers.DefaultLogger" />
+ <manager build = "com.enjoymondays.logging.managers.LoggerManager" />
+ <debugger build = "com.enjoymondays.logging.debuggers.DefaultDebugger" />
+ </debug>
+
+ <release threshold="WARN" disabled="INFO,FATAL">
+ <publisher>
+ <target build = "com.enjoymondays.logging.publishers.FDTracer" delayed="true" />
+ <formater build = "com.enjoymondays.logging.formaters.StringFormater" />
+ </publisher>
+ <disabledPackages>
+ <package id="com.skinnygeek.mvc.commands.implemented" />
+ <package id="com.skinnygeek.utils" />
+ </disabledPackages>
+ <levelFilters>
+ <filter target="com.skinnygeek.mvc.commands" level="INFO" />
+ <filter target="com.skinnygeek.mvc.commands" level="INFO" />
+ </levelFilters>
+ <manager build = "com.enjoymondays.logging.managers.NullLoggerManager" />
+ </release>
+
+ <remote threshold="WARN" disabled="INFO,FATAL">
+ <publisher>
+ <target build = "com.enjoymondays.logging.publishers.FDTracer" delayed="true" />
+ <formater build = "com.enjoymondays.logging.formaters.StringFormater" />
+ </publisher>
+ <publisher>
+ <target build = "com.enjoymondays.logging.publishers.AlconLogger" />
+ <formater build = "com.enjoymondays.logging.formaters.PatternFormater" >
+ <pattern fallback="true"><![CDATA[%d{H:i:s} [%5p] %C{10} >> %m%n-----------------]]></pattern>
+ <pattern level="ERROR" ><![CDATA[%C{10} >> %n %m @%d{H:i:s}]]></pattern>
+ </formater>
+ </publisher>
+ <disabledPackages>
+ <package id="com.skinnygeek.mvc.commands.implemented" />
+ <package id="com.skinnygeek.utils" />
+ </disabledPackages>
+ <levelFilters>
+ <filter target="com.skinnygeek.mvc.commands" level="INFO" />
+ <filter target="com.skinnygeek.mvc.commands" level="INFO" />
+ </levelFilters>
+ <manager build = "com.enjoymondays.logging.managers.NullLoggerManager" />
+ </remote>
+</logging>
View
BIN bin/expressInstall.swf
Binary file not shown.
View
BIN bin/gLogger.swf
Binary file not shown.
View
40 bin/index.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+ <title>gLogger</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta name="language" content="en" />
+ <meta name="description" content="" />
+ <meta name="keywords" content="" />
+
+ <script src="js/swfobject.js" type="text/javascript"></script>
+ <script type="text/javascript">
+ var flashvars = {
+ };
+ var params = {
+ menu: "false",
+ scale: "noScale",
+ allowFullscreen: "true",
+ allowScriptAccess: "always",
+ bgcolor: "#FFFFFF"
+ };
+ var attributes = {
+ id:"gLogger"
+ };
+ swfobject.embedSWF("gLogger.swf", "altContent", "100%", "100%", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
+ </script>
+ <style type="text/css">
+ html, body { height:100%; overflow:hidden; }
+ body { margin:0; }
+ </style>
+</head>
+<body>
+ <div id="altContent">
+ <h1>gLogger</h1>
+ <p>Alternative content</p>
+ <p><a href="http://www.adobe.com/go/getflashplayer"><img
+ src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
+ alt="Get Adobe Flash player" /></a></p>
+ </div>
+</body>
+</html>
View
4 bin/js/swfobject.js
@@ -0,0 +1,4 @@
+/* SWFObject v2.2 <http://code.google.com/p/swfobject/>
+ is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
+*/
+var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
View
631 dependencies/com/hexagonstar/util/debug/Debug.as
@@ -0,0 +1,631 @@
+/*
+ * ``The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ */
+package com.hexagonstar.util.debug
+{
+ import flash.display.Stage;
+ import flash.events.Event;
+ import flash.events.StatusEvent;
+ import flash.net.LocalConnection;
+ import flash.net.SharedObject;
+ import flash.net.SharedObjectFlushStatus;
+ import flash.system.Capabilities;
+ import flash.system.Security;
+ import flash.system.SecurityPanel;
+ import flash.system.System;
+ import flash.utils.ByteArray;
+ import flash.utils.describeType;
+
+
+ /**
+ * The Debug class is a static class that is used to send debugging information
+ * to Alcon. It can be used to simply output information with the <code>trace()
+ * </code> method, recursively output objects with <code>traceObj()</code> or
+ * inspect objects with the <code>inspect()</code> method, start monitoring the
+ * applications framerate with <code>monitor()</code> and to use other debugging
+ * assets like a Stopwatch.<br>
+ * To use this class import it into any class that should make use of it and then
+ * call any of the debugging methods anywhere in your class.
+ *
+ * @example
+ * <p><pre>
+ * import com.hexagonstar.util.debug.Debug;
+ *
+ * public class Test extends Sprite {
+ * public function Test() {
+ * Debug.monitor(stage);
+ * Debug.trace("Test");
+ * }
+ * }</pre>
+ */
+ public final class Debug
+ {
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Constants //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * The Debug.LEVEL_DEBUG constant defines the value of the Debug Filtering Level.
+ */
+ public static const LEVEL_DEBUG:int = 0;
+
+ /**
+ * The Debug.LEVEL_INFO constant defines the value of the Info Filtering Level.
+ */
+ public static const LEVEL_INFO:int = 1;
+
+ /**
+ * The Debug.LEVEL_WARN constant defines the value of the Warn Filtering Level.
+ */
+ public static const LEVEL_WARN:int = 2;
+
+ /**
+ * The Debug.LEVEL_ERROR constant defines the value of the Error Filtering Level.
+ */
+ public static const LEVEL_ERROR:int = 3;
+
+ /**
+ * The Debug.LEVEL_FATAL constant defines the value of the Fatal Filtering Level.
+ */
+ public static const LEVEL_FATAL:int = 4;
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Variables //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ private static var _filterLevel:int = 0;
+ private static var _isConnected:Boolean = false;
+ private static var _isPollingFPS:Boolean = false;
+ private static var _isEnabled:Boolean = true;
+
+ private static var _stage:Stage;
+ private static var _connection:LocalConnection;
+ private static var _fpsMeter:FPSMeter;
+ private static var _stopWatch:StopWatch;
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Public Methods //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Internal Constructor. The Debug class is static and doesn't need
+ * to be instantiated. Use any of the methods directly, e.g. <code>
+ * Debug.trace();</code>
+ */
+ function Debug()
+ {
+ }
+
+
+ /**
+ * Traces out any specified data to Alcon's Trace logger. The data can be of
+ * any type e.g. String, Number, Object, Array etc. For tracing Objects and
+ * Arrays recursively use the <code>traceObj()</code> method instead. To inspect
+ * any object use the <code>inspect()</code> method.<br>
+ * The trace method takes up to two arguments, the first being the data to
+ * output and the second an optional integer that determines the filter
+ * (or severity) level that the data is being output with. If specified,
+ * the filter level must be within the range of existing levels (0 to 4).
+ *
+ * @example
+ * <p><pre>
+ * Debug.trace("Profanity is one language all
+ * computer users know.");
+ * Debug.trace("Software never has bugs. It just
+ * develops random features.", 0);
+ * Debug.trace(18 + 4, Debug.LEVEL_ERROR);
+ * Debug.trace(Math.PI, Debug.LEVEL_WARN);</pre>
+ *
+ * @param arg1 The data to be traced.
+ * @param arg2 An integer that determines the Debugging Filter Level.
+ */
+ public static function trace(... args):void
+ {
+ var l:int = (args[1] is int) ? args[1] : 1;
+
+ /* Only show messages equal or higher than current filter level */
+ if (l >= _filterLevel && l < 7)
+ {
+ send("onData", args[0], l, 0);
+ }
+ }
+
+
+ /**
+ * Traces the specified Object, Array or Class recursively to Alcon's Trace
+ * logger. Optionally the recursion depth can be set with the depth argument.
+ *
+ * @example
+ * <p><pre>
+ * var array:Array = ["Gerry", "Gail", "Garth"];
+ * Debug.traceObj(array);
+ * var obj:Object = {n1: "Bill", n2: "Giles"};
+ * Debug.traceObj(obj, 64, Debug.LEVEL_DEBUG);
+ * Debug.traceObj(stage, 128);</pre>
+ *
+ * @param obj The Object, Array or Class to output recursively.
+ * @param depth The recursion depth that is used to loop
+ * through the objects children.
+ * @param level The filter level with that the trace is made.
+ */
+ public static function traceObj(obj:Object, depth:int = 64, level:int = 1):void
+ {
+ /* Only show messages equal or higher than current filter level */
+ if (level >= _filterLevel && level < 7)
+ {
+ send("onData", obj, level, depth);
+ }
+ }
+
+
+ /**
+ * Inspects the specified Object, Array or Class with Alcon's Object
+ * Inspector. For classes only public properties and methods can be
+ * inspected. Also note that uint's are always converted to int's by
+ * the Inspector.
+ *
+ * @example
+ * <p><pre>
+ * var array:Array = [777, 123, "Gerry", "Gail"];
+ * Debug.inspect(array);
+ * var obj:Object = {n1: "Bill", n2: "Jenny"};
+ * Debug.inspect(obj);
+ * Debug.inspect(new Bitmap());</pre>
+ *
+ * @param obj The Object, Array or Class to inspect.
+ */
+ public static function inspect(obj:Object):void
+ {
+ send("onInspect", obj, 1, -1);
+ }
+
+
+ /**
+ * Outputs a hexadecimal dump of the specified object to Alcon's Trace
+ * Logger.
+ *
+ * @example
+ * <p><pre>
+ * var array:Array = ["Sandy", "Beth", "Kayla"];
+ * Debug.hexDump(array);
+ * var obj:Object = {n1: "Sandy", n2: "Larry"};
+ * Debug.hexDump(obj);
+ * Debug.hexDump(stage);</pre>
+ *
+ * @param obj The object to output as a hex dump.
+ */
+ public static function hexDump(obj:Object):void
+ {
+ /* TODO Add optional Start & End parameter. */
+ send("onHexDump", obj, 0, 0);
+ }
+
+
+ /**
+ * Forces an immediate Garbage Collector mark/sweep. This method is only
+ * guaranteed to work for use in AIR applications!<br>It first tries to
+ * use <code>System.gc()</code> and if that fails (i.e. when run in Flash
+ * Player) it falls back to a different method to cause a garbage collection
+ * that is not officially supported by ActionScript. Handle with care when
+ * run in a non-AIR-Runtime!
+ */
+ public static function forceGC():void
+ {
+ try
+ {
+ /* Disabled for now! */
+ //System.gc();
+ }
+ catch (e1:Error)
+ {
+ try
+ {
+ new LocalConnection().connect("forceGC");
+ new LocalConnection().connect("forceGC");
+ }
+ catch (e2:Error)
+ {
+ }
+ }
+ }
+
+
+ /**
+ * Clears Alcon's Trace buffer. This does the same like sending the CLR signal
+ * manually: <code>Debug.trace("[%CLR%]");</code>
+ *
+ */
+ public static function clear():void
+ {
+ Debug.trace("[%CLR%]", 5);
+ }
+
+
+ /**
+ * Output's a delimiter String to Alcon's Trace Logger that can be used to
+ * quickly seperate different kinds of debug informations, making it easier
+ * to read them.<br>This does the same like sending the DLT signal manually:
+ * <code>Debug.trace("[%DLT%]");</code>
+ */
+ public static function delimiter():void
+ {
+ Debug.trace("[%DLT%]", 5);
+ }
+
+
+ /**
+ * Pauses Alcon. With this method Alcon's Trace and File Loggers are brought
+ * into Pause mode.<br> This does the same like sending the PSE signal manually:
+ * <code>Debug.trace("[%PSE%]");</code>
+ */
+ public static function pause():void
+ {
+ Debug.trace("[%PSE%]", 5);
+ }
+
+
+ /**
+ * Sends a Time & Date stamp to Alcon's Trace Logger. This does the same like
+ * sending the TME signal manually: <code>Debug.trace("[%TME%]");</code>
+ *
+ * @example
+ * <p><pre>
+ * Debug.time();</pre>
+ * <p>Output:<p>
+ * Sun Aug 17 2008 03:35:34 PM
+ */
+ public static function time():void
+ {
+ Debug.trace("[%TME%]", 5);
+ }
+
+
+ /**
+ * #WAS COMMENTED OUT
+ * createCategory
+ */
+ public static function createCategory(id:int, name:String = "",
+ textColor:uint = 0x000000, bgColor:uint = 0xFFFF00):void
+ {
+ //TODO
+ send("onCategory", [id, name, textColor, bgColor], 0, 0);
+ }
+
+
+ // Monitoring Methods //////////////////////////////////////////////////////////////////
+
+ /**
+ * Starts monitoring the application. When called starts measuring the currently
+ * debugged application's FPS (frames per second) and FRT (frame render time) and
+ * sends the values and the current memory consumption amount to Alcon's App Monitor.
+ *
+ * @param stage The Stage object of the current host application.
+ * @param pollInterval The interval in milliseconds with that framerate-
+ * related data is being polled. The lower this value is the faster
+ * Alcon's App Monitor will update.
+ */
+ public static function monitor(stage:Stage, pollInterval:int = 500):void
+ {
+ if (_isPollingFPS) Debug.stop();
+
+ if (_isEnabled && !_fpsMeter)
+ {
+ _isPollingFPS = true;
+ _stage = stage;
+ sendCapabilities();
+ _fpsMeter = new FPSMeter(_stage, pollInterval);
+ _fpsMeter.addEventListener(FPSMeter.FPS_UPDATE, onFPSUpdate);
+ _fpsMeter.start();
+ }
+ }
+
+
+ /**
+ * Places a marker in Alcon's App Monitor graph. Optionally a color
+ * can be specified for the marker.
+ *
+ * @param color The color for the marker.
+ */
+ public static function mark(color:uint = 0xFF00FF):void
+ {
+ send("onMarker", color, 1, -1);
+ }
+
+
+ /**
+ * Stops monitoring the application after it has been started with
+ * <code>Debug.monitor()</code>.
+ */
+ public static function stop():void
+ {
+ if (_fpsMeter)
+ {
+ _isPollingFPS = false;
+ _fpsMeter.stop();
+ _fpsMeter.removeEventListener(FPSMeter.FPS_UPDATE, onFPSUpdate);
+ _fpsMeter = null;
+ _stage = null;
+ }
+ }
+
+
+ // Timer Methods ///////////////////////////////////////////////////////////////////////
+
+ /**
+ * Starts a Stopwatch to measure a time amount. This method can be used to
+ * measure the execution time for any code in the host application.
+ * Optionally a title can be specified to describe what the Stopwatch is
+ * measuring.
+ * The stopwatch can be started and stopped several times sequencially and
+ * then will list all measured times unless the Stopwatch has been reset
+ * with <code>Debug.timerReset()</code>.
+ *
+ * @example
+ * <p><pre>
+ * Debug.timerStart("Loop Execution Time");
+ * for (var i:int = 0; i < 100000; i++) {
+ * ...
+ * }
+ * Debug.timerStop();
+ * Debug.timerToString();</pre>
+ * <p>Output:<p>
+ * \u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a [STOPWATCH] \u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a<br>
+ * \u002a Loop Execution Time<br>
+ * \u002a started [14435ms] stopped [17477ms] time [03042ms]<br>
+ * \u002a total runnning time: 3.042s<br>
+ * \u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a\u002a
+ *
+ * @param title An optional title for the Stopwatch.
+ */
+ public static function timerStart(title:String = ""):void
+ {
+ if (_isEnabled)
+ {
+ if (!_stopWatch) _stopWatch = new StopWatch();
+ _stopWatch.start(title);
+ }
+ }
+
+
+ /**
+ * Stops the Stopwatch after it has been started with <code>Debug.timerStart()</code>.
+ */
+ public static function timerStop():void
+ {
+ if (_stopWatch) _stopWatch.stop();
+ }
+
+
+ /**
+ * Resets the Stopwatch.
+ */
+ public static function timerReset():void
+ {
+ if (_stopWatch) _stopWatch.reset();
+ }
+
+
+ /**
+ * Outputs the measured Stopwatch time in milliseconds to Alcon's Trace Logger.
+ */
+ public static function timerInMilliSeconds():void
+ {
+ if (_stopWatch) Debug.trace(_stopWatch.timeInMilliSeconds + "ms");
+ }
+
+
+ /**
+ * Outputs the measured Stopwatch time in seconds to Alcon's Trace Logger.
+ */
+ public static function timerInSeconds():void
+ {
+ if (_stopWatch) Debug.trace(_stopWatch.timeInSeconds + "s");
+ }
+
+
+ /**
+ * Sends the measured Stopwatch time to the Trace Logger. This method
+ * automatically formats the values to seconds and milliseconds.
+ */
+ public static function timerToString():void
+ {
+ if (_stopWatch) Debug.trace(_stopWatch.toString());
+ }
+
+
+ /**
+ * Stops the Stopwatch and immediately sends the measured time to the
+ * Trace Logger in the same format like <code>Debug.timerToString()</code>.
+ *
+ * @param reset If true resets the Timer after the result has been output.
+ */
+ public static function timerStopToString(reset:Boolean = false):void
+ {
+ if (_stopWatch)
+ {
+ _stopWatch.stop();
+ Debug.trace(_stopWatch.toString());
+ if (reset) _stopWatch.reset();
+ }
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Getters & Setters //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * The currently used Debugging Filter Level. By default this is 0 so that all
+ * levels of information are sent to the output. This property can be used to
+ * control the filter level from within the Debug class. For example setting
+ * this property to <code>Debug.LEVEL_ERROR</code> will only let information
+ * of Error and Fatal level pass.
+ */
+ public static function get filterLevel():int
+ {
+ return _filterLevel;
+ }
+ public static function set filterLevel(v:int):void
+ {
+ if (v >= 0 && v < 5) _filterLevel = v;
+ }
+
+
+ /**
+ * Determines whether the Debug class is currently enabled or disabled.
+ * If this property is set to false the Debug class will not send out
+ * any information to Alcon. This can be used to disable the Debug API
+ * completely without the need to remove any debugging code.
+ */
+ public static function get enabled():Boolean
+ {
+ return _isEnabled;
+ }
+ public static function set enabled(v:Boolean):void
+ {
+ _isEnabled = v;
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Event Handlers //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Called on every fpsUpdate event.
+ *
+ * @private
+ */
+ private static function onFPSUpdate(e:Event):void
+ {
+ send("onFPS", (_fpsMeter.fps + ","
+ + _stage.frameRate + ","
+ + _fpsMeter.frt + ","
+ + System.totalMemory));
+ }
+
+
+ /**
+ * onStatus method
+ *
+ * @private
+ */
+ private static function onStatus(e:StatusEvent):void
+ {
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Private Methods //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Sends the specified data to Alcon.
+ *
+ * @param m Method
+ * @param d Data
+ * @param l Level
+ * @param r Recursion Depth
+ *
+ * @private
+ */
+ private static function send(m:String, d:*, l:int = 1, r:int = 0):void
+ {
+ /* Only send if Debug is not disabled */
+ if (_isEnabled)
+ {
+ /* Establish connection if not already done */
+ if (!_isConnected)
+ {
+ _isConnected = true;
+ _connection = new LocalConnection();
+ _connection.addEventListener(StatusEvent.STATUS, onStatus);
+ }
+
+ /* Get the size of the data */
+ var s:Number = 0;
+ if (typeof(d) == "string")
+ {
+ s = String(d).length;
+ }
+ else if (typeof(d) == "object")
+ {
+ var byteArray:ByteArray = new ByteArray();
+ byteArray.writeObject(d);
+ s = byteArray.length;
+ byteArray = null;
+ }
+
+ /* If the data size exceeds 39Kb, use a LSO instead */
+ if (s > 39000)
+ {
+ storeDataLSO(m, d);
+ m = "onLargeData";
+ d = null;
+ }
+
+ _connection.send("_alcon_lc", m, d, l, r, "");
+ }
+ }
+
+
+ /**
+ * sendCapabilities
+ *
+ * @private
+ */
+ private static function sendCapabilities():void
+ {
+ var xml:XML = describeType(Capabilities);
+ var a:Array = [];
+
+ for each (var node:XML in xml.*)
+ {
+ var n:String = node.@name.toString();
+ if (n.length > 0 && n != "_internal" && n != "prototype")
+ {
+ var nn:String = Capabilities[n];
+ a.push({p: n, v: nn});
+ }
+ }
+
+ a.sortOn (["p"], Array.CASEINSENSITIVE);
+ send("onCap", a);
+ }
+
+
+ /**
+ * Stores data larger than 40Kb to a Local Shared Object.
+ *
+ * @private
+ */
+ private static function storeDataLSO(m:String, d:*):void
+ {
+ var sharedObject:SharedObject = SharedObject.getLocal("alcon", "/");
+ sharedObject.data["alconMethod"] = m;
+ sharedObject.data["alconData"] = d;
+ try
+ {
+ var flushResult:String = sharedObject.flush();
+ if (flushResult == SharedObjectFlushStatus.FLUSHED)
+ {
+ return;
+ }
+ }
+ catch (e:Error)
+ {
+ Security.showSettings(SecurityPanel.LOCAL_STORAGE);
+ }
+ }
+ }
+}
View
177 dependencies/com/hexagonstar/util/debug/FPSMeter.as
@@ -0,0 +1,177 @@
+/*
+ * ``The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ */
+package com.hexagonstar.util.debug
+{
+ import flash.display.Stage;
+ import flash.events.Event;
+ import flash.events.EventDispatcher;
+ import flash.events.TimerEvent;
+ import flash.utils.Timer;
+ import flash.utils.getTimer;
+
+
+ /**
+ * FPSMeter can be used to measure the application's framerate and
+ * frame render time. This class can be used on it's own to fetch
+ * fps/frt information or it is used by the Debug class when calling
+ * Debug.monitor().
+ */
+ public class FPSMeter extends EventDispatcher
+ {
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Variables //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * The FPSMeter.FPS_UPDATE constant defines the value of the type property
+ * of an fpsUpdate event object.
+ */
+ public static const FPS_UPDATE:String = "fpsUpdate";
+
+ private var _stage:Stage;
+ private var _timer:Timer;
+ private var _pollInterval:int;
+ private var _fps:int;
+ private var _frt:int;
+ private var _ms:int;
+ private var _isRunning:Boolean;
+
+ private var _delay:int;
+ private var _delayMax:int = 10;
+ private var _prev:int;
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Public Methods //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Constructs a new FPSMeter instance.
+ *
+ * @param stage The Stage object for that the FPS is being measured.
+ * @param pollInterval Interval in milliseconds with that the FPS rate is polled.
+ */
+ public function FPSMeter(stage:Stage, pollInterval:int = 500)
+ {
+ _stage = stage;
+ _pollInterval = pollInterval;
+ reset();
+ }
+
+
+ /**
+ * Starts FPS/FRT polling.
+ */
+ public function start():void
+ {
+ if (!_isRunning)
+ {
+ _isRunning = true;
+ _timer = new Timer(_pollInterval, 0);
+ _timer.addEventListener(TimerEvent.TIMER, onTimer);
+ _stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+ _timer.start();
+ }
+ }
+
+
+ /**
+ * Stops FPS/FRT polling.
+ */
+ public function stop():void
+ {
+ if (_isRunning)
+ {
+ _timer.stop();
+ _timer.removeEventListener(TimerEvent.TIMER, onTimer);
+ _stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+ _timer = null;
+ reset();
+ }
+ }
+
+
+ /**
+ * Resets the FPSMeter to it's default state.
+ */
+ public function reset():void
+ {
+ _fps = 0;
+ _frt = 0;
+ _ms = 0;
+ _delay = 0;
+ _prev = 0;
+ _isRunning = false;
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Getters & Setters //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Returns the current FPS.
+ *
+ * @return The currently polled frames per second.
+ */
+ public function get fps():int
+ {
+ return _fps;
+ }
+
+
+ /**
+ * Returns the time that the current frame needed to render.
+ *
+ * @return The time in milliseconds that the current frame needed to render.
+ */
+ public function get frt():int
+ {
+ return _frt;
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Event Handlers //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Called on every Timer event.
+ * @private
+ */
+ private function onTimer(event:TimerEvent):void
+ {
+ dispatchEvent(new Event(FPSMeter.FPS_UPDATE));
+ }
+
+
+ /**
+ * Called on every EnterFrame event.
+ * @private
+ */
+ private function onEnterFrame(event:Event):void
+ {
+ var t:Number = getTimer();
+ _delay++;
+
+ if (_delay >= _delayMax)
+ {
+ _delay = 0;
+ _fps = int((1000 * _delayMax) / (t - _prev));
+ _prev = t;
+ }
+
+ _frt = t - _ms;
+ _ms = t;
+ }
+ }
+}
View
199 dependencies/com/hexagonstar/util/debug/StopWatch.as
@@ -0,0 +1,199 @@
+/*
+ * ``The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ */
+package com.hexagonstar.util.debug
+{
+ import flash.utils.getTimer;
+
+
+ /**
+ * Stopwatch can be used to stop the time.
+ *
+ * Instantiate this class as follows:
+ * <p><pre>
+ * import com.hexagonstar.util.StopWatch;
+ * var stopWatch:StopWatch = new StopWatch();
+ * </pre>
+ *
+ * This will create a still standing stopwatch. You can start and stop the
+ * stopwatch to record time as you please:
+ * <p><pre>
+ * stopWatch.start();
+ * // Do something
+ * stopWatch.stop();
+ * </pre>
+ *
+ * The recored time is available in milliseconds and seconds.
+ * <p><pre>
+ * Debug.trace(stopWatch.getTimeInMilliSeconds() + " ms");
+ * Debug.trace(stopWatch.getTimeInSeconds() + " s");
+ * </pre>
+ */
+ public class StopWatch
+ {
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Variables //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ private var _started:Boolean = false;
+ private var _startTimeKeys:Array;
+ private var _stopTimeKeys:Array;
+ private var _title:String;
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Public Methods //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Constructs a new StopWatch instance.
+ */
+ public function StopWatch()
+ {
+ reset();
+ }
+
+
+ /**
+ * Starts the time recording process.
+ *
+ * @param title An optional title for the Stopwatch.
+ */
+ public function start(title:String = ""):void
+ {
+ if (!_started)
+ {
+ _title = title;
+ _started = true;
+ _startTimeKeys.push(getTimer());
+ }
+ }
+
+
+ /**
+ * Stops the time recording process if the process has been started before.
+ */
+ public function stop():void
+ {
+ if (_started)
+ {
+ var stopTime:int = getTimer();
+ _stopTimeKeys[_startTimeKeys.length - 1] = stopTime;
+ _started = false;
+ }
+ }
+
+
+ /**
+ * Resets the Stopwatch total running time.
+ */
+ public function reset():void
+ {
+ _startTimeKeys = [];
+ _stopTimeKeys = [];
+ _started = false;
+ }
+
+
+ /**
+ * Generates a string representation of the Stopwatch that includes
+ * all start and stop times in milliseconds.
+ *
+ * @return the string representation of the Stopwatch.
+ */
+ public function toString():String
+ {
+ var s:String = "\n ********************* [STOPWATCH] *********************";
+ if (_title != "") s += "\n * " + _title;
+
+ for (var i:int = 0; i < _startTimeKeys.length; i++)
+ {
+ var s1:int = _startTimeKeys[i];
+ var s2:int = _stopTimeKeys[i];
+ s += "\n * started ["
+ + format(s1) + "ms] stopped ["
+ + format(s2) + "ms] time ["
+ + format(s2 - s1) + "ms]";
+ }
+
+ if (i == 0) s += "\n * never started.";
+ else s += "\n * total runnning time: " + timeInSeconds + "s";
+
+ s += "\n *******************************************************";
+ return s;
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Getters & Setters //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Returns whether the Stopwatch has been started or not.
+ */
+ public function get started():Boolean
+ {
+ return _started;
+ }
+
+
+ /**
+ * Calculates and returns the elapsed time in milliseconds. The Stopwatch
+ * will not be stopped by calling this method. If the Stopwatch
+ * is still running it takes the current time as stoptime for the result.
+ */
+ public function get timeInMilliSeconds():int
+ {
+ if (_started)
+ {
+ _stopTimeKeys[_startTimeKeys.length - 1] = getTimer();
+ }
+ var r:int = 0;
+ for (var i:int = 0; i < _startTimeKeys.length; i++)
+ {
+ r += (_stopTimeKeys[i] - _startTimeKeys[i]);
+ }
+ return r;
+ }
+
+
+ /**
+ * Calculates and returns the elapsed time in seconds. The Stopwatch
+ * will not be stopped by calling this method. If the Stopwatch is still
+ * running it takes the current time as stoptime for the result.
+ */
+ public function get timeInSeconds():Number
+ {
+ return timeInMilliSeconds / 1000;
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // Private Methods //
+ ////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Formats a value for toString Output.
+ *
+ * @private
+ */
+ private function format(v:int):String
+ {
+ var s:String = "";
+ var l:int = v.toString().length;
+ for (var i:int = 0; i < (5 - l); i++)
+ {
+ s += "0";
+ }
+ return s + v;
+ }
+ }
+}
View
200 dependencies/org/flashdevelop/utils/FlashConnect.as
@@ -0,0 +1,200 @@
+package org.flashdevelop.utils
+{
+ import flash.net.*;
+ import flash.events.*;
+ import flash.utils.*;
+ import flash.xml.*;
+
+ /**
+ * Connects a flash movie thru XmlSocket to the FlashDevelop program.
+ * @author Mika Palmu
+ * @version 3.3
+ */
+ public class FlashConnect
+ {
+ /**
+ * Public properties of the class.
+ */
+ public static var status:Number = 0;
+ public static var limit:Number = 1000;
+ public static var host:String = "127.0.0.1";
+ public static var port:Number = 1978;
+
+ /**
+ * Private properties of the class.
+ */
+ private static var socket:XMLSocket;
+ private static var messages:Array;
+ private static var interval:Number;
+ private static var counter:Number;
+
+ /**
+ * Event callbacks of the class.
+ */
+ public static var onConnection:Function;
+ public static var onReturnData:Function;
+
+ /**
+ * Adds a custom message to the message stack.
+ */
+ public static function send(message:XMLNode):void
+ {
+ if (messages == null) initialize();
+ messages.push(message);
+ }
+
+ /**
+ * Adds a trace command to the message stack.
+ */
+ //public static function trace(value:Object, level:Number = TraceLevel.DEBUG):void
+ public static function trace(value:Object, level:Number = 1):void
+ {
+ var msgNode:XMLNode = createMsgNode(value.toString(), level);
+ FlashConnect.send(msgNode);
+ }
+
+ /**
+ * Adds a trace command to the message stack, AS3 style.
+ */
+ public static function atrace(...rest):void
+ {
+ var result:String = rest.join(",");
+ var message:XMLNode = createMsgNode(result, TraceLevel.DEBUG);
+ FlashConnect.send(message);
+ }
+
+ /**
+ * Adds a trace command to the message stack, MTASC style.
+ */
+ public static function mtrace(value:Object, method:String, path:String, line:Number):void
+ {
+ var fixed:String = path.split("/").join("\\");
+ var formatted:String = fixed + ":" + line + ":" + value;
+ FlashConnect.trace(formatted, TraceLevel.DEBUG);
+ }
+
+ /**
+ * Send message queue immediately
+ * @return Success
+ */
+ public static function flush():Boolean
+ {
+ if (status)
+ {
+ sendStack();
+ return true;
+ }
+ else return false;
+ }
+
+ /**
+ * Opens the xml socket connection to the target port and host.
+ */
+ public static function initialize():int
+ {
+ if (socket) return status;
+ counter = 0;
+ messages = new Array();
+ socket = new XMLSocket();
+ socket.addEventListener(Event.CLOSE, onClose);
+ socket.addEventListener(DataEvent.DATA, onData);
+ socket.addEventListener(Event.CONNECT, onConnect);
+ socket.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
+ socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
+ interval = setInterval(sendStack, 50);
+ socket.connect(host, port);
+ return status;
+ }
+ private static function onData(event:DataEvent):void
+ {
+ FlashConnect.status = 1;
+ if (FlashConnect.onReturnData != null)
+ {
+ FlashConnect.onReturnData(event.data);
+ }
+ }
+ private static function onClose(event:Event):void
+ {
+ socket = null;
+ FlashConnect.status = -1;
+ if (FlashConnect.onConnection != null)
+ {
+ FlashConnect.onConnection();
+ }
+ }
+ private static function onConnect(event:Event):void
+ {
+ FlashConnect.status = 1;
+ if (FlashConnect.onConnection != null)
+ {
+ FlashConnect.onConnection();
+ }
+ }
+ private static function onIOError(event:IOErrorEvent):void
+ {
+ FlashConnect.status = -1;
+ if (FlashConnect.onConnection != null)
+ {
+ FlashConnect.onConnection();
+ }
+ }
+ private static function onSecurityError(event:SecurityErrorEvent):void
+ {
+ FlashConnect.status = -1;
+ if (FlashConnect.onConnection != null)
+ {
+ FlashConnect.onConnection();
+ }
+ }
+
+ /**
+ * Creates the required xml message for the trace operation.
+ */
+ private static function createMsgNode(message:String, level:Number):XMLNode
+ {
+ if (isNaN(level)) level = TraceLevel.DEBUG;
+ var msgNode:XMLNode = new XMLNode(1, null);
+ var txtNode:XMLNode = new XMLNode(3, encodeURI(message));
+ msgNode.attributes.state = level.toString();
+ msgNode.attributes.cmd = "trace";
+ msgNode.nodeName = "message";
+ msgNode.appendChild(txtNode);
+ return msgNode;
+ }
+
+ /**
+ * Sends all messages in message stack to FlashDevelop.
+ */
+ private static function sendStack():void
+ {
+ if (messages.length > 0 && status == 1)
+ {
+ var message:XMLDocument = new XMLDocument();
+ var rootNode:XMLNode = message.createElement("flashconnect");
+ while (messages.length != 0)
+ {
+ counter++;
+ if (counter > limit)
+ {
+ clearInterval(interval);
+ var msg:String = new String("FlashConnect aborted. You have reached the limit of maximum messages.");
+ var errorNode:XMLNode = createMsgNode(msg, TraceLevel.ERROR);
+ rootNode.appendChild(errorNode);
+ messages = new Array();
+ break;
+ }
+ else
+ {
+ var msgNode:XMLNode = XMLNode(messages.shift());
+ rootNode.appendChild(msgNode);
+ }
+ }
+ message.appendChild(rootNode);
+ if (socket && socket.connected) socket.send(message);
+ counter = 0;
+ }
+ }
+
+ }
+
+}
View
59 dependencies/org/flashdevelop/utils/FlashViewer.as
@@ -0,0 +1,59 @@
+package org.flashdevelop.utils
+{
+ import flash.system.*;
+
+ /**
+ * Connects a flash movie from the ActiveX component to the FlashDevelop program.
+ * @author Mika Palmu
+ * @version 1.1
+ */
+ public class FlashViewer
+ {
+ /**
+ * Public properties of the class.
+ */
+ public static var limit:Number = 1000;
+
+ /**
+ * Private properties of the class.
+ */
+ private static var counter:Number = 0;
+ private static var aborted:Boolean = false;
+
+ /**
+ * Sends a trace message to the ActiveX component.
+ */
+ public static function trace(value:Object, level:Number = 1):void
+ {
+ counter++;
+ if (counter > limit && !aborted)
+ {
+ aborted = true;
+ var msg:String = "FlashViewer aborted. You have reached the limit of maximum messages.";
+ fscommand("trace", "3:" + msg);
+ }
+ if (!aborted) fscommand("trace", level + ":" + value);
+ }
+
+ /**
+ * Sends a trace message to the ActiveX component, MTASC style.
+ */
+ public static function mtrace(value:Object, method:String, path:String, line:Number):void
+ {
+ var fixed:String = path.split("/").join("\\");
+ var formatted:String = fixed + ":" + line + ":" + value;
+ FlashViewer.trace(formatted, TraceLevel.DEBUG);
+ }
+
+ /**
+ * Sends a trace message to the ActiveX component, AS3 style.
+ */
+ public static function atrace(...rest):void
+ {
+ var result:String = rest.join(",");
+ FlashViewer.trace(result, TraceLevel.DEBUG);
+ }
+
+ }
+
+}
View
21 dependencies/org/flashdevelop/utils/TraceLevel.as
@@ -0,0 +1,21 @@
+package org.flashdevelop.utils
+{
+ /**
+ * Predefined trace level values for the tracing classes.
+ * @author Mika Palmu
+ * @version 1.0
+ */
+ public class TraceLevel
+ {
+ /**
+ * Constants of the class
+ */
+ public static const INFO:Number = 0;
+ public static const DEBUG:Number = 1;
+ public static const WARNING:Number = 2;
+ public static const ERROR:Number = 3;
+ public static const FATAL:Number = 4;
+
+ }
+
+}
View
129 docs/AC_OETags.js
@@ -0,0 +1,129 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// ADOBE SYSTEMS INCORPORATED
+// Copyright 2008 Adobe Systems Incorporated
+// All Rights Reserved.
+//
+// NOTICE: Adobe permits you to use, modify, and distribute this file
+// in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+//v1.0
+function AC_AddExtension(src, ext)
+{
+ if (src.indexOf('?') != -1)
+ return src.replace(/\?/, ext+'?');
+ else
+ return src + ext;
+}
+
+function AC_Generateobj(objAttrs, params, embedAttrs)
+{
+ var str = '<object ';
+ for (var i in objAttrs)
+ str += i + '="' + objAttrs[i] + '" ';
+ str += '>';
+ for (var i in params)
+ str += '<param name="' + i + '" value="' + params[i] + '" /> ';
+ str += '<embed ';
+ for (var i in embedAttrs)
+ str += i + '="' + embedAttrs[i] + '" ';
+ str += ' ></embed></object>';
+
+ document.write(str);
+}
+
+function AC_FL_RunContent(){
+ var ret =
+ AC_GetArgs
+ ( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
+ , "application/x-shockwave-flash"
+ );
+ AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
+}
+
+function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
+ var ret = new Object();
+ ret.embedAttrs = new Object();
+ ret.params = new Object();
+ ret.objAttrs = new Object();
+ for (var i=0; i < args.length; i=i+2){
+ var currArg = args[i].toLowerCase();
+
+ switch (currArg){
+ case "classid":
+ break;
+ case "pluginspage":
+ ret.embedAttrs[args[i]] = args[i+1];
+ break;
+ case "src":
+ case "movie":
+ args[i+1] = AC_AddExtension(args[i+1], ext);
+ ret.embedAttrs["src"] = args[i+1];
+ ret.params[srcParamName] = args[i+1];
+ break;
+ case "onafterupdate":
+ case "onbeforeupdate":
+ case "onblur":
+ case "oncellchange":
+ case "onclick":
+ case "ondblClick":
+ case "ondrag":
+ case "ondragend":
+ case "ondragenter":
+ case "ondragleave":
+ case "ondragover":
+ case "ondrop":
+ case "onfinish":
+ case "onfocus":
+ case "onhelp":
+ case "onmousedown":
+ case "onmouseup":
+ case "onmouseover":
+ case "onmousemove":
+ case "onmouseout":
+ case "onkeypress":
+ case "onkeydown":
+ case "onkeyup":
+ case "onload":
+ case "onlosecapture":
+ case "onpropertychange":
+ case "onreadystatechange":
+ case "onrowsdelete":
+ case "onrowenter":
+ case "onrowexit":
+ case "onrowsinserted":
+ case "onstart":
+ case "onscroll":
+ case "onbeforeeditfocus":
+ case "onactivate":
+ case "onbeforedeactivate":
+ case "ondeactivate":
+ case "type":
+ case "codebase":
+ ret.objAttrs[args[i]] = args[i+1];
+ break;
+ case "width":
+ case "height":
+ case "align":
+ case "vspace":
+ case "hspace":
+ case "class":
+ case "title":
+ case "accesskey":
+ case "name":
+ case "id":
+ case "tabindex":
+ ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
+ break;
+ default:
+ ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
+ }
+ }
+ ret.objAttrs["classid"] = classid;
+ if (mimeType) ret.embedAttrs["type"] = mimeType;
+ return ret;
+}
+
View
24 docs/FormatterTest.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="style.css" type="text/css" media="screen"><link rel="stylesheet" href="print.css" type="text/css" media="print"><link rel="stylesheet" href="override.css" type="text/css"><meta name="keywords" content="FormatterTest,globalClassifier.FormatterTest"><title>FormatterTest</title></head><body><script language="javascript" type="text/javascript" src="asdoc.js"></script><script language="javascript" type="text/javascript" src="help.js"></script><script language="javascript" type="text/javascript" src="cookies.js"></script><script language="javascript" type="text/javascript"><!--
+ asdocTitle = 'FormatterTest - API Documentation';
+ var baseRef = '';
+ window.onload = configPage;
+ --></script>
+<script type="text/javascript">
+ scrollToNameAnchor();
+ </script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">gLogger</td><td class="titleTableTopNav" align="right"><a href="package-summary.html" onclick="loadClassListFrame('all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="class-summary.html" onclick="loadClassListFrame('all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a href="all-index-A.html" onclick="loadClassListFrame('index-list.html')">Index</a>&nbsp;|&nbsp;<a id="framesLink1" href="index.html?FormatterTest.html&amp;">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="images/logo.jpg" class="logoImage" alt=" Adobe Logo " title=" Adobe Logo "></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">FormatterTest</td><td class="titleTableSubNav" id="subNav" align="right"><a href="#methodSummary">Methods</a></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
+ <!--
+
+ if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("FormatterTest"); titleBar_setSubNav(false,false,false,false,false,false,false,false,true,false,false ,false,false,false,false,false);}
+ -->
+ </script><div xmlns:fn="http://www.w3.org/2005/xpath-functions" class="MainContent"><table class="classHeaderTable" cellpadding="0" cellspacing="0"><tr><td class="classHeaderTableLabel">Package</td><td><a href="package-detail.html" onclick="javascript:loadClassListFrame('class-list.html')">Top Level</a></td></tr><tr><td class="classHeaderTableLabel">Class</td><td class="classSignature">public class FormatterTest</td></tr><tr><td class="classHeaderTableLabel">Inheritance</td><td class="inheritanceList">FormatterTest <img src="images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> flash.display.Sprite</td></tr></table><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><p></p><p></p><p></p>
+ <code>FormatterTest</code>.
+
+ <p></p><br/><hr></div><a name="methodSummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Methods </div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableMethod"><tr><th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#FormatterTest()" class="signatureLink">FormatterTest</a>()</div><div class="summaryTableDescription">
+ FormatterTest
+ .FormatterTest
+ </div></td><td class="summaryTableOwnerCol">FormatterTest</td></tr></table></div><script language="javascript" type="text/javascript"><!--
+ showHideInherited();
+ --></script><div class="MainContent"><a name="constructorDetail"></a><div class="detailSectionHeader">Constructor Detail</div><a name="FormatterTest()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">FormatterTest</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">Constructor</td></tr></table><div class="detailBody"><code>public function FormatterTest()</code><p></p><p>
+ <code>FormatterTest</code>
+ .FormatterTest
+ </p></div><br/><br/><hr><br/><p></p><center class="copyright"><footer></footer><br/>Thu Sep 1 2011, 07:48 PM +02:00 </center></div></body></html><!--<br/>Thu Sep 1 2011, 07:48 PM +02:00 -->
View
88 docs/all-classes.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>All Classes - API Documentation</title>
+ <base target="classFrame">
+ <link rel="stylesheet" href="style.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="print.css" type="text/css" media="print">
+ <link rel="stylesheet" href="override.css" type="text/css">
+ </head>
+ <body class="classFrameContent">
+ <h3><a href="class-summary.html" target="classFrame" style="color:black">All Classes</a></h3>
+ <table cellpadding="0" cellspacing="0">
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/AbstractFormater.html" title="com.enjoymondays.logging.formaters.AbstractFormater">AbstractFormater</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/AbstractLayouter.html" title="com.enjoymondays.logging.formaters.converters.AbstractLayouter">AbstractLayouter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/ClassConverter.html" title="com.enjoymondays.logging.formaters.converters.ClassConverter">ClassConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/DateConverter.html" title="com.enjoymondays.logging.formaters.converters.DateConverter">DateConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/utils/DateUtils.html" title="com.enjoymondays.logging.utils.DateUtils">DateUtils</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/FileConverter.html" title="com.enjoymondays.logging.formaters.converters.FileConverter">FileConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/vos/FormatLayoutVO.html" title="com.enjoymondays.logging.vos.FormatLayoutVO">FormatLayoutVO</a></td>
+ </tr>
+ <tr>
+ <td><a href="./FormatterTest.html">FormatterTest</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/core/ILoggerFormatter.html" title="com.enjoymondays.logging.core.ILoggerFormatter"><i>ILoggerFormatter</i></a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/core/ILogLevel.html" title="com.enjoymondays.logging.core.ILogLevel"><i>ILogLevel</i></a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/core/ILogMessage.html" title="com.enjoymondays.logging.core.ILogMessage"><i>ILogMessage</i></a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/core/ILogMessageConverter.html" title="com.enjoymondays.logging.core.ILogMessageConverter"><i>ILogMessageConverter</i></a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/core/IStackTrace.html" title="com.enjoymondays.logging.core.IStackTrace"><i>IStackTrace</i></a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/LevelConverter.html" title="com.enjoymondays.logging.formaters.converters.LevelConverter">LevelConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/LineNumberConverter.html" title="com.enjoymondays.logging.formaters.converters.LineNumberConverter">LineNumberConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/core/LogLevel.html" title="com.enjoymondays.logging.core.LogLevel">LogLevel</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/core/LogMessage.html" title="com.enjoymondays.logging.core.LogMessage">LogMessage</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/MessageConverter.html" title="com.enjoymondays.logging.formaters.converters.MessageConverter">MessageConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/MethodConverter.html" title="com.enjoymondays.logging.formaters.converters.MethodConverter">MethodConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/PatternFormater.html" title="com.enjoymondays.logging.formaters.PatternFormater">PatternFormater</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/vos/PatternVO.html" title="com.enjoymondays.logging.vos.PatternVO">PatternVO</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/StackConverter.html" title="com.enjoymondays.logging.formaters.converters.StackConverter">StackConverter</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/formaters/converters/StackPart.html" title="com.enjoymondays.logging.formaters.converters.StackPart">StackPart</a></td>
+ </tr>
+ <tr>
+ <td><a href="com/enjoymondays/logging/plugins/StackTrace.html" title="com.enjoymondays.logging.plugins.StackTrace">StackTrace</a></td>
+ </tr>
+ </table>
+ </body>
+</html>
+<!--<br/>Thu Sep 1 2011, 07:48 PM +02:00 -->
View
22 docs/all-index-A.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>A </title><link rel="stylesheet" href="style.css" type="text/css" media="screen"><link rel="stylesheet" href="print.css" type="text/css" media="print"><link rel="stylesheet" href="override.css" type="text/css"></head><body><script language="javascript" type="text/javascript" src="asdoc.js"></script><script language="javascript" type="text/javascript" src="help.js"></script><script language="javascript" type="text/javascript" src="cookies.js"></script><script language="javascript" type="text/javascript"><!--
+
+
+ asdocTitle = 'A Index - API Documentation';
+
+
+ var baseRef = '';
+
+
+ window.onload = configPage;
+
+
+ --></script>
+
+
+<script type="text/javascript">
+
+
+ scrollToNameAnchor();
+
+
+ </script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">gLogger</td><td class="titleTableTopNav" align="right"><a href="package-summary.html" onclick="loadClassListFrame('all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="class-summary.html" onclick="loadClassListFrame('all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a id="framesLink1" href="index.html?all-index-A.html&amp;index-list.html">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="images/logo.jpg" class="logoImage" alt=" Adobe Logo " title=" Adobe Logo "></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">A&nbsp;Index</td><td class="titleTableSubNav" id="subNav" align="right"></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
View
13 docs/all-index-B.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>B </title><link rel="stylesheet" href="style.css" type="text/css" media="screen"><link rel="stylesheet" href="print.css" type="text/css" media="print"><link rel="stylesheet" href="override.css" type="text/css"></head><body><script language="javascript" type="text/javascript" src="asdoc.js"></script><script language="javascript" type="text/javascript" src="help.js"></script><script language="javascript" type="text/javascript" src="cookies.js"></script><script language="javascript" type="text/javascript"><!--
+
+
+ asdocTitle = 'B Index - API Documentation';
+
+
+ var baseRef = '';
+
+
+ window.onload = configPage;
+
+
+ --></script>
View
25 docs/all-index-C.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>C </title><link rel="stylesheet" href="style.css" type="text/css" media="screen"><link rel="stylesheet" href="print.css" type="text/css" media="print"><link rel="stylesheet" href="override.css" type="text/css"></head><body><script language="javascript" type="text/javascript" src="asdoc.js"></script><script language="javascript" type="text/javascript" src="help.js"></script><script language="javascript" type="text/javascript" src="cookies.js"></script><script language="javascript" type="text/javascript"><!--
+
+
+ asdocTitle = 'C Index - API Documentation';
+
+
+ var baseRef = '';
+
+
+ window.onload = configPage;
+
+
+ --></script>
+
+
+<script type="text/javascript">
+
+
+ scrollToNameAnchor();
+
+
+ </script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">gLogger</td><td class="titleTableTopNav" align="right"><a href="package-summary.html" onclick="loadClassListFrame('all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="class-summary.html" onclick="loadClassListFrame('all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a id="framesLink1" href="index.html?all-index-C.html&amp;index-list.html">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="images/logo.jpg" class="logoImage" alt=" Adobe Logo " title=" Adobe Logo "></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">C&nbsp;Index</td><td class="titleTableSubNav" id="subNav" align="right"></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
+
+
+ <!--
View
25 docs/all-index-D.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>D </title><link rel="stylesheet" href="style.css" type="text/css" media="screen"><link rel="stylesheet" href="print.css" type="text/css" media="print"><link rel="stylesheet" href="override.css" type="text/css"></head><body><script language="javascript" type="text/javascript" src="asdoc.js"></script><script language="javascript" type="text/javascript" src="help.js"></script><script language="javascript" type="text/javascript" src="cookies.js"></script><script language="javascript" type="text/javascript"><!--
+
+
+ asdocTitle = 'D Index - API Documentation';
+
+
+ var baseRef = '';
+
+
+ window.onload = configPage;
+
+
+ --></script>
+
+
+<script type="text/javascript">
+
+
+ scrollToNameAnchor();
+
+
+ </script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">gLogger</td><td class="titleTableTopNav" align="right"><a href="package-summary.html" onclick="loadClassListFrame('all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="class-summary.html" onclick="loadClassListFrame('all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a id="framesLink1" href="index.html?all-index-D.html&amp;index-list.html">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="images/logo.jpg" class="logoImage" alt=" Adobe Logo " title=" Adobe Logo "></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">D&nbsp;Index</td><td class="titleTableSubNav" id="subNav" align="right"></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
+
+
+ <!--
View
13 docs/all-index-E.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>E </title><link rel="stylesheet" href="style.css" type="text/css" media="screen"><link rel="stylesheet" href="print.css" type="text/css" media="print"><link rel="stylesheet" href="override.css" type="text/css"></head><body><script language="javascript" type="text/javascript" src="asdoc.js"></script><script language="javascript" type="text/javascript" src="help.js"></script><script language="javascript" type="text/javascript" src="cookies.js"></script><script language="javascript" type="text/javascript"><!--
+
+
+ asdocTitle = 'E Index - API Documentation';
+
+
+ var baseRef = '';
+
+
+ window.onload = configPage;
+
+
+ --></script>
View
28 docs/all-index-F.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>F </title><link rel="stylesheet" href="style.css" type="text/css" media="screen"><link rel="stylesheet" href="print.css" type="text/css" media="print"><link rel="stylesheet" href="override.css" type="text/css"></head><body><script language="javascript" type="text/javascript" src="asdoc.js"></script><script language="javascript" type="text/javascript" src="help.js"></script><script language="javascript" type="text/javascript" src="cookies.js"></script><script language="javascript" type="text/javascript"><!--
+
+
+ asdocTitle = 'F Index - API Documentation';
+
+
+ var baseRef = '';
+
+
+ window.onload = configPage;
+
+
+ --></script>
+
+
+<script type="text/javascript">
+
+
+ scrollToNameAnchor();
+
+
+ </script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">gLogger</td><td class="titleTableTopNav" align="right"><a href="package-summary.html" onclick="loadClassListFrame('all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="class-summary.html" onclick="loadClassListFrame('all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a id="framesLink1" href="index.html?all-index-F.html&amp;index-list.html">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="images/logo.jpg" class="logoImage" alt=" Adobe Logo " title=" Adobe Logo "></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">F&nbsp;Index</td><td class="titleTableSubNav" id="subNav" align="right"></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
+
+
+ <!--
+
+
+