<?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.

-->
<project xmlns="http://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.ant.freeform</type>
    <configuration>
        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
            <name>Thread Demo</name>
            <properties>
                <property-file>user.build.properties</property-file>
                <property-file>build.properties</property-file>
            </properties>
            <folders>
                <source-folder>
                    <label>src</label>
                    <type>java</type>
                    <location>src</location>
                </source-folder>
                <source-folder>
                    <label>test</label>
                    <type>java</type>
                    <location>test</location>
                </source-folder>
            </folders>
            <ide-actions>
                <action name="build">
                    <target>build</target>
                </action>
                <action name="rebuild">
                    <target>clean</target>
                    <target>build</target>
                </action>
                <action name="clean">
                    <target>clean</target>
                </action>
                <action name="javadoc">
                    <target>javadoc-nb</target>
                </action>
                <action name="run">
                    <target>run</target>
                </action>
                <action name="debug">
                    <target>debug-nb</target>
                </action>
                <action name="test">
                    <target>test</target>
                </action>
                <action name="debug.fix">
                    <target>debug-fix-nb</target>
                    <context>
                        <property>fix.file</property>
                        <folder>src</folder>
                        <pattern>\.java$</pattern>
                        <format>relative-path-noext</format>
                        <arity>
                            <one-file-only/>
                        </arity>
                    </context>
                </action>
                <action name="compile.single">
                    <target>compile-selected-files-in-src</target>
                    <context>
                        <property>files</property>
                        <folder>src</folder>
                        <pattern>\.java$</pattern>
                        <format>relative-path</format>
                        <arity>
                            <separated-files>,</separated-files>
                        </arity>
                    </context>
                </action>
            </ide-actions>
            <view>
                <items>
                    <source-folder style="packages">
                        <label>Sources</label>
                        <location>src</location>
                    </source-folder>
                    <source-folder style="packages">
                        <label>Unit Tests</label>
                        <location>test</location>
                    </source-folder>
                    <source-file>
                        <location>logging.properties</location>
                    </source-file>
                    <source-file>
                        <location>user.build.properties</location>
                    </source-file>
                    <source-file>
                        <location>build.properties</location>
                    </source-file>
                    <source-file>
                        <location>build.xml</location>
                    </source-file>
                </items>
                <context-menu>
                    <ide-action name="build"/>
                    <ide-action name="rebuild"/>
                    <ide-action name="clean"/>
                    <ide-action name="javadoc"/>
                    <ide-action name="run"/>
                    <ide-action name="debug"/>
                    <ide-action name="test"/>
                </context-menu>
            </view>
        </general-data>
        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
            <compilation-unit>
                <package-root>src</package-root>
                <classpath mode="compile">${build.cp}</classpath>
                <classpath mode="execute">${run.cp}</classpath>
                <built-to>${build.classes.dir}</built-to>
                <built-to>${threaddemo.jar}</built-to>
                <built-to>${threaddemo-complete.jar}</built-to>
                <javadoc-built-to>${build.javadoc.dir}</javadoc-built-to>
                <source-level>1.5</source-level>
            </compilation-unit>
            <compilation-unit>
                <package-root>test</package-root>
                <unit-tests/>
                <classpath mode="compile">${test.build.cp}</classpath>
                <classpath mode="execute">${test.run.cp}</classpath>
                <built-to>${build.test.classes.dir}</built-to>
                <source-level>1.5</source-level>
            </compilation-unit>
        </java-data>
    </configuration>
</project>
