Skip to content


Viewstack in Flex 4?

I’ll start off by saying that i love what is happening with the Spark architecture in the Flex SDK. When the time comes that we at IR5 are given the green-light to use it in production for clients, i will be giddy. That said, I am aware that a lot of people have gripes about the lack of complete parity between the Halo and Spark sets, and particularly the lack of Spark equivalents for the Halo navigation containers such as Accordion and ViewStack.

Truth be told, they probably have good reason to not hop on board, and without raising your voice you can’t raise concerns to the owners of the Platform to make informed decisions based on feedback. However, I feel the Platform developed because people started doing things it was never intended to do and (while at times complaining) developers just rolled up their sleeves and bent the code to their will. Now this is going into a whole ‘nother discussion that was the intent of the post, so we’ll just leave the discussion at that and ask, ‘Why not make what is not there?’ The answer is a whole ‘nother discussion and I am fully aware that the SDK is not *perfect* for this, but it is available to make something work somehow… that’s how we all got here.

Enough jibber-jabber… I set apart a couple hours to make a ViewStack for Flex 4 just to see how easy it would be with the Spark architecture. Honestly, I never really use the Halo navigation containers much – maybe some quick prototypes here and there, but have always found that in a medium to large application they provide no benefits that go along with their overhead. But still, I thought i would choose one (and yes i know it is probably the easiest one :) ) just to see what all the fuss was about.


My first step was getting excited about the mxmlContent and mxmlContentFactory properties available on Spark containers. ‘think of the possiblities,’ my mind said, ‘this probably contains all the declared children within the markup!’ Oh with that i can stop instantiation of them and deferred until requested. Case closed. Viewstack done. Until i realized that most everything that handles these values is private. bugger.

[Update 2009-09-03]
Event though i did start down the path of mxmlContent and mxmlContentFactory and came up empty, thanks to the brain on Ash Atkins for pointing out that i coudl use the [DefaultProperty] metatag to still allow inline declaration of child elements for the ViewStack. The inline code has been updated. Thanks, Ash!
[/Update]

Next step was extending SkinnableContainer and just exposing a property on which you can pass an array of IVisualElement instances, along with the standard selectedIndex and selectedChildren. With the new Flex 4 Declarations tag, this solution was made sweeter in that I could declare my children without instantiating them directly and could pass them along for the Flex 4 Viewstack to handle them as seen fit, allowing for deferred instantation. Making sure set selectedIndex and selectedChild work accordingly and dispatch an event on change of index, i called it a day. It took a couple hours and I called it a day… until Keith walked into my office and started yammering about me not working.

Example. Made with Flex 4 SDK build 9864. You will need the latest player:

Get Adobe Flash player

view source . There seems to be bug in the view source code in the nightly builds, so i will post the code here as well if you don’t feel like Right Click> View Source and downloading the zip…

Here is the implementation i came up with:

// -----------------------------------------------------------
// CBViewStack.as
// -----------------------------------------------------------
 
/**
 * Copyright (c) 2009 Todd Anderson. All Right Reserved.
 * 
 * Code provided has not been tested in a production environment
 * and should be used by another party at their own risk. I disclaim any
 * and all responsibility for any loss or damage of property that may occur
 * from using it.
 * 
 * ===================================
 * custardbelly.com
 */
