# sigil-defaults.properties

# Default version of all Sigil projects
version: 0.9.0.SNAPSHOT

# Default bundle headers
header;Bundle-Category: development
header;Bundle-ContactAddress: http://felix.apache.org
header;Bundle-Vendor: The Apache Software Foundation

# Default package version ranges
# if no version specified, BND uses resolved version, dropping minor number

package;org.apache.felix.sigil.*:				0.9.0.SNAPSHOT

package;aQute.lib.osgi:						0.0.0

# junit
package;junit.framework:					4.4.0
	
# apache commons	
package;org.apache.commons.lang:				2.4.0
package;org.apache.commons.lang.text:				2.4.0

package;org.apache.ivy*:					2.0.0
package;org.apache.tools.ant*:					1.7.1

# ganymede
# package;org.eclipse.core.resources:				3.4.1
# package;org.eclipse.core.runtime.content:			1.5.4
# package;org.eclipse.ui:					3.4.1
# package;org.eclipse.core.runtime.jobs:			3.4.0
# package;org.eclipse.debug.core:				3.4.0
# package;org.eclipse.debug.ui:					3.4.2
# package;org.eclipse.jdt.core:					3.4.2
# package;org.eclipse.jface.dialogs:				3.4.1
# package;org.eclipse.jface.preference:				3.4.1
# package;org.eclipse.jface.resource:				3.4.1
# package;org.eclipse.jface.util:					3.4.1
# package;org.eclipse.jface.window:				3.4.1
# package;org.eclipse.ui.console:					3.3.1
# package;org.eclipse.ui.dialogs:					3.4.1
# package;org.eclipse.ui.plugin:					3.4.1
# package;org.eclipse.core.commands:				3.4.0
# package;org.eclipse.core.commands.common:			3.4.0
# package;org.eclipse.core.internal.preferences:			3.2.201
# package;org.eclipse.draw2d:					3.4.2
# org.eclipse.jdt
# package;org.eclipse.jdt.core.compiler:				3.4.2
# package;org.eclipse.jdt.core.dom:				3.4.2
# package;org.eclipse.jdt.core.dom.rewrite:			3.4.2
# package;org.eclipse.jdt.internal.corext.dom:			3.4.2
# package;org.eclipse.jdt.internal.corext.util:			3.4.2
# package;org.eclipse.jdt.internal.ui:				3.4.2
# package;org.eclipse.jdt.internal.ui.propertiesfileeditor:	3.4.2
# package;org.eclipse.jdt.ui:					3.4.2
# package;org.eclipse.jdt.ui.text:				3.4.2
# package;org.eclipse.jdt.ui.text.java:				3.4.2
# package;org.eclipse.jdt.ui.wizards:				3.4.2

# org.eclipse.jface
# package;org.eclipse.jface.action:				3.4.1
# package;org.eclipse.jface.fieldassist:				3.4.1
# package;org.eclipse.jface.layout:				3.4.1
# package;org.eclipse.jface.operation:				3.4.1
# package;org.eclipse.jface.text:					3.4.2
# package;org.eclipse.jface.text.contentassist:			3.4.2
# package;org.eclipse.jface.viewers:				3.4.1
# package;org.eclipse.jface.wizard:				3.4.1

# org.eclipse.ltk
# package;org.eclipse.ltk.core.refactoring:			3.4.2

# org.eclipse.pde
# package;org.eclipse.pde.internal.ui.editor:			3.4.0
# package;org.eclipse.pde.internal.ui.parts:			3.4.0

# org.eclipse.ui
# package;org.eclipse.ui.actions:					3.4.1
# package;org.eclipse.ui.cheatsheets:				3.3.101
# package;org.eclipse.ui.editors.text:				3.4.0
# package;org.eclipse.ui.forms:					3.3.103
# package;org.eclipse.ui.forms.editor:				3.3.103
# package;org.eclipse.ui.forms.events:				3.3.103
# package;org.eclipse.ui.forms.widgets:				3.3.103
# package;org.eclipse.ui.handlers:				3.4.1
# package;org.eclipse.ui.ide:					3.4.2
# package;org.eclipse.ui.part:					3.4.1
# package;org.eclipse.ui.progress:				3.4.1
# package;org.eclipse.ui.texteditor:				3.4.0
# package;org.eclipse.ui.wizards.newresource:			3.4.2

# org.eclipse.zest
# package;org.eclipse.zest.core.viewers:				1.0.0
# package;org.eclipse.zest.core.widgets:				1.0.0
# package;org.eclipse.zest.layouts:				1.0.0
# package;org.eclipse.zest.layouts.algorithms:			1.0.0

# galileo
package;org.eclipse.*:				0.0.0


# OSGi framework
package;org.osgi.framework:					1.4.0
package;org.osgi.framework.launch:				1.0.0
package;org.osgi.service.prefs:					1.1.0
package;org.osgi.util.tracker:					1.3.3
