<?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.eclipse.ui.preferencePages">
      <page
            class="org.apache.directory.studio.common.ui.StudioPreferencePage"
            id="org.apache.directory.studio.StudioPreferencePage"
            name="%Pref_StudioPage_name">
      </page>
   </extension>
   <extension
         point="org.eclipse.core.runtime.preferences">
      <initializer
            class="org.apache.directory.studio.common.ui.CommonUIPreferencesInitializer">
      </initializer>
   </extension>

  <extension point="org.eclipse.e4.ui.css.swt.theme">
    <stylesheet uri="resources/css/dark.css">
      <themeid refid="org.eclipse.e4.ui.css.theme.e4_dark">
      </themeid>
    </stylesheet>
    <stylesheet uri="resources/css/default.css">
      <themeid refid="org.eclipse.e4.ui.css.theme.e4_default">
      </themeid>
    </stylesheet>
  </extension>

</plugin>