package com.custardbelly.container
{
	import mx.core.IVisualElement;
 
	import spark.components.SkinnableContainer;
	import spark.events.IndexChangeEvent;
 
	/**
	 * Dispatched on change to selectedIndex property value. 
	 */
	[Event(name="change", type="spark.events.IndexChangeEvent")]
 
	/**
	 * Basic implementation of a ViewStack container targeting the Spark environment.
	 * CBViewStack inherently supports deferred instantiation. All methods and properties
	 * have been made protected in order to subclass and implement any desired creation 
	 * policy.
	 * 
	 * Child content cannot be added in markup due to the black-boxing of the mxmlContent and 
	 * mxmlContentFactory properties and corresponding methods. As such, supply content to the
	 * CBViewStack using the <b>content</b> property. The <b>content</b> property is an array
	 * of declared IVisibleElement instances.
	 * 
	 * To enable scrolling of content added to the display list of CBViewStack, it is recommended
	 * the either programatically control the viewport with an external scrollbar or wrap the 
	 * container in a <s :Scroller> instance.
	 * 
	 * The <b>content</b> and <b>selectedIndex</b> properties can be set in-line in MXML.
	 * The <b>selectedChild</b> property can only be set within ActionScript.
	 * 
	 * <example>
	 * 
	 * <fx :Declarations>
	 *     <s :Group id="child1" width="200" height="300" />
	 *     <s :Group id="child2" width="200" height="300" />
	 *     <s :Group id="child3" width="200" height="300" />
	 * </fx>
	 * 
	 * <s :Scroller width="100%" height="100%">
	 *     <cb :CBViewStack content="{[child1,child2,child3]}" selectedIndex="2" />
	 * </s>
	 * 
	 * </example><example>
	 */
	[DefaultProperty("content")]
	public class CBViewStack extends SkinnableContainer
	{
		/**
		 * Represents the collection of IVisualElement instances to be displayed. 
		 */
		[ArrayElementType("mx.core.IVisualElement")]
		protected var _content:Array;
		/**
		 * The index within the colleciton of IVisualElements to be added to the display list. 
		 */
		protected var _selectedIndex:int = -1;
		/**
		 * Represents the current IVisualElement on the display list. 
		 */
		protected var _selectedChild:IVisualElement
 
		/**
		 * Held value for selectedIndex.
		 */
		protected var _pendingSelectedIndex:int = -1;
 
		/**
		 * @private 
		 * 
		 * Override to update selectedIndex and subsequently content on the display list.
		 */
		override protected function commitProperties() : void
		{
			super.commitProperties();
			// if pending change to selectedIndex property.
			if( _pendingSelectedIndex != -1 )
			{
				// commit the change.
				updateSelectedIndex( _pendingSelectedIndex );
				// set pending back to default.
				_pendingSelectedIndex = -1;
			}
		}
 
		/**
		 * Updates the selectedIndex value and subsequent display. 
		 * @param index int The value representing the selected child index within the content property.
		 */
		protected function updateSelectedIndex( index:int ):void
		{
			// store old for event.
			var oldIndex:int = _selectedIndex;
			// set new.
			_selectedIndex = index;
 
			// remove old element.
			if( numElements > 0 ) 
				removeElementAt( 0 );
 
			// add new element.
			selectedChild = _content[_selectedIndex];
			addElement( _selectedChild );
 
			// dispatch index change.
			dispatchEvent( new IndexChangeEvent( IndexChangeEvent.CHANGE, false, false, oldIndex, _selectedIndex ) );
		}
 
		/**
		 * Returns the elemental index of the IVisualElement from the content array. 
		 * @param element IVisualElement The IVisualElement instance to find in the content array.
		 * @return int The elemental index in which the IVisualElement resides. If not available returns -1.
		 * 
		 */
		private function getElementIndexFromContent( element:IVisualElement ):int
		{
			if( _content == null ) return -1;
 
			var i:int = _content.length;
			var contentElement:IVisualElement;
			while( --i > -1 )
			{
				contentElement = _content[i] as IVisualElement;
				if( contentElement == element )
				{
					break;
				}
			}
			return i;
		}
 
		[Bindable]
		/**
		 * Sets the array of IVisualElement instances to display based on selectedIndex and selectedChild.
		 * CBViewStack inherently supports deferred instantiation, creating and adding only IVisualElements
		 * that are requested for display. 
		 * @return Array
		 */
		[ArrayElementType("mx.core.IVisualElement")]
		public function get content():Array /*IVisualElement*/
		{
			return _content;
		}
		public function set content( value:Array /*IVisualElement*/ ):void
		{
			_content = value;
			// update selected index based on pending operations.
			selectedIndex = _pendingSelectedIndex == -1 ? 0 : _pendingSelectedIndex;
		}
 
		[Bindable]
		/**
		 * Sets the selectedIndex to be used to add an IVisualElement instance from the content property
		 * to the display list. 
		 * @return int
		 */
		public function get selectedIndex():int
		{
			return _pendingSelectedIndex != -1 ? _pendingSelectedIndex : _selectedIndex;
		}
		public function set selectedIndex( value:int ):void
		{
			if( _selectedIndex == value ) return;
 
			_pendingSelectedIndex = value;
			invalidateProperties();
		}
 
		[Bindable]
		/**
		 * Sets the selectedChild to be added to the display list form the content array.
		 * SelectedChild can only be set in ActionScript and will not be properly updated
		 * if added inline in MXML declaration. 
		 * @return IVisualElement
		 */
		public function get selectedChild():IVisualElement
		{
			return _selectedChild;
		}
		public function set selectedChild( value:IVisualElement ):void
		{
			if( _selectedChild == value ) return;
 
			// if not pending operation on selectedIndex, induce.
			if( _pendingSelectedIndex == -1 )
			{
				var proposedIndex:int = getElementIndexFromContent( value );
				selectedIndex = proposedIndex;
			}
			// else just hold a reference for binding update.
			else _selectedChild = value;
		}
	}
}
</example></s>

and its usage:

