telerik pdf viewer mvc : Advanced pdf to jpg converter Library SDK class asp.net wpf azure ajax Enterprise-Development-with-Flex35-part733

CHAPTER 7
Modules, Libraries, Applications,
and Portals
Before software can be reusable, it first has to be usable.
—Ralph Johnson
Flex Portals and Modularization
For many people, the word “portal” stands for content personalization, as in Yahoo!
or iGoogle. In the enterprise world, portals are mainly about content aggregation.
HTML portals consist of pieces wrapped into HTML tags; Flex portals aggregate Flex
applications or modules into a bigger Flex application. Quite naturally, aggregation
does not exist without modularization. After all, while developing any decent size ap-
plication, we tend to break it into smaller, relatively independent parts.
Such intervening of aggregation and modularization determines the layout of this
chapter. You’ll start with image loading as the nucleus of Flex modularization, and
then progress to Flex modules and subapplications. You’ll learn how to use such classes
as 
Loader
and 
URLLoader
and how they deal with style modules and code modules.
This chapter will suggest an approach of creating custom Flex portals that load and
communicate with independently built and compiled subapplications: portlets. Fi-
nally, you will learn how to integrate existing Flex application as legacy portlets in a
JSR 168 portal.
Basic Modularization: Image
The essence of Flex application modularization is dynamic loading of the byte code.
Consider the following two lines of code:
<mx:Image source="@Embed('assets/logo.png')"/>
<mx:Image source="assets/logo.png"/>
327
Advanced pdf to jpg converter - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
convert pdf image to jpg online; convert pdf file to jpg file
Advanced pdf to jpg converter - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
batch pdf to jpg online; changing pdf to jpg on
The first line illustrates image embedding. It increases the size of the application by the
size of the image. As a result, the application carries the image as a part of the SWF file.
The loading of such applications takes longer, but the actual rendering of the image
will be faster, as there is no need to make a network call just to bring the image to the
client.
The second line of code illustrates runtime loading of the image bytes. This time the
application’s .swf does not include the image logo.png and loads faster than the em-
bedded one. The download of logo.png will need additional time, but that time will be
deferred until the view that contains the image is displayed.
Now consider an alternative, explicit way of image embedding:
<mx:Script>
<![CDATA[
[Embed(source="assets/farata_logo.png")]
[Bindable] private var logoClass:Class;
]]>
</mx:Script>
<mx:Image source="{logoClass}"/>
<mx:Button icon="{logoClass}"/>
This method explicitly exposes the variable 
logoClass
of type 
Class
. In fact, the Flex
compiler generates an instance of 
mx.core.BitmapAsset
that is a wrapper around the
ByteArray
of the actual image. The similar variable is generated when you use
the 
@Embed
meta tag, although explicit embedding lets you reuse it multiple times. The
resource pointed to by the URL, in this case assets/farata_logo.png, gets copied across
the network and displayed on the stage. In the case of embedding, copying is done
during compilation of the SWF and the job of the 
Image
component is reduced to merely
displaying the content of a 
ByteArray
. Importantly, the 
source
property of the 
Image
may outright point to an existing 
ByteArray
representing an image.
You can get a reference to this 
ByteArray
with the help of the class
flash.net.URLLoader
, as presented in Example 7-1.
Example 7-1. Separating transfer of byte code from loading into stage
<mx:Script>
[Bindable] private var imageData:ByteArray;
private function loadImage():void {
var urlRequest:URLRequest =  new URLRequest(IMAGE_URL);
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE, onComplete);
urlLoader.load(urlRequest);
}
private function onComplete(event:Event):void{
var urlLoader:URLLoader = event.target as URLLoader;
imageData = urlLoader.data as ByteArray;
}
</mx:Script>
328 | | Chapter 7: Modules, Libraries, Applications, and Portals
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
An advanced PDF converter tool, which supports to be integrated in .NET project file formats with high quality, support converting PDF to PNG, JPG, BMP and
convert from pdf to jpg; reader pdf to jpeg
JPG to JPEG2000 Converter | Convert JPEG to JPEG2000, Convert
Advanced image converting tasks can be quickly finished with this softeware in a few steps. Open JPEG to JPEG2000 Converter first; ad JPG images from
change from pdf to jpg on; change pdf to jpg online
<mx:Button label="Load Image" click="loadImage()" />
<mx:Image id="image" source="{imageData}"/>
The code snippet in Example 7-1 emphasizes that transferring of the remote byte code
over the network (by 
URLLoader
) and adding it to the stage (by 
Image
) are two inde-
pendent actions.
Using this technique for image loading is a good demonstration of two important ap-
plication modularization concepts:
• The ultimate subjects of the dynamic loading are class definitions, either definitions
of assets or components.
• Transfer of the byte code and actual creation of class definitions are two separate
actions.
Once you master loading a single image, you can move up to style modules, which
enable you to load many images in one shot.
Runtime Style Modules
Say you have a set of images that collectively, via CSS, determine the skin of your
application, as in Example 7-2.
Example 7-2. Sample CSS file
/* styles.css */
Application {
background-image:Embed("assets/background.png") ;
background-size:"100%" ;
}
.arrowLeft {
skin: Embed("assets/arrow_right.png") ;
over-skin: Embed("assets/arrow_right_rollover.png") ;
down-skin: Embed("assets/arrow_right_down.png") ;
}
.arrowRight {
skin: Embed("assets/arrow_left.png") ;
over-skin: Embed("assets/arrow_left_rollover.png") ;
down-skin: Embed("assets/arrow_left_down.png") ;
}
.tileStyle {
skin: Embed("assets/tile.png") ;
over-skin: Embed("assets/tile_rollover.png") ;
down-skin: Embed("assets/tile_rollover.png") ;
}
.minimizeStyle{
skin: Embed("assets/minimizeall.png") ;
over-skin: Embed("assets/minimizeall_rollover.png") ;
Runtime Style Modules s | | 329
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Combine scanned images to PDF, such as tiff, jpg, png, gif, bmp, etc. third-party .NET document imaging toolkit, also offers other advanced PDF document page
convert pdf into jpg online; best pdf to jpg converter for
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Convert PDF to Jpg, Png, Bmp, Gif, Tiff and Our website offers PDF to Raster Images Conversion Control Using this mature and advanced control, developers are
convert online pdf to jpg; changing pdf to jpg file
down-skin: Embed("assets/minimizeall_rollover.png") ;
}
.restoreStyle {
skin: Embed("assets/restoreall.png") ;
over-skin: Embed("assets/restoreall_rollover.png") ;
down-skin: Embed("assets/restoreall_rollover.png") ;
}
.saveButtonStyle {
skin: Embed("assets/save_gray.png") ;
over-skin: Embed("assets/save_rollover.png") ;
down-skin: Embed("assets/save_rollover.png") ;
}
.showPanelButtonDown {
skin: Embed("assets/gray_down_small.png") ;
over-skin: Embed("assets/rollover_down_small.png") ;
down-skin: Embed("assets/rollover_down_small.png") ;
}
.hidePanels {
skin: Embed("assets/hide_panels.png") ;
over-skin: Embed("assets/hide_panels_rollover.png") ;
down-skin: Embed("assets/hide_panels_rollover.png") ;
}
.showPanels {
skin: Embed("assets/show_panels.png") ;
over-skin: Embed("assets/show_panels_rollover.png") ;
down-skin: Embed("assets/show_panels_rollover.png") ;
}
.controlBarPanelStyle {
border-style: none ;
fillColors: #4867a2, #4f75bf ;
border-skin: ClassReference("border.SimpleGradientBorder");
}
A CSS file can be compiled to the corresponding .swf. To do so via Flash Builder, right-
click the filename and select “Compile CSS to SWF.” Now you can dynamically load
all required byte code, define classes, create instances, and apply styles to objects that
are already present in the display list—all with the single instruction 
StyleMan
ager.loadStyleDeclarations()
, as shown in Example 7-3.
Example 7-3. Dynamic style loading via StyleManager
<?xml version="1.0" encoding="utf-8"?>
<!-- RuntimeStyleDemo.mxml -->
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:navigation="com.farata.portal.navigation.*"
layout="absolute"
click="toggleStyles()"
>
<mx:Script>
<![CDATA[
330 | | Chapter 7: Modules, Libraries, Applications, and Portals
C# WPF PDF Viewer SDK to convert and export PDF document to other
An advanced .NET WPF PDF converter library for converting PDF in C#.NET to image file formats with high quality, support converting PDF to PNG, JPG, BMP and
convert .pdf to .jpg; convert pdf to jpg for
C# TIFF: How to Use C#.NET Code to Compress TIFF Image File
RasterEdge XDoc.Tiff for .NET utilizes the most advanced and standard based Tiff image string[] imagePaths = { @"C:\demo1.jpg", @"C:\demo2.jpg", @"C:\demo3.jpg
change pdf to jpg image; convert multi page pdf to single jpg
import mx.modules.IModuleInfo;
import mx.modules.ModuleManager;
private function toggleStyles():void {
if (moduleInfo.loaded) {
StyleManager.unloadStyleDeclarations('styles.swf');
} else {
StyleManager.loadStyleDeclarations('styles.swf');
}
}
]]>
</mx:Script>
<navigation:ControlBar/>
</mx:Application>
The sample application presented in Example 7-3 allows you to load and unload the
compiled stylesheet styles.swf when the user clicks anywhere in the application area.
Figure 7-1 illustrates the striking difference before and after the styles were loaded.
When developing a portal, you can apply similar styling techniques. If every portlet is
styled dynamically, making them conform to the required look and feel is simply a
matter of adjusting and recompiling the relevant CSS files. Perhaps the portal owner
may even rebuild the CSS module without bothering the creator of the portlet. The
portlet itself will not have to be rebuilt to change its appearance.
Example 7-4 represents the top-level control bar of a sample portal desktop.
Example 7-4. ControlBar of a sample portal
<?xml version="1.0" encoding="utf-8"?>
<!-- com.farata.portal.navigation.ControlBar.mxml -->
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="28"    verticalAlign="middle"
styleName="controlBarPanelStyle">
<mx:HBox verticalAlign="middle" horizontalGap="10" paddingLeft="10">
<mx:Button id="saveButton" height="16" width="16"
styleName="saveButtonStyle" toolTip="Save Portal"
useHandCursor="true" buttonMode="true"/>
<mx:Button id="showTopPanelButton" height="16" width="16"
styleName="hidePanels" toolTip="Hide/Show Top Panel"
useHandCursor="true" buttonMode="true"/>
<mx:Button id="showPanelButton"   height="16" width="16"
styleName="showPanelButtonDown" toolTip="Show Panel"
useHandCursor="true" buttonMode="true"/>
</mx:HBox>
<mx:HBox width="100%" horizontalAlign="right" paddingRight="5">
<mx:HBox borderStyle="solid" cornerRadius="13"
borderThickness="0" horizontalGap="0" >
<mx:Button styleName="arrowRight"
useHandCursor="true" buttonMode="true" />
<mx:Button styleName="arrowLeft"
useHandCursor="true" buttonMode="true" />
<mx:filters>
Runtime Style Modules s | | 331
XDoc.HTML5 Viewer for .NET, All Mature Features Introductions
you can easily add and use its advanced documents and PowerPoint: PPT, PPTX, PPS, PPSX; PDF: Portable Document Raster Image Files: BMP, GIF, JPG, PNG, JBIG2PDF
pdf to jpg converter; change file from pdf to jpg on
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
An advanced .NET control able to batch convert PDF documents to image formats in C# Support exporting PDF to multiple image forms, including Jpg, Png, Bmp
convert pdf file to jpg format; convert pdf to jpeg on
<mx:BevelFilter />
<mx:GlowFilter color="#d3dffd"/>
</mx:filters>
</mx:HBox>
<mx:Button
styleName="tileStyle" toolTip="Arrange Windows"
useHandCursor="true" buttonMode="true" />
<mx:Button styleName="minimizeStyle" toolTip="Minimize All "
useHandCursor="true" buttonMode="true" />
<mx:Button styleName="restoreStyle" toolTip="Restore All
useHandCursor="true" buttonMode="true" />
</mx:HBox>
</mx:HBox>
Figure 7-1. RuntimeStyleDemo with styles.swf loaded (top) and unloaded (bottom)
332 | | Chapter 7: Modules, Libraries, Applications, and Portals
VB.NET Imaging - Generate Barcode Image in VB.NET
Guide to integrate advanced Identcode creating features into VB.NET scanner reading on any pages in a PDF or TIFF as common image files such as png and jpg.
.net pdf to jpg; best way to convert pdf to jpg
How to C#: Modify Image Bit Depth
Tiff Edit. Image Thumbnail. Image Save. Advanced Save Options. Save Image. Image VB.NET How-to, VB.NET PDF, VB.NET Word, VB the 24 bits per pixel image input.jpg
best convert pdf to jpg; reader convert pdf to jpg
Now you are ready to investigate the most obvious part of the modularization API.
Real Actors: Loader and URLLoader
So far this chapter has touched briefly on the 
Image
StyleManager
, and 
ModuleManager
classes, and equally briefly used 
ModuleManager
. To further your understanding of the
modularization techniques, you need to be aware of two important connections:
• The 
Image
class is a descendant of 
SWFLoader
, the Flex component that facilitates
loading of SWF files in addition to images, such as JPEG and GIF.
• Both 
SWFLoader
and 
ModuleManager
delegate the actual loading to 
flash.dis
play.Loader
.
As the saying goes, all roads lead to Rome, and for your purposes Rome is
flash.display.Loader
. Be it 
SWFLoader
ModuleManager
StyleManager
(or the similar
ResourceManager
), modularization is all about loading and unloading classes via
flash.display.Loader
, the only Flash component that creates class definitions and class
instances from the remote URL. In addition, 
flash.display.Loader
can create classes
from the existing byte code, for instance, the byte code obtained with the help of
flash.net.URLLoader
(as illustrated in Example 7-1).
Loading Modules with Module Loader
The simplest way you can modularize your application is by using Flex modules. The
class 
Module
is a 
VBox
that, like 
Application
, is a 
Container
that also gets compiled, along
with the dependent classes, to a separate .swf file. Example 7-5 illustrates a trivial
module.
Example 7-5. Example of the module
<?xml version="1.0"?>
<!-SimpleModule.xml -->
<mx:Module xmlns:mx=http://www.adobe.com/2006/mxml layout="vertical">
<mx:Text text="This is the simplest module" >
</mx:Module>
Any functional part of your application UI that can be developed and tested independ-
ently is a good candidate to become a module. The advantages are obvious: you can
delegate the development and testing efforts to a different team or allocate a different
time slot to it. Modularization will also improve memory utilization, because you can
unload the module when the application does not need it anymore.
For Flash Builder to compile your module, it needs to be included into the .action-
ScriptProperties file of your project. You typically add the module via the project’s
properties, as shown in Figure 7-2, or by using the New Module wizard.
Loading Modules with Module Loader r | 333
The easiest way to load a module to your application during runtime is via 
Module
Loader
, a descendant of the 
VBox
that has an extra API to load and unload module SWF
files, as shown in Example 7-6.
Example 7-6. Loading a module via ModuleLoader
<?xml version="1.0"?>
<!-- ModuleLoaderDemo.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:HBox>
<mx:Button label="Load Module"
click="moduleLoader.loadModule('SimpleModule.swf')" /> 
<mx:Button label="Unload Module"
click="moduleLoader.unloadModule()"
enabled="{moduleLoader.loaderInfo.bytesTotal!=0}"/>
</mx:HBox>
<mx:ModuleLoader id="moduleLoader"/>
</mx:Application>
As you could figure by now, the ultimate performer of the class loading in the case of
the 
ModuleLoader
is, again, 
flash.display.Loader
. Being clear on the role of
flash.display.Loader
will help you understand other concepts in this chapter.
Preloading Modules with ModuleManager
In addition to 
ModuleLoader
, which is a high-level module API, Flex offers
ModuleManager
. The prime benefit of using 
ModuleManager
is that you can separate the
transfer of the module byte code over the network, which is potentially a lengthy
Figure 7-2. Registration of the module to be compiled by Flash Builder
334 | | Chapter 7: Modules, Libraries, Applications, and Portals
operation, from the actual creation of the module instance(s). Certainly, you could do
it yourself with the 
URLLoader
(as illustrated in Example 7-1), but you should take ad-
vantage of the nice abstraction layer provided by the 
ModuleManager
class. In particular,
the contract of the 
ModuleManager
guarantees that you won’t transfer the module bytes
over the network more than once.
To load a module into a singleton registry of modules provided by 
ModuleManager
, you
use a module proxy, such as an implementation of the 
IModuleInfo
interface, corre-
sponding to the module URL. You then perform the 
load()
via this module proxy,
as shown in Example 7-7. The actual loading task will be delegated to
flash.display.Loader
.
Example 7-7. Module preloading technique
private var moduleInfoRef:Object = {};
private function loadModule(moduleUrl:String):void {
var moduleInfo:IModuleInfo  = ModuleManager.getModule(moduleUrl);
moduleInfo.addEventListener(ModuleEvent.READY, onModuleReady ) ;
//You need to protect moduleInfo from being garbage-collected
moduleInfoRef[moduleUrl] = moduleInfo;
moduleInfo.load();
}
// Module is loaded. You may create modules via event.module.factory
private   function onModuleReady(event:ModuleEvent):void {
// Remove 'protection' from moduleInfo
moduleInfoRef[event.module.url]=null;
}
The code, similar to the function 
loadModule()
, can be called well in advance of the
immediate need of the module. Then, to create an instance of the module, you obtain
another instance of the module proxy and use its 
factory
property, as shown in
Example 7-8.
Example 7-8. Creating an instance of the preloaded module
private function createModuleInstance(moduleUrl:String,
parent:UIComponent=null):Module {
var module:Module;
var moduleInfo:IModuleInfo  = ModuleManager.getModule(moduleUrl);
var flexModuleFactory:IFlexModuleFactory = moduleInfo.factory;
if (flexModuleFactory != null) {
module = flexModuleFactory.create() as Module;
if (parent) {
parent.addChild(module); // in Flex 4 use addElement()
}
}
return module;
}
Preloading Modules with ModuleManager r | 335
If this code looks confusing and leaves you wondering what to think of 
IFlexModule
Factory
and where 
create()
comes from, try this: from the Flash Builder project’s
Properties, navigate to Flex Compiler, and in the pop-up window add the compiler
option 
-keep
in the field Additional Compiler Arguments to see the generated Action-
Script code. Then, in the src/generated folder, open the file _SimpleMod-
ule_mx_core_FlexModuleFactory.as. The Flex compiler adds an implementation of
IFlexModuleFactory
for each module, similar to the one shown in the Example 7-9.
Example 7-9. Compiler-generated descendant of FlexModuleFactory
package{
public class _SimpleModule_mx_core_FlexModuleFactory
extends mx.core.FlexModuleFactory
implements IFlexModuleFactory{
 .  .
override public function create(... params):Object{
if (params.length > 0 && !(params[0] is String))
return super.create.apply(this, params);
var mainClassName:String = params.length == 0 ? "SimpleModule" :
String(params[0]);
if (!mainClass) return null;
var instance:Object = new mainClass();
if (instance is IFlexModule)
(IFlexModule(instance)).moduleFactory = this;
return instance;
}
override public function info():Object {
return {
compiledLocales: [ "en_US" ],
creationComplete: "onCreationComplete()",
currentDomain: ApplicationDomain.currentDomain,
mainClassName: "SimpleModule",
mixins: [ "_SimpleModule_FlexInit",
"_richTextEditorTextAreaStyleStyle", "_ControlBarStyle",
 .  .
"_SimpleModuleWatcherSetupUtil" ]
}
}
}
}
Finally, to enable the unloading of the module, you need to detach all module instances
from their parents. To that end, the example application maintains a 
Dictionary
of
loaded modules instances, one per module URL:
[Bindable]private var modules:Dictionary = new Dictionary();
336 | | Chapter 7: Modules, Libraries, Applications, and Portals
Documents you may be interested
Documents you may be interested