//////////////////////////////////////////////////////////////////////////////// // // 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. // //////////////////////////////////////////////////////////////////////////////// package mx.controls.treeClasses { import flash.events.MouseEvent; import mx.controls.listClasses.MXItemRenderer; import mx.controls.Tree; import mx.core.mx_internal; import mx.events.TreeEvent; import spark.components.Group; use namespace mx_internal; //-------------------------------------- // Excluded APIs //-------------------------------------- [Exclude(name="listData", kind="property")] /** * The MXTreeItemRenderer class defines the Spark item renderer class * for use with the MX Tree control. * This class lets you use the Spark item renderer architecture with the * MX Tree control. * * @mxml * *
The <s:MXTreeItemRenderer >
tag inherits all of the tag
* attributes of its superclass and adds the following tag attributes:
* <s:MXItemRenderer * Properties * /> ** * @see mx.controls.Tree * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion Flex 4 */ public class MXTreeItemRenderer extends MXItemRenderer { //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion Flex 4 */ public function MXTreeItemRenderer() { super(); } //---------------------------------- // disclosureGroup //---------------------------------- /** * storage for disclosureGroup */ private var _disclosureGroup:Group; /** * If supplied, the component that will be used as the Tree's * disclosure control. * Clicking on this control dispatches * the tree events, such as
itemClose
and itemOpen
,
* and the click
event is not propagated
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
public function get disclosureGroup():Group
{
return _disclosureGroup;
}
/**
* @private
*/
public function set disclosureGroup(value:Group):void
{
if (value != _disclosureGroup)
{
if (_disclosureGroup)
{
_disclosureGroup.removeEventListener(MouseEvent.MOUSE_DOWN,
disclosureGroup_mouseDownHandler);
_disclosureGroup.removeEventListener(MouseEvent.CLICK,
disclosureGroup_clickHandler);
}
_disclosureGroup = value;
if (_disclosureGroup)
{
_disclosureGroup.addEventListener(MouseEvent.MOUSE_DOWN,
disclosureGroup_mouseDownHandler);
_disclosureGroup.addEventListener(MouseEvent.CLICK,
disclosureGroup_clickHandler);
}
}
}
//----------------------------------
// treeListData
//----------------------------------
[Bindable("dataChange")]
/**
* The implementation of the listData
property
* as defined by the IDropInListItemRenderer interface.
* Use this property to access information about the
* data item displayed by the item renderer.
*
* @see mx.controls.listClasses.IDropInListItemRenderer
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get treeListData():TreeListData
{
return listData as TreeListData;
}
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* @private
* Handle special behavior when clicking on the disclosure icon
*/
protected function disclosureGroup_mouseDownHandler(event:MouseEvent):void
{
event.stopPropagation();
if (Tree(listData.owner).isOpening || !listData.owner.enabled)
return;
treeListData.open = !treeListData.open;
Tree(listData.owner).dispatchTreeEvent(TreeEvent.ITEM_OPENING,
data, //item
this, //renderer
event, //trigger
treeListData.open, //opening
true, //animate
true) //dispatch
}
/**
* @private
* Handle special behavior when clicking on the disclosure icon
*/
protected function disclosureGroup_clickHandler(event:MouseEvent):void
{
// stop this event from bubbling up because the click is
// for item selection and clicking on the disclosureIcon doesn't
// select the items (only expands/closes them).
event.stopPropagation();
}
}
}