Friday, July 13, 2007

Making Custom Chrome AIR Applications — A Tutorial

So you’ve probably tried playing around with Adobe Integrated Runtime (AIR) and had an idea to make a custom chrome application. A custom chrome application is one that does not use the typical operating system-provided chrome or application control window. As a result, is does not have standard controls, for example, to close or move the application window. At first glance creating a custom chrome application seems easy but it turns out to be a bit harder than it looks.

This tutorial assumes you are somewhat familiar with Flex programming (MXML and ActionScript) and have already installed the Flex Builder 2.01 and AIR extensions. If you’ve not done this, please visit Adobe Labs.

There are two important files you will have to work with to make your application chromeless. The first is the core AIR application, the second is the *-app.xml application descriptor file. This file is usually in the same directory as your base application. Go through the steps of setting up a new AIR project by selecting “File -> New –> AIR Project” from the Flex Builder Menu. Give your project a name (I called mine AIR_CustomChrome) and click “Finish”. You should have a file directory in the Navigator pane of your project that looks similar to this:







1. After you have set up a new project, you should be able to see the default code as follows:



<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<!--THIS IS WHERE TO ADD CODE-->
</mx:WindowedApplication>
 

2. In your *.MXML file, add the following lines of code to make the application. Insert them just below the “THIS IS WHERE TO ADD CODE” line:

<mx:TitleWindow id="mainPanel" backgroundColor="#0326FD" layout="absolute" cornerRadius="15" alpha="1.0" color="#FFFEFE" width="465" height="160" backgroundAlpha="0.7" borderColor="#1FBDF7" themeColor="#2FE7FD" x="0">

<mx:Label text="Look mom - no chrome!" width="400" textAlign="center" fontFamily="Verdana" fontSize="15" fontWeight="bold" x="22.5" y="10"/>

</mx:TitleWindow>
 

3. Test your application by running it. It should look like the image below. This application uses the system chrome, so on a Macintosh computer it will have the three little colored buttons on the top left and an application window to house the application.



4. Next, we are going to lose the system chrome. Open up the AIR_CustomChrome-app.xml file and locate the following line of code:


<rootContent systemChrome="standard" transparent="false" visible="true">[SWF reference is generated]</rootContent>
 

…and change it as follows (the parts highlighted in bold font) before saving and closing the file:


<rootContent systemChrome="none" transparent="true" visible="true">[SWF reference is generated]</rootContent>
 


This tells the runtime not to use system chrome and that the application has support for transparency.
You might think this would be enough but it is not.

If you run the application again, you will get an application that looks like the one below. Not only are you still stuck with chrome, but it is even uglier than before. We can fix this in the next steps.




5. The cause of this is the root element used by default by AIR. This element is the <mx:windowedapplication> tag. Change both the opening and closing tags to <mx:application> Your code should look something like this now:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="202" width="483">
<mx:TitleWindow id="mainPanel" backgroundColor="#0326FD" layout="absolute" cornerRadius="15" alpha="1.0" color="#FFFEFE" width="100%" height="100%" backgroundAlpha="0.7" borderColor="#1FBDF7" themeColor="#2FE7FD" x="0" >

<mx:Label text="Look mom - no chrome!" width="400" textAlign="center" fontFamily="Verdana" fontSize="15" fontWeight="bold" x="22.5" y="10"/>
</mx:TitleWindow>
</mx:Application>
 

…and it will yield the application below when run.

This is somewhat problematic as we have almost rid ourselves of the standard native window but have not yet introduced functionality to replace the standard chrome for things like moving or closing the application. To close the application you will have to use native operating system methods (for example on a Mac, highlight the app then hit Command-Q)



6. Note that the top right and left corners still have a tiny bit of gray color around the edges. This is still the default application window showing itself. To get rid of this, we have to introduce some lines of CSS inside the tag. Add these lines of code to your application just below the root tag.


<mx:Style>
Application
{
/*make app window transparent*/
background-color:"";
background-image:"";
padding: 0px;
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
}
</mx:Style>

 

This code sets the style for the Application component (now your root element) and will remove the gray. When you run the application again, it will be gone. Your application will also be semi-transparent as shown below.



7. We still have no way to move or close the application. In order to do this, we have to introduce some simple scripting elements. Start by adding a <mx:script> tag just below your <mx:style> tag and add the following lines of code:


<mx:Script>
<![CDATA[
import flash.display.Bitmap;

public function init():void {

// Move the app when the panel is dragged
mainPanel.addEventListener( MouseEvent.MOUSE_DOWN, startMove );

}

public function startMove(event:MouseEvent):void {
stage.window.startMove();
}
]]>
</mx:Script>

 

