/*
* 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.editors;
import org.eclipse.core.resources.IResource;
import au.com.langdale.jena.JenaTreeModelBase;
import au.com.langdale.jena.JenaTreeModelBase.ModelNode;
import au.com.langdale.jena.TreeModelBase.Node;
import au.com.langdale.ui.builder.FurnishedEditor;
import au.com.langdale.ui.builder.Template;
import au.com.langdale.ui.util.IconCache;
import au.com.langdale.validation.DiagnosisModel;
import au.com.langdale.validation.DiagnosisModel.DetailNode;
import au.com.langdale.kena.OntResource;
import static au.com.langdale.ui.builder.Templates.*;
public class DiagnosisEditor extends ModelEditor {
private JenaTreeModelBase tree;
@Override
public JenaTreeModelBase getTree() {
if( tree == null ) {
tree = new DiagnosisModel();
//tree.setRootResource(DiagnosisModel.DIAGNOSIS_ROOT);
tree.setSource(getFile().getFullPath().toString());
modelCached(null);
}
return tree;
}
public void modelCached(IResource key) {
tree.setOntModel(models.getOntology(getFile()));
tree.setRootResource(DiagnosisModel.DIAGNOSIS_ROOT);
doRefresh();
}
public void modelDropped(IResource key) {
close();
}
@Override
protected void createPages() {
addPage(main);
}
FurnishedEditor main = new FurnishedEditor("Diagnostics") {
@Override
protected Content createContent() {
return new Content(getToolkit()) {
@Override
protected Template define() {
return Form(
Grid(
Group(Label("Name:"), DisplayField("name")),
Group(Label("URI:"), DisplayField("uri")),
Group(DisplayArea("comment"))
)
);
}
@Override
public void refresh() {
Node node = getNode();
getForm().setImage(IconCache.getIcons().get(node));
if( node instanceof ModelNode) {
OntResource subject = ((ModelNode)node).getBase();
setTextValue("name", DiagnosisModel.label(subject));
setTextValue("uri", subject.isAnon()? "": subject.getURI());
if( node instanceof DetailNode) {
setTextValue("comment", ((DetailNode)node).getDescription());
}
else {
setTextValue("comment", "This item has " + node.getChildren().size() + " diagnostic reports." );
}
}
else {
setTextValue("name", "");
setTextValue("uri", "");
setTextValue("comment", "");
}
}
};
}
};
}