I was at 360|Flex Indy in the session on the Axiis Data Visualization Framework presented by Tom Gonzales and Michael VanDaniker. Axiis is a framework built on top of degrafa that allows you to develop new and unique data visualizations that can go way beyond the simple column, bar, and pie charts available in the standard Adobe Flex charting libraries.

One of Tom’s first slides showed a Smith Chart. Tom mentioned jokingly that Axiis didn’t yet do something this complicated. For me sitting in the room, I was a bit taken aback. In my WCAP project, I have an open enhancement ticket from a customer asking for a smith chart visualization for transmission lines. They want to be able to click on a transmission line and view the directionality of the data on a smith chart. My original plan for accomplishing this ticket was to simply use an image for the smith chart background and draw my data on top of it. I must admit, I took Tom’s admission that Axiis couldn’t do a Smith chart as a throwing down of the gauntlet of sorts. I talked to him afterward to let him know I wanted to take on the challenge.

To date, I’ve only been working in Degrafa to get the basics of everything down. I’ll need to solicit Tom and Michael’s help in porting the work I’ve done over to Axiis and open-sourcing the code once I get a little further with it. So far, the most difficult part was calculating the arc angles and radii for each line on the smith chart based on the smith chart coordinates where the arc started and stopped. I still have a way to go in adding the various text labels along the curves as well as porting my work into a more reusable Axiis container.

The image above is the from-impedance(red) and to-impedance(blue) data across a 50 ohm transmission line with a sweep from 0.98mHz to 1.02mHz using a data point every 0.001mHz.

Hopefully, this little endeavor will benefit my WCAP customers as well as the open-source Flex community at the same time.

Posted by Andrew, filed under 360 Flex, Degrafa, Flex, WCAP. Date: May 30, 2009, 10:17 pm | 3 Comments »

Nitro-LM Manage Licenses screen

Recently at the 360|Flex Indy conference, Simplified Logic announced a program for developers to try out their Nitro-LM Enterprise licensing and encryption service with 100 FREE licenses for a year. If you’re a small developer who’s planning to sell commercial software, but don’t have a lot of cash to burn during development, this program was designed for you.

To sign up for this program, you’ll need to go to the Nitro-LM Installation/Support page on their website and install the Administration AIR app. Once inside the Admin app, register as a new user and check the box requesting the FREE licenses for a year. Once you confirm your e-mail address, a technician will complete your account setup and send you a follow-up e-mail along with some example code to get you started.

Nitro-LM Support Website

Posted by Andrew, filed under Uncategorized. Date: May 27, 2009, 10:48 am | No Comments »

browsermob

In the consulting work I’ve been doing for Simplified Logic, they’ve had me working on a new Encryption-only version of Nitro-LM for Flex and AIR. In the past year, they’ve had a number of customers who say something like, “The licensing and everything is really cool, but I’ve already coded my own simple username/password system and I really would just like to encrypt my application.”

For the past few months, I’ve been working on a solution for this. Instead of being username/password based for authentication like Nitro-LM is, I’ve stripped down the API to a 52kb SWC file that uses key-based authentication. If you request a decryption key from the server, as long as you encrypt that request using your application’s public key (embedded in your swf), then you’re good to go.

Having a solution for this brings about some interesting potential problems for Nitro-LM. First off, applications using this encryption-only solution will likely have a MUCH larger install base than a licensed application. For example, games, websites, and other small things where licensing isn’t really needed could be a candidate for the encryption-only solution. These types of applications also have a higher potential for going viral and slamming the Nitro-LM servers with tons of traffic.

To prepare for this potential onslaught of traffic, I did a couple of things. First, the encryption-only client SWC will cache the decryption key in a secure format for 30 days without hitting the server again. The other thing was to push out a trimmed down server instance to the SLI cloud. The encryption-only solution will push the traffic through the cloud first so it can take the brunt of the load.