< ?xml version="1.0" encoding="utf-8"?>
<s :Application 
	xmlns:fx="http://ns.adobe.com/mxml/2009" 
	xmlns:s="library://ns.adobe.com/flex/spark" 
	xmlns:mx="library://ns.adobe.com/flex/halo" 
	xmlns:container="com.custardbelly.container.*"
	viewSourceURL="http://custardbelly.com/downloads/viewstack/srcview/SourceTree.html">
 
	<fx :Declarations>
		</fx><fx :String id="lorem">Lorem ipsum dolor sit amet consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fx>
 
 
	<fx :Script>
		< ![CDATA[
			private function changeIndex():void
			{
				var index:int = viewstack.selectedIndex;
				index = ( index + 1 > viewstack.content.length - 1 ) ? 0 : index + 1;
				viewstack.selectedIndex = index;
			}
		]]>
	</fx>
 
	</s><s :layout>
		<s :VerticalLayout />
	</s>
 
	<s :Group width="300" height="300">
 
		<!-- CBViewStack wrapped in Scroller to enable scrolling of child content outside of set dimensions. -->
		</s><s :Scroller width="100%" height="100%">
 
			<container :CBViewStack id="viewstack" selectedIndex="2">
				<s :Group id="child1" width="800" height="100%" clipAndEnableScrolling="true" creationComplete="{trace('child1')}">
					</s><s :layout>
						<s :VerticalLayout horizontalAlign="justify" />
					</s>
					<s :Button label="top" />
					<s :Button label="bottom" bottom="0" />
				</container></s>
				<s :Panel id="child2" width="100%" height="200" title="Child 2" creationComplete="{trace('child2')}">
					</s><s :Scroller>
						</s><s :Group width="100%" height="100%">
							</s><s :layout>
								<s :VerticalLayout horizontalAlign="center" />
							</s>
							<s :Button label="panel button 1" />
							<s :Button label="panel button 2" />
 
 
 
				<s :DataGroup id="child3" width="100%" height="100%"
							 itemRenderer="spark.skins.spark.DefaultItemRenderer" creationComplete="{trace('child3')}">
					</s><s :layout>
						<s :VerticalLayout />
					</s>
					<s :dataProvider>
						<s :ArrayCollection source="{lorem.split(' ')}" />
					</s>
 
 
 
 
 
		<!-- lazy styling. CBViewStack is a subclass of SkinnableContainer, so you can set a skin on that if desired. -->
		<s :Rect width="100%" height="100%">
			</s><s :stroke>
				<s :SolidColorStroke color="0" />
			</s>
 
 
 
 
	<!-- Dynamically change the selectedIndex property of the CBViewStack instance. -->
	<s :Button label="switch index" click="changeIndex();" />
 
	<!-- Dynamically change the selectedChild property of the CBViewStack instance. -->
	<s :HGroup>
		<s :Button label="select child 1"
			enabled="{viewstack.selectedChild != child1}"
			click="{viewstack.selectedChild = child1}" 
			/>
		<s :Button label="select child 2"
			enabled="{viewstack.selectedChild != child2}"
			click="{viewstack.selectedChild = child2}" 
			/>
		<s :Button label="select child 3"
			enabled="{viewstack.selectedChild != child3}"
			click="{viewstack.selectedChild = child3}" 
			/>
	</s>

So that is basically it. Allow for skinning of the Viewstack by extending SkinnableContainer. Expose content, selectedIndex and selectedChild properties. Dispatch and index change event. Optionally wrap CVBViewStack in a Scroller to enable child content that extends the viewport of the viewstack. I know it probably won’t serve every need, but in a few short hours I made Viewstakc in Flex 4 for the purposes i mainly use it for in prototypes. I haven’t put it through the ringer in testing, but feel free to. There’s no license, completely free. Modify, take, steal, have fun.

*Note: Seems as though the generated ‘View Source’ files in the nightly build from September 1st (of which i mad the example) has some bugs. So feel free to click this link -> view source < - but be aware that you won't actually be able to view the class files in the browser. You will need to download the zip file.

Posted in Flex, Flex 4.


Flash On Tap, Boston… I’ll Be There

todd anderson … not that you’d actually be going to see this handsome fellow. That’s the look i give when they run out of Stone Ruination IPA.

Aah. When springtime in Boston hits, the weather is still cold for a couple months and the beer is flowing again. Actually, the beer flows all the time and the weather is unpredictable. Nonetheless, you know you are in for a good time, and i am looking forward to the Flash On Tap debut in my home town.

The beer sponsor list is amazing. Most beers you won’t be able to find on tap in our fair city, let alone the lot of them all in one place – aside from *possibly* my neighborhood haunts in Brookline (hit em up when you are out here). Stone, Smuttynose, Haverhill, Boulder.. the list goes on. In that order for me at least. I am excited about Haverhill, because even though it is a local brew (you gotta try, their LeatherLips it is awesome) some i have not tried because they are just not out here in my brick-filled neck of the woods.

Oh yeah… And then there’s gonna be some people rambling on about what-nots and crap. If you ain’t pourin’, i’m snorin’. That’s what i say. In all seriousness, the line up is insane. The beer is just icing on a knowledge cake waiting to cook.

See my sad face and full belly as i drink all the Ruination.

Flash On Tap
Follow


Posted in Beer!, Flash, Flex, flash on tap.


Introducing MUWL

In between work, taming a new puppy and twilighting as an iPhone SDK newbie, i have been busy working on a personal project that has taken way too long to see the light of day. I began working on an AIR application last summer to overcome an incongruency in the middle tier of how i go about finding and purchasing new music… out came a little desktop app i call MUWL.

M U W L

MUWL stands for MUsic Wish List and allows you to amass a list of albums that you hope one day will make it into your collection.

You can read more detailed information about MUWL from the custardwiki… and/or just keep reading.

I am a sucker for record shops. I love flipping through vinyl and jewel cases – sometimes aimlessly, sometimes with a purpose – and bringing home musty and off-the-press platters. Before i created MUWL, i would discover music that i was into either online through various blogs and what-nots or from word-of-mouth. Problem was, i would write down titles on any scrap of paper that was near me in the hopes that i would remember to shove it in my pocket when i knew i was going to a shop.

There was two major flaws in that system: a) I hardly EVER remembered to bring my scraps of paper and b) Some times i wind up in a record shop without a preconceived notion to go.

To rectify this sorry state of affairs, i thought i could make an app that would allow me to keep that list in one place and could be viewed by any device i might be carrying around with me. Now, i know, i know, why make a application targeting the Flash Platform if you wanted it to be on ANY device… ahem. Well, i just needed a client that i could create fairly quickly that would hook up to an online service. Seeing as i am familiar with the Flex and AIR SDKs, i thought it would get me closer to my goal – plus it would give me a chance to architect an application that supported occasional-activity and offline/remote data synchronization.

