<?xml version="1.0"?>
<!--

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.

-->
<!--

-->

<!--

    Tools
    
    Be sure to include a reference to the classes in RadiateReferences
-->
<toolsPackage>

    <tool id="Selection" class="com.flexcapacitor.tools.Selection" 
    		inspector="com.flexcapacitor.views.SelectionInspector" 
    		include="true"/>
    
    <tool id="Zoom" class="com.flexcapacitor.tools.Zoom" 
    		inspector="com.flexcapacitor.views.ZoomInspector" 
    		include="true">
    		<cursors>
    			<cursor name="ZoomInCursor" x="10" y="10" />
    			<cursor name="ZoomOutCursor" x="10" y="10" />
    		</cursors>
    </tool>
    
    <tool id="EyeDropper" class="com.flexcapacitor.tools.EyeDropper" 
    		inspector="com.flexcapacitor.views.EyeDropperInspector" 
    		include="true">
    		<cursors>
    			<cursor name="Cursor" x="0" y="17" />
    		</cursors>
    </tool>

</toolsPackage>