…and add the following method call to the root element:


creationComplete="init()"
 


…to call the init() function when the application starts up. When you run the application now, you can move it on your screen by clicking on it and dragging it.


8. We will want to add the ability to close the application. Luckily, the TitleWindow element has a built in close button. Add the following attributes to the <mx:titledwindow> element:


showCloseButton="true" close="closeEvent(event)"
 

9. Now that we have added the Close button, we have to import the ability to detect the CloseEvent. Add the following line of code in the <mx:script> element to import this functionality:


import mx.events.CloseEvent;
 

…then add the following function to your code base.


public function closeEvent(event:CloseEvent):void {
stage.window.close();
}
 

Your complete code should now look like this:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:utils="utils.*" creationComplete="init()" height="160" width="465" >

<mx:Style>
Application
{
/*make app window transparent*/
background-color:"";
background-image:"";
padding: 0px;
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
}
</mx:Style>

<mx:Script>
<![CDATA[
import flash.display.Bitmap;
import mx.events.CloseEvent;

public function init():void {

// Move the app when the panel is dragged
mainPanel.addEventListener( MouseEvent.MOUSE_DOWN, startMove );

}
public function startMove(event:MouseEvent):void {
stage.window.startMove();
}

public function closeEvent(event:CloseEvent):void {
stage.window.close();
}
]]>

</mx:Script>

<mx:TitleWindow id="mainPanel" backgroundColor="#0326FD" layout="absolute" cornerRadius="15" alpha="1.0"
color="#FFFEFE" width="465" height="160" backgroundAlpha="0.7" borderColor="#1FBDF7" themeColor="#2FE7FD"
x="0" showCloseButton="true" close="closeEvent(event)">

<mx:Label text="Look mom - no chrome!" width="400" textAlign="center" fontFamily="Verdana" fontSize="15" fontWeight="bold" x="22.5" y="10"/>
<mx:Label x="62.5" y="92" text="(c) Duane Nickull - samples at technoracle.blogspot.com"/>
</mx:TitleWindow>
</mx:Application>
 

Your application will now be chromeless and it actually can be closed by clicking on the Close button in the top right hand corner.

Drag and Drop AIR Example

Adobe Integrated Runtime (AIR) offers developers some pretty cool features. Nevertheless, as we work towards version 1.0, there is still some catch up work being done to add in basic functionality for things like drag and drop, local file save, read, etc. One of the topics I wanted to write more about is the drag and drop functionality.

So what is drag and drop really? When you start to look at the architectural pattern, it is one of copying an original and showing a thumbnail of the original while in transit to being placed somewhere else in the environment. There are two types of drag – the copy drag and the move drag. In the copy drag, the original is left in place and the copy is placed in the target location. In the move drag, the original is removed. This requires a little more care as you have to be certain you do not destroy the original until you have confirmed the target is complete.

The first thing to do is to write a function that creates the bitmap of the item being dragged to produce a smooth effect while running. This function builds the object to drag and returns it:


public function
createTransferableData(image:Bitmap, sourceFile:File):TransferableData{

var transfer:TransferableData = new TransferableData();

transfer.addData(image,"Bitmap",false);
transfer.addData(image.bitmapData,"bitmap",false);
transfer.addData(new Array(sourceFile),"file list",false);

return transfer;
}

The TransferableData object has some unique properties in the new AIR package. This object will come in four basic formats. They are "text" (string data), "url" (URL string), "file list" (array of File objects) and "bitmap". The key method is addData(),which builds the new object. It is important to note that transferable data objects may have redundant information in multiple formats -- this increases the likelihood that recipient applications will understand the object.

The DragManager object handles most of the actual operations at runtime. The code is relatively simple to set up:



private function onMouseDown(event:MouseEvent):void{
var bitmap:Bitmap = Bitmap(event.target.content);
var bitmapFile:File = new
File(event.target.content.loaderInfo.url);
var transferObject:TransferableData = createTransferableData(bitmap,bitmapFile);



DragManager.doDrag(this,transferObject,bitmap.bitmapData,new
Point(-mouseX),(-mouseY));
}



Several things are happening with this code. First, the original copy is left in place when the drag operation starts. If your intent is merely to copy the object to the target, that might be okay. When moving, there are ways to make the original appear to go away but it is trickier than it seems because you have to take precautions to make sure the target gets dropped before destroying the original.

Another issue with this code as written is that by default, the copied image will appear offset to the original and this can be slightly ugly. The placement of the copied image can be tweaked by adding some fine tuning of the points as follows:


DragManager.doDrag(this,transferObject,bitmap.bitmapData,new
Point((-mouseX+65),(-mouseY+90)));