Even though i am targeting the Flash Platform for the MUWL desktop application, i wanted to stay away from the AMF protocol (which i would normally use in such a case) in order to keep it open to non-Flash clients that i may make in the future… the main one being a companion iPhone app. As such i went with XML over HTTP and created a REST service using Ruby on Rails.

I built the REST service that MUWL desktop AIR application talks to in Ruby because it has been on my list of things to get familiar with… and it was already installed on my server, so i figured why not. I gotta say i really loved working with Ruby on Rails. We’ll see how much i love i still have for it if more than just me uses the application :)

Other than a companion iPhone app, i have some other ideas on what to add to the client application. If you download and use MUWL and have any thoughts (or god forbid bugs), let me know.

So here it is, released to the wild if you think it might be of use to you as well.

Big ups go to Ash who did some testing and kept me sane.


10 day hoodia diet
10 day hoodia diet review
100 hoodia gordonii
18 takes viagra
20 mg cialis dose advice
2007 viagra hmo
acheter cialis france
acheter du viagra
acomplia diet pills
acomplia no prescription
acomplia rimonabant zimulti
acomplia without prescription
adipex versus hoodia
adverse side effects of viagra
african hoodia cactus
ald enterprises hoodia
alli vs xenical
alli xenical diet pill
alternative to viagra
alternative viagra uses
answers about xenical
apcalis levitra viagra
buying viagra in uk
buying viagra online
buying viagra online in britain
can viagra be taken by women
can viagra be used by women
can viagra cause restless leg syndrome
can viagra causes legs to ache
can woman take cialis
can women take cialis
can women take mens viagra
can women take viagra
can young people take viagra
canada in levitra
cheap viagra online
cheap viagra overnight
cheap viagra sales
cheap viagra tablets
cheap viagra walmart
cheap xenical paypal uk
cheapest cialis professional
discount viagra online
discount viagra pills
do boots sell viagra
does cialis work
does hoodia really work
does hoodia work
does medicaid cover viagra kentucky
does propecia cause genetic disorders
does propecia really work for women
does propecia work
does viagra really work
does viagra work
does viagra work for women
does walmart hoodia work
does watermelon have viagra effect
dog ate viagra tablet any danger
drinking and viagra
ecstacy and viagra
edinburgh 17 viagra pages find search
effect of viagra on women
effective hoodia diet pill
effects of hoodia on diabetics
effects of viagra
effects of viagra on women
energy from hoodia gordonii
ephedra hoodia fusion
fake viagra prescription
fast delivery cialis
fda approves viagra
fda on viagra
female use of viagra
female version of viagra
female viagra cream
female viagra sildenafil
file viewtopic t 21508 viagra
file viewtopic t 73 cialis
find search pages years viagra edinburgh
find sites computer shop viagra free
find sites computer shop viagra search
find viagra edinburgh pages search
find viagra edinburgh sites pages
find viagra free computer sites
find viagra free sites
find viagra free sites computer
find viagra free sites edinburgh
free levitra trial
free sample cialis
free sample of cialis
free sample of viagra
free sample pack of viagra
free sample prescription for viagra
free sample viagra
free samples of cialis
g postmessage cialis subject remember
g postmessage cialis subject reply
g postmessage propecia smiley forum
g postmessage propecia smiley online
g postmessage propecia smiley post
g postmessage propecia smiley remember
generic mexican viagra
generic name of viagra
generic soft tab viagra
generic soft tabs cialis
generic viagra canada
generic viagra cheap
generic viagra india
generic viagra lowest prices
generic viagra mexico
generic viagra online
home made viagra
hoodia 14 day free trial
hoodia and heart problems
hoodia and weight loss
hoodia and weight loss and x57
hoodia at gnc
hoodia balance reviews
hoodia buy cheap 34546
hoodia buy cheap 34546 buy
hoodia cj industries
hoodia diane irons
hoodia diet 57
hoodia diet patch
hoodia diet pill
hoodia diet pills
hoodia diet pills site
hoodia diet supplement
hoodia dropship suppliers
hoodia drug interactions
hoodia gordoni medical problems
hoodia gordoni plus
hoodia gordonii cactus lipodrene
hoodia gordonii dangers
hoodia gordonii diet 57
hoodia gordonii extract
hoodia gordonii grow
hoodia gordonii plant
lowest prices for cialis
mail order viagra
mail order viagra in uk
make your own viagra
male enhancement cialis
male quadriplegic using viagra
marajuana and viagra
prime with hoodia
problems with viagra
product team cialis
professional viagra discussions b ogs
propecia 90 count
propecia canada cheap
propecia for less
propecia long term buy
propecia lower dht
propecia picture results
quick forum readtopic propecia answer search
quick forum readtopic propecia none content
quick forum readtopic propecia none generated
quick forum readtopic propecia none online
quick forum readtopic propecia none search
quick forum readtopic propecia signature content
quick forum readtopic propecia signature generated
smartburn with hoodia
soft cialis mastercard
soft tab viagra
soft tabs viagra
soma and viagra prescriptions free viagra
songs about viagra
source naturals hoodia complex
south african hoodia
subaction showcomments cialis thanks newest
subaction showcomments cialis thanks older
subaction showcomments cialis thanks online
subaction showcomments cialis thanks posted
subaction showcomments cialis thanks remember
subaction showcomments cialis thanks watch
u 5674 cialis
ubat kuat cialis
uk alternative viagra
uk pharmacies cheap viagra
uk viagra sales
university of mississippi hoodia testing
uprima cialis viagra
viagra compare prices
viagra covered by insurance
viagra delayed reaction
viagra difference in mg
viagra discount 800 number customer service
viagra doesnt work
viagra effects on women
viagra in britain
viagra in china
viagra in manchester uk
viagra in mexico
viagra in the uk
viagra in the water
viagra joke sheet off leg
viagra larger forever
viagra lawsuit updates in march 2009
viagra sex domination
viagra shelf life
viagra side affects
viagra side effect
viagra side effects
viagra soft tabs
viagra sore wife
viagra store in canada
viagra stories and pics
viagra suppliers in the uk
viagra suppositories ivf
what is hoodia
what is in cialis
what is levitra
zoft hoodia gum
wkrakowie.org map
jessica hahn nude
teen printable activities
anderson nude videos nude
euro teen models
lesbian teen hunter
couple amateur hot
huge teen breasts
free teen nudist
teen bible study
amateur photo album
amateur wives pics
free teen sex videos
nude candid teen photos
blowjob in phoenix az
young nude galleries
nude girl pics
free nude gay men
amateur porn clips
amateur home videos
nude sex videos teen
petite teen movies
amateur lesbian videos
hot nude moms
tight teen pussy
teen shower scenes
britney spears nude
hot teen babes
bathroom blowjob turns
nude pics blowjob
nude women having sex

