<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012 Eclipse Foundation and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php
 
  Contributors:
     Igor Fedorenko - initial implementation
-->

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

  <parent>
    <groupId>org.eclipse</groupId>
    <artifactId>eclipse-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </parent>

  <groupId>eclipse.platform.swt</groupId>
  <artifactId>eclipse.platform.swt</artifactId>
  <version>3.8.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
<!-- 
    <module>bundles/org.eclipse.swt</module>
    <module>bundles/org.eclipse.swt.opengl</module>
    <module>bundles/org.eclipse.swt.tools</module>
    <module>examples/org.eclipse.swt.examples</module>
    <module>examples/org.eclipse.swt.examples.browser</module>
    <module>examples/org.eclipse.swt.examples.browser.demos</module>
    <module>examples/org.eclipse.swt.examples.controls</module>
    <module>examples/org.eclipse.swt.examples.launcher</module>
    <module>examples/org.eclipse.swt.examples.layouts</module>
    <module>examples/org.eclipse.swt.examples.ole.win32</module>
    <module>examples/org.eclipse.swt.examples.paint</module>
 -->
    <module>tests/org.eclipse.swt.tests</module>
  </modules>
</project>
