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

  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.

--><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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.royale.examples</groupId>
    <artifactId>examples-mxroyale</artifactId>
    <version>0.9.9</version>
  </parent>

  <artifactId>DataGridExample-MXRoyale</artifactId>
  <version>0.9.9</version>
  <packaging>swf</packaging>

  <name>Apache Royale: Examples: MXRoyale: DataGridExample</name>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <mainClass>DataGridExample.mxml</mainClass>
          <allowSubclassOverrides>true</allowSubclassOverrides>
          <targets>${royale.targets}</targets>
          <debug>false</debug>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>BasicTheme</artifactId>
      <version>0.9.9</version>
      <type>swc</type>
      <scope>theme</scope>
      <classifier>js</classifier>
    </dependency>
  </dependencies>


  <profiles>
    <profile>
      <id>option-with-swf</id>
      <properties>
        <title>${project.artifactId}</title>
        <bgcolor>#ffffff</bgcolor>
        <useBrowserHistory>--</useBrowserHistory>
        <version_major>11</version_major>
        <version_minor>5</version_minor>
        <version_revision>0</version_revision>
        <expressInstallSwf>expressInstall.swf</expressInstallSwf>
        <application>${project.artifactId}</application>
        <swf>${project.artifactId}-${project.version}</swf>
        <width>100%</width>
        <height>100%</height>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.royale.compiler</groupId>
            <artifactId>royale-maven-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
              <mainClass>DataGridExample.mxml</mainClass>
              <allowSubclassOverrides>true</allowSubclassOverrides>
              <targets>${royale.targets}</targets>
              <debug>false</debug>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
              <execution>
                <id>copy-template-swf</id>
                <phase>compile</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}/target</outputDirectory>
                  <includeEmptyDirs>true</includeEmptyDirs>
                  <resources>
                    <resource>
                      <directory>${basedir}/../../../templates/swfobject</directory>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>com.coderplus.maven.plugins</groupId>
            <artifactId>copy-rename-maven-plugin</artifactId>
            <version>1.0.1</version>
            <executions>
              <execution>
                <id>rename-file</id>
                <phase>compile</phase>
                <goals>
                  <goal>rename</goal>
                </goals>
                <configuration>
                  <sourceFile>${basedir}/target/index.template.html</sourceFile>
                  <destinationFile>${basedir}/target/${project.artifactId}.html</destinationFile>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <dependencies>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>BasicTheme</artifactId>
          <version>0.9.9</version>
          <type>swc</type>
          <scope>theme</scope>
          <classifier>swf</classifier>
        </dependency>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>BasicTheme</artifactId>
          <version>0.9.9</version>
          <type>swc</type>
          <scope>theme</scope>
          <classifier>js</classifier>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

<properties><project.build.outputTimestamp>2022-03-17T08:05:21Z</project.build.outputTimestamp></properties></project>