Posted in AIR, MUWL, Music.


Dependency Injection and IoC at BDP

Last week I was fortunate enough to be asked by Doug and Sam who run the BDP (Boston Design Patterns meet-up… NOT Boogie Down Productions) to present on Dependency Injection and Inversion of Control (DI and IoC for those who are down with street acronyms).

We had a nice turnout and a lively discussion that kept interupting my precious slides. I gave a quick run down of the Dependency Inversion principal and some examples for Factory and Template Method with segued into Dependency Injection and IoC. From there we dove into examples of frameworks out there that target the Flash Platform. Along the way we had some hefty discussion around the benefits and downsides with everyone chiming in. Tim Walling also brought up how he addresses DI using MXML and modules which was very intriguing.

As far as runtime IoC frameworks out there targeting the Flash Platform, we discussed Spring ActionScript (nee Prana) and Parsley. I’ve been using Spring ActionScript/Prana for some time and swear by it. But i also did take a second look at Parsley just to refresh my memory and I have to say there are some things that i find very promising, though at times it seems there might be too much to it. So many things i would not use… but the ability to configure custom namespaces looks like an amazing feature.

As far as compile time IoC, we touched on Swiz and the EventMap of Mate. Both have their upsides and Swiz has definitely caught my interest (…may have to find a personal project for me to get into it more) but all in all, I have a tendency to favor external configurations. (For those worried about having to do the static variable array list of classes hack because of that, there is an example in the download zip at the end of this post.)

In any event, it was a good, lively discussion with some smart people and some great beer (thanks again Doug!). It’s no wonder that getting to the meetings more often is top on my resolution list for this year. If you are in the Boston area, think about putting it on your list too.

Download the slides and examples here. We’ll get them up on at the BMP site too.


