Vertical Label in Macromedia Flex

Someone on Flexcoders asked, if it's possible to show vertical label or text like this:

S
H
O
P
P
I
N
G

I wrote a simple MXML VerticalLabel component. Yet another example which shows the power of MXML components.



1)VerticalLabelExample.mxml

<mx:Application width="800" height="600" xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns:local="*">
<local:VerticalLabel fontSize="15" text="SHOPPING"/>
</mx:Application>



2)VerticalLabel.mxml

<mx:VBox xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:Script>
import mx.controls.Label;
import mx.controls.TextInput;
import mx.controls.Text;
var text:String;
var textField;
function createChildren():Void
{
var n = text.length;
textField = createChild(Label,"textField");
textField.styleName = this;
for(var i=0;i<n;i++)
{
textField.text+= text.charAt(i) + "\r";
}
}
</mx:Script>
</mx:VBox>

SAP uses Macromedia Flex in SAP NetWeaver Visual Composer

COPENHAGEN, Denmark - April 26, 2005 - SAP (NYSE: SAP) and Macromedia (NASDAQ: MACR) today announced they are extending SAP NetWeaver™ with the Macromedia Flex application framework to give organizations the ability to create rich interfaces for SAP® solutions, including customer-facing SAP® Enterprise Portal-based applications.
you can read complete news here.
This is indeed a great news.

Some comments deleted

When someone comments on my blog, I make sure it's not spam and then I allow comments to appear on my blog.
My blog is getting over thousand spam comments every week and while deleting such comments today, I deleted some of the genuine comments by Manish, David Urech, Dinesh and Gaurav. By mistake some checkboxes left checked while deleting commments...MT interface sucks :(
Guys, please don't mind and keep commenting here. I am thinking of ways to stop this approval-kind-of-process and let comments appear as soon as they are posted.
Any suggestions and guidence to stop this comment spamming are welcome.
Thanks...

Adobe acquiring Macromedia

Adobe is acquiring Macromedia.
Read more about it here , here and here.

David Temkin reads Flexcoders

This is interesting to see that David Temkin of Laszlo Systems seems to be reading flexcoders posts. He posted the link of one of the flexcoders thread (Flex1.5 Price).
Frankly speaking, I had not followed that thread completely, I have been busy in work. But I am confident that this increase in price will not affect decision makers because Macromedia Flex is full of features and it is worth buying.

Keyboard shortcuts for Flex UI components

Again someone on flexcoders wanted to assign keyboard shortcuts for UI components/controls in his application. Following was my response with quick and dirty example..
Suppose you want to assign some keyboard shortcuts to each
control on screen so that when shortcut key is pressed, control gets
focussed and pressing enter/space execute associated action. For example, pressing space key while a button is focussed, would be broadcast button's click event.
You can easily achieve this by using Key object, as demonstrated in code later.
I am assuming:

  • user would press CTRL + 1, CTRL + 2 ...to focus a control on screen.
  • user can press SPACE key to execute associated action with the controls
    like Button, CheckBox, RadioButton or any button kind of component.
  • user can use arrow keys to change values in list type of controls like
    ComboBox
  • user can type in textfield like control....


Following example has some controls on screen and pressing CTRL + 1 .. CTRL
+ 5 shifts the focus to corresponding control....
Following code is quick & dirty and just for demo, you can always write a ShortcutManager class in very OO way, which is more easier to use and managable...

###KeyObjectDemo.mxml###
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="initApp()">
<mx:Script>
<![CDATA[
	var keyListener:Object;
	function debugTrace(msg)
{
_ta.text+= msg + newline;
}
	function initApp()
{
keyListener = new Object();
keyListener.onKeyDown = mx.utils.Delegate.create(this, mx.utils.Delegate.create(this,shorcutHandler));
Key.addListener(keyListener);
}
	function shorcutHandler()
{
var bControlPressed:Boolean = Key.isDown(Key.CONTROL);
if(bControlPressed) { //CTRL

if(Key.isDown(49)) { // 1
               	        debugTrace("CTRL + 1");
//set focus to textfield
                 			my_input.setFocus();
}else if(Key.isDown(50)) { //2
                  		debugTrace("CTRL + 2");
//set focus to button
                        	my_btn.setFocus();
}else if(Key.isDown(51)) { //3
   	                    debugTrace("CTRL + 3");
my_radio.setFocus();
}else if(Key.isDown(52)) { //4
   	                    debugTrace("CTRL + 4");
my_check.setFocus();
}else if(Key.isDown(53)) { //5
   	                   debugTrace("CTRL + 5");
my_combo.setFocus();
}
}
}
]]>
</mx:Script>
<mx:TextInput id="my_input" focusIn="debugTrace('TextInput focussed')" change="debugTrace('TextInput value changed')"/>
<mx:Button label="Button" id="my_btn" focusIn="debugTrace('Button focussed')" click="debugTrace('button pressed')"/>
<mx:RadioButton label="radio" id="my_radio" focusIn="debugTrace('RadioButton focussed')" click="debugTrace('Radio button selected')"/>
<mx:CheckBox label="Checkbox" id="my_check"  focusIn="debugTrace('CheckBox focussed')" click="debugTrace('CheckBox change')"/>
<mx:ComboBox id="my_combo" focusIn="debugTrace('ComboBox focussed')" change="debugTrace('ComboBox selection changed')">
<mx:dataProvider>
<mx:Array>
<mx:String>India</mx:String>
<mx:String>USA</mx:String>
<mx:String>Australia</mx:String>
</mx:Array>
</mx:dataProvider>
</mx:ComboBox>
<mx:VBox>
<mx:Label text="Debug Info:"/>
<mx:TextArea id="_ta" text="" width="200" height="200"/>
</mx:VBox>
</mx:Application>

Printing Custom Flex components using PrintJob

Someone on flexcoders asked about printing a Custom component using PrintJob.
I wrote a quick and dirty example. The idea is to create instance of component in main application, print it and delete it when printing is done.

##PrinJobExample.mxml###
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns="*">
<mx:Script>
[CDATA[
import Help;
var helpRef;
function testPrintJob():Void
{
helpRef= createChild(Help, "help");
//wait untill help is created & rendered completely...
        helpRef.addEventListener("creationComplete",mx.utils.Delegate.create(this, printHelp));
}
function printHelp()
{
var printJob:PrintJob= new PrintJob();
printJob.start();
printJob.addPage(helpRef);
printJob.send();
delete printJob;
destroyChild(helpRef);
}
]]
</mx:Script>
<mx:Button label="print" click="testPrintJob();"/>
</mx:Application>
##Help.mxml###
<mx:VBox xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:Label id="_lbl" text="Hello I am Help...."/>
<mx:Button label="Button in Help..."/>
</mx:VBox>

On2 Video Codec for Macromedia Flash

It seems Macromedia Flash Player would have On2 Video Codec also. On2 Video Codec seems to be better than Sorenson's.
http://biz.yahoo.com/prnews/050405/latu124.html?.v=5

Job Satisfaction - 80-20 Rule

According to this article, if you like 80% work in your day-to-day job, you can tolerate the rest(20%) of boring/bad/crap work...
via [http://www.poynter.org/column.asp?id=52&aid=79367]

Ten ways to Cultivate Happiness

  1. Be grateful
  2. Take care of yourself
  3. Be creative
  4. Move
  5. Get someone to take care of you
  6. Read inspirational material
  7. Contribute
  8. Get some time
  9. Be in nature
  10. Be happy

via [http://divatribe.com/articles/paries_happiness.shtml]
I do some of above things and I never do some of above things. I should start doing some of above things..