FLEX-2....A PRIMER
by
R.S.RAMASWAMY
(rs.ramaswamy@gmail.com)
------------------------------------
Flex2 is the latest RIA technolgy
based on MXML and Flash.Originally from Macromedia, this software
is now being provided by Adobe, as Adobe has recently acquired Macromedia. The
Flex2 software was given in DeveloperIQ CD in August-2006. That
edition carried a very interesting and informative interview with Dave Gruber of Adobe by the editor Mr.Ramdas.
Flex2 is being positioned and promoted as a better technology than Ajax. ( this
is the impression that we gain, from their advertisements in JavaLobby site).
The aim of this introductory tutorial is to
explore the technology at a very basic level. However, what we see by
these basic experiments is that it is
just like DotNet Framework & ASP.net , atleast so far as naming of controls
etc are concerned and partly like an applet( it is executed in client-side).
ASP.net can be thought of as an applet
executed in SERVER-SIDE with the gui being created by xml-based tags.Similarly
Flex-2 is definitely an advance and wonderful technology in that it is tag-based like asp.net with rich set of
controls and functinality but executed
in CLIENT-SIDE!
Hence,
it should not be too difiicult to learn and must be learnt, because it is a
qualitatively new technology, though it requires flash player in the client's
browser.But, we can have a stand-alone application too.
The
August-2006 CD gave the following
software.
a) Flex2-SDK
b) Flex2-Builder
c) Flex2 -charting
Of these three, Flex2-Builder software is a
trial version ( 30 days). But the other two are FREE! ( just like DotNet
Framework SDK). Hence, it will be better if we learn Flex2 by using hand-coding
without the wizards provided by the Flex2Builder. ( The adavantage of writing
about command-line methods is that it can be easily shared and printed, within
just a few pages!..It is very difficult to write about IDE screen shots.).
We
have unzipped flex2sdk from the CD to g:\flex2.
We find that the following folders are present in g:\flex2.
i)
bin
ii)
frameworks
iii)
samples
iv)
lib
v)
resources
vi)
player
Within the player folder,we have a debug folder
and within debug folder,
we have 3
programs.
a) install flashplayer9-AX
( ACTIVE-x
for Windows)
b) instal flasplayer9
c) SA-FlashPlayer
( stand-alone flash player)
--
If we double-click on 'instal FlashPlayer9-AX',
it gets active so that we can view flash files in the browser.
The SAFlash is meant for viewing Flash
files without using the browser. (similar to appletviewer).We copy SAFlash.exe to c:\saflash folder(created by us), for
convenience.
--
In the bin folder of flex2, we have the mxmlc program. This is the compiler which converts
the *.mxml file into the corresponding swf file ( shockwave).
=====
We
create another folder as
g:\flex2trials .
We are now in g:\flex2trials.
Let us create a batch file in this folder
as setpath.bat
// setpath.bat
set path=d:\winnt\system32;
d:\jdk1.6\bin;
g:\flex2\bin;
c:\saflash;
>setpath
This will enable us to compile and run any mxml file that we create
for our study. We are now ready to begin.
---
Let us begin with the examples that are given in Flex2
documentation.
=======================================
// demo1.mxml
<?xml version="1.0"?>
<mx:Application xmlns:mx=
"http://www.adobe.com/2006/mxml">
<mx:Panel title="My
Application" paddingTop="10" paddingBottom="10"
paddingLeft="10" paddingRight="10">
<mx:Label text="Hello World!"
fontWeight="bold" fontSize="24"/>
</mx:Panel>
</mx:Application>
===================================
We can compile demo1.mxml by:
>mxmlc demo1.mxml
We get demo1.swf
----------
We can see demo1.swf by:
>saflash demo1.swf
--
( see demo1.doc screen shot).
--
We can also copy demo1.swf to
c:\tomcat5\webapps\root\flex2demos
-
After starting tomcat5, we can give the URL
in browser as :
'http://localhost:8080/flex2demos/demo1.swf';
We get the expected display.
( see demo1browser.doc screenshot).
-----
Let us see a second example, this time it
is a combo.
---
// demo2.mxml
<?xml version="1.0"
encoding="utf-8" ?>
<mx:Application xmlns:mx=
"http://www.adobe.com/2006/mxml"
layout="absolute">
<mx:Panel x="10" y="10" width="350" height="200" layout="absolute"
title="Rate Customer
Service">
<mx:ComboBox x="20" y="20" id="combo1">
<mx:dataProvider>
<mx:Array>
<mx:String>Satisfied</mx:String>
<mx:String>Neutral</mx:String>
<mx:String>Dissatisfied</mx:String>
</mx:Array>
</mx:dataProvider>
</mx:ComboBox>
<mx:Button x="200" y="20" label="Send"/>
</mx:Panel>
</mx:Application>
------------------------------------
As before,
>mxmlc demo2.mxml
>saflash demo2.swf
--
>copy demo2.swf to tomcat
and view at:
http://localhost:8080/flex2demos/demo2.swf"
--
( see demo2.doc screenshot)
=======================================
In the next example, we create a textbox,
textarea and button.
// demo3.mxml
<?xml version="1.0"?>
<mx:Application xmlns:mx=
"http://www.adobe.com/2006/mxml">
<mx:Panel title="My
Application">
<mx:TextInput id="text1" width="150" text=""/>
<mx:TextArea id="area1" text="" width="150"/>
<mx:Button id="button1" label="Copy Text"/>
</mx:Panel>
</mx:Application>
================================
( see demo3.doc screenshot)
-------------------------------
Rather than viewing the swf file directly,
it is better practice to embed the flaash file within a html page.
Let us now see such an example.
// twoflashes.htm
<html>
<body>
TWO FLASH FILES HERE!
<embed src="demo1.swf">
<br>
<embed src="demo2.swf">
</body>
</html
-----------------------------------
Either to view the swf directly or as
embedded in html, we do not require servlet-compliant webserver like tomcat. We can use any
webserver. In our case, we are using Apache server, which comes bundled with
PHP-triad.
We copy twoflashes.htm, demo1.swf and demo2.swf
to :
c:\apache\htdocs\ folder.
Start Apache from start menu and view the
file at:
'http://localhost/twoflashes.htm'
We get the two flash files disdplayed.
(see twoflashes-apache.doc
screenshot)
--
We can also dynamically create the html
page containing the shockwave files by
using either php or jsp.
//showflash.php
<?php
print "flex demo";
print "<embed src='demo1.swf'>"
?>
We can place this file in :
c:\apache\htdocs\phpdemos
and invoke by:
'http://localhost/phpdemos/
showflash.php'
The page gets displayed.
======================================
There is a third possibility(ie) instead of compiling the mxml file ourselves,we can laeve it to the servlet-compliant
webserver like Tomcat5 to do the compiling.This is an advanced feature
necessary in complex applications. But, it is found that it takes inordinate
time. The better thing is to precompile and then place in the webserver.
-----
Before going further, let us see the samples provided by Adobe to
appreciate the features. We find the samples folder in g:\flex2.
If we open that samples folder, we will
find build-samples.bat file. Just click on that to compile ALL
the mxml files in the samples folder. It will take a very long time! ( about
30 minutes!).
But, it will be rewarding !
There are 5 sample applications. If
we look into , say, the photoviewer folder, before compiling, we will not find any swf file
there. But , after building, all the samples folders will have the respective
swf files ready.Also an opening wrapper html file.And the files will open
pretty fast.
Of
the five samples provided, three are captivating and educative. They are:
i) photoviewer
ii) flexstore
iii) explorer.
--
It is assumed that we have already compiled
all the mxml files. If now , we open photoviewer.htm in the photoviewer
folder, we are in for a rich experience! There are 20 travel photos shown in a
frame with scrollbar.
( see photoviewer.doc)
--
The next sample is flexstore. We can open flexstore.htm and
choose from the three menu items provided there. Readers can only be requested
to try for themselves as giving all these screen shots is not possible in the
limited pages at our disposal.
--
And finally comes the MOST IMPORTANT
sample, named 'explorer'.
Just open
explorer.htm in that folder
and we get a LOT of very useful gui
elements and the like, with source code also provided. Just to list all the
components provided there may fill a lot of pages.
Anyway, to get an idea of the riches there,
we should note the details.
We have the following categories.
---------------------------------
1)
containers
2)
controls
3)
core
4)
effects
5)
formatters
6)
states
7)
validators
8)
printing
-------------------------
It will be futile to attempt describing all
the demos there. These should be SEEN to be believed. As, the mxml code also is
given, it is enough to both educate and enslave us! Readers are requested to
explore this without faii.
For
example, how do we create and use a ColorDlg ? If we open explorer.htm, we get
three frames. In the left frame, we get 4 groups.
a) Visual
components
b) Print
Controls
c) Validators&
formatters
d) Effects
& view states.
==
Let us expand the visual components tree.
My! We
get tons of controls there such as
alert,
colorpicker, combobox, datagrid ,
horizontal list, HRule
HSlider,
List, Numeric Stepper, Progress bar,
Spacer, TabBar, Tree, VScroll, VSlider.
If we click on colorpicker, we get
colorpicker demo in right-top frame and
the source code in right-bottom frame. ( see
colordlg.doc)
When we click on the dot in the
bottom dot in the square given, the color dlg appears and we can choose the
coloor and transfer it.
Flex2
is no toy , dealing with user experience alone. It is a very sophisticated
environment which can connect to EJB and
ORM at Tomcat server and beyond
in EJB servers.
More on these in the next instalment.
---