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

-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
                      http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="ToolInvocationConfigurationUIFactory" class="org.apache.taverna.activities.externaltool.manager.ToolInvocationConfigurationUIFactory">
		<property name="mechanismCreators" ref="mechanismCreators" />
		<property name="invocationMechanismEditors" ref="invocationMechanismEditors" />
		<property name="configurationManager" ref="configurationManager" />
		<property name="invocationGroupManager" ref="invocationGroupManager" />
	</bean>

	<bean id="InvocationGroupManagerStartupHook" class="org.apache.taverna.activities.externaltool.manager.InvocationGroupManagerStartupHook">
		<constructor-arg name="manager" ref="InvocationGroupManager" />
	</bean>

	<bean id="ExternalToolActivityIcon" class="org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolActivityIcon">
			<property name="colourManager" ref="colourManager" />
	</bean>

	<bean id="LocalInvocationMechanismEditor" class="org.apache.taverna.activities.externaltool.manager.local.LocalInvocationMechanismEditor" />
	<bean id="SshInvocationMechanismEditor" class="org.apache.taverna.activities.externaltool.manager.ssh.SshInvocationMechanismEditor" />

	<bean id="ExternalToolServiceProvider" class="org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolServiceProvider" />
	<bean id="ExternalToolTemplateServiceDescription" class="org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolTemplateServiceDescription" />

	<bean id="ConfigureExternalToolMenuAction" class="org.apache.taverna.activities.externaltool.menu.ConfigureExternalToolMenuAction">
			<property name="editManager" ref="editManager" />
			<property name="fileManager" ref="fileManager" />
			<property name="activityIconManager" ref="activityIconManager" />
	</bean>
	<bean id="AddExternalToolContextualMenuAction" class="org.apache.taverna.activities.externaltool.menu.AddExternalToolContextualMenuAction">
			<property name="editManager" ref="editManager" />
			<property name="menuManager" ref="menuManager" />
			<property name="selectionManager" ref="selectionManager" />
			<property name="activityIconManager" ref="activityIconManager" />
	</bean>
	<bean id="AddExternalToolMenuAction" class="org.apache.taverna.activities.externaltool.menu.AddExternalToolMenuAction">
			<property name="editManager" ref="editManager" />
			<property name="menuManager" ref="menuManager" />
			<property name="selectionManager" ref="selectionManager" />
			<property name="activityIconManager" ref="activityIconManager" />
	</bean>

	<bean id="InvocationGroupManagerShutdownHook" class="org.apache.taverna.activities.externaltool.manager.InvocationGroupManagerShutdownHook">
		<constructor-arg name="manager" ref="InvocationGroupManager" />
	</bean>




	<bean id="ExternalToolActivityViewFactory" class="org.apache.taverna.activities.externaltool.views.ExternalToolActivityViewFactory">
			<property name="editManager" ref="editManager" />
			<property name="fileManager" ref="fileManager" />
			<property name="activityIconManager" ref="activityIconManager" />
			<property name="colourManager" ref="colourManager" />
	</bean>

</beans>
