<?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-SNAPSHOT</version>
    <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
  </parent>

  <groupId>org.eclipse.scout.sdk.s2e</groupId>
  <artifactId>org.eclipse.scout.sdk.s2e.nls</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.deps</groupId>
      <artifactId>org.eclipse.jdt.ui</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.scout.sdk.deps</groupId>
      <artifactId>org.eclipse.ui.workbench</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 National Language Support</Bundle-Name>
            <Import-Package>
              !javax.*,
              !org.eclipse.core.runtime*,
              !org.eclipse.core.resources*,
              !org.eclipse.jdt.core*,
              !org.eclipse.jdt.internal*,
              !org.eclipse.jdt.ui*,
              !org.eclipse.scout.sdk.core*,
              !org.eclipse.scout.sdk.s2e*,
              !org.eclipse.jface*,
              !org.eclipse.text*,
              *
            </Import-Package>
            <Require-Bundle>
              org.eclipse.scout.sdk.s2e;bundle-version="[7.0,7.1)";visibility:=reexport,
              org.eclipse.jdt.ui;bundle-version="[3.12,4)";visibility:=reexport,
              org.eclipse.ui.editors;bundle-version="[3.10,4)";visibility:=reexport,
              org.eclipse.jface;bundle-version="[3.12,4)";visibility:=reexport,
              org.eclipse.jface.text;bundle-version="[3.11,4)";visibility:=reexport
            </Require-Bundle>
            <Bundle-Activator>org.eclipse.scout.sdk.s2e.nls.NlsCore</Bundle-Activator>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