addiction to soma
alternative to viagra
aspirin and viagra
bad side effects of viagra
bayer levitra samples
but soma online
buy cheap cialis
buy cheap viagra
buy cheap viagra online
buy cheap viagra online uk
buy cialis doctor online
buy cialis online
buy cialis soft online
buy generic cialis
buy generic soma
buy generic viagra
buy levitra online
buy soma online
buy soma online without rx
buy viagra cheap
buy viagra in england
buy viagra in london england
buy viagra meds online
buy viagra online
buy viagra online 35008
buy viagra online at
buy viagra soft online
buying generic cialis
buying viagra in uk
buying viagra online
can viagra causes legs to ache
celebrex adverse side effects
celebrex and dosage
celebrex for dogs
celebrex heart attack
celebrex online prescription
celebrex side effects
celebrex vs bextra
cheaest cialis professional
cheap generic cialis
cheap generic viagra
cheap viagra canada
cheap viagra tablets
cheapest cialis professional
cheapest price for cialis
cheapest uk supplier viagra
cheapest viagra in uk
cheapest viagra prices
cialis 10 mg
cialis for order
cialis low priced
cialis no prescription
cialis side effects
cialis soft tab
cialis soft tabs
cialis surrey bc
cialis to buy new zealand
cialis uk suppliers
cialis versus levitra
cialis vs viagra
cialis without prescription
cost of viagra
description of soma
does propecia work
does watermelon have viagra effect
effect of viagra on women
effects of soma
effects of viagra
female use of viagra
free sample pack of viagra
free trial of viagra
free viagra in the uk
free viagra sample
free viagra samples
free viagra samples before buying
free viagra without prescription
g postmessage cialis smiley forum
g postmessage cialis smiley online
g postmessage cialis smiley post
g postmessage cialis smiley remember
g postmessage cialis smiley reply
g postmessage cialis subject forum
g postmessage cialis subject online
g postmessage cialis subject post
g postmessage cialis subject remember
g postmessage cialis subject reply
g postmessage propecia smiley forum
g postmessage propecia smiley online
g postmessage propecia smiley post
g postmessage propecia smiley remember
g postmessage propecia smiley reply
g postmessage propecia subject forum
g postmessage propecia subject online
g postmessage propecia subject post
g postmessage propecia subject remember
g postmessage propecia subject reply
g postmessage viagra smiley forum
g postmessage viagra smiley online
g postmessage viagra smiley post
g postmessage viagra smiley remember
g postmessage viagra smiley reply
g postmessage viagra subject forum
g postmessage viagra subject online
g postmessage viagra subject post
g postmessage viagra subject remember
g postmessage viagra subject reply
generic cialis cheap
generic cialis softtab
generic viagra india
guaranteed cheapest viagra
herbal viagra reviews
herbs and viagra interaction
history of soma drug
how does levitra work
how does viagra work
how long does cialis last
how long does viagra last
how to buy viagra
how to use viagra
india viagra cialis vicodin
instructions for viagra use
is soma a barbiturate
is soma a controlled substance
is soma a narcotic
is soma addictive
is viagra safe for women
levitra side effects
low cost cialis
low cost viagra
lowest price viagra
lowest prices for cialis
mail order viagra
marijuana and viagra
mexican rx cialis low price
mexican rx cialis low priced
mix vicodin and soma
muscle relaxants soma
natural herbs used as viagra
natural viagra substitutes
new drug levitra
non prescription viagra
order soma carisoprodol
order soma online
order viagra online
over the counter viagra
prescription drug called soma
price of viagra
problems with viagra
propecia canada cheap
propecia side effects
purchase viagra online
q buy cialis online
q buy soma
q buy soma online
q buy viagra online
query lowest cialis price online
quick forum readtopic cialis none online
quick forum readtopic cialis none search
quick forum readtopic propecia answer content
quick forum readtopic propecia none generated
quick forum readtopic propecia signature content
quick forum readtopic viagra answer search
recreational viagra use
resturants soma neiborhood
rx cialis low price
side effects of celebrex
side effects of cialis
side effects of viagra
soma 350mg saturday delivery
soma 350mg saturday fed-ex shipping
soma by wallace
soma carisoprodol online
soma cod without prescription
soma drug history
soma drug toxicity
soma muscle relaxant
soma muscle relaxer
soma san diego
soma saturday shipping
soma side effects
soma with codiene wholesale
subaction showcomments cialis optional newest
subaction showcomments cialis optional older
subaction showcomments cialis smile watch
subaction showcomments cialis start from older
subaction showcomments propecia archive posted
subaction showcomments propecia optional older
subaction showcomments propecia smile older
subaction showcomments propecia smile remember
subaction showcomments propecia start from online
subaction showcomments propecia thanks posted
subaction showcomments viagra archive remember
subaction showcomments viagra start from newest
subaction showcomments viagra start from watch
subaction showcomments viagra thanks remember
subaction showcomments viagra thanks watch
tadalafil cialis from india
try viagra for free
uk alternative viagra
uk viagra sales
viagra 6 free samples
viagra and alternatives
viagra and cannabis
viagra and hearing loss
viagra for sale
viagra for sale without a prescription
viagra for women
viagra free trial
viagra from india
viagra liver damage
viagra no prescription
viagra on line
viagra online cheap
viagra online stores
viagra online uk
viagra or cialis
viagra oral jelly
viagra prescription uk
viagra rrp australia
viagra rrp australia cost
viagra side effects
viagra soft tabs
viagra suppliers in the uk
viagra uk cheap purchase buy
viagra uterine thickness
viagra vs cialis
viagra without a prescription
viagra without prescription
watermelon viagra affect
what is celebrex
what is celebrex used for
what is generic viagra
what is soma
what is the medication soma for
what is viagra
what type of drug is soma
where can i buy viagra online

Posted in Flash, Flex, Prana.


Flex Ant Tasks and FlexFileSet error

*This is more of a post-reminder or a google-search aha than a soliloquy on the joys of FlexTasks and how to use them. If you want to know more about flextasks, visit here, or Ryan Taylor’s blog for some good tips, or pick up this wonderful book… the holidays are coming.

I have had the fortunate opportunity to work with Andy Zupko on a project here at Infrared5. We have our good days and our bad days – as most projects go – and hopefully we’ll be able to showcase our efforts at some time. Recently i started whipping the project into shape to handle modules, rsls and loaded styles to minimize the download time and highten user experience. Why does it always come down to the last few days to get this up and running? I don’t know. Maybe we’re so gung-ho to get things finished for an iteration and to show a client that deployment structure falls a little to the wayside. In any event Andy, and in some part me i suppose, structured the project to have minimal impact when it came time to have a deployment routine and manage runtime styles and rsls. Enough horn-tooting! What am i talking about?

Well, when it came time to set up the ant tasks that will take over the deployment and distribution of the application i was hitting a wall in compiling against an rsl. More to the point, i was getting this error:

BUILD FAILED : No directory specified for FlexFileSet.

… when combined with this directive

<compiler .external-library-path>
	<include name="${app.dir}/${rsl.name}.swc" />
</compiler>

I’m not gonna go into the nuts and bolts of the build file or even attempt to explain what that error means. I am familiar with compiling applications and modules from the Terminal and pretty much love doing most things from the terminal rather than relying on tools in eclipse, but i thought to bring experience down to a playing ground for a project that will be handed off to a client at some point, go with flex ant tasks. It’s well documented. Google finds most answers. Etc. But there are subtle changes to syntax that i am unfamiliar with when it comes to create a build file targeting the command line tools of the SDK.

