<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.contexts"?>
<!--
  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.
-->
<contexts>
 
 	<context id="tools_connections_view">
   		<description>The Connections view shows all the LDAP connections.</description>
   		<topic label="Connections view" href="html/tools_connections_view.html"/>
   	</context>
 	<context id="tools_browser_view">
   		<description>The LDAP Browser shows the DIT, searches and bookmarks. It allows you to explore the directory content.</description>
   		<topic label="Overview, Sorting" href="html/tools_browser_view_overview.html"/>
   		<topic label="DIT category" href="html/tools_browser_view_dit.html"/>
   		<topic label="Searches category" href="html/tools_browser_view_searches.html"/>
   		<topic label="Bookmarks category" href="html/tools_browser_view_bookmarks.html"/>
   		<topic label="Context menu" href="html/tools_browser_view_contextmenu.html"/>
   	</context>
 	<context id="tools_entry_editor">
   		<description>The Entry editor is used to view and edit the attributes and values of an entry.</description>
   		<topic label="Overview" href="html/tools_entry_editor_overview.html"/>
   		<topic label="Features (Sorting, Filtering, Editing)" href="html/tools_entry_editor_features.html"/>
   		<topic label="Context menu" href="html/tools_entry_editor_contextmenu.html"/>
   	</context>
 	<context id="tools_search_result_editor">
   		<description>The Search Result editor is used to view and edit search results.</description>
   		<topic label="Overview" href="html/tools_search_result_editor_overview.html"/>
   		<topic label="Features (Sorting, Filtering, Editing)" href="html/tools_search_result_editor_features.html"/>
   		<topic label="Context menu" href="html/tools_search_result_editor_contextmenu.html"/>
   	</context>
 	<context id="tools_schema_browser">
   		<description>With the Schema Browser you can browse the schema of a LDAP directory.</description>
   		<topic label="Overview" href="html/tools_schema_browser_overview.html"/>
   		<topic label="Object Classes" href="html/tools_schema_browser_ocd.html"/>
   		<topic label="Attribute Types" href="html/tools_schema_browser_atd.html"/>
   		<topic label="Syntaxes" href="html/tools_schema_browser_lsd.html"/>
   		<topic label="Matching Rules" href="html/tools_schema_browser_mrd.html"/>
   		<topic label="Matching Rule Use" href="html/tools_schema_browser_mru.html"/>
   	</context>
 	<context id="tools_modification_logs_view">
   		<description>The Modification Logs view shows all sucessful and failed modifications.</description>
   		<topic label="Modification Logs view" href="html/tools_modification_logs_view.html"/>
   	</context>
 	<context id="tools_ldif_editor">
   		<description>The LDIF editor provides you with LDIF specific text editing support.</description>
   		<topic label="LDIF editor" href="html/tools_ldif_editor.html"/>
   	</context>
   	
   	
   	
 	<context id="tools_newconnection_wizard">
   		<description>This wizard helps you to create a new connection to a LDAP directory.</description>
   		<topic label="New LDAP Connection wizard" href="html/tools_newconnection_wizard.html"/>
   		<topic label="Specify network parameters" href="html/tools_newconnection_wizard.html#tools_newconnection_wizard_1"/>
   		<topic label="Specify authentication parameters" href="html/tools_newconnection_wizard.html#tools_newconnection_wizard_2"/>
   		<topic label="Specify additional parameters" href="html/tools_newconnection_wizard.html#tools_newconnection_wizard_3"/>
   	</context>
 	<context id="tools_newentry_wizard">
   		<description>This wizard helps you to create a new entry in a LDAP directory.</description>
   		<topic label="New Entry wizard" href="html/tools_newentry_wizard.html"/>
   		<topic label="Select entry creation method" href="html/tools_newentry_wizard.html#tools_newentry_wizard_1"/>
   		<topic label="Specify object classes" href="html/tools_newentry_wizard.html#tools_newentry_wizard_2"/>
   		<topic label="Specifiy the distinguished name" href="html/tools_newentry_wizard.html#tools_newentry_wizard_3"/>
   		<topic label="Enter attributes and values" href="html/tools_newentry_wizard.html#tools_newentry_wizard_4"/>
   	</context>
 	<context id="tools_attribute_wizard">
   		<description>This wizard is used to create or edit an attribute.</description>
   		<topic label="Attribute wizard" href="html/tools_attribute_wizard.html"/>
   		<topic label="Enter attribute type" href="html/tools_attribute_wizard.html#tools_attribute_wizard_1"/>
   		<topic label="Specify options" href="html/tools_attribute_wizard.html#tools_attribute_wizard_2"/>
   	</context>
 	<context id="tools_search_dialog">
   		<description>In the LDAP Search page you can specify search parameters to query a directory.</description>
   		<topic label="LDAP Search page" href="html/tools_search_dialog.html"/>
   	</context>
 	<context id="tools_batchoperation_wizard">
   		<description> This wizard helps you to modify several entries.</description>
   		<topic label="Batch Operation wizard" href="html/tools_batchoperation_wizard.html"/>
   		<topic label="Select entries" href="html/tools_batchoperation_wizard.html#tools_batchoperation_wizard_1"/>
   		<topic label="Select operation" href="html/tools_batchoperation_wizard.html#tools_batchoperation_wizard_2"/>
   		<topic label="Specify modification" href="html/tools_batchoperation_wizard.html#tools_batchoperation_wizard_3"/>
   		<topic label="Choose execution method" href="html/tools_batchoperation_wizard.html#tools_batchoperation_wizard_4"/>
   	</context>
 	<context id="tools_ldifimport_wizard">
   		<description>This wizard imports LDIF files into the directory.</description>
   		<topic label="LDIF Import wizard" href="html/tools_ldifimport_wizard.html"/>
   	</context>
 	<context id="tools_dsmlimport_wizard">
   		<description>This wizard imports DSML files into the directory.</description>
   		<topic label="DSML Import wizard" href="html/tools_dsmlimport_wizard.html"/>
   	</context>
 	<context id="tools_ldifexport_wizard">
   		<description>This wizard exports directory content to LDIF files.</description>
   		<topic label="LDIF Export wizard" href="html/tools_ldifexport_wizard.html"/>
   	</context>
 	<context id="tools_dsmlexport_wizard">
   		<description>This wizard exports directory content to DSML files.</description>
   		<topic label="DSML Export wizard" href="html/tools_dsmlexport_wizard.html"/>
   	</context>
 	<context id="tools_csvexport_wizard">
   		<description>This wizard exports directory content to CSV files.</description>
   		<topic label="CSV Export wizard" href="html/tools_csvexport_wizard.html"/>
   	</context>
 	<context id="tools_excelexport_wizard">
   		<description>This wizard exports directory content to Excel files.</description>
   		<topic label="Excel Export wizard" href="html/tools_excelexport_wizard.html"/>
   	</context>

    		
</contexts>