To test this high-volume scenario, I setup a worst-case scenario test script through BrowserMob. They’re a great company that allows you to define and schedule load tests over the Internet. Patrick from BrowserMob was very responsive to my needs and even added a special API call that would allow me to do binary data POSTs from the service. I wanted to really stress our cloud to see what would happen if someone using our encryption service went totally viral. At the high-side, I was pushing through around 400 transactions-per-second before the cloud provider shut off my application. My guess is that it appeared like a denial-of-service attack since I was sending many identical transactions from the BrowserMob servers.

In any case, I believe the test was very successful. The new Nitro-LM service should be able to handle over 700 million transactions per month as a conservative estimate based on this testing (300 tx/sec over 30 days). I hope to be able to show some of this new Encryption-only stuff in my 360|Flex presentation. Register soon for 360|Flex, I’ve heard they’re filling up quickly.

Posted by Andrew, filed under 360 Flex, Flex, security. Date: May 1, 2009, 3:30 pm | No Comments »

Off and on, I’ve been working making the Flex DragManager work in AIR. I’ve been vocal in trying to get SDK-13983 fixed. This feature is really useful because you have no control over the DragProxy’s alpha value in AIR because it’s controlled by the operating system. If all operating systems defaulted to 0.5 alpha, all would be well, but OSX thinks that the drag proxy should be completely opaque and Windows thinks it should be 0.5.

The MonkeyPatch to fix this issue was posted to my Google code repository. Its only problem was that the mouse cursor for drag feedback disappeared when you were using a child window. I’ve added one small patch to UIComponent which fixes this issue. Grab the latest code if this is of interest to you. Let me know here if you have trouble with it.

http://code.google.com/p/andrewwestberg/

Posted by Andrew, filed under AIR, MonkeyPatch, as3. Date: March 16, 2009, 12:03 pm | 1 Comment »

swift_gps_bank_trip

I’ve worked out the majority of the kinks with Swift GPS, so I’m calling it in Alpha right now.  To give you a bit more information about the vision for this product, it will be a GPS track data logging device.  You stick a USB thumb drive in it, and it will track the movement of your car, wife’s car, dog, RC aircraft, whatever you want to attach it to.  The target market will be developers or GPS hobbyists, or geocachers who want a real challenge.  It outputs a GPX data file which is nothing more than a special XML file format for GPS data.  This should be useful for developers since it’s an open standard.

Click the image above for a screencast of my magnificently exciting trip to the bank. (Warning, screen recordings of Google Earth are HUGE).

I still have a few features to add such as adding a little screen so geocachers and others can view the raw lat/lon data in real-time.  I ordered a book from amazon that should help me with writing the microcontroller code necessary for that piece.

This will probably be my last GPS post for quite awhile.  I plan on going back to your regularly scheduled “Flex Junk” in the near future.

This blog’s comment section has been pretty quiet for some time.  Any comments on this project would be appreciated.  Even if it’s just to say, “Go back to posting on Flex topics dude!”

Posted by Andrew, filed under C++, GPS. Date: March 10, 2009, 8:55 pm | No Comments »

01  Mar
First GPS data

gps_route

Well, my GPS device is coming along.  I’m getting my first batch of data off the board that is close to usable. I walked it to the end of my block and back at night with all the lights blinking and flashing on the board.  The neighbors probably think I’m a terrorist building a bomb or something.  Looks like I need to add a bit of code to ignore points whose accuracy is in question.  The start of my walk was all over the place (in my neighbors living room if you believe the device), but by the end, it seemed to hone in and nail down my position pretty well.

I’m targeting this device to output GPX data which should be an easily readable XML format for Flex/AIR developers to use.  Right now, the screenshot you’re viewing is from Google Earth which also accepts GPX data files.

Posted by Andrew, filed under AIR, Flex, GPS. Date: March 1, 2009, 10:13 pm | No Comments »

My Cluttered Desk

My Cluttered Desk

I’ve started a new project. It’s quite a bit different than the Flex/AIR stuff I’ve been posting about in the past. My day job is still doing Flex/AIR, so consider this a minor interruption in your regularly scheduled programming.

In my home office, my desktop is now cluttered with the tools of the trade. I’ve figured out how to wire a demo GPS board to my microcontroller development board. The whole mess is wired to my laptop using a USB cable. I write C code on the laptop that I can push down to the microcontroller for testing and debugging. The first major hurdle has been cleared which is getting the devices talking to each other.

