blob: 012b79a9847802eb6c37591e1e1fbb5b5f76906c [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" showFlexChrome="false"
showStatusBar="false" applicationComplete="init()" title="Tour de Flex" styleName="mainWindow"
width="1000" height="768" minWidth="1000" minHeight="700" xmlns:components="components.*"
visible="true" resize="window_resize(event)" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Style source="styles.css" />
<mx:Script>
<![CDATA[
import mx.events.AIREvent;
import mx.rpc.events.FaultEvent;
import components.QuickStartWindow;
import mx.events.ResizeEvent;
import mx.validators.EmailValidator;
// import TopPanels4_fla.MainTimeline;
import components.SplashWindow;
import mx.rpc.events.ResultEvent;
import classes.ObjectData;
import classes.Document;
import classes.ApplicationUpdaterManager;
import components.IllustrationTab;
import mx.events.CloseEvent;
import components.DownloadWindow;
import mx.controls.Alert;
import air.update.events.UpdateEvent;
import air.net.URLMonitor;
import mx.events.ItemClickEvent;
import components.WipeWindow;
import mx.events.FlexEvent;
import components.SearchWindow;
import mx.events.IndexChangedEvent;
import mx.managers.PopUpManager;
import components.CommentsWindow;
import mx.events.ListEvent;
//---- ADDED HS ------//
import mx.messaging.messages.IMessage;
import mx.rpc.events.ResultEvent;
// import merapi.BridgeInstance;
// import merapi.Bridge;
// import merapi.messages.Message;
// import merapi.messages.MerapiObjectMessage;
import mx.collections.ArrayCollection;
// import plugin.TDFPluginTransferObject;
import flash.utils.*;
import components.PluginDownloadWindow;
//--------------------------------------------------------------------------
// Variables
//--------------------------------------------------------------------------
[Bindable]
public var objectData:ObjectData;
private var applicationUpdaterManager:ApplicationUpdaterManager;
private var urlMonitor:URLMonitor;
private var hasSearchOpenedWhileCommenting:Boolean = false;
private var selectedDownloadPath:String = "";
private var selectedIllustrationURL:String = "";
private var previousTopLevelCategoriesText:String = "";
//---- ADDED HS ------//
private var dockImage:BitmapData;
// private var bridge:Bridge;
private var featuredSent:Boolean = false;
private var isPlugin:Boolean = false;
private var isStandAlone:Boolean = false;
private var comps:ArrayCollection= new ArrayCollection();
// private var pluginTransferObject:TDFPluginTransferObject;
[Bindable]
private var splashWindow:QuickStartWindow = new QuickStartWindow();
private var splashPlayed:Boolean = false;
private var expandMode:int = 0;
private var illustrationAutoExpanded:Boolean = false;
//--------------------------------------------------------------------------
// Loading/initializing for main application
//--------------------------------------------------------------------------
private function init():void
{
NativeApplication.nativeApplication.addEventListener(Event.EXITING, onExiting);
//Config.loadSettings();
Config.setLocalization();
Preferences.load();
objectData = new ObjectData();
applicationUpdaterManager = new ApplicationUpdaterManager();
urlMonitor = new URLMonitor(new URLRequest(Config.ONLINE_STATUS_URL));
urlMonitor.addEventListener(StatusEvent.STATUS, urlMonitor_status);
urlMonitor.pollInterval = 20000; // Every 20 seconds
urlMonitor.start();
// Request notification whenever the app is activated or deactivated
//this.addEventListener(AIREvent.APPLICATION_ACTIVATE, applicationActivate);
//this.addEventListener(AIREvent.APPLICATION_DEACTIVATE, applicationDeactivate);
// Use the loader object to load an image, which will be used for the systray
// After the image has been loaded into the object, we can prepare the application for docking to the system tray
var iconLoad:Loader = new Loader();
var loader:Loader = new Loader();
iconLoad.load(new URLRequest("app:/images/icons/tdfx_128.png"));
iconLoad.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
// Center app when it starts - will add code later to remember where it was last -- GAW
var currentScreen:Screen = getCurrentScreen();
stage.nativeWindow.x = (currentScreen.bounds.right / 2) - (this.width / 2);
stage.nativeWindow.y = (currentScreen.bounds.height / 2) - (this.height / 2);
if (stage.nativeWindow.x < 0) stage.nativeWindow.x = 0;
if (stage.nativeWindow.y < 0) stage.nativeWindow.y = 0;
}
private function getCurrentScreen():Screen{
var current:Screen;
var screens:Array = Screen.getScreensForRectangle(stage.nativeWindow.bounds);
(screens.length > 0) ? current = screens[0] : current = Screen.mainScreen;
return current;
}
public function showQuickStart():void
{
illustrationTabs.visible = false;
documentTabs.visible = false;
quickStartWindow.visible = true;
if(Config.IS_ONLINE )
{
quickStartWindow.location = Config.QUICK_START_REMOTE_URL;
}
else
{
quickStartWindow.location = Config.QUICK_START_LOCAL_URL;
}
}
private function closeQuickStart(event:CloseEvent = null):void
{
illustrationTabs.visible = true;
documentTabs.visible = true;
quickStartWindow.visible = false;
quickStartWindow.clearContents(); // to kill any running content
}
/**
* Called when the invoke event is fired, such as when this app is called. ADDED HS
*/
private function onInvoke(invokeEvt:InvokeEvent):void
{
// Here we need to figure out how the app was invoked, if from the Eclipse plug-in, then we should
// create the Merapi bridge. If not, then we should just set the app to visible since it starts off
// invisible so we can keep it in the system tray
/*
if (invokeEvt.arguments[0] == "plugin" && isPlugin == false) {
isPlugin = true;
bridge = Bridge.instance;
bridge.addEventListener(ResultEvent.RESULT,handleResponse);
} else { */
isStandAlone = true;
this.undock(invokeEvt);
/*}*/
// If started in stand alone mode and later invoked again as a plugin, send featured components - GAW
//if (isStandAlone && isPlugin) sendFeatured();
//if(!isPlugin && Config.USE_SPLASH && Preferences.preferencesXml.Splash.@skip != "true")
if(!isPlugin && Config.USE_SPLASH && !splashPlayed)
{
showQuickStart();
splashPlayed = true;
}
}
/*
private function sendFeatured():void {
// Never send featured components more than once
if (!featuredSent) {
var featuredComps:ArrayCollection = objectData.getFeaturedComponents();
var m : Message = new Message();
m.type = "FindFeaturedComponents";
m.data = featuredComps;
bridge.sendMessage(m);
featuredSent = true;
}
}
*/
private function urlMonitor_status(event:StatusEvent):void
{
Config.IS_ONLINE = urlMonitor.available;
if(Config.IS_ONLINE )
{
quickStartWindow.location = Config.QUICK_START_REMOTE_URL;
if(objectList.selectedId > 0)
button_comments.enabled = true;
}
else
{
quickStartWindow.location = Config.QUICK_START_LOCAL_URL;
button_comments.enabled = false;
}
}
private function confirmExit():void {
Alert.yesLabel = "Close";
Alert.noLabel = "Minimize";
Alert.show("Closing will cause the plug-in search capabilities to be rendered useless. Close or minimize?", "Close?", 3, this, confirmationClickHandler);
}
private function confirmationClickHandler(event:CloseEvent):void {
if (event.detail==Alert.YES) {
isPlugin = false;
NativeApplication.nativeApplication.dispatchEvent(new Event(Event.EXITING,true,true));
} else {
dock();
}
}
private function closeSplash():void {
PopUpManager.removePopUp(splashWindow);
//mx.core.Application.application.removeChild(movieBackground);
}
private function onExiting(exitingEvent:Event):void {
var winClosingEvent:Event;
// Kill the movie and it's background if it exists
//if (this.contains(movieBackground)) closeSplash();
exitingEvent.preventDefault();
if (isPlugin) {
undock(exitingEvent);
confirmExit();
return;
}
NativeApplication.nativeApplication.removeEventListener(Event.EXITING, onExiting);
for each (var win:NativeWindow in NativeApplication.nativeApplication.openedWindows) {
winClosingEvent = new Event(Event.CLOSING,false,true);
win.dispatchEvent(winClosingEvent);
if (!winClosingEvent.isDefaultPrevented()) {
win.close();
} else {
exitingEvent.preventDefault();
}
}
if (!exitingEvent.isDefaultPrevented()) {
Preferences.save();
}
}
//--------------------------------------------------------------------------
// Window events
//--------------------------------------------------------------------------
private function window_resize(event:ResizeEvent):void
{
if (documentTabs != null) documentTabs.needHtmlHack = false;
//if(splashWindow.video_intro)
//{
//splashWindow.width = this.width - splashWindow.x - 40;
//splashWindow.height = this.height - splashWindow.y - 65;
//splashWindow.video_intro.width = splashWindow.width;
//splashWindow.video_intro.height = splashWindow.height;
//}
}
//--------------------------------------------------------------------------
// Object list UI coordination/management
//--------------------------------------------------------------------------
private function objectList_change(event:ListEvent):void
{
var objectXml:XML = null;
documentTabs.needHtmlHack = true;
// Kill the movie and it's background if it exists
//if (this.contains(movieBackground)) closeSplash();
/*
// Get the object xml differently depending on if it was clicked from AIR side or plugin ... HS
if (event==null && pluginTransferObject!=null) {
objectXml = objectData.getXMLForObjectId(pluginTransferObject.selectedComponentId);
}
else
{ */
objectXml = XML(event.itemRenderer.data);
/*}*/
objectList.selectedId = objectXml.@id;
objectList.selectedObject = objectXml;
button_download.enabled = false;
button_comments.enabled = false;
button_expand.enabled = false;
button_browser.enabled = false;
if(objectList.selectedId > 0)
{
closeQuickStart();
label_objectName.text = objectXml.@name;
if(Config.IS_ONLINE)
{
//HTTP_GetCommentsTotal.send();
HTTP_logView.send();
button_comments.enabled = true;
}
searchWindow.visible = false;
commentsWindow.visible = false;
objectList.setDescription(objectXml.@description, objectXml.@dateAdded, objectXml.@author);
documentTabs.needHtmlHack = true;
//reset selected tab due to tab selection issue
documentTabs.selectedIndex = 0;
documentTabs.validateNow();
illustrationTabs.removeAll();
illustrationTabs.removeAllIllustrations();
var illustrations:XMLList = XMLList(objectXml.Illustrations.Illustration);
for each(var illustration:XML in illustrations)
{
var associatedDocuments:Array = new Array();
documentTabs.removeAllChildren();
var documents:XMLList = XMLList(illustration.Documents.Document);
for each(var document:XML in documents)
{
var documentPath:String = document.@path;
if(document.@localPath.toString().length > 0)
documentPath = document.@localPath;
associatedDocuments.push(new Document(document.@name, documentPath, document.@openLinksExternal));
}
if(!Config.IS_ONLINE && illustration.@localPath.toString().length == 0 && illustration.@path.toLowerCase().indexOf("http") == 0)
{
illustrationTabs.addTab(illustration.@name, Config.OFFLINE_URL, "", "", "", "", "", "", null);
}
else
{
var illustrationPath:String = illustration.@path;
if(illustration.@localPath.toString().length > 0)
illustrationPath = illustration.@localPath;
var illustrationDownloadPath:String = illustration.@downloadPath;
if(illustration.@localDownloadPath.toString().length > 0)
illustrationDownloadPath = illustration.@localDownloadPath;
illustrationTabs.addTab(illustration.@name, illustrationPath, Config.LOCAL_OBJECTS_ROOT_PATH, illustration.@isModule, illustrationDownloadPath, illustration.@autoExpand, illustration.@openLinksExternal, illustration.@scrollBars, associatedDocuments);
}
}
documentTabs.addTabs(illustrationTabs.associatedDocumentsCollection[0], Config.LOCAL_OBJECTS_ROOT_PATH);
if(illustrationTabs.numChildren > 0)
autoExpandIllustrationTab(IllustrationTab(illustrationTabs.getChildAt(0)).autoExpand);
if(illustrationTabs.numChildren > 0 && IllustrationTab(illustrationTabs.getChildAt(0)).downloadPath.length > 0)
{
button_download.enabled = true;
selectedDownloadPath = IllustrationTab(illustrationTabs.getChildAt(0)).downloadPath;
}
selectedIllustrationURL = IllustrationTab(illustrationTabs.getChildAt(0)).illustrationURL;
}
else
{
button_comments.label = "Comments";
}
}
private function illustrationTabs_change(event:IndexChangedEvent):void
{
var documents:Array = IllustrationTabs(event.currentTarget).associatedDocumentsCollection[event.newIndex];
documentTabs.addTabs(documents, Config.LOCAL_OBJECTS_ROOT_PATH);
var tab:IllustrationTab = IllustrationTab(IllustrationTabs(event.currentTarget).getChildAt(event.newIndex));
selectedDownloadPath = tab.downloadPath;
if(selectedDownloadPath.length == 0)
button_download.enabled = false;
else
button_download.enabled = true;
selectedIllustrationURL = tab.illustrationURL;
if(selectedIllustrationURL.length == 0)
button_browser.enabled = false;
else
button_browser.enabled = true;
autoExpandIllustrationTab(tab.autoExpand);
}
private function autoExpandIllustrationTab(autoExpand:Boolean):void
{
var documentsBox:DisplayObject = vdivider.getChildAt(1);
if(autoExpand)
{
//button_expand.enabled = false;
illustrationAutoExpanded = true;
documentsBox.height = 0;
}
else
{
button_expand.enabled = true;
illustrationAutoExpanded = false;
if(expandMode == 0) // showing split
documentsBox.height = vdivider.height/2;
else if(expandMode == 1) // showing illustrations
documentsBox.height = 0;
else if(expandMode == 2) // showing documents
documentsBox.height = vdivider.height;
}
}
private function toggleButtonBar_treeList_itemClick(event:ItemClickEvent):void
{
if(event.index == 0)
{
objectList.showTreeView(true);
comboBox_topLevelCategories.visible = false;
comboBox_topLevelCategories.height = 0;
}
else
{
objectData.sort(objectList.sortType);
objectList.showTreeView(false);
comboBox_topLevelCategories.visible = true;
comboBox_topLevelCategories.height = 22;
}
}
private function comboBox_topLevelCategories_change(event:ListEvent):void
{
searchWindow.clear();
objectData.filterTopLevelCategory(comboBox_topLevelCategories.selectedLabel);
objectData.sort(objectList.sortType);
}
private function objectList_sortChange(event:ListEvent):void
{
objectData.sort(objectList.sortType);
}
//--------------------------------------------------------------------------
// Comments window
//--------------------------------------------------------------------------
private function button_comments_click(event:MouseEvent):void
{
if(objectList.selectedId > 0)
{
var url:String = objectList.selectedObject.@commentsUrl;
if(url.length > 0)
navigateToURL(new URLRequest(url));
else
Alert.show("Comments are currently unavailable for this item.", "Unavailable");
}
}
/*
private function button_comments_click(event:MouseEvent):void
{
if(objectList.selectedId > 0)
{
commentsWindow.loadComments(objectList.selectedId, Config.IS_ONLINE);
commentsWindow.visible = true;
illustrationTabs.visible = false
previousTopLevelCategoriesText = comboBox_topLevelCategories.text;
}
}
private function processGetCommentsTotal(event:ResultEvent):void
{
var total:int = parseInt(event.result.toString());
button_comments.label = "Comments (" + total + ")";
}
private function processGetCommentsTotal_fault():void
{
//Alert.show('An Internet connection is required', 'Offline');
}
*/
private function HTTP_logView_fault(event:FaultEvent):void
{
//Alert.show('An Internet connection is required' + event.message, 'Offline');
}
//--------------------------------------------------------------------------
// Search window
//--------------------------------------------------------------------------
private function button_search_click(event:MouseEvent):void
{
// Kill the movie and it's background if it exists
//if (this.contains(movieBackground)) closeSplash();
if(button_search.selected)
{
if(commentsWindow.visible)
hasSearchOpenedWhileCommenting = true;
closeQuickStart();
commentsWindow.visible = false;
searchWindow.visible = true;
illustrationTabs.visible = false;
comboBox_topLevelCategories.enabled = false;
previousTopLevelCategoriesText = comboBox_topLevelCategories.text;
comboBox_topLevelCategories.text = "All";
}
else
{
searchWindow.visible = false;
comboBox_topLevelCategories.enabled = true;
comboBox_topLevelCategories.text = previousTopLevelCategoriesText;
}
}
private function searchWindow_submit(event:Event):void
{
toggleButtonBar_treeList.selectedIndex = 1;
objectList.showTreeView(false);
}
//--------------------------------------------------------------------------
// Shared wipe-window functionality and coordination
//--------------------------------------------------------------------------
private function wipedWindow_hide(event:FlexEvent):void
{
if(!hasSearchOpenedWhileCommenting)
{
illustrationTabs.visible = true;
button_search.selected = false;
comboBox_topLevelCategories.enabled = true;
comboBox_topLevelCategories.text = previousTopLevelCategoriesText;
}
hasSearchOpenedWhileCommenting = false;
}
//--------------------------------------------------------------------------
// Download window
//--------------------------------------------------------------------------
private function button_download_click(event:MouseEvent):void
{
if(objectList.selectedId > 0)
{
illustrationTabs.visible = false;
/*if (this.isPlugin && pluginTransferObject!=null)
{
var pluginPopup:PluginDownloadWindow = new PluginDownloadWindow();
pluginPopup.addEventListener(FlexEvent.REMOVE, downloadWindow_close);
PopUpManager.addPopUp(pluginPopup, this, true);
PopUpManager.centerPopUp(pluginPopup);
pluginPopup.download(selectedDownloadPath, pluginTransferObject.pluginDownloadPath, Config.LOCAL_OBJECTS_ROOT_PATH);
}
else {*/
var popup:DownloadWindow = new DownloadWindow();
popup.addEventListener(FlexEvent.REMOVE, downloadWindow_close);
PopUpManager.addPopUp(popup, this, true);
PopUpManager.centerPopUp(popup);
popup.download(selectedDownloadPath, Config.LOCAL_OBJECTS_ROOT_PATH);
/*}*/
}
}
private function button_browser_click(eveng:MouseEvent):void {
navigateToURL(new URLRequest(selectedIllustrationURL));
}
private function downloadWindow_close(event:FlexEvent):void
{
illustrationTabs.visible = true;
}
//--------------------------------------------------------------------------
// Plugin related
//--------------------------------------------------------------------------
// ----- ADDED THE REST OF THE SCRIPT... HS
/**
* Handle the Merapi communication from the plug-in
private function handleResponse(event:Event):void
{
var ev:ResultEvent = ResultEvent(event);
var msg:Message = Message(ev.result);
if (msg.type == "FindComponents") {
if (msg.data != null) {
var msgType:String = msg.type;
comps = objectData.getFilteredComponents(String(msg.data));
}
var m : Message = new Message();
m.type = "FindComponents";
m.data = comps;
bridge.sendMessage(m);
}
else if (msg.type == "SendPluginTO") {
pluginTransferObject = TDFPluginTransferObject(msg.data);
}
else if (msg.type == "Minimize") {
this.minimize();
}
else if (msg.type == "Dock") {
this.dock();
}
else if (msg.type == "Undock") {
// We need to figure out what the download path is from the returned message and set it
if (msg.data != null) {
pluginTransferObject = TDFPluginTransferObject(msg.data);
this.objectList_change(null); // Fire the navigation to the component double-clicked from plugin
}
this.undock(event);
}
else if (msg.type == "Exit") {
isPlugin = false;
onExiting(event);
}
}
**/
/**
* Prepare for docking
*/
public function prepareForSystray(event:Event):void {
// Immediately send featured component list to plugin, if plugin invoked
//if (isPlugin) sendFeatured();
if (event!=null)
// Retrieve the image being used as the systray icon
dockImage = event.target.content.bitmapData;
// If this is Mac...
if (NativeApplication.supportsDockIcon)
{
setDockProperties();
DockIcon(NativeApplication.nativeApplication.icon).menu = createSystrayRootMenu();
}
else
{
setSystemTrayProperties();
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = createSystrayRootMenu();
}
// If we are using this independent of the plug-in, we want to undock it because it was opened in
// docked mode and non-visible so that when the plug-in opens it, it does not flash onto the screen.
if (!isPlugin){
this.undock(null);
}
else this.dock();
}
/**
* Create a menu that can be accessed from the systray
*/
private function createSystrayRootMenu():NativeMenu{
var menu:NativeMenu = new NativeMenu();
var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");
var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");
openNativeMenuItem.addEventListener(Event.SELECT, undock);
exitNativeMenuItem.addEventListener(Event.SELECT, onExiting);
menu.addItem(openNativeMenuItem);
menu.addItem(exitNativeMenuItem);
return menu;
}
/**
* Add event listeners
*/
private function setDockProperties():void {
//Listen to the display state changing of the window, so that we can catch the minimize and dock
stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, processMinimized); //Catch the minimize event
}
/**
* To be able to dock and undock we need to set some eventlisteners
*/
private function setSystemTrayProperties():void {
SystemTrayIcon(NativeApplication.nativeApplication.icon).tooltip = "Tour de Flex";
SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK, undock);
stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, processMinimized); //Catch the minimize event
}
/**
* Do the appropriate actions after the windows display state has changed.
* E.g. dock when the user clicks on minimize
*
*/
private function processMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void {
// prevent the minimize
if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) {
displayStateEvent.preventDefault();
//Dock instead
dock();
}
}
/**
* Do our own 'minimize' by docking the application to the systray (showing the application icon in the systray)
*/
public function dock():void {
// Hide the applcation
stage.nativeWindow.visible = false;
//Setting the bitmaps array will show the application icon in the systray
NativeApplication.nativeApplication.icon.bitmaps = [dockImage];
}
/**
* Show the application again and remove the application icon from the systray
*
*/
public function undock(evt:Event):void {
// After setting the window to visible, make sure that the application is ordered to the front,
// else we'll still need to click on the application on the taskbar to make it visible
stage.nativeWindow.visible = true;
stage.nativeWindow.restore();
stage.nativeWindow.orderToFront();
stage.nativeWindow.activate();
// Clearing the bitmaps array also clears the applcation icon from the systray
NativeApplication.nativeApplication .icon.bitmaps = [];
// Force the application to the front with focus, then allow user to switch to other apps
if (isPlugin) {
this.alwaysInFront = true
this.activate();
this.alwaysInFront = false;
}
}
private function expandIllustration():void {
documentTabs.needHtmlHack = false;
if (expandMode == 0) {
sideBar.setStyle("resizeEffect", expandEffect);
sideBar.width = 0;
if (illustrationAutoExpanded)
{
expandMode = 3;
} else {
expandMode = 1;
}
} else if (expandMode == 1) {
docBox.setStyle("resizeEffect",expandEffect);
illBox.setStyle("resizeEffect",null);
sideBar.setStyle("resizeEffect", expandEffect);
vdivider.moveDivider(0,vdivider.height);
sideBar.width = 0;
expandMode=2;
} else if (expandMode == 2) {
docBox.setStyle("resizeEffect",null);
illBox.setStyle("resizeEffect",expandEffect);
vdivider.moveDivider(0, - (vdivider.height));
expandMode=3;
} else if (expandMode == 3) {
docBox.setStyle("resizeEffect",expandEffect);
illBox.setStyle("resizeEffect",null);
sideBar.width=230;
vdivider.moveDivider(0, + (vdivider.height/2));
expandMode=0;
}
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
]]>
</mx:Script>
<!--
<mx:HTTPService id="HTTP_GetCommentsTotal" showBusyCursor="false" result="processGetCommentsTotal(event)" resultFormat="e4x" fault="processGetCommentsTotal_fault()" url="{Config.DATA_EXCHANGE_URL}" useProxy="false" method="POST">
<mx:request xmlns="">
<Request>GetCommentsTotal</Request>
<ObjectId>{objectList.selectedId}</ObjectId>
</mx:request>
</mx:HTTPService>
-->
<mx:HTTPService id="HTTP_logView" showBusyCursor="false" resultFormat="e4x" fault="HTTP_logView_fault(event)" url="{Config.DATA_EXCHANGE_URL}" useProxy="false" method="POST">
<mx:request xmlns="">
<Request>logView</Request>
<ObjectId>{objectList.selectedId}</ObjectId>
<ObjectName>{label_objectName.text}</ObjectName>
</mx:request>
</mx:HTTPService>
<mx:Resize id="expandEffect" duration="200" />
<mx:VBox width="100%" height="100%" verticalGap="0" styleName="mainWindow">
<components:ApplicationHeader id="applicationHeader" />
<mx:HDividedBox styleName="mainBackground" width="100%" height="100%" paddingBottom="0" paddingLeft="12" paddingRight="0" paddingTop="7">
<mx:VBox id="sideBar" styleName="outerDividedBoxes" width="245" minWidth="0" height="100%" horizontalScrollPolicy="off" >
<mx:HBox width="100%" paddingRight="6">
<mx:ToggleButtonBar width="60" id="toggleButtonBar_treeList" itemClick="toggleButtonBar_treeList_itemClick(event)" >
<mx:dataProvider>
<mx:Object id="toggle_tree" icon="@Embed('images/toggle_tree.png')" toolTip="View Tree" />
<mx:Object id="toggle_list" icon="@Embed('images/toggle_list.png')" toolTip="View List" />
</mx:dataProvider>
</mx:ToggleButtonBar>
<mx:HBox width="100%" horizontalAlign="right">
<mx:Button id="button_search" label="Search ยป Filter" toggle="true" click="button_search_click(event)" labelPlacement="left" styleName="searchButton"/>
</mx:HBox>
</mx:HBox>
<mx:ComboBox id="comboBox_topLevelCategories" height="0" visible="false" rowCount="10" width="97%" dataProvider="{objectData.topLevelCategoriesXml}" change="comboBox_topLevelCategories_change(event)" />
<components:ObjectList id="objectList" treeDataProvider="{objectData.treeXml}" listDataProvider="{objectData.listXml}" change="objectList_change(event)" sortChange="objectList_sortChange(event)"/>
</mx:VBox>
<mx:Canvas id="box_illustrationsAndDocumentsOuterContainer" width="100%" height="100%">
<mx:VBox id="box_illustrationsAndDocuments" styleName="outerDividedBoxes" width="100%" height="100%" horizontalAlign="right" paddingRight="30" >
<mx:HBox id="box_illustrationControls" width="100%">
<mx:Label id="label_objectName" fontSize="10" fontWeight="bold" />
<mx:HBox width="100%" horizontalAlign="right" verticalAlign="middle">
<mx:LinkButton id="button_comments" click="button_comments_click(event)" label="Comments" fontSize="9" enabled="false" styleName="commentButton" />
<mx:LinkButton id="button_download" click="button_download_click(event)" label="Download" fontSize="9" enabled="false" styleName="downloadButton" />
<mx:LinkButton id="button_browser" click="button_browser_click(event)" label="Open in Browser" fontSize="9" enabled="false" styleName="buttonBrowser" />
<mx:LinkButton id="button_expand" click="expandIllustration()" label="Toggle Layout" fontSize="9" enabled="false" styleName="maximizeButton" />
</mx:HBox>
</mx:HBox>
<mx:VDividedBox id="vdivider" width="100%" height="100%">
<mx:VBox id="illBox" styleName="illustrationsBox" width="100%" height="100%" >
<components:IllustrationTabs id="illustrationTabs" change="illustrationTabs_change(event)" />
</mx:VBox>
<mx:VBox id="docBox" styleName="illustrationsBox" width="100%" height="100%">
<components:DocumentTabs id="documentTabs"/>
</mx:VBox>
</mx:VDividedBox>
</mx:VBox>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingRight="10">
<components:QuickStartWindow id="quickStartWindow" close="closeQuickStart(event)" width="100%" height="100%" />
</mx:VBox>
</mx:Canvas>
</mx:HDividedBox>
<components:ApplicationFooter />
</mx:VBox>
<!--<mx:Box id="movieBackground" backgroundColor="black" x="{splashWindow.x}" y="{splashWindow.y}" width="{splashWindow.width}" height="{splashWindow.height}"/>-->
<components:CommentsWindow id="commentsWindow" visible="false" hideComplete="wipedWindow_hide(event)" x="{box_illustrationsAndDocuments.x}" y="{box_illustrationsAndDocuments.y + applicationHeader.height}" width="{box_illustrationsAndDocuments.width}" height="{box_illustrationsAndDocuments.height}"/>
<components:SearchWindow id="searchWindow" visible="false" searchSubmit="searchWindow_submit(event)" objectData="{objectData}" searchTagsData="{objectData.searchTags}" hideComplete="wipedWindow_hide(event)" x="{box_illustrationsAndDocumentsOuterContainer.x}" y="{box_illustrationsAndDocumentsOuterContainer.y + applicationHeader.height}" width="{box_illustrationsAndDocumentsOuterContainer.width}" height="{box_illustrationsAndDocumentsOuterContainer.height}"/>
</mx:WindowedApplication>