<?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.

-->
<!--
Contributor(s): Vincent Brabant, Maxym Mykhalchuk
 -->
<project basedir="." default="build" name="nb/ide.branding">

  <import file="../../nbbuild/templates/projectized.xml"/>

  <taskdef name="locjar" classname="org.netbeans.nbbuild.LocalizedJar"
           classpath="${nbantext.jar}"/>

  <target name="netbeans-extra">

    <copy todir="${netbeans.dest.dir}">
      <fileset dir="release-toplevel"/>
    </copy>
    
    <!-- copy to build folder to do replace -->
    <delete dir="${build.dir}/branding/core.startup" quiet="true" />
    <copy todir="${build.dir}/branding/core.startup">
        <fileset dir="core.startup"/>
    </copy>
    <replace file="${build.dir}/branding/core.startup/src/org/netbeans/core/startup/Bundle_nb.properties" value="defaultvalue" propertyFile="${nb_all}/nbbuild/build/netbeansrelease.properties">
        <replacefilter token="@@metabuild.ComputedSplashVersion@@" property="metabuild.ComputedSplashVersion"/>
    </replace>
    <locjar warnMissingDir="true"
      basedir="${build.dir}/branding/core.startup/src"
      jarfile="${cluster}/core/core.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="o.n.core/src"
      jarfile="${cluster}/modules/org-netbeans-core.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="core.netigso/src"
      jarfile="${cluster}/modules/org-netbeans-core-netigso.jar">
      <branding name="nb"/>
    </locjar>
    
    <delete dir="${build.dir}/branding/core.windows" quiet="true" />
    <copy todir="${build.dir}/branding/core.windows">
        <fileset dir="core.windows"/>
    </copy>
    <replace file="${build.dir}/branding/core.windows/src/org/netbeans/core/windows/view/ui/Bundle_nb.properties" value="defaultvalue" propertyFile="${nb_all}/nbbuild/build/netbeansrelease.properties">
        <replacefilter token="@@metabuild.ComputedTitleVersion@@" property="metabuild.ComputedTitleVersion"/>
    </replace>
    <locjar warnMissingDir="true"
      basedir="${build.dir}/branding/core.windows/src"
      jarfile="${cluster}/modules/org-netbeans-core-windows.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="core.ui/src"
      jarfile="${cluster}/modules/org-netbeans-core-ui.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="autoupdate.services/libsrc"
      jarfile="${cluster}/modules/ext/updater.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="autoupdate.ui/src"
      jarfile="${cluster}/modules/org-netbeans-modules-autoupdate-ui.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="spi.quicksearch/src"
      jarfile="${cluster}/modules/org-netbeans-spi-quicksearch.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="options.api/src"
      jarfile="${cluster}/modules/org-netbeans-modules-options-api.jar">
      <branding name="nb"/>
    </locjar>

    <locjar warnMissingDir="true"
      basedir="uihandler/src"
      jarfile="${cluster}/modules/org-netbeans-modules-uihandler.jar">
      <branding name="nb"/>
    </locjar>

  </target>
</project>
