# Copyright (c) 2009 Mia-Software.
# 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:
#     Gregoire DUPE (Mia-Software)

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               about.html,\
               .project,\
               .classpath,\
               _example_EMFHighlight.uiCustom,\
               _example_jdkAndEclipseFacets.facetSet,\
               _example_jdkAndEclipseFacetsCustomization.uiCustom,\
               _example_jdkAndEclipseQuerySet.querySet,\
               org.eclipse.gmf.runtime.diagram.ui.actions.javaxmi,\
               plugin.xml,\
               icons/,\
               src/,\
               build.properties,\
               OSGI-INF/
src.includes = about.html
