<?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.300-SNAPSHOT</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.300</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>
