###############################################################################
# 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/

  
