###############################################################################
# Copyright (c) 2010, 2012 JBoss by Red Hat and others.
# 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:
#     IBM Corporation - initial API and implementation
#     JBoss by Red Hat - subsequent contributions and maintenance
###############################################################################
source.. = src/
output.. = bin/
bin.includes = html/,\
               icons/,\
               monkey/,\
               plugin.properties,\
               plugin.xml,\
               schema/,\
               schemas/,\
               templates/,\
               META-INF/,\
               .,\
               about.html
src.includes = uiextensionmodel.ecore,\
               uiextensionmodel.genmodel,\
               templates/,\
               schema/,\
               schemas/,\
               html/,\
               monkey/

  
