Thursday, August 16, 2012

IntelliJ IDEA flex module debug hang

when debugging flex module application ( shell.swf to load modulea.swf , moduleb.swf ...), some times
Idea showing binding error and open up a noname.as file. and the browser is freezing(especially when you switching to load another module swf at run time) and you need
to wait long time to be able to use IDEA to continue to run. sometime, it's just hang up forever, you have to kill the browser process.

today, i found if you change the framework linkage to (Merged into code), then the debugger is working fine.
i'm using ant build.xml to compile/deploy flex apps using RSL but never use IDEA to compile the
code,maybe that's why it couldn't find class to load (noname.as). anyway, it works fine for me.

UPDATE
change to different flex SDK may also fix the issue


Monday, July 9, 2012

remove ranorex automation from flex builder

ref: here

Manual Setup of Ranorex Java Plug-In

  1. First of all close all Ranorex Tools.
  2. Now you have to determine the path of your active Java runtime Environment to know where to copy the necessary files to. Open the Java Runtime Environment Settings which can be found in 'Java Control Panel' (Control-Panel -> Java). There you can see the path of your Java Runtime Environment. If you have more than one Java Runtime Environment installed on your machine, check which one will be used to execute your Java applications by determining which one is activated.
  3. After identifying the path you have to copy each of the following files to its corresponding directory based on the root folder of your java runtime installation (e.g. 'C:\Program Files (x86)\Java\jre6\'). The given files are located in the Ranorex installation folder (e.g. 'C:\Program Files\Ranorex 3.2\Bin')
    • 'accessibility.properties' to \lib
    • 'RanorexAutomation.jar' to \lib\ext
    • 'JavaHelper32/64.dll' to \bin
After restarting you Java application you should be able to use the Ranorex for your Java application under test. 
 
To Remove, comment out 
assistive_technologies=com.ranorex.RanorexAutomation
in accessibility.properties
 
and delete
 RanorexAutomation.jar
 
 

Thursday, June 28, 2012

use ‘&&’ in MXML

see ref:Flex tip: conditions like ‘&&’ in MXML


<BetterFormItem label="{Util.geti18nText(this,'roles')}"
width="100%"
id="role_gateway_id"
key="rules"
includeInLayout="{raciGridPerformersRaci.dataProvider.length>0 &amp;&amp; raciGridPerformersRaci.selectedItem.@type_id =='ROLE'}"
visible="{raciGridPerformersRaci.dataProvider.length>0 &amp;&amp; raciGridPerformersRaci.selectedItem.@type_id =='ROLE'}"
>
</BetterFormItem>

Thursday, May 3, 2012

ExtJS Debug: dynamic loading Ext Class and our own class

in app.html
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>MyTestBedPurecode</title>
    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css"/>
    <script type="text/javascript" src="ext/ext-debug.js"></script>
    <script type="text/javascript" src="app.js"></script>
    <script type="text/javascript" src="app/overrides/CustomXmlReader.js"></script>
</head>
<body></body>
</html>


use ext-debug.js( instead of ext-all-dev.js) will ensure we only load class when needed.
and the file size is small so the app can be easy debug.
MyTestBed

Tuesday, May 1, 2012

Ext.override

// in app.html
     <link rel="stylesheet" type="text/css" href="http://localhost/extjstest/extjs-4.0.7/resources/css/ext-all.css"/>
    <script type="text/javascript" src="http://localhost/extjstest/extjs-4.0.7/ext-all-dev.js"></script>
    <script type="text/javascript" src="app/overrides/Ext.data.reader.Xml.js"></script>
/* file name  app/overrides/Ext.data.reader.Xml.js */
 Ext.override(Ext.data.reader.Xml,{
      extractData: function(root) {
        var recordName = this.record;

        //<debug>
        if (!recordName) {
            Ext.Error.raise('Record is a required parameter');
        }
        //</debug>

        if (recordName != root.nodeName) {
                //root = Ext.DomQuery.select(recordName, root);
                //patch
                root = Ext.DomQuery.select('>' + recordName, root);
            } else {
                root = [root];
            }
            return this.callParent([root]);
        }
 });

treecolumn renderer function for Ext.tree.Panel


Ext.define('MyApp.view.XmlTreePanel', {
    extend: 'Ext.tree.Panel',
    alias: 'widget.xmltreepanel',

    title: 'My Tree Panel',
    store: 'MyXmlTreeStore',

    id:'xmltreepanel',

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            viewConfig: {

            },
            columns: [
                {
                    xtype: 'treecolumn',
                    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
                        return unescape(value);
                    },
                    text: 'MyTreeColumn'
                }
            ]
        });

        me.callParent(arguments);
    }

});

urldecode xml attribute , mapping , convert


Ext.define('MyApp.model.MyModel', {
    extend: 'Ext.data.Model',

    fields: [
        {
            convert:function(v,rec){
                   return unescape(v);
            }   ,
            mapping: '@label',
            name: 'label',
            type: 'string'
        }
    ]
});


<?xml version="1.0" encoding="UTF-8"?>
<explorer >
<node label="%20Feng%20Guideline%20" type="GUIDELINE" nodeid="9740015D-3447-1CC6-949E-C91D0876F8D1" selected="true" version="0.34" seqnum="" year="2012" versionid="D956A51D-A9A8-8398-B191-79A44A97D75F">
</node>
</explorer>


Ext.define('MyApp.view.BottomPanel', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.bottompanel',

    height: 150,
    id: 'bottompanel',
    title: 'My Panel',

    initComponent: function() {
        var me = this;
        Ext.applyIf(me, {
            tpl:      [
                'Label: {label}<br>'
               ]
        });

        me.callParent(arguments);
    }

});