<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
This program and the accompanying materials are made available under the terms
of the Eclipse Public License v1.0 which accompanies this distribution, and is 
available at http://www.eclipse.org/legal/epl-v10.html

Initial Contributors:
The following IBM employees contributed to the Remote System Explorer
component that contains this file: David McKnight, Kushal Munir, 
Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson, 
Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.

Contributors:
Martin Oberhuber (Wind River) - [180519] declaratively register adapter factories
Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
Martin Oberhuber (Wind River) - [186748] Move ISubSystemConfigurationAdapter from UI/rse.core.subsystems.util
Anna Dushistova  (MontaVista) - [226550] [api] Launch Shell and Launch Terminal actions should be contributed declaratively
Anna Dushistova  (MontaVista) - [234274][api] Launch Shell / Terminal commands menu placement and category
Anna Dushistova  (MontaVista) - [235934] Launch Shell/Terminal commands enabled when selection is empty
Anna Dushistova (MontaVista)  - [252058] Actions for shells subsystem should be contributed declaratively
Anna Dushistova  (MontaVista) - [251492] Launch Shell Action is enabled in Offline mode
Kevin Doyle		 (IBM)		  - [249320] Launch Shell action not available in Remote System Details/Monitor views
-->
<?eclipse version="3.0"?>
<plugin>

<!-- ============================================ -->
<!-- Register Adapter Factories                   -->
<!-- ============================================ -->
 
	<extension point="org.eclipse.core.runtime.adapters">
		<!-- Remote Error --> 
		<factory 
			class="org.eclipse.rse.internal.shells.ui.view.SystemViewOutputAdapterFactory" 
			adaptableType="org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteError">
            <adapter type="org.eclipse.rse.ui.view.ISystemViewElementAdapter"/>
			<adapter type="org.eclipse.rse.core.subsystems.ISystemDragDropAdapter"/>
			<adapter type="org.eclipse.rse.ui.view.ISystemRemoteElementAdapter"/>
			<adapter type="org.eclipse.ui.views.properties.IPropertySource"/>
			<adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
			<adapter type="org.eclipse.ui.IActionFilter"/>
			<!-- TODO Check: These are not in the adapter factories 
			     getAdapterList() Although the adapter implements them
			<adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
			<adapter type="org.eclipse.rse.core.subsystems.IRemoteObjectIdentifier"/>
			-->
		</factory> 
		<!-- Remote Output --> 
		<factory 
			class="org.eclipse.rse.internal.shells.ui.view.SystemViewOutputAdapterFactory" 
			adaptableType="org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteOutput">
            <adapter type="org.eclipse.rse.ui.view.ISystemViewElementAdapter"/>
			<adapter type="org.eclipse.rse.core.subsystems.ISystemDragDropAdapter"/>
			<adapter type="org.eclipse.rse.ui.view.ISystemRemoteElementAdapter"/>
			<adapter type="org.eclipse.ui.views.properties.IPropertySource"/>
			<adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
			<adapter type="org.eclipse.ui.IActionFilter"/>
			<!-- TODO Check: These are not in the adapter factories 
			     getAdapterList() Although the adapter implements them
			<adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
			<adapter type="org.eclipse.rse.core.subsystems.IRemoteObjectIdentifier"/>
			-->
		</factory> 
		<!-- Remote Command Shell --> 
		<factory 
			class="org.eclipse.rse.internal.shells.ui.view.SystemViewOutputAdapterFactory" 
			adaptableType="org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteCommandShell">
            <adapter type="org.eclipse.rse.ui.view.ISystemViewElementAdapter"/>
			<adapter type="org.eclipse.rse.core.subsystems.ISystemDragDropAdapter"/>
			<adapter type="org.eclipse.rse.ui.view.ISystemRemoteElementAdapter"/>
			<adapter type="org.eclipse.ui.views.properties.IPropertySource"/>
			<adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
			<adapter type="org.eclipse.ui.IActionFilter"/>
			<!-- TODO Check: These are not in the adapter factories 
			     getAdapterList() Although the adapter implements them
			<adapter type="org.eclipse.ui.progress.IDeferredWorkbenchAdapter"/>
			<adapter type="org.eclipse.rse.core.subsystems.IRemoteObjectIdentifier"/>
			-->
		</factory> 
		<!-- IShellServiceSubSystemConfiguration --> 
		<factory 
				class="org.eclipse.rse.internal.shells.ui.view.ShellServiceSubSystemConfigurationAdapterFactory" 
				adaptableType="org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.IShellServiceSubSystemConfiguration">
            <adapter type="org.eclipse.rse.ui.subsystems.ISubSystemConfigurationAdapter"/>
		</factory> 
	</extension>