In any event, it baffled me why this command would not work. It syntactically looked correct to me. The compiler directive is spelled correctly, the option variable is the correct path… wtf. Well just like the -library-path option i suppose you had to remove the directory that the SWC lives in from the variable and add it as a dir property.

<compiler .external-library-path dir="${app.dir}">
	<include name="${rsl.name}.swc" />
</compiler>

Works! All is fine… but it took a hell of a long time to figure that out. Thought i would post this for any Terminal monkeys out there that run across this issue when building an ant file for compiling rsls into your application.

Was I bone-head for 2 hours? Probably…. feel free to leave a comment.

[Update February 3rd, 2009]Ryan Taylor sent a solution that he uses (after being welcomed by my wordpress comments failure), which i find pretty elegant and will use in the future.

<mxmlc ...>
       <runtime -shared-library-path path-element="${libs}/MyLibrary.swc">
           <url rsl-url="MyLibrary.swf" />
           <url policy-file-url="" />
    </runtime>
</mxmlc>

Thanks, Ryan!

Posted in Flash, Flex, FlexTasks.


Back from MAX

Just got back from Adobe MAX and a sweet short vacation for the missus and i. Been to SF only once, when i was 9, and all i cared about were Garbage Pail Kids and pleading with my mom to buy me some Nikes. Needless to say, i remember – i think – a lot more about this last trip.

I was overjoyed to be able to sit on the Flex Architecture Face-Off panel with Chafic Kazoun, Josh Noble and Yakov Fain. They are amazing architects with strong beliefs and open ears. We had a pretty good turnout and the session ended up being sold out. Only noticed one person walk out, but as it turns out they were over-caffeinated…

It was my first MAX and i didn’t know what to expect with the record-breaking attendance and my bundle of nerves. All said, i really enjoyed it and renewed my interest in the software platform that constantly evolves and inspires me to keep digging even after the workday is over. Of course it was centered around Adobe products, but i truly got the sense of it being a presentation rather than being force-fed. A lot of great things are on the horizon and even though i am a mark-up snob in a sense, i love the direction that the Flex platform is taking. Would have liked more ‘inspire’ sessions, but Ryan Taylor, Andre Michelle and Mario Klingemann kept me wide-eyed and ready to go back to my room to code… although there always seemed to be free beer that blocked the exit :)

Adobe also sponsored a party on Tuesday night at the de Young and Science Academy. I thought that these were venerable institutions in Golden Gate park, but it was dark and as I later found out after going with the missus again later in the week that the are relatively new. If you are in the SF area anytime soon, i highly recommend checking them out. That was a great night with two great museums and some really great friends… plus me and Josh schooled some poor saps in Foosball… after i got schooled in NBA Jams by Ash – rematch, all i’ll say.

Some people found me after our panel and had some questions about things i brought up that i wish i could have gone into further:

1. As far as specs, docs and architecture go, I think your best bet is Enterprise Architect. That is, unless you are on a Mac in which case it is not available and i prefer Omnigraffle.

2. I briefly mentioned Prana and IoC as a segue from scaffolding and I wish i had more time to devote to it during the panel. Though Mate does support some dependency injection for their event mapping, it is compiled in and i prefer an external application context that can be configured for runtime. We use it heavily at Infrared5 and I would whole-heartedly suggest you look into it for your next project – Prana developed by Christophe Herreman.

3. On the panel, we were all familiar with Cairngorm and mostly use it when business requirements and dev team size makes it a perfect fit. But i did bring up the black hole of state control that comes with it… in my opinion. I am quite taken with how PureMVC handles state through mediators, but i have other weight-baring problems with PureMVC that i can’t get around that make me choose Cairngorm when it comes to incorporating a micro-architecture into our projects. I basically said that i hate throwing string-denoted state on the ModelLocator that is bound to a view. I can’t stand it, but i do it because i know that developers are familiar with it. In my personal opinion i think this is the best case for the Strategy pattern. I like the Mediator pattern as well, but i think there is too much baggage and extra code that needs to be thrown in an if..else of switch..case. I know that Strategy is behaviour pattern but i see it fitting in nicely with presentation as well. I can go into that farther in another post if you all want, but i just wanted to convey that even though you might represent a simple string on a global model, i think you are losing the loose-coupling infrastructure… but don’t even get me started on Singleton models… this 3 point has already run too long.

In any event, if you sat in on the panel, I would love to hear your thoughts – good, bad and ugly. Leave a comment… and bundle up, it’s cold here in boston.

Posted in Conferences, Flex, Infrared5, Prana.


Errata or just a helpful hint?

For those of you who have a copy of the Adobe Air Create-Modify-Reuse book that myself and Marc Leuchner and Matt Wright (of NoBien fame) authored, we hope you are enjoying it and i also may have a bit of errata for Chapter 1 if you are running Leopard. For those of you who don’t have a copy of the book (go buy it) and/or are running Leopard and want to use the Flex SDK command line tools, this may be of interest…

In Chapter 1 of the Adobe AIR Create-Modify-Reuse book, The Development Environment, it states that in order to set a PATH variable for your command line tools that you should:

1. Open the Terminal and type > open -e .profile
2. Add the path to the /bin folder of your SDK installation (I paraphrased… but you get the idea)

In Tiger this is all well and good, and if you are running in Tiger you can drop off or read on if you intend to upgrade to Leopard. Setting system paths in Leopard has changed and you no longer have a .profiles file in your User directory to which you can add/append paths. The following steps are what i took to add a path to the Flex SDK command line tools under Leopard:

