import library.Book
import org.eclipse.emf.parsley.cdo.CDOEmfParsleyModule
import org.eclipse.emf.parsley.examples.cdo.view.TreeFormCDOView
import org.eclipse.emf.parsley.resource.ResourceManager
import org.eclipse.emf.parsley.examples.cdo.treeform.customizations.TreeformCDOResourceManager

/* org.eclipse.emf.parsley.examples.cdo.treeform EMF Parsley Dsl Module file */
module org.eclipse.emf.parsley.examples.cdo.treeform  extends CDOEmfParsleyModule {

	parts{
		viewpart org.eclipse.emf.parsley.examples.cdo.treeformview{
			viewname "Test CDO form view"
			viewclass TreeFormCDOView
		}
	}

	bindings {
		type ResourceManager -> TreeformCDOResourceManager
	}

	featuresProvider{
		features{
			Book -> title, authors, pages 
		}
	}	
}