<!-- ============================================ -->
<!-- Register Views                               -->
<!-- ============================================ -->
   <extension
         point="org.eclipse.ui.views">
      <view
            name="%View.RemoteCommands"
            icon="icons/full/cview16/commands_view.gif"
            category="org.eclipse.rse.ui.view"
            class="org.eclipse.rse.internal.shells.ui.view.SystemCommandsViewPart"
            id="org.eclipse.rse.shells.ui.view.commandsView">
      </view>
    </extension>
    
    
<!-- ============================================ -->
<!-- Define Workbench Properties Pages            -->
<!-- ============================================ -->
   <extension
         point="org.eclipse.ui.propertyPages">

      <page
            name="%PropertyPage.EnvVariables"
            class="org.eclipse.rse.internal.shells.ui.propertypages.EnvironmentVariablesPropertyPage"
            id="org.eclipse.rse.shells.ui.propertypages.EnvironmentVariablesPropertyPage">
            <!--
            <filter name="envVarPP" value="true"/>
            -->
         <enabledWhen>
            <instanceof value="org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteCmdSubSystem"/>
         </enabledWhen>
      </page>

      <page
            name="%PropertyPage.ServerLauncherSettings" 
            class="org.eclipse.rse.internal.ui.propertypages.ServerLauncherPropertyPage"
            id="org.eclipse.rse.ui.propertypages.serverLauncherPropertyPage">
            <filter name="serverLaunchPP" value="true"/>
         <enabledWhen>
            <instanceof value="org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.ShellServiceSubSystem"/>
         </enabledWhen>
      </page>
      <page
            name="%PropertyPage.Service"
            class="org.eclipse.rse.internal.shells.ui.propertypages.ShellServicesPropertyPage"
            id="org.eclipse.rse.shells.ui.propertypages.ShellServicesPropertyPage">
         <enabledWhen>
            <instanceof value="org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.ShellServiceSubSystem"/>
         </enabledWhen>
      </page>
      
   </extension>
   <extension
           point="org.eclipse.ui.menus">
        <menuContribution
              locationURI="popup:org.eclipse.rse.views.common?after=additions">
           <command
                 commandId="org.eclipse.rse.shells.ui.actions.LaunchShellCommand"
                 icon="icons/full/obj16/systemshell.gif"
                 label="%Launch_Shell"
                 tooltip="%Launch_Shell_Tooltip">
             <visibleWhen>
               <with variable="selection">
			     <count value="1" />
                 <iterate>
                     <and>
                         <test
                               property="org.eclipse.rse.core.isOffline"
                               value="false">
                         </test>
                         <or>
                             <and>
                                  <test
                                        args="shells"
                                        property="org.eclipse.rse.core.hasSubSystemCategory"
                                        value="true">
                                  </test>
                                  <instanceof
                                      value="org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile">
                                  </instanceof>
                                  <test
                                      property="org.eclipse.rse.subsystems.files.isdirectory"
                                      value="true">
                                  </test>
                             </and>
                             <instanceof
                                  value="org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteCmdSubSystem">
                             </instanceof>
                         </or>
                     </and>
                 </iterate> 
                </with> 
              </visibleWhen>
            </command> 
        </menuContribution>  
    </extension>      
    <extension point="org.eclipse.ui.commands">
        <command
              categoryId="org.eclipse.rse.ui.commands.category"
              id="org.eclipse.rse.shells.ui.actions.LaunchShellCommand"
              name="%Launch_Shell">
        </command>
     </extension>
     <extension
           point="org.eclipse.ui.handlers">
        <handler
              class="org.eclipse.rse.internal.shells.ui.handlers.LaunchShellCommandHandler"
              commandId="org.eclipse.rse.shells.ui.actions.LaunchShellCommand">
        </handler>
     </extension>
</plugin>