1. Open the Terminal and navigate to /etc/paths.d
2. Create a file named ‘flex’ – (sans quotes)
3. Enter the following command: > pico flex
4. Enter: /Applications/flex_sdk_3/bin
5. Exit and Save

You will need to restart your computer.

*Note: /Applications/flex_sdk_3/bin points to the /bin directory of my Flex 3 SDK installation, change as you see fit to your installation.

I can’t go into the long and short of why this needs to take place in Leopard, but that will get you up and running with the command line tools if running under Leopard; i can however tell you i used the following to set me on the right path (no pun intended):

here and here

I apologise if anyone had purchased the book and tried to go through Chapter 1 with a Leopard installation. I did not know that setting PATH variables had changed and I was running Tiger when written and up until about a couple weeks ago when my HD went on the lam and i was greeted by a series of ‘Do Not Enter’ and ‘Missing File’ icons on start-up… all is well though, and they replaced my HD and installed Leopard for free!

For those of you have a copy of the book, i hope you are enjoying it. For those who are trying to get the tools up and running and just switched to Leopard i hope this is useful.

Posted in AIR, Books, Flash, Flex.


Flash on Tap : Boston

Beer and Flash.

Now, i plead guilty to introducing the two from time to time … and sometimes more of one than the other. : )

… and here comes an opportunity to mingle micro-brew tasting with some of the most intelligent minds in the business… and in Boston no less!

Flash on Tap is in Boston from October 7th until the 9th. Get you tickets while the super early and early bird special last!

Posted in Beer!, Conferences, Flash.


Flex 3 Cookbook clarifications

Josh Noble – the main man behind the Flex 3 Cookbook of which i had the esteem pleasure of being part of (thanks again, j-man) – has recently blogged about some more information involving the files for download and the intention of the book.

Wanted to blog about it as well, as i feel there is some great information from his post about the decision for cutting chapters and where to download code and the best way to submit errata. He also mentions the heartbreaking decision to cut chapters and recipes from the book to preserve page count… but don’t put the book back on the shelf, they are available to download!

We hope people are enjoying the book at what any level developer you are. Cheers to Josh and happy coding!

read Josh’s post

Posted in AS3, Books, Flex.


Yet another post about Astro

If you read MXNA, you probably have stopped checking quite some time ago because every post is about Astro
but if you are interested in another way to set up your projects in FlexBuilder to target FP10 without having to muck about with files in the frameworks folder of your original Flex3 SDK installation this post may shed some light.

I am a workspace fanatic when it comes to development. I like things tidy, and when i start a new client project or go into some new exploration that involves multiple projects, i create a new workspace. The great thing about workspaces for me, aside from keeping things neat in my head, is that each new project you create in that workspace inherits from any default settings. So when the big news hit and i wanted to check out the latest SDK, i created a new workspace and followed most of the excellent directions already available on the adobe open source site. I only strayed a little in how i went about setting my workspace up so that every new project i created in it was *almost* set for development targeted at FP10 without having to run through the process each time.

The following is the process i took to only mess with the files from the nightly build and set defaults for a single workspace in order to play around with the current features available in Astro:

1
. Download Flash Player 10 codenamed Astro.
2. Download the nightly build and unzip to some directory. (for me that is /Applications/flex_sdk_3.0.1.1728
3. Open FlexBuilder or Eclipse (if you have the plugin) and create a new workspace. (ie. ~/Documents/workspace/astro).
4. Create a new project.
5. Navigate to Project>Properties
6. Select the Flex Compiler option
7. Under Flex SDK version, click Configure Flex SDKs…
8. In the Preferences (Filtered) window, select Add
9. Navigate to the installation of your nightly build. (ie. /Applications/flex_sdk_3.0.1.1728)
10. Add a new name for the SDK… you should see something like so:

Flex Builder Astro set up””””””””””””””””””””””””””””””””””””””””””””””””””””””’

11. Click OK, Then tick the checkbox next to the newly added sdk in the Installed Flex SDKs window.
12. Click Apply, then OK.
13. Then back in the Project Properties folder, under Use a specific SDK, if the newly added SDK isn’t selected, select it.
14. Under the Required Flash Player Version, change the value to 10.0.0
15. In the Project Properties window on the left side, select Flex Build Path> Library Path.
16. Expand the SDK you just set as default, and select the playerglobal.swc and Remove it.
17. Click Add SWC, and navigate to the player 10 swc from your nightly build SDK installation (ie. /Applications/flex_sdk_3.0.1.1728/frameworks/libs/player/10/playerglobal.swc)
18. Click Apply, then OK.
19. Open up the flex-config.xml file from the Astro SDK installation and update the settings as described in the first part of the Command-line Compiler instructions from here.

Thats it! Only 19 steps… that seems like a lot. In any case, in ensures that any project you now build under that workspace will default to using the targeted SDK. You will still have to manually change the Required Flash Version (from step 14) before you compile a new project, but other than that when you want to tinker with the nightly build – and not mess with your stable Flex 3 SDK release that other projects in other workspaces are targeting – just hop over to that workspace.

Good reading
:
Ryan Stewart – Flash Player 10 codename “Astro” goes beta
Tinic Uro – Adobe Is Making Noise series
Keith Peters – Astro Dynamic Sound!
Josh Tynjala – Gratuitous Text Effects

Posted in AS3, Astro, Flash, Flex.