<?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.
-->
<!--
  @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-->
<?eclipse version="3.0"?>
<plugin>
  <extension point="org.eclipse.ui.preferencePages">
    <page
      class="org.apache.directory.studio.combinededitor.preferences.CombinedEntryEditorPreferencePage"
      id="%PrefPage_CombinedEntryEditorPreferencePage_id"
      category="%PrefPage_EntryEditorsPreferencePage_id"
      name="%PrefPage_CombinedEntryEditorPreferencePage_name">
    </page>
  </extension>

  <extension point="org.eclipse.equinox.preferences.preferences">
    <initializer
      class="org.apache.directory.studio.combinededitor.PreferenceInitializer">
    </initializer>
  </extension>

  <extension point="org.eclipse.ui.editors">
    <editor
      class="org.apache.directory.studio.combinededitor.editor.SingleTabCombinedEntryEditor"
      default="false"
      icon="resources/icons/editor_single_tab.gif"
      id="%Editor_SingleTabCombinedEntryEditor_id"
      matchingStrategy="org.apache.directory.studio.entryeditors.SingleTabEntryEditorMatchingStrategy"
      name="%Editor_SingleTabCombinedEntryEditor_shortname">
    </editor>

    <editor      
      class="org.apache.directory.studio.combinededitor.editor.MultiTabCombinedEntryEditor"
      default="false"
      icon="resources/icons/editor_multi_tab.gif"
      id="%Editor_MultiTabCombinedEntryEditor_id"
      matchingStrategy="org.apache.directory.studio.entryeditors.MultiTabEntryEditorMatchingStrategy"
      name="%Editor_MultiTabCombinedEntryEditor_shortname">
    </editor>
  </extension>
   
  <extension point="org.apache.directory.studio.entryeditors">
    <entryEditor
      class="org.apache.directory.studio.combinededitor.editor.SingleTabCombinedEntryEditor"
      description="%Editor_SingleTabCombinedEntryEditor_description"
      editorId="%Editor_SingleTabCombinedEntryEditor_id"
      icon="resources/icons/editor_single_tab.gif"
      id="%Editor_SingleTabCombinedEntryEditor_id"
      name="%Editor_SingleTabCombinedEntryEditor_fullname"
      priority="42"
      multiWindow="false">
    </entryEditor>

    <entryEditor
      class="org.apache.directory.studio.combinededitor.editor.MultiTabCombinedEntryEditor"
      description="%Editor_MultiTabCombinedEntryEditor_description"
      editorId="%Editor_MultiTabCombinedEntryEditor_id"
      icon="resources/icons/editor_multi_tab.gif"
      id="%Editor_MultiTabCombinedEntryEditor_id"
      name="%Editor_MultiTabCombinedEntryEditor_fullname"
      priority="41"
      multiWindow="true">
    </entryEditor>
  </extension>
</plugin>
