/* * This software is Copyright 2005,2006,2007,2008 Langdale Consultants. * Langdale Consultants can be contacted at: http://www.langdale.com.au */ package au.com.langdale.cimtoole.properties; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import au.com.langdale.cimtoole.builder.SchemaBuildlet; import au.com.langdale.cimtoole.project.FurnishedPropertyPage; import au.com.langdale.cimtoole.project.Info; import au.com.langdale.ui.binding.Validators; import au.com.langdale.ui.builder.Template; import au.com.langdale.util.Jobs; import static au.com.langdale.ui.builder.Templates.*; public class PropertyPage extends FurnishedPropertyPage { @Override protected Content createContent() { return new Content() { @Override protected Template define() { IResource resource = getResource(); if(Info.isSchema(resource )) return defineSchemaPage(); else if(Info.isInstance(resource) || Info.isSplitInstance(resource)) return defineInstancePage(); else if(Info.isIncremental(resource)) return defineIncrementalPage(); else if(resource instanceof IProject) return defineProjectPage(); else return Label("No properties available for this resource."); } private Template defineInstancePage() { return Grid( Group( Label("Namespace URI:"), new Property(Info.INSTANCE_NAMESPACE, Validators.NAMESPACE)), Group( Label("Profile Name:"), new Property(Info.PROFILE_PATH, Validators.OptionalFileWithExt("owl"))) ); } private Template defineIncrementalPage() { return Grid( Group( Label("Namespace URI:"), new Property(Info.INSTANCE_NAMESPACE, Validators.NAMESPACE)), Group( Label("Base Model Name:"), new Property(Info.BASE_MODEL_PATH, Validators.OptionalFileAnyExt())) ); } private Template defineProjectPage() { return Grid( Group(Label("Merged Schema Output")), Group( Label("File Name:"), new Property(Info.MERGED_SCHEMA_PATH, Validators.OptionalFileWithExt("merged-owl"))) ); } private Template defineSchemaPage() { return Grid( Group( Label("Namespace URI:"), new Property(Info.SCHEMA_NAMESPACE, Validators.NAMESPACE)), Group( Label("Warning: changing this namespace will affect existing profiles.")) ); } @Override public void update() { try { IResource resource = getResource(); if( resource instanceof IProject) { String merged = Info.getProperty(resource, Info.MERGED_SCHEMA_PATH); if( merged != null && merged.length() != 0) { IFile file = resource.getProject().getFile(merged); Jobs.runJob(new SchemaBuildlet().asRunnable(file, false), resource, "Generating merged OWL"); } } else resource.touch(null); } catch (CoreException e) { throw new RuntimeException(e); } } }; } }