|
SYS-CON.TV Webcasts
Comments
Did you read today's front page stories & breaking news?
SYS-CON.TV
|
Top Links You Must Click On
Flex Adobe Flex: Program in Style or an Elevator Pitch
All students usually get excited by Adobe Flex, but each of them comes with different understanding of how to do things right
By: Yakov Fain
Sep. 24, 2006 07:30 PM
We usually run Flex training for private clients of Farata Systems , but once in a while we teach public classes for people with different programming background (my next Flex class at New York University starts in November). All students usually get excited by Adobe Flex, but each of them comes with different understanding of how to do things right. So I’ll tell you the story that might have happened in a real life, but first, let me remind you of an old Indian tale about seven blind men and an elephant . In short, one blind man touched the elephant’s head, the other one touched the tail, someone was by the leg. And each of them visualized an elephant differently based on what he touched… My students usually arrive to the classroom early, but this time three seats were empty. Five minutes later I got a phone call from one of them explaining that they got stuck in the elevator and will stay there for another fifteen minute until the serviceman arrives. Needless to say that each of them had a laptop (do not leave home without it), so I gave them a short assignment to trying to help them use this time productively. Here’s the assignment: Create a Window with a Panel that can resize itself by clicking on the button +/- that is located in the right corner of the panel. One click should minimize the panel’s height to 20 pixels, and a subsequent one should maximize to 100 pixels, and so on. For example, these are the two states of such panel:
I forgot to tell you that one of these guys was a Cobol programmer, the other one had Java background, and the third one was a Smalltalk fan.
From Cobol to Flex The Cobol programmer thought to himself,”I used to write long programs because during job interviews they would ask how many lines of code did I write. These guys are different, so to earn a good grade, this program should be small ”. He finished the program on time and this is what it looked like: <?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Panel id="thePanel" title="The Panel" height="90" width="100%" headerHeight="20" /> <mx:HBox width="100%" horizontalAlign="right" paddingRight="2"> <mx:Label text="-" fontSize="16" width="20" height="17" fontWeight="bold" id="minimizeActions" click="{if (minimizeActions.text=='+'){ minimizeActions.text='-'; thePanel.height=100; } else { minimizeActions.text='+'; thePanel.height=20; } }" /> </mx:HBox> </mx:Application> From Java to Flex The Java programmer thought, “The standard Flex Panel class does not have the property that remembers the current state of the Panel, but Flex components are easily extendable, so I’ll create a descendent of the Panel in ActionScript, add a private state flag (minimized) , public setter and getter, and resize function. This way my new Panel class will be reusable and self contained.” This is his reusable ActionScript class called ResizableJPanel: package { public function get minimized():Boolean{ public function set minimized(state:Boolean){ This is Javist's mxml code: <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*" layout="absolute" applicationComplete="minimizeActions.addEventListener(MouseEvent.CLICK, resizePanel);"> <mx:Canvas id="theCanvas" height="100" width="100%" > <local:ResizableJPanel id="thePanel" height="90" width="100%" title="The Paaanel" minHeight="20" maxHeight="100" headerHeight="20" /> <mx:HBox width="100%" horizontalAlign="right" paddingRight="2"> <mx:Label text="-" fontSize="16" width="20" height="17" fontWeight="bold" id="minimizeActions" /> </mx:HBox> </mx:Canvas> <mx:Script> <![CDATA[ function resizePanel(event:MouseEvent):void{ if (thePanel.minimized){ minimizeActions.text="-"; thePanel.resizeMe(); theCanvas.height=thePanel.maxHeight; } else { minimizeActions.text="+"; thePanel.resizeMe(); theCanvas.height=thePanel.minHeight; } } ]]> </mx:Script> </mx:Application> From Smalltalk to Flex The Smalltalk guy thought, “Let me see if the standard Panel is a dynamic class. If not I’ll extend it just to make it dynamic and will be assigning the panel’s state on the fly. I hope Yakov is not one of these object-oriented Nazis”. This is his panel ActionScript class that just adds a dynamic behavior to the Panel: package{ His mxml class looked like this: <?xml version="1.0" encoding="utf-8"?> <![CDATA[ function resizePanel():void{ Since we are not in the classroom, I’m not going to go to a code review and lengthy discussions, I will just say the I gave an “A” to each of these guys...and here's the Flex version: <?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="absolute"> <ResizablePanel title="The Panel" id="thePanel" minimized="false" height="{thePanel.minimized?thePanel.minHeight:thePanel.maxHeight}" width="99%" What’s the morale of this story? Learn another language, no matter what’s your current background. Initially you will try to bring your own culture to this new language, but eventually your horizons will broaden, which will make you a better programmer. P.S. Isn’t it funny that the Cobol guy’s version was the shortest one? But was it the best one? Can you offer a different solution? Reader Feedback: Page 1 of 1
Your Feedback
Enterprise Open Source Magazine Latest Stories . . .
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||