<?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.
-->
<?eclipse version="3.2"?>
<plugin>
   <extension
         point="org.apache.directory.studio.ldapservers.ldapServerAdapters">
      <ldapServerAdapter
            class="org.apache.directory.studio.ldapservers.apacheds.ApacheDS200LdapServerAdapter"
            id="%LdapServerAdapter_id"
            name="%LdapServerAdapter_name"
            vendor="%LdapServerAdapter_vendor"
            version="%LdapServerAdapter_version">
      </ldapServerAdapter>
   </extension>
   
   <extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            objectClass="org.apache.directory.studio.ldapservers.model.LdapServer"
            id="org.apache.directory.studio.ldapservers.model.LdapServer">
         <action
               class="org.apache.directory.studio.ldapservers.apacheds.CreateConnectionAction"
               enablesFor="1"
               id="%ActionCreateConnection_id"
               label="%ActionCreateConnection_label"
               icon="resources/icons/connection_new.gif">
         </action>
         <visibility>
            <and>
               <objectState
                     name="isLdapPerspectiveAvailable"
                     value="true">
               </objectState>
               <objectState
                     name="extensionId"
                     value="%LdapServerAdapter_id">
               </objectState>
            </and>
         </visibility>
      </objectContribution>
   </extension>
</plugin>
