<?xml version="1.0" encoding="utf-8"?>
<!--

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.

-->
<root>
	<items>
		<item name="Properties" url="panel.swf" default="true" type="com.radii8.views.properties">
			<content>Shows the properties of the selected target</content>
		</item>
		<item name="Properties Example" url="modules/PropertiesExample.swf" type="com.radii8.views.propertiesexample">
			<content>Example that shows the properties of the selected target</content>
		</item>
		<item name="Outline Example" url="modules/Layers.swf" type="com.radii8.views.layer" default="true">
			<content>Shows the component tree of the selected target</content>
		</item>
		<item name="Styles" url="panel2.swf" type="com.radii8.views.styles">
			<content>Shows available styles of the selected target</content>
		</item>
		<item name="Constraints" url="panel2.swf" type="com.radii8.views.constraints">
			<content>Shows the constraint properties of top, bottom, left, right, vertical center and horizontal center</content>
		</item>
		<item name="History" url="panel2.swf" type="com.radii8.views.history">
			<content>Shows a list of the history of changes with undo and redo support</content>
		</item>
		<item name="Outline" url="panel2.swf" type="com.radii8.views.outline">
			<content>Shows an tree outline of components. Allows you to select components and set their visibility. This is the component tree not the display list</content>
		</item>
		<item name="Selector" url="panel2.swf" type="com.radii8.tools.selector" default="true">
			<content>Selects an item</content>
		</item>
	</items>
</root>