# Copyright (c) 2005, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
# All rights reserved.   This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors: 
#   IBM - initial API and implementation
#   Kenn Hussey (Embarcadero Technologies) - 204200
#   Christian W. Damus (CEA) - 227616
#   Eike Stepper - 540812
#   Kenn Hussey - 535301
#

# NLS_MESSAGEFORMAT_VAR
source.. = src/
output.. = bin/
bin.includes = about.*,\
               modeling32.png,\
               plugin.properties,\
               .,\
               META-INF/,\
               plugin.xml,\
               schema/
src.includes = about.html
exclude.. = **/doc-files/**
javacSource = 1.5
javacTarget = 1.5
