/* * 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.UMLTreeModel; 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.xmi.UML; import au.com.langdale.kena.OntResource; import static au.com.langdale.ui.builder.Templates.*; public class InfoModelEditor extends ModelEditor { private JenaTreeModelBase tree; @Override public JenaTreeModelBase getTree() { if( tree == null ) { tree = new UMLTreeModel(); tree.setRootResource(UML.global_package); tree.setSource(getFile().getFullPath().toString()); modelCached(null); } return tree; } public void modelCached(IResource key) { tree.setOntModel(models.getOntology(getFile())); } public void modelDropped(IResource key) { close(); } @Override protected void createPages() { addPage(main); } private FurnishedEditor main = new FurnishedEditor("CIM Detail") { @Override protected Content createContent() { return new Content(getToolkit()) { @Override protected Template define() { return Form( Grid( Group(Label("Name:"), DisplayField("name"), Label("Type:"), DisplayField("range"), Label("card","")), Group(Label("URI:"), DisplayField("uri")), Group(Label("XMI ID:"), DisplayField("id")), Group(Label("Description:")), Group(DisplayArea("comment")) ) ); } @Override public void refresh() { getForm().setImage(IconCache.getIcons().get(getNode())); getForm().setText(getComment()); OntResource subject = getSubject(); OntResource prop; if( subject != null) { setTextValue("comment", subject.getComment(null)); setTextValue("name", subject.getLabel(null)); setTextValue("uri", subject.getURI()); if( subject.isProperty()) prop = subject; else prop = null; String id = subject.getString(UML.id); if(id != null) setTextValue("id", id); else setTextValue("id", ""); } else { setTextValue("comment", ""); setTextValue("name", ""); setTextValue("uri", ""); setTextValue("id", ""); prop = null; } if( prop != null && prop.getRange() != null && ! prop.getRange().isAnon()) { setTextValue("range", prop.getRange().getLocalName()); getLabel("card").setText( prop.isFunctionalProperty()? "0..1":"0..n"); getText("range").setEnabled(true); } else { setTextValue("range", ""); getText("range").setEnabled(false); getLabel("card").setText(""); } } }; } }; @Override protected void markDirty() { // we are a readonly view } }