<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2015 BSI Business Systems Integration AG.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v1.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v10.html

    Contributors:
        BSI Business Systems Integration AG - initial API and implementation

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.scout.sdk</groupId>
    <artifactId>org.eclipse.scout.sdk</artifactId>
    <version>7.0.150.004_Oxygen_1a</version>
    <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
  </parent>

  <groupId>org.eclipse.scout.sdk.s2e</groupId>
  <artifactId>org.eclipse.scout.sdk.s2e.ui</artifactId>
  <packaging>bundle</packaging>
  <name>${project.groupId}:${project.artifactId}</name>

  <properties>
    <bundle.symbolicName>${project.artifactId}</bundle.symbolicName>
    <bundle.namespace>${project.artifactId}</bundle.namespace>
    <bundle.version>7.0.150</bundle.version>
  </properties>

  <dependencies>
    <!-- Build Dependencies -->
    <!-- Build Dependencies (Provided) -->
    <dependency>
      <groupId>org.eclipse.scout.sdk.s2e</groupId>
      <artifactId>org.eclipse.scout.sdk.s2e</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.s2e</groupId>
      <artifactId>org.eclipse.scout.sdk.s2e.doc</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.jdt.launching</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.jdt.ui</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.m2e.core.ui</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-Name>Scout SDK User Interface</Bundle-Name>
            <Import-Package>
              !javax.swing.*,
              !javax.xml*,
              !org.eclipse.core.runtime*,
              !org.eclipse.core.resources*,
              !org.eclipse.jdt.core*,
              !org.eclipse.jdt.internal*,
              !org.eclipse.jdt.ui*,
              !org.eclipse.jdt.launching*,
              !org.eclipse.scout.sdk.core*,
              !org.eclipse.scout.sdk.s2e*,
              !org.eclipse.ui.*,
              !org.eclipse.jface.text*,
              !org.eclipse.text*,
              !org.eclipse.m2e.core.*,
              org.eclipse.ltk.core.refactoring,<!-- indirectly referenced -->
              *
            </Import-Package>
            <Require-Bundle>
              org.eclipse.scout.sdk.s2e;bundle-version="[7.0,7.1)";visibility:=reexport,
              org.eclipse.scout.sdk.s2e.doc;bundle-version="[7.0,7.1)";visibility:=reexport,
              org.eclipse.jdt.ui;bundle-version="[3.12,4)";visibility:=reexport,
              org.eclipse.ui.ide;bundle-version="[3.12,4)";visibility:=reexport,
              org.eclipse.ui.workbench;bundle-version="[3.108,4)";visibility:=reexport,
              org.eclipse.ui.workbench.texteditor;bundle-version="[3.10,4)";visibility:=reexport,
              org.eclipse.ui.editors;bundle-version="[3.10,4)";visibility:=reexport,
              org.eclipse.ui.forms;bundle-version="[3.7,4)";visibility:=reexport,
              org.eclipse.ui.console;bundle-version="[3.6.200,4)";visibility:=reexport,
              org.eclipse.jface.text;bundle-version="[3.11.0,4)";visibility:=reexport,
              org.eclipse.m2e.core.ui;bundle-version="[1.7,2)";visibility:=reexport
            </Require-Bundle>
            <Bundle-Activator>org.eclipse.scout.sdk.s2e.ui.internal.S2ESdkUiActivator</Bundle-Activator>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
