I have these two components (large callout and small callout) and they can both 
be displayed on the main stage at the same time via clicking a marker. If you 
click on a blue marker you get a large callout. If you click on a red marker 
you get a small callout. Should be fairly simple , right?

Well, what is happening is that if I have either type of callout open small or 
large, having clicked on a marker, and I click any other marker, blue or red, 
nothing happens. The new callout won't show up. Sometimes it shows up as a dot, 
like it started to be placed on screen and other times nothing at all appears. 
But as soon as I close the first callout, which is already opened, the second 
callout appears on the stage.

What is interesting is if I take out everything out of bigbox (inside 
largecallout) and everything out of smallbox (inside smallcallout) then this 
delay doesn't happen. 

----------- LargeCallout -------------------------

<?xml version="1.0" encoding="utf-8"?>
<fig:CalloutContainer 
        xmlns:fig="com.adobe.wheelerstreet.fig.callout.*" 
        xmlns="http://ns.adobe.com/mxml/2009";
        xmlns:mx="http://ns.adobe.com/mxml/2009";
        xmlns:gumbo="library:adobe/flex/gumbo"
        mouseOver="handleMouseRollOver(event)"
        mouseDown="stopProp(event)"
        mouseMove="stopProp(event)"
        creationComplete="init()"
    xmlns:components="com.company.networkmap.view.components.*">
        
        <mx:Script>
                <![CDATA[
                        import mx.messaging.AbstractConsumer;

                        import figit.vis.data.NodeSprite;
                        
                        import mx.events.FlexEvent;
                        import mx.collections.ArrayCollection;
                        
                        import com.company.networkmap.view.components.Sparkline;
                        
                        import com.flexcapacitor.controls.HTML;
                        import com.wrapper.base.application.*;
                        
                        [Bindable]
                        private var _origWidth:Number = 300;
                        [Bindable]
                        private var _origHeight:Number =170;
                        [Bindable]
                        private var _maxedWidth:Number = 600;
                        [Bindable]
                        private var _maxedHeight:Number = 450;
                        [Bindable]
                        private var _showMinMaxButtons:Boolean = true;
                        
                        /* AUTOCLOSE -- if set to true (default) clicking x 
will remove
                        this instance from its parent */
                        public var autoClose:Boolean = true;
                        public var device:String;
                        public var node:NodeSprite; 
                        
                        // BINDABLE VARIABLES 
--------------------------------------------------------------------
                        [Bindable]
                        private var _title:String = "title";
                        
                        [Bindable]
                        private var 
_nodeMinFirstLevelDataObject:ArrayCollection;
                        
                        // 2nd level data is only available/shown for 
networking devices.
                        [Bindable]
                        private var 
_nodeMaxSecondLevelDataObject:ArrayCollection;
                        

                        // PUBLIC CONST 
--------------------------------------------------------------------------
                        public static const SUPER_DETAILS_CLOSED:String         
        = "superDetailClosed";
                        public static const SUPER_DETAILS_OPENED:String         
        = "superDetailOpened";
                        public static const SUPER_DETAILS_MINIMIZED:String      
        = "superDetailMinimized";
                        public static const SUPER_DETAILS_MAXIMIZED:String      
        = "superDetailMaximized";
                        public static const SUPER_DETAILS_MOUSED_OVER:String    
= "superDetailsMousedOver";
                        
                        
                        private function init():void
                        {
                                trace('SuperDetailcallout created');
                        }
                        public function get title() : String 
                        {
                                return _title;
                        }
                        
                        public function set title( str:String ) : void
                        {
                                _title = str;
                        }
                        
                        public function set 
nodeMinFirstLevelDataObject(vo:ArrayCollection) : void
                        {
                                _nodeMinFirstLevelDataObject = vo;
                        }
                        
                        public function set 
nodeMaxSecondLevelDataObject(vo:ArrayCollection) : void
                        {
                                _nodeMaxSecondLevelDataObject = vo;
                        }
                        
                        public function set showMinMaxButtons(b:Boolean) : void
                        {
                                _showMinMaxButtons = b;
                        }
                        
                        public function set origWidth(n:Number) : void
                        {
                                        _origWidth = n;
                        }
                        
                        public function set origHeight(n:Number) : void
                        {
                                        _origHeight = n;
                        }
                        
                        public function set maxedWidth(n:Number) : void
                        {
                                        _maxedWidth = n;
                        }
                        
                        public function set maxedHeight(n:Number) : void
                        {
                                        _maxedHeight = n;
                        }
                
                        private function stopProp( event:MouseEvent ) : void
                        {
                                event.stopPropagation();
                        }
                        
                        
                        private function superDetailsOpened(  ) : void
                        {
                                trace( 'super detials created' );
                                dispatchEvent( new Event( SUPER_DETAILS_OPENED, 
true, false ) );
                        }
                        
                        private function superDetailsMinimized( event:FlexEvent 
) : void
                        {
                                trace(event);
                                event.stopPropagation();
                                dispatchEvent( new Event( 
SUPER_DETAILS_MINIMIZED, true, false ) );
                        }
                        
                        private function superDetailsMaximized( event:FlexEvent 
) : void
                        {
                                trace(event);
                                event.stopPropagation();
                                dispatchEvent( new Event( 
SUPER_DETAILS_MAXIMIZED, true, false ) );
                        }
                        
                        private function dispatchThenCloseNodeDetails( 
event:MouseEvent ) : void
                        {
                                event.stopImmediatePropagation();
                                //removeSuperDetails();
                                dispatchEvent( new Event( SUPER_DETAILS_CLOSED, 
true, false ) );
                                
                        }
                        
                        private function handleMouseRollOver(e:MouseEvent) : 
void
                        {
                                this.dispatchEvent( new MouseEvent( 
SUPER_DETAILS_MOUSED_OVER, true, false ) ); 
                        }
                        
                        private function createHTML():void {
                         
                }

                ]]>
        </mx:Script>
        
        <fig:states>
                <State name="minState" exitState="superDetailsMaximized(event)" 
/>
        <State name="maxState" basedOn="minState" 
exitState="superDetailsMinimized(event)" />
        </fig:states>
         <fig:transitions>
        <mx:Transition fromState="*" toState="maxState">
                <mx:Sequence>
                                <mx:Resize target="{ bigbox }" duration="200"/>
                                
                </mx:Sequence>
        </mx:Transition>
        <mx:Transition fromState="maxState" toState="*">
                        <mx:Sequence>
                                <mx:Resize target="{ bigbox }" duration="150"/>
                        </mx:Sequence>
        </mx:Transition>
        </fig:transitions>

        
        <mx:Canvas id="main" includeIn="minState, maxState">
                <Label id="nameLabel" styleName="callOutHeader" 
                        text="Greg" 
                        truncateToFit="true" 
                        left="5" width="100"
                
                        />
                        
                <mx:Button 
                                id="closeButton" 
                                styleName="CalloutCloseButton" 
                                right="0"
                                width="14" height="14" 
                                click="{dispatchThenCloseNodeDetails( event )}"
                                />
                
                <mx:Button 
                        id="expandButton"
                        enabled="{_showMinMaxButtons}"
                        includeInLayout="{_showMinMaxButtons}" 
                        visible="_showMinMaxButtons{}"
                        styleName="CalloutExpandButton"  
                        right="{closeButton.width + 2}"
                        width="14" height="14" 
                        click.minState="currentState='maxState'" 
click.maxState="currentState='minState'"
                        />
                <mx:VBox id="titleBar" 
                        top="18" 
                        >
                
                <Canvas id="detailsHolder" 
                        borderStyle="solid" 
                        cornerRadius="10" 
                        backgroundColor="0xFFFFFF"
                        
                        >
                                
                        <Canvas id="bigbox"
                                width.minState="{_origWidth}" 
                                height.minState="{_origHeight}"
                    width.maxState="{_maxedWidth}" 
                    height.maxState="{_maxedHeight}" 
                    >
                        
                        <!--<components:Sparkline id="sparkline" width="100%" 
includeIn="minState"/>-->
                        <components:MinSuperDetailViewComp width="100%" 
height="100%" includeIn="minState"/>
                        <components:MaxSuperDetailViewComp width="100%" 
height="100%" includeIn="maxState"/>
                                
                        </Canvas>
                </Canvas>
                </mx:VBox>      
                
        </mx:Canvas>
        
</fig:CalloutContainer>


------------ SmallCallout ------------------------

<?xml version="1.0" encoding="utf-8"?>
<fig:CalloutContainer 
        xmlns:fig="com.adobe.wheelerstreet.fig.callout.*" 
        xmlns="http://ns.adobe.com/mxml/2009";
        xmlns:mx="http://ns.adobe.com/mxml/2009";
        xmlns:gumbo="library:adobe/flex/gumbo"
        xmlns:components="com.company.project.view.components.*"
        borderStyle="topRightCallout"
        mouseDown="stopProp(event)"
        mouseMove="stopProp(event)"
        mouseOver="handleMouseOver(event)"
    >
        
        <mx:Script>
                <![CDATA[
 
                        import figit.vis.data.EdgeSprite;
                        
                        import mx.events.FlexEvent;
                        
                        import com.company.project.view.components.Sparkline; 
                        
                        [Bindable]
                        private var _origWidth:Number = 180;
                        [Bindable]
                        private var _origHeight:Number = 30;
                        [Bindable]
                        private var _maxedWidth:Number = 100;
                        [Bindable]
                        private var _maxedHeight:Number = 50;
                        [Bindable]
                        private var _showMinMaxButtons:Boolean = true;
                        [Bindable]
                        public var bgArray:Array;
                        
                        
                        private var _usage:Number;
                        
                        /* AUTOCLOSE -- if set to true (default) clicking x 
will remove
                        this instance from its parent */
                        public var autoClose:Boolean = true;
                        public var device:String;
                        public var edge:EdgeSprite; 
                        
                        [Bindable]
                        public var title:String = "title";
                        [Bindable]
                        public var line1:String = "line1";
                        [Bindable]
                        public var line2:String = "line2";
                        
                        public static const SUPER_EDGE_DETAILS_CLOSED:String    
        = "superEdgeDetailClosed";
                        public static const SUPER_EDGE_DETAILS_OPENED:String    
        = "superEdgeDetailOpened";
                        public static const SUPER_EDGE_DETAILS_MINIMIZED:String 
        = "superEdgeDetailMinimized";
                        public static const SUPER_EDGE_DETAILS_MAXIMIZED:String 
        = "superEdgeDetailMaximized";
                        public static const 
SUPER_EDGE_DETAILS_MOUSED_OVER:String       = "superEdgeDetailsMousedOver";
                        
                        public function set usage(perc:Number) : void
                        {
                                if(perc < .5){
                                                bgArray = [0xffEFEFEF, 
0xffBFBFBF];                             
                                }else if(perc > .5 && perc < .7){
                                                bgArray = [0xffFFF4BF, 
0xffFFE56F];
                                }else{
                                                bgArray = [0xffFFBFBF, 
0xffFF7F7F];
                                }               
                                
                                this.setStyle( 'backgroundGradientColors', 
bgArray);
                                this.invalidateDisplayList();
                                this.invalidateProperties();
                                
                                /* if(bgArray != null){
                                        this.setStyle( 
'backgroundGradientColors', bgArray);
                                        this.invalidateDisplayList();
                                        this.invalidateProperties();
                                } */
                                
                        }
                        
                        public function set showMinMaxButtons(b:Boolean) : void
                        {
                                _showMinMaxButtons = b;
                        }
                        
                        public function set origWidth(n:Number) : void
                        {
                                        _origWidth = n;
                        }
                        
                        public function set origHeight(n:Number) : void
                        {
                                        _origHeight = n;
                        }
                        
                        public function set maxedWidth(n:Number) : void
                        {
                                        _maxedWidth = n;
                        }
                        
                        public function set maxedHeight(n:Number) : void
                        {
                                        _maxedHeight = n;
                        }
                
                        private function stopProp( event:MouseEvent ) : void
                        {
                                event.stopPropagation();
                        }
                        
                        private function handleMouseOver( event:Event ) : void
                        {
                                dispatchEvent( new Event( 
SUPER_EDGE_DETAILS_MOUSED_OVER, true, false ) );
                        }
                        
                        
                        private function superEdgeDetailsOpened(  ) : void
                        {
                                trace( 'super detials created' );
                                dispatchEvent( new Event( 
SUPER_EDGE_DETAILS_OPENED, true, false ) );
                        }
                        
                        private function superEdgeDetailsMinimized( 
event:FlexEvent ) : void
                        {
                                trace(event);
                                event.stopPropagation();
                                dispatchEvent( new Event( 
SUPER_EDGE_DETAILS_MINIMIZED, true, false ) );
                        }
                        
                        private function superEdgeDetailsMaximized( 
event:FlexEvent ) : void
                        {
                                trace(event);
                                event.stopPropagation();
                                dispatchEvent( new Event( 
SUPER_EDGE_DETAILS_MAXIMIZED, true, false ) );
                        }
                        
                        private function dispatchThenCloseEdgeDetails( 
event:MouseEvent ) : void
                        {
                                event.stopImmediatePropagation();
                                dispatchEvent( new Event( 
SUPER_EDGE_DETAILS_CLOSED, true, false ) );
                                removeEdgeSuperDetails();
                                
                        }
                        
                        public function removeEdgeSuperDetails() : void
                        {
                                if(autoClose){ this.parent.removeChild( this ) 
};
                        }
                        
                        
                        
                        
                ]]>
        </mx:Script>
        
        
        <mx:Canvas id="contentVBox" >
                <Label id="nameLabel" styleName="callOutHeader" 
                        text="Bandwidth Usage" 
                        truncateToFit="true" 
                        left="5" width="150"
                
                        />
                        
                <mx:Button 
                                id="closeButton" 
                                styleName="CalloutCloseButton" 
                                right="0"
                                width="14" height="14"  
                                click="{dispatchThenCloseEdgeDetails( event )}"
                                />
                <mx:VBox id="titleBar" 
                        top="18" 
                        >
                        
                <Canvas 
                        id="smallbox"
                        borderStyle="solid" 
                                cornerRadius="5" 
                                backgroundColor="0xFFFFFF">
                                
                        <mx:HBox top="5" id="bigbox" width="{_origWidth}" 
height="{_origHeight}" >
                                        <components:Sparkline id="sparkline" 
width="100%"  />
                                                
                           </mx:HBox>
                </Canvas>
                           
                                        
                </mx:VBox>      
                
        </mx:Canvas>
        
        
</fig:CalloutContainer>



Reply via email to