mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-19 16:48:42 +02:00
Flash navigator enhancements:
- The tooltip is always at 1:1 scale even if the whole graph is zoomed out. - Provide some feedback when an error occurs while loading the data (instead of spinning forever) SVN:trunk[825]
This commit is contained in:
@@ -65,7 +65,7 @@
|
||||
m_oIcon.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onLoadError);
|
||||
m_oIcon.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
|
||||
m_oIcon.load(myURL);
|
||||
addChild(m_oIcon);
|
||||
//addChild(m_oIcon);
|
||||
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
|
||||
addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
|
||||
addEventListener( MouseEvent.MOUSE_OVER, mouseOver );
|
||||
@@ -99,15 +99,16 @@
|
||||
// Add the Loader on the Sprite when the loading is completed
|
||||
m_oIcon.x = -m_oIcon.width / 2;
|
||||
m_oIcon.y = -m_oIcon.height + 8; // Slightly shifted downward
|
||||
|
||||
// Construct a tooltip
|
||||
addChild(m_oToolTip);
|
||||
addChild(m_oIcon);
|
||||
//hitArea = m_oIcon; // Drag only by the icon...
|
||||
trace('m_sLabel, getChildIndex:'+getChildIndex(m_sLabel));
|
||||
trace('m_oToolTip, getChildIndex:'+getChildIndex(m_oToolTip));
|
||||
trace('m_oIcon, getChildIndex:'+getChildIndex(m_oIcon));
|
||||
//swapChildren(m_oToolTip, );
|
||||
// Start the tooltip
|
||||
m_oToolTip.start();
|
||||
m_oToolTip.start();
|
||||
}
|
||||
|
||||
function mouseDown(event:MouseEvent):void
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package iTop
|
||||
package iTop
|
||||
{
|
||||
import flash.display.*;
|
||||
import flash.geom.*;
|
||||
@@ -35,7 +35,7 @@ package iTop
|
||||
protected var m_Ks = 30; // Solid friction coeff
|
||||
protected var m_deltaT = 0.1; // Interval of time between updates
|
||||
protected var m_MAX_ITEMS_PER_ROW = 8;
|
||||
protected var m_FOCUS_DELAY_COUNTDOWN = 50; // 50 images to zoom & pan correctly
|
||||
protected var m_FOCUS_DELAY_COUNTDOWN = 30; // 30 images to zoom & pan correctly
|
||||
protected var m_fZoom:Number;
|
||||
|
||||
// Constructor
|
||||
@@ -99,6 +99,10 @@ package iTop
|
||||
m_oCanvas.scaleX = m_fZoom;
|
||||
m_oCanvas.scaleY = m_fZoom;
|
||||
}
|
||||
function GetZommLevel()
|
||||
{
|
||||
return m_fZoom;
|
||||
}
|
||||
|
||||
function doLoadData()
|
||||
{
|
||||
@@ -119,25 +123,52 @@ package iTop
|
||||
|
||||
function onXMLLoadComplete(event:Event):void
|
||||
{
|
||||
var myXML:XML = XML(m_oLoader.data);
|
||||
//trace("Data loaded." + myXML);
|
||||
//trace("===========================");
|
||||
parseXMLData(null, myXML, 0, 0);
|
||||
m_sTitle.text = myXML.attribute("title");
|
||||
m_oZoomSlider.enabled = true;
|
||||
removeChild(m_oPreloader);
|
||||
addEventListener(Event.ENTER_FRAME, drawLines);
|
||||
m_oZoomSlider.value = 100;
|
||||
m_oZoomSlider.addEventListener(SliderEvent.CHANGE, onZoomChange);
|
||||
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
|
||||
stage.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
|
||||
//trace('======= Initial Posistions =========');
|
||||
//DumpPositions();
|
||||
try
|
||||
{
|
||||
var myXML:XML = XML(m_oLoader.data);
|
||||
//trace("Data loaded." + myXML);
|
||||
//trace("===========================");
|
||||
parseXMLData(null, myXML, 0, 0);
|
||||
m_sTitle.text = myXML.attribute("title");
|
||||
m_oZoomSlider.enabled = true;
|
||||
addEventListener(Event.ENTER_FRAME, drawLines);
|
||||
m_oZoomSlider.value = 100;
|
||||
m_oZoomSlider.addEventListener(SliderEvent.CHANGE, onZoomChange);
|
||||
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
|
||||
stage.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
|
||||
//trace('======= Initial Posistions =========');
|
||||
//DumpPositions();
|
||||
}
|
||||
catch(error:IOErrorEvent)
|
||||
{
|
||||
m_sTitle.text = "I/O Error: unable to load the graph data ("+error+")";
|
||||
}
|
||||
catch(error:TypeError)
|
||||
{
|
||||
m_sTitle.text = "Error: unable to load the graph data (Invalid XML data)";
|
||||
}
|
||||
catch(error:Error)
|
||||
{
|
||||
m_sTitle.text = "Error: unable to load the graph data ("+error+")";
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (m_oPreloader != null)
|
||||
{
|
||||
removeChild(m_oPreloader);
|
||||
m_oPreloader = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onXMLLoadError(event:IOErrorEvent):void
|
||||
{
|
||||
trace("An error occured:" + Event);
|
||||
if (m_oPreloader != null)
|
||||
{
|
||||
removeChild(m_oPreloader);
|
||||
m_oPreloader = null;
|
||||
}
|
||||
m_sTitle.text = "I/O Error: unable to load the graph data ("+event+")";
|
||||
}
|
||||
|
||||
function parseXMLData(oParentNode:GraphNode, oXMLData:XML, iChildIndex:Number, iChildCount:Number)
|
||||
@@ -363,6 +394,13 @@ package iTop
|
||||
trace('FOCUS_DELAY:'+this.m_FOCUS_DELAY_COUNTDOWN);
|
||||
UpdatePanAndZoom(m_FOCUS_DELAY_COUNTDOWN / 30);
|
||||
}
|
||||
else if (this.m_FOCUS_DELAY_COUNTDOWN == 0)
|
||||
{
|
||||
// Increase the friction so that manually manipulating objects gets easier
|
||||
trace("More friction now...");
|
||||
m_Ks = 5*m_Ks; // 5 times more friction
|
||||
this.m_FOCUS_DELAY_COUNTDOWN--;
|
||||
}
|
||||
}
|
||||
function drawArrow(oPt:Point, dx:Number, dy:Number, color:uint):void
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package iTop
|
||||
package iTop
|
||||
{
|
||||
import flash.display.*;
|
||||
import flash.geom.*;
|
||||
@@ -93,6 +93,10 @@ package iTop
|
||||
private function appear(i:uint):void
|
||||
{
|
||||
// The delay has elapsed, show (smoothly) the tooltip
|
||||
// Make sure that the tooltip always appears at se same scale 1:1 even
|
||||
// if the whole scene is zoomed out
|
||||
scaleX = 1 / this.parent.parent.scaleX;
|
||||
scaleY = 1 / this.parent.parent.scaleY;
|
||||
if (this.timer != null)
|
||||
{
|
||||
this.timer.stop();
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user