<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<!--
  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.apache.directory.studio.valueeditors">
    <valueEditor
          class="org.apache.directory.studio.valueeditors.password.PasswordValueEditor"
          icon="resources/icons/passwordeditor.gif"
          name="%ValueEditor_PasswordValueEditor_name">
       <attribute attributeType="userPassword"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.image.ImageValueEditor"
          icon="resources/icons/imageeditor.gif"
          name="%ValueEditor_ImageValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.28"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.time.GeneralizedTimeValueEditor"
          icon="resources/icons/generalizedtimeeditor.gif"
          name="%ValueEditor_GeneralizedTimeValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.24"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.adtime.ActiveDirectoryTimeValueEditor"
          icon="resources/icons/generalizedtimeeditor.gif"
          name="%ValueEditor_ActiveDirectoryTimeValueEditor_name">
       <attribute attributeType="pwdLastSet"/>
       <attribute attributeType="accountExpires"/>
       <attribute attributeType="lastLogoff"/>
       <attribute attributeType="lastLogon"/>
       <attribute attributeType="lastLogonTimeStamp"/>
       <attribute attributeType="badPasswordTime"/>
       <attribute attributeType="lockoutTime"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.objectclass.ObjectClassValueEditor"
          icon="resources/icons/objectclasseditor.png"
          name="%ValueEditor_ObjectClassValueEditor_name">
       <attribute attributeType="objectClass"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.dn.DnValueEditor"
          icon="resources/icons/dneditor.gif"
          name="%ValueEditor_DnValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.12"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.address.AddressValueEditor"
          icon="resources/icons/addresseditor.gif"
          name="%ValueEditor_AddressValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.41"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.integer.IntegerValueEditor"
          icon="resources/icons/integereditor.gif"
          name="%ValueEditor_IntegerValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.27"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.administrativerole.AdministrativeRoleValueEditor"
          icon="resources/icons/administrativeroleeditor.gif"
          name="%ValueEditor_AdministrativeRoleValueEditor_name">
       <attribute attributeType="administrativeRole"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.oid.InPlaceOidValueEditor"
          icon="resources/icons/oideditor.gif"
          name="%ValueEditor_InPlaceOidValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.38"/>
       <syntax syntaxOID="1.3.6.1.4.1.18060.0.4.0.0.2"/>
       <attribute attributeType="supportedControl"/>
       <attribute attributeType="supportedExtension"/>
       <attribute attributeType="supportedFeatures"/>
       <attribute attributeType="supportedCapabilities"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.uuid.InPlaceUuidValueEditor"
          icon="resources/icons/entryuuideditor.gif"
          name="%ValueEditor_InPlaceEntryUUIDValueEditor_name">
       <syntax syntaxOID="1.3.6.1.1.16.1" />
       <!-- Explicitly list entryUUID because in ApacheDS 1.5.5 it has octetString syntax -->
       <attribute attributeType="entryUUID"/>
       <!-- Explicitly list attribute for eDirectory -->
       <attribute attributeType="GUID"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.msad.InPlaceMsAdObjectGuidValueEditor"
          icon="resources/icons/msadobjectguideditor.gif"
          name="%ValueEditor_InPlaceMsAdObjectGuidValueEditor_name">
      <attribute attributeType="objectGUID"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.msad.InPlaceMsAdObjectSidValueEditor"
          icon="resources/icons/msadobjectsideditor.gif"
          name="%ValueEditor_InPlaceMsAdObjectSidValueEditor_name">
      <attribute attributeType="objectSid"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.certificate.CertificateValueEditor"
          icon="resources/icons/certificateeditor.png"
          name="%ValueEditor_CertificateValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.8"/>
       <!-- Explicitly list attributes for eDirectory -->
       <attribute attributeType="userCertificate"/>
       <attribute attributeType="nDSPKIPublicKeyCertificate"/>
       <attribute attributeType="cACertificate"/>
       <attribute attributeType="ndsCrossCertificatePair"/>
    </valueEditor>
    <valueEditor
          class="org.apache.directory.studio.valueeditors.bool.InPlaceBooleanValueEditor"
          icon="resources/icons/booleaneditor.gif"
          name="%ValueEditor_InPlaceBooleanValueEditor_name">
       <syntax syntaxOID="1.3.6.1.4.1.1466.115.121.1.7"/>
    </valueEditor>
   </extension>

</plugin>