Now when you start the drag, the drag object (in the code below anyways) appears right where the original was regardless of where the mouse is placed.

If you want the original to simply disappear, you can do it easily by adding the following line of code into the onMouseDown() class:


bitmap.visible=false;


However, this removes both the original and the copy if the user releases the mouse button before the drag is complete. A better way hide the original is to set the visible property to false on the specific object, but the code is not as portable since each time it is used the object will have to be explicitly named.

The best way to really do this is with the NativeDragComplete event from the DragManager. A drag gesture involves the following event sequence:

nativeDragStart: A drag-and-drop gesture is begun by calling the DragManager.doDrag() method within a mouseDown or mouseMoved event handler. The DisplayObject passed to the doDrag() method becomes the initiating object and will dispatch a nativeDragStart event. (If the drag and drop starts outside of an AIR application, the rest of the sequence of events is the same, but there is no initiating object.)

nativeDragEnter, nativeDragOver: When a drag gesture passes over a DisplayObject, that object will dispatch a nativeDragEnter event. While the drag gesture remains over the DisplayObject, it will continually dispatch nativeDragOver events. In response to either of these events, an object that serves as a potential drop target should check the properties of the event object to decide whether it can accept the drop. If the data format and allowed actions are appropriate, then the event handler for these events must call DragManager.acceptDrop(), passing in a reference to the target object. The user will then be able to drop the dragged item onto the target.

nativeDragExit: When a drag gesture passes out of a DisplayObject, the object dispatches a nativeDragExit event. If the object earlier called the DragManager.acceptDrop() method, that call is no longer valid and acceptDrop() must be called again if the gesture re-enters the DisplayObject.

nativeDragDrop: When a DisplayObject has called DragManager.acceptDrop() and the user releases the drag gesture over the object, that object dispatches a nativeDragDrop event. The handler for that event can access the data in the transferable property of the event object and should set the DragManager.dropAction property to signal which action should be taken by the initiating object.

nativeDragComplete: When the user releases the mouse at the end of a drag gesture, the initiating object dispatches a nativeDragComplete event (whether or not the drop itself was consummated). The handler for this event can check the dropAction property of the event object to determine what, if any, modification should be made to its internal data state, such as removing a dragged-out item from a list. If dropAction==DragActions.NONE, then the dragged item was not dropped on an eligible target.


Here is a screenshot of me dropping an image of the Leela Palace Hotel into this document, minus the mouse pointer:





The code to play around with this is below:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import flash.desktop.DragManager;
import flash.desktop.TransferableData;
import flash.desktop.DragManager;
import flash.filesystem.File;
import flash.events.NativeDragEvent;

private function onMouseDown(event:MouseEvent):void{
var bitmap:Bitmap = Bitmap(event.target.content);
var bitmapFile:File = new
File(event.target.content.loaderInfo.url);
var transferObject:TransferableData =
createTransferableData(bitmap,bitmapFile);
DragManager.doDrag(this,transferObject,bitmap.bitmapData,new
Point((-mouseX+65),(-mouseY+90)));
bitmap.visible=false; //makes the original disappear
}

public function createTransferableData(image:Bitmap, sourceFile:File):TransferableData{

var transfer:TransferableData = new TransferableData();
transfer.addData(image,"Bitmap",false);
transfer.addData(image.bitmapData,"bitmap",false);
transfer.addData(new Array(sourceFile),"file list",false);
return transfer;
}
]]>
</mx:Script>
<mx:Panel x="10" y="10" width="310" height="361" layout="absolute" title="Panel 1">
<!--replace image with one from your own system-->
<mx:Image x="35" id="duaneImage" y="38" width="204" height="155"
mouseDown="onMouseDown(event)"
source="file:////Users/duane/Desktop/Picture 1.png"
mouseDownOutside="duaneImage.visible=(false)"/>
</mx:Panel>
</mx:WindowedApplication>


Thursday, July 12, 2007

MAX 2007 Enterprise Tracks

We now have the final list of Enterprise & Collaboration tracks for Adobe MAX 2007 being held Sept 30-Oct 4 in Chicago, IL. The track focuses on topics like SOA and Web 2.0 Design Patterns for the enterprise and it has lots of PDF, LiveCycle, Flex, AIR and Acrobat Connect sessions. This is just a sample of the training and tracks offered at MAX 2007. There are four other tracks plus Boot Camps and more. If you are looking for LiveCycle or LiveCycle ES training, this is *the* place to be in 2007.

So what are you waiting for - sign up here now ;-)

Adding Dimension to Your Content with Acrobat 3D

Skill: Intermediate

Acrobat