I hope to post updates every so often on the project. In some ways, I guess it’s somewhat Flex/AIR related since the device (when released) will eventually target other developers who can do some interesting things in their software with it.

Posted by Andrew, filed under GPS. Date: February 15, 2009, 10:29 pm | No Comments »

03  Feb
360|Flex Indy

I’ve been accepted as a speaker for 360|Flex Indy. Make sure to get your tickets early to get a better price. The longer you wait, the higher the ticket price goes. It’s exciting that this conference is going to be in my backyard this time. Should be a good time.

http://360flex.eventbrite.com

Here is a link to the schedule. My session is Monday at 4:00 in Olive color.

http://360conferences.com/360flex/downloads/schedule.pdf

Posted by Andrew, filed under 360 Flex. Date: February 3, 2009, 4:46 pm | No Comments »

If you want to use both the nice Flex Dragmanager in an AIR app, you need to use a monkeypatch to make it work. I’ve taken the code about as far as I can on my own, so I’d like to enlist my reader’s help.

What you can do:
1.) Vote on https://bugs.adobe.com/jira/browse/SDK-13983
2.) Figure out how the low-level DragManager code works (better than I can) and help work on the monkeypatched code at http://code.google.com/p/andrewwestberg/

What works:
1.) Using Flex dragmanager inside an AIR WindowedApplication.
2.) Using the AIR dragmanager in the same app.

What’s broken:
1.) Using the Flex Dragmanager inside mx:Window. The cursor disappears while dragging.
2.) Flex dragmanager between mx:Windows (not sure DragManager was ever designed for this)
3.) Other stuff I haven’t tested yet.

Posted by Andrew, filed under AIR, Flex, MonkeyPatch, as3. Date: February 2, 2009, 2:54 pm | No Comments »

If you’re reading this, you’re likely aware that Adobe has released ANT tasks for compiling SWFs, module SWFs, and SWCs. My application has lots of modules and also uses an ANT build, so naturally, I wanted to speed up compile times.

My development laptop has a dual-core CPU and I noticed that one core was unused while running my ANT script. In order to speed up my compile times, I simply added <parallel> tags around compiling my modules. My main swf needs to be compiled first because I need to use its link report for building the other modules. I also had to make sure to set the threadCount property to 2 so it wouldn’t overload my machine trying to compile all the modules at once.

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="NitroAdminFlex"  basedir="." default="AIR">
<property name="version.major" value="6"/>
<property name="version.minor" value="0"/>
<property name="version.revision" value="0"/>
<property name="OPTIMIZE" value="true"/>
<property name="DEBUG" value="false"/>
<property name="FLEX_HOME" value="C:/Program Files/Adobe/Flex Builder 3 Plug-in/sdks/3.2.0"/>
<property name="flex.mxmlc" location="${FLEX_HOME}/bin/mxmlc.exe" />
<property name="src.dir" value="."/>
<property name="lib.dir" value="../libs"/>
<property name="out.dir" value="../bin-release"/>
<property name="jars.dir" value="../../jars-server"/>

    <taskdef name="nitrolm-encrypt" classname="com.simplifiedlogic.nitrolm.LMEncryptAsset" classpath="${jars.dir}/AssetEncrypterX.jar"/>
    <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar"/>

    <target name="clean" description="Clean the project">
        <delete dir="${out.dir}" failonerror="false"/>
    </target>

    <target name="init" description="initialize the project" depends="clean">
        <mkdir dir="${out.dir}"/>
        <copy todir="${out.dir}" includeemptydirs="false">
            <fileset dir="${basedir}">
                <exclude name="**/*.as"/>
                <exclude name="**/*.mxml"/>
                <exclude name="**/*.xml"/>
                <exclude name="**/*.css"/>
                <exclude name="**/*.properties"/>
                <exclude name="**/*.ser"/>
                <exclude name="**/*.vser"/>
                <exclude name="**/*.pfx"/>
                <exclude name="**/*.txt"/>
                <exclude name="**/*.cmd"/>
                <include name="**/*"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.release" description="Compile swf modules and main swf" depends="init">
        <!-- compile main SWF -->
        <mxmlc file="NitroAdminFlex.mxml" output="${out.dir}/NitroAdminFlex.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            link-report="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>
<parallel threadCount="2">
        <!-- compile modules -->
        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/nav/MainWindowNavigator.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/nav/MainWindowNavigator.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/DefineVariablesModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/DefineVariablesModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/NotificationsModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/NotificationsModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/MessagingModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/MessagingModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageLicensesModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageLicensesModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/UsersModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/UsersModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageVariablesModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageVariablesModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowUnconfirmedModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowUnconfirmedModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowPaidToModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowPaidToModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowDemosModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowDemosModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowLicensesModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowLicensesModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowMsgHistModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowMsgHistModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowSupportModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowSupportModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowUserFilesModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowUserFilesModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/AddEditProductModule.mxml" output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/AddEditProductModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowReportBuilderModule.mxml"
            output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowReportBuilderModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/AddEditCompanyModule.mxml"
            output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/AddEditCompanyModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowExternalVariablesReportModule.mxml"
            output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowExternalVariablesReportModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/PoolPropertiesModule.mxml"
            output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/PoolPropertiesModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>

        <mxmlc file="com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageAdminToolModule.mxml"
            output="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageAdminToolModule.swf"
            debug="${DEBUG}"
            optimize="${OPTIMIZE}"
            load-externs="${out.dir}/report.xml"
            locale="en_US"
            allow-source-path-overlap="true"
            configname="air">

            <compiler.context-root>/NitroAdminFlex</compiler.context-root>
            <source-path path-element="${src.dir}"/>
            <source-path path-element="locale/{locale}"/>
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
                <include name="{locale}"/>
            </library-path>
<library-path dir="${lib.dir}" append="true">
                <include name="*.swc"/>
            </library-path>
<library-path dir="../../FlexUtilLibrary/bin" append="true">
                <include name="*.swc"/>
            </library-path>
        </mxmlc>
        </parallel>
    </target>

    <target name="encrypt" description="Encrypt the various swf modules" depends="compile.release">
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/DefineVariablesModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/NotificationsModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/nav/MainWindowNavigator.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/MessagingModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageLicensesModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/UsersModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageVariablesModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowUnconfirmedModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowPaidToModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowDemosModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowLicensesModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowMsgHistModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowSupportModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowUserFilesModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/AddEditProductModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowReportBuilderModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/AddEditCompanyModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ShowExternalVariablesReportModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/PoolPropertiesModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
        <nitrolm-encrypt
            filename="${out.dir}/com/simplifiedlogic/nitroadmin/cairngorm/view/screens/ManageAdminToolModule.swf"
            product="YOXxycCnrspZhEVOnhYE"
            library="LKX_BYkNwSH4yZJosmHEXooO"
            keydir="."/>
    </target>

    <target name="AIR" description="Create the AIR package for our app" depends="encrypt">
        <exec executable="${FLEX_HOME}/bin/adt.bat" failonerror="true">
            <arg line="-package"/>
            <arg line="-storetype pkcs12"/>
            <arg line="-keystore ${src.dir}/thawte_codesigning.pfx"/>
            <arg line="-storepass 5T00P1d"/>
            <arg line="${out.dir}/NitroAdmin.air"/>
            <arg line="${src.dir}/NitroAdminFlex-app.xml"/>
            <arg line="-C ${out.dir} NitroAdminFlex.swf"/>
            <arg line="-C ${out.dir} assets*"/>
            <arg line="-C ${out.dir} com*"/>
            <arg line="-C ${out.dir} org*"/>
        </exec>
    </target>
</project>

Posted by Andrew, filed under AIR, Flex, as3. Date: January 23, 2009, 4:19 pm | No Comments »

« Previous Entries