<?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"/>
  </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="org.apache.directory.studio.ldapservers.apacheds.CreateConnectionAction"
          label="%ActionCreateConnection_label"
          icon="resources/icons/connection_new.gif">
      </action>

      <action
          class="org.apache.directory.studio.ldapservers.apacheds.RepairAction"
          enablesFor="1"
          id="org.apache.directory.studio.ldapservers.apacheds.RepairAction"
          label="%ActionRepair_label">
      </action>
      
      <visibility>
        <and>
          <objectState
              name="isLdapPerspectiveAvailable"
              value="true">
          </objectState>
          
          <objectState
              name="extensionId"
              value="%LdapServerAdapter_id">
          </objectState>
        </and>
      </visibility>
    </objectContribution>
  </extension>
</plugin>