This session covers the Acrobat 3D JavaScript API. Learn how to add script-based interactivity to 3D content inside PDF documents. We'll also explain how to create controls in the enclosing document for vertical solutions such as manufacturing. The session will provide scripting samples for developers as well as an overview of the new features available in the latest product release.


Monday, October 1 3:15 pm - 4:15 pm Grayson Lang, Rak Bhalla

Tuesday, October 2 1:30 pm - 2:30 pm Grayson Lang, Rak Bhalla
------------


Adobe Hosted Services: Web APIs and Mashups

Skill: General Audience

Connect, LiveCycle

This session will provide an overview of Adobe's newly announced "connected documents" initiatives. Learn about these new and exciting methods for improving document collaboration using Adobe technologies.


Monday, October 1 11:30 am - 12:30 pm Patrick Rodriguez, Nigel Pegg

Tuesday, October 2 2:45 pm - 3:45 pm Patrick Rodriguez, Nigel Pegg
------------

Adobe's "Mars" Project: XML-friendly PDF

Skill: Intermediate

Acrobat

This session will explore the decisions behind the "Mars" project, the effort to design a pure XML file format for expressing PDF. The talk will delve into the structure of the logical data model and review the major components. The presenters will show examples and discuss future plans for "Mars".


Tuesday, October 2 9:15 am - 10:15 am Joel Geraci

Wednesday, October 3 1:45 pm - 2:45 pm Joel Geraci
------------


Boot Camp for LiveCycle

Skill: Advanced

LiveCycle, Flex

Write code together with the LiveCycle development team in this three-hour collaborative session. Boot Camp provides a mixture of short presentations, workshops, and free-form coding. Make sure to bring your laptop, your best questions, your most desired features, your coolest projects to share, and be ready to learn something new.


Wednesday, October 3 9:00 am - 12:30 pm Matt Butler, Christoph Rooms
------------


Case Study: Advanced Real-World PDF Examples

Skill: General Audience

Acrobat

This session will showcase some very technically advanced PDF documents created for real-world applications by the Adobe developer/integrator community. We'll focus on four core examples from various vertical industries to show the depth and breadth of use of PDF for information delivery. Each case will examine the "code behind" and relay other developer and business tactics used in the sample.


Monday, October 1 2:00 pm - 3:00 pm Joel Geraci, Thom Parker

Tuesday, October 2 1:30 pm - 2:30 pm Joel Geraci, Thom Parker
------------


Case Study: How Reuters is Changing Step with Adobe Products

Skill: General Audience

Connect

Charles Jennings, global head of learning at Reuters, will present how this global information company is transforming its learning practices with Adobe technology. He will also explore Reuters' work with 24/7 performance support tools and a range of new learning approaches. Reuters works in the fast-moving world of banks and brokerages, supplying indispensable news and data that keeps the financial markets running. Speed and accuracy are key to Reuters' success, in both its services and the way in which it develops and trains its employees.


Monday, October 1 11:30 am - 12:30 pm Charles Jennings

Tuesday, October 2 1:30 pm - 2:30 pm Charles Jennings
------------


Case Study: Leading-Edge Use of PDF Documents in the Financial Industry

Skill: General Audience

LiveCycle

BusinessEdge, a business and technology consulting firm, will showcase how Adobe technology can help make the account enrollment process more engaging and more streamlined.


Monday, October 1 2:00 pm - 3:00 pm

Tuesday, October 2 2:45 pm - 3:45 pm
------------


Case Study: Transforming eGovernment with Software as a Service (SaaS)

Skill: General Audience

LiveCycle

This session will describe the design, development, and implementation of an eForms solution for a large consortium of local government agencies. The project included the development of 20-plus Adobe LiveCycle Form templates shared by all of the agencies. The resulting service is hosted and managed using a new Form Hosting product called FormCenter. FormCenter has been developed by Avoka Technologies for government and large organizations that need to implement customer-facing eForms solutions.


Monday, October 1 4:30 pm - 5:30 pm Philip Copeland

Wednesday, October 3 1:45 pm - 2:45 pm Philip Copeland
------------

Collaborative Hosted Services Roadmap

Skill: General Audience

Connect, LiveCycle

Come learn about Adobe's Collaborative Hosted Services. We'll provide a roadmap and introduction to new services being announced during MAX 2007.


Monday, October 1 3:15 pm - 4:15 pm Erik Larson

Wednesday, October 3 4:15 pm - 5:15 pm Erik Larson
------------


Documents 2.0: The Next Generation of Document Collaboration

Skill: Intermediate

Connect, LiveCycle

Documents are often the user's interface to any enterprise architecture, including SOA and web service infrastructures. Come learn more about using documents as front ends to your applications and solutions. See how the new web services-based family of servers from Adobe provides PDF file generation capability, document storage and sharing, and additional features to enhance your solutions and document roundtripping. This session will include an overview of these document services, the web services interface, and demonstrations of the capabilities of Adobe Integrated Runtime, Acrobat, and Flex (including LiveCycle Data Services).


Tuesday, October 2 9:15 am - 10:15 am Mark Grilli

Wednesday, October 3 3:00 pm - 4:00 pm Mark Grilli
------------

Everything You Want to Know about LiveCycle Form Guides

Skill: Intermediate

LiveCycle

This presentation begins with a general overview of LiveCycle Forms ES and then dives into how to use it as part of a data capture solution. From there, the presentation takes an in-depth look at Form Guides, which enable the creation of wizard-style Flash interfaces using Flex to make form filling easier and more intuitive, and allow for data exchange with the PDF form view.


Monday, October 1 4:30 pm - 5:30 pm Anthony Rumsey

Wednesday, October 3 4:15 pm - 5:15 pm Anthony Rumsey
------------

Extending the Product Lifecycle Management Enterprise with Adobe

Skill: General Audience

LiveCycle

Learn how Adobe LiveCycle products can enhance and extend the PLM Enterprise. This session will identify key weaknesses that exist in PLM products and describe how Adobe LiveCycle products can be used to address them. We will present a case study, demonstrate key functionality, and provide valuable ROI information that can be used to maximize the value of a PLM investment.


Tuesday, October 2 9:15 am - 10:15 am Jason Enzweiler

Tuesday, October 2 4:00 pm - 5:00 pm Jason Enzweiler
------------

Forms Gone Wild

Skill: Intermediate

LiveCycle

This session focuses on the user experience of forms and provides form designers with vital information on creating and deploying form solutions that facilitate a rich user experience. We'll share a top ten list of bad form design elements that apply to PDF, HTML, and Flex and Adobe Integrated Runtime (AIR) technologies.


Tuesday, October 2 9:15 am - 10:15 am Duane Nickull

Wednesday, October 3 4:15 pm - 5:15 pm Duane Nickull
------------

Hands On: Adobe Acrobat: I didn't know you could do that!

Skill: General Audience

Acrobat

Learn powerful techniques for using Adobe Acrobat 8, including scripting in Acrobat and programmatically controlling Acrobat and Reader. We'll cover working with a form, adding some JavaScript to manipulate a PDF document, embedding multimedia, setting up and participating in a PDF review cycle, and more. Get questions answered by a veteran PDF guru, and see tips and tricks used by expert PDF developers. Samples will be distributed.


Monday, October 1 2:00 pm - 3:30 pm Lori DeFurio

Tuesday, October 2 3:30 pm - 5:00 pm Lori DeFurio

Wednesday, October 3 1:45 pm - 3:15 pm Lori DeFurio

Wednesday, October 3 3:45 pm - 5:15 pm Lori DeFurio
------------

Hands On: Building a LiveCycle Center of Excellence

Skill: General Audience

LiveCycle

Learn how a Fortune 100 financial institution built a Center of Excellence around the Adobe LiveCycle product suite. Understand the business drivers that justified procuring Adobe's enterprise-strength software in an environment where multiple Business Process Management (BPM) tools existed. This methodology and lessons-learned session will demonstrate the necessary steps to create and implement a solution team that can increase delivery bandwidth by handling numerous endeavors simultaneously. Qualifying business opportunities, ensuring successful business solutions, implementing standards-based development, constructing a successful delivery team, managing system performance, and monitoring business metrics are all highlighted in this 90-minute session.


Tuesday, October 2 8:30 am - 10:00 am Justin Klei

Wednesday, October 3 1:45 pm - 3:15 pm Justin Klei
------------

Hands On: Building an Application Using LiveCycle ES

Skill: Intermediate

LiveCycle

This interactive session provides an overview of LiveCycle Enterprise Suite and then drills down into the primary components in the context of building an application. We'll also discuss the use case for LiveCycle ES in the industry and compare it to other platforms. NOTE: This is a deep-dive into LiveCycle ES where the participants can follow along on computers, but not where they are coding themselves.


Monday, October 1 11:30 am - 1:00 pm Sanga Viswanathan, Gary Gilchrist

Monday, October 1 4:00 pm - 5:30 pm Sanga Viswanathan, Gary Gilchrist
------------

Hands On: Building Custom Applications with LiveCycle Workspace

Skill: Advanced

LiveCycle, Flex

LiveCycle Workspace provides an intuitive Flex based user experience for initiating and participating in LiveCycle based forms and processes. LiveCycle Workspace provides Flex components, CSS templates, and UI source code to allow customers to customize and extend Workspace. This presentation walks through Workspace components, the underlying SDK, and deployment topologies, including customization.


Tuesday, October 2 1:30 pm - 3:00 pm Mark Bartel

Tuesday, October 2 3:30 pm - 5:00 pm Mark Bartel

Wednesday, October 3 1:45 pm - 3:15 pm Mark Bartel

Wednesday, October 3 3:45 pm - 5:15 pm Mark Bartel
------------

Hands On: Case Study: Insurance Agency Collaboration

Skill: General Audience

LiveCycle

Assurant will discuss how they have used Adobe technology to collaborate more effectively with their independent agent channels.


Monday, October 1 11:30 am - 1:00 pm

Monday, October 1 4:00 pm - 5:30 pm
------------

Hands On: Designing Dynamic Forms with LiveCycle Designer 8

Skill: Intermediate

Acrobat, LiveCycle

Learn how to design forms that people will love. This session examines the elements of good form design with hands-on examples in LiveCycle Designer 8. The session explores important concepts in graphic design and interaction design and shows how these concepts relate to successful form design. Too often, the people filling out forms are frustrated and confused by poorly designed forms. This session will improve your knowledge of design and your thinking about good form design. This session is led by J.P. Terry and there is more information on the SmartDoc website (www.smartdoctech.com).


Monday, October 1 2:00 pm - 3:30 pm J.P. Terry

Monday, October 1 4:00 pm - 5:30 pm J.P. Terry

Wednesday, October 3 11:00 am - 12:30 pm J.P. Terry
------------

Hands On: Designing PDF Forms and Flex-based Form Guides

Skill: Intermediate

LiveCycle

Get up-close and personal with Flex and XFA in this hands-on training session. You will learn how these two powerful technologies can be used together to offer your customers the best online and offline form-filling experiences. We will cover basic form design, scripting and data binding techniques while creating a dynamic PDF form which we will then easily re-purpose to a rich Flash-based wizard, deployable from LiveCycle Forms ES, using the Guide Builder tool.


Monday, October 1 2:00 pm - 3:30 pm Stefan Cameron

Tuesday, October 2 8:30 am - 10:00 am Stefan Cameron

Tuesday, October 2 3:30 pm - 5:00 pm Stefan Cameron

Wednesday, October 3 3:45 pm - 5:15 pm Stefan Cameron
------------

Hands On: LiveCycle ES Business Process Management and Design

Skill: Intermediate

LiveCycle

In this session, we'll explain the process management functionality in Adobe LiveCycle Enterprise Suite. Topics will include components, control flow, data types and mappings, exception handling, events, parallel flows, security, subprocesses, transactions, versioning, short- vs. long-lived processing, and reporting.


Monday, October 1 2:00 pm - 3:30 pm Matt Butler

Tuesday, October 2 8:30 am - 10:00 am Matt Butler, Bob Bailey
------------

Hands On: Rapid Training: Building a Curriculum in 60 Minutes or Less

Skill: General Audience

Connect

Learn to build a curriculum in an hour or less from start to delivery using Adobe Acrobat Connect Professional (formerly Macromedia Breeze). We'll cover authoring content, managing enrollment, and tracking participation.


Monday, October 1 11:30 am - 1:00 pm Randah McKinnie

Monday, October 1 4:00 pm - 5:30 pm Randah McKinnie

Tuesday, October 2 1:30 pm - 3:00 pm Randah McKinnie

Wednesday, October 3 1:45 pm - 3:15 pm Randah McKinnie
------------

Leveraging PDF within Adobe AIR Applications

Skill: Intermediate

Adobe Integrated Runtime, Acrobat

Adobe AIR is a cross-OS runtime that allows developers to leverage their existing web development skills (Flash, Flex, HTML,PDF, JavaScript, Ajax, etc.) to build rich Internet applications that can be deployed to the desktop. This session will examine how Adobe AIR applications can utilize PDF content alongside HTML and Flash. We will explore how PDF content can be interacted with using Adobe AIR functionality, integration, and scripting.


Monday, October 1 2:00 pm - 3:00 pm Rick Borstein

Tuesday, October 2 4:00 pm - 5:00 pm Rick Borstein
------------

LiveCycle Digital Security and Certification

Skill: Beginner

LiveCycle, Acrobat

This session will focus on the persistent rights management and document security technologies in the LiveCycle Enterprise Suite. The components explored will include LiveCycle Digital Signatures ES, LiveCycle Rights Management (formerly Policy Server), and LiveCycle User Manager. The thrust of the talk will focus on LiveCycle ES as a service oriented platform for delivering key interactions with remote clients but will also showcase core capabilities and delve quickly into SDK's and API's for developers.


Monday, October 1 4:30 pm - 5:30 pm Duane Nickull

Wednesday, October 3 1:45 pm - 2:45 pm Duane Nickull
------------

LiveCycle ES: Building Applications

Skill: General Audience

LiveCycle

In this one-day intensive course, you'll learn how to develop, streamline, integrate, and protect composite applications across geographical and organization boundaries with Adobe LiveCycle Enterprise Suite. By enabling service-oriented architecture (SOA) and business process management (BPM), LiveCycle ES allows both business and IT professionals to visually assemble end-to-end processes that unify systems, people, business rules, and web services quickly and flexibly. The basics of SOA solutions and using rich Internet applications are introduced, followed by an in-depth walkthrough of designing, deploying, and monitoring processes. We'll cover the use of form guides and Flex, development of web services to build the composite application, and the use of business rules in processes.


Sunday, September 3 09:00 am - 5:00 pm Bob Bailey
------------

LiveCycle Rights Management ES: Its Purpose, Scope, and Integration with Various Technologies and Formats

Skill: General Audience

Connect

In this session, we'll provide an overview of Adobe LiveCycle Rights Management ES and how it is used to protect content. Afterward, the session will focus on some common integration tasks, including integration with enterprise content management (ECM) software, product lifecycle management (PLM) software, authentication environments (such as ActiveDirectory and LDAP), and multiple file formats. Topics will include Rights Management Customer Configuration and architecture, integration strategy, integration points, and open-source products.


Monday, October 1 3:15 pm - 4:15 pm Shashi Rai

Wednesday, October 3 11:00 am - 12:00 pm Shashi Rai
------------

Pimp My PDF

Skill: Intermediate

Acrobat

Learn about developer interfaces, JavaScript, custom stamps, multimedia, and unconventional uses of form fields in Acrobat 8 to bring your documents to life and/or build Acrobat into your mission-critical application


Tuesday, October 2 2:45 pm - 3:45 pm Thom Parker

Wednesday, October 3 3:00 pm - 4:00 pm Thom Parker
------------

Realizing SOA Enterprise Architecture with LiveCycle ES

Skill: Advanced

LiveCycle

This session will walk through LiveCycle Enterprise Suite, a first-class implementation of the OASIS Reference model for SOA. We'll illustrate the overall architecture and major component groupings, including the core service container and service invocation layer. From there, the session will discuss the various architectural methods in which LiveCycle could be integrated into both front-end and back-end office systems, covering the "out-of-the-box" mechanisms available from LiveCycle ES for integration using e-mail, SQL, messaging, and web services. Also covered are more advanced use cases through component development, scripting, connectors, and leveraging existing middleware.


Monday, October 1 3:15 pm - 4:15 pm Charlton Barreto, Michael Moore

Tuesday, October 2 4:00 pm - 5:00 pm Charlton Barreto, Michael Moore
------------

SAP Interactive Forms by Adobe

Skill: General Audience

LiveCycle

Learn how a leading edge enterprise streamlined their processes by automating forms workflows with SAP Interactive Forms by Adobe, a key component in the SAP NetWeaver SOA platform. SAP Interactive Forms by Adobe allow the elimination of paper forms processes and enable users (regular and ad-hoc) interact with SAP back-end software in a document-centric workflow. Based on PDF document technology, they allow users enter and manipulate SAP data online or offline and on any platform through the ubiquitously deployed, free Adobe Reader.agent channels, improving agent productivity and loyalty.


Wednesday, October 3 9:30 am - 10:30 am

Wednesday, October 3 3:00 pm - 4:00 pm
------------

The Future of PDF and Standards

Skill: General Audience

Acrobat

In this session, we'll cover the details of Adobe's January 2007 announcement that it will submit PDF to the ISO as a public open standard. We'll also discuss the strategy of having multiple subsets of PDF also be ISO standards (PDF/A is ISO 19005-1 and PDF/X is ISO 15930-1). We'll also introduce Mars, an experimental, XML-friendly serialization of PDF introduced by Adobe, and discuss it within the context of the standards initiatives.


Monday, October 1 11:30 am - 12:30 pm Jim King

Tuesday, October 2 4:00 pm - 5:00 pm Jim King

------------

Adobe on AIR tour 2007 Vancouver. Ted’s Porsche upgrade / Nitobi rocks da house!

Friggin Awesome! Sharks with Friggin laser beams!! A jam session in a sauna?

The 2007 Adobe on AIR Bus Tour is now on its third city stop (Portland). This tour will keep the bus driving all summer long so check it out when they come to your town. This is one show you don’t want to miss. It reminded me of my old rock and roll days touring in a metal band. Of course there are some differences.

First – the guys on the bus play Guitar Hero rather than real instruments. Kind of cool given the instant gratification but as an accomplished musician (you can download my latest music for free here), I couldn’t bring myself to try it. Besides, you need long hair to really be a guitar hero right? I seemed to have thought so back in the 1980s (yes - that is me on the left):



Second – they don’t have to lug Ampeg 8x10 cabinets, Marshall Stacks, and drum kits up three flights of stairs. Trust me – this is a good thing.

They also have bloggers and other new media rather than traditional paparazzi. The media shape of the world has changed forever. This is also a good thing.

Last night the bus stopped in Vancouver, my home town. The venue was pretty surreal. We were in a greenhouse on the third floor of a downtown bar. I am not sure what rocket scientist built this without air conditioning, but last night was very hot. Finnish sauna makers should have been there to take notes.

The crowd was awesome! Vancouver developers and architects came out in droves and stayed for the entire five hours. Even the girls at the bar got into the act. Here is one wearing a Nitobi sticker.



Before the event, fellow Porsche owner and Adobe Evangelist Ted Patrick took me up on my offer to let him drive my Porsche 911 Twin Turbo with all the Ruf accessories. As you can see by this photo, Ted now wants to upgrade his Boxster. Ahh – there is no substitute! Non-Porsche owners will not understand this.



Anyways, the crowd on hand were awesome! Here is a shot from halfway back when a ton of people still could not get in the room. Standing room only. Mike Chambers, Kevin Hoyt, and Mike Downey all gave top-notch presentations which the developer crowd loved. Being on last, I was worried that there was going to be no way this crowd would stay here five hours but they did.



Then Andre Charland got up and blew everyone away. Nitobi's two demos and code samples include a Mac style dock with magnified apps built in AIR and a SalesForce.com offline AIR application with synch capabilities. The scary thing is both of these were written in so few lines of code. Andre is a genius and has the ability to consistently come up with clever little apps with his cohorts James, Alexei and Dave.

I am actually very surprised that Nitobi still exists as a stand alone company. I personally think they are the #1 acquisition target in the tech sector today. Profitable, on the leading edge, four evangelists and probably the coolest corporate culture in the industry ('Dre claims he got in 60+ days in Whistler last season ;-). DISCLAIMER: I am on the Advisory Board of Nitobi and have a financial interest. In the interest of transparency, I am following Redmonk's lead on my blog and disclosing any conflicts of interest to help readers come to their own conclusions.

Andre then proceeded to have several beers and make funny faces in front of cameras while showing off his new iPhone.



He was immediately joined by others:



Eventually even Ross Ladell (Blast Radius) and Adobe's own Suzanne got into the fray:



I'll leave it to your imagination what happened after a few more drinks in the hot greenhouse.

Anyways, I went on last trying in vain to measure up to the others and managed to squeak out a 20 minute summary on Adobe's technology platform architecture, showing its relevance to Web 2.0, SOA etc. As promised, the slides are available here. I only presented the first 15 or so due to time, but I will be recording a session with these later in the month for public consumption.

Monday, July 09, 2007

Wanted - lawyer in China to sue spammer ZXData

I guess with every success comes a dark side. Spammers from China have targeted my blog. The latest is a large series of spam attacks comes from a company called ZXData. The Whois reveals ZXData is:

Domain Name: ZXDATA.COM
Registrar: XIN NET TECHNOLOGY CORPORATION
Whois Server: whois.paycenter.com.cn
Referral URL: http://www.xinnet.com
Name Server: NS2.XINNET.CN
Name Server: NS2.XINNETDNS.COM
Status: ok
Updated Date: 18-jun-2007
Creation Date: 13-apr-2006
Expiration Date: 13-apr-2008

The key contact is:

cuijie
yichuan shanghai
shanghai Beijing 200040
CN
tel: 56528808
fax: 56528808
8112318888@sohu.com

I am willing to send a lawyer money who can do something about this. These morons are causing me so many headaches. I have even contemplated turning comment moderation on but given I am not able to get to comments fast enough, this would stiffle the interactions with this blog.

ZXData are obviously not smart nor are they particularly creative. Spamming me with links to falun gong and pornography do not impress me and will not entice me to do business with them.

I would ask that everyone who reads this and is pissed off take the time to email the person (click here to start - 8112318888@sohu.com) to tell them what they really think.

Lawyers in China - please send me proposals outlining how you can go after this spammer. They have caused me a great loss in productivity and I wish to recover it.