<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?eclipse version="3.5"?>
<!--
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.
-->
<plugin>
    <extension point="org.eclipse.debug.ui.launchShortcuts">
        <shortcut class="org.apache.pivot.eclipse.PivotApplicationLaunchShortcut"
            icon="icons/logo-notext-16x16.png"
            label="Pivot Application"
            id="org.apache.pivot.eclipse.pivotApplicationLaunchShortcut"
            modes="run, debug">
            <contextualLaunch>
                <enablement>
                    <with variable="selection">
                        <count value="1"/>
                        <iterate>
                            <and>
                                <adapt type="org.eclipse.jdt.core.IJavaElement">
                                    <test property="org.eclipse.jdt.core.isInJavaProject"/>
                                </adapt>
                                <test property="org.eclipse.jdt.launching.extendsInterface"
                                    args="org.apache.pivot.wtk.Application"/>
                            </and>
                        </iterate>
                    </with>
                </enablement>
            </contextualLaunch>
        </shortcut>
    </extension>

    <extension point="org.eclipse.debug.ui.launchShortcuts">
        <shortcut class="org.apache.pivot.eclipse.PivotScriptApplicationLaunchShortcut"
            icon="icons/logo-notext-16x16.png"
            label="Pivot Script Application"
            id="org.apache.pivot.eclipse.pivotScriptApplicationLaunchShortcut"
            modes="run, debug">
            <contextualLaunch>
                <enablement>
                    <with variable="selection">
                        <count value="1"/>
                        <iterate>
                            <and>
                                <instanceof value="org.eclipse.core.resources.IFile"/>
                                <test property="org.eclipse.debug.ui.matchesPattern"
                                    value="*.bxml"/>
                            </and>
                        </iterate>
                    </with>
                </enablement>
            </contextualLaunch>
        </shortcut>
    </extension>
</plugin>