blob: 01fe4d740813f9d239b511b8c61ac9c00fb7f194 [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:TabNavigator xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="components.*"
width="100%" height="100%" styleName="documentTabs" selectedTabTextStyleName="documentTabSelected">
<mx:Script>
<![CDATA[
import classes.Document;
import mx.controls.HTML;
import mx.containers.VBox;
public var needHtmlHack:Boolean = false; // This is a total hack to work around TWO bugs in Flex. Ask Greg Wilson for details
public function addTabs(documents:Array, localRootPath:String):void
{
this.selectedIndex = 0;
this.validateNow();
this.removeAllChildren();
for each(var document:Document in documents)
this.addTab(document.name, document.path, document.openLinksExternal, localRootPath);
}
// There is a bug in the Flex 3.2 html control where the default font is set too large. This method puts it back to the desired default of 11px.
public function changeDefaultFont(e:Event):void {
var frames:Object = e.target.htmlLoader.window.document.getElementsByTagName("frame");
if (frames.length == 0)
{
// document does not have frames
if(e.target.htmlLoader.window.document.getElementsByTagName("body")[0])
e.target.htmlLoader.window.document.getElementsByTagName("body")[0].style.fontSize="11px";
}
else
{
// document has frames... change style for document in each frame
for (var i:int=0;i<frames.length;i++)
{
if(frames[i].contentDocument.getElementsByTagName("body")[0])
frames[i].contentDocument.getElementsByTagName("body")[0].style.fontSize="11px";
}
}
e.target.visible = true;
}
public function removeCleanup(e:Event):void {
if (this.needHtmlHack) {
//trace("CLEANUP");
e.target.htmlText = ""; // Hack - GAW - forces any loaded SWFs to stop
}
}
public function addTab(name:String, path:String, openLinksExternal:String, localRootPath:String):void
{
var tab:VBox = new VBox();
tab.percentWidth = 100;
tab.percentHeight = 100;
if(name.length == 0)
tab.label = getFileName(path);
else
tab.label = name;
this.addChild(tab);
var html_illustration:HTML = new HTML();
html_illustration.percentWidth = 100;
html_illustration.percentHeight = 100;
html_illustration.visible = false; // Set to true after changeDefaultFont
html_illustration.addEventListener(Event.COMPLETE,changeDefaultFont);
html_illustration.addEventListener(Event.REMOVED_FROM_STAGE, removeCleanup);
tab.addChild(html_illustration);
if (openLinksExternal.toLowerCase() == "true")
{
html_illustration.htmlLoader.navigateInSystemBrowser = true; // Open links in default browser
}
if(path.toLowerCase().indexOf("http") == 0)
{
if(Config.IS_ONLINE)
html_illustration.location = path;
else
html_illustration.location = Config.OFFLINE_URL;
}
else
{
html_illustration.location = localRootPath + path;
}
}
private function getFileName(path:String):String
{
var fileName:String = "";
var slashPos:int = path.lastIndexOf("/");
var backslashPos:int = path.lastIndexOf("\\");
if(slashPos > 0)
fileName = path.substr(slashPos+1);
else if(backslashPos > 0)
fileName = path.substr(backslashPos+1);
else
fileName = "Document";
return fileName;
}
]]>
</mx:Script>
</mx:TabNavigator>