<library>
<!--
  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.
  
-->

<class name="miniIconsPresenter" extends="view">
    
    <attribute name="iconRessourceName" value="" type="string"/>
    
    <handler name="onmouseover">
        this._bg.setAttribute("bgcolor",0xFFFFFF);
        this._bg.setAttribute("visibility","visible");
    </handler>
    
    <handler name="onmouseout">
        this._bg.setAttribute("visibility","hidden");
    </handler>
    
    <handler name="onmousedown">
        this._bg.setAttribute("bgcolor",canvas.getThemeColor('basebgcolorizer'));
        this._bg.setAttribute("visibility","visible");
    </handler>
    
    <handler name="onmouseup">
        this._bg.setAttribute("visibility","hidden");
    </handler>
    
    <view name="_bg" visibility="hidden" opacity="0.7"
          width="14" height="14" x="1" y="1" bgcolor="0xFFFFFF" />
          
    <view name="_itemRsc" resource="$once{ parent.iconRessourceName }" />
    
</class>

</library>
