rdfxmlentityrenderer.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 179 行

JAVA
179
字号
/* * Created on Apr 21, 2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */package org.mindswap.swoop.renderer.entity;import java.awt.Component;import java.io.IOException;import java.io.Writer;import java.net.URI;import java.net.URISyntaxException;import java.util.Iterator;import javax.swing.JEditorPane;import org.mindswap.swoop.SwoopDisplayPanel;import org.mindswap.swoop.SwoopModel;import org.mindswap.swoop.TermsDisplay;import org.mindswap.swoop.renderer.BaseEntityRenderer;import org.mindswap.swoop.renderer.SwoopEditableRenderer;import org.mindswap.swoop.renderer.SwoopEntityRenderer;import org.mindswap.swoop.utils.owlapi.QNameShortFormProvider;import org.mindswap.swoop.utils.rdfapi.EConnTripleVisitor;import org.mindswap.swoop.utils.rdfapi.HyperXMLWriter;import org.mindswap.swoop.utils.rdfapi.NodeProvider;import org.mindswap.swoop.utils.rdfapi.PrettyXMLWriter;import org.mindswap.swoop.utils.rdfapi.RDFWriter;import org.mindswap.swoop.utils.rdfapi.SkolemizingNodeProvider;import org.mindswap.swoop.utils.rdfapi.SwoopResource;import org.mindswap.swoop.utils.rdfapi.TripleVisitor;import org.mindswap.swoop.utils.rdfapi.XMLWriter;import org.semanticweb.owl.io.RendererException;import org.semanticweb.owl.model.OWLDifferentIndividualsAxiom;import org.semanticweb.owl.model.OWLEntity;import org.semanticweb.owl.model.OWLException;import org.semanticweb.owl.model.OWLIndividualAxiom;import org.semanticweb.owl.model.OWLOntology;import org.xngr.browser.editor.XmlEditorPane;import edu.unika.aifb.rdf.api.model.ModelException;/** * @author ronwalf * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */public class RDFXMLEntityRenderer implements SwoopEntityRenderer, SwoopEditableRenderer {	protected boolean editorEnabled;	protected JEditorPane pane;		protected String getContentType() {		if (isEditableText()) {			return "text/plain";		} else {			return "text/html";		}	}		/* (non-Javadoc)	 * @see org.mindswap.swoop.renderer.SwoopRenderer#getDisplayComponent(org.mindswap.swoop.SwoopDisplayPanel)	 */	public Component getDisplayComponent(SwoopDisplayPanel panel) {		if (!(panel instanceof TermsDisplay ))			throw new IllegalArgumentException();				if (!editorEnabled) {			// return standard JEditorPane			pane = BaseEntityRenderer.getEditorPane( this.getContentType(), (TermsDisplay)panel );		}		else 		{			// XMLPane construction			pane = new XmlEditorPane();			pane.addKeyListener((TermsDisplay) panel);			pane.getDocument().addDocumentListener((TermsDisplay) panel);		}		return pane;	}	/* (non-Javadoc)	 * @see org.mindswap.swoop.renderer.SwoopRenderer#getName()	 */	public String getName() {		return "RDF/XML";	}	/* (non-Javadoc)	 * @see org.mindswap.swoop.renderer.SwoopEditableRenderer#isEditableText()	 */	public boolean isEditableText() {		return editorEnabled;	}		/* (non-Javadoc)	 * @see org.mindswap.swoop.renderer.SwoopEntityRenderer#render(org.semanticweb.owl.model.OWLEntity, org.mindswap.swoop.SwoopModel, java.io.Writer)	 */	public void render(OWLEntity entity, SwoopModel swoopModel, Writer writer) throws RendererException {		try {			int fontSize = 3+3*Integer.parseInt(swoopModel.getFontSize());						//XMLEditorPane does not properly work with setFont...			//Font font =  new Font(swoopModel.getFontFace(), Font.PLAIN, fontSize);			//pane.setFont(font);						if (swoopModel.getEditorEnabled() && !entity.getOntologies().contains(swoopModel.getSelectedOntology())) {				// entity is imported..cannot edit here				writer.write("Cannot edit Imported Entity directly here.");				return;			}			if (!isEditableText()) {				writer.write("<html><body style=\"font-face:"+swoopModel.getFontFace()+"; background-color: white; color: black; font-size:"+fontSize+"\">");			}						OWLOntology ontology = swoopModel.getSelectedOntology();			NodeProvider nodeProvider = new SkolemizingNodeProvider();			TripleVisitor visitor = new EConnTripleVisitor(ontology, nodeProvider);			entity.accept(visitor);						XMLWriter xml;			if (isEditableText()) {				xml = new PrettyXMLWriter(writer);			} else {				xml = new HyperXMLWriter(writer);			}			// Add entity for ontology						QNameShortFormProvider qnames = new QNameShortFormProvider();			String prefix = qnames.findPrefix(ontology.getURI().resolve("#none"));			if (prefix != null) 				xml.addEntity(prefix, ontology.getURI().toString());									//visitor.serialize(xml, entity);			RDFWriter rdf = new RDFWriter(xml, visitor.getModel(), qnames);			rdf.setMaxLevel(10);			rdf.setBase(ontology.getURI());			rdf.startDocument();						if (nodeProvider.getNode(entity) instanceof SwoopResource) {				SwoopResource resource = (SwoopResource) nodeProvider.getNode(entity);				rdf.serializeSubject(resource);								for (Iterator iter = ontology.getIndividualAxioms().iterator(); iter.hasNext(); ) {					OWLIndividualAxiom axiom = (OWLIndividualAxiom) iter.next();					if (axiom instanceof OWLDifferentIndividualsAxiom) {						if (axiom.getIndividuals().contains(entity)) {							SwoopResource axiomResource = (SwoopResource) nodeProvider.getNode(axiom);							rdf.serializeSubject(axiomResource);						}					}				}			}			rdf.serializeAll();			rdf.endDocument();						if (!isEditableText()) {				writer.write("</FONT></body></html>");			}		} catch (IOException e) {			e.printStackTrace();		} catch (OWLException e) {			e.printStackTrace();		}	}	/* (non-Javadoc)	 * @see org.mindswap.swoop.renderer.SwoopEditableRenderer#setEditorEnabled(boolean)	 */	public void setEditorEnabled(boolean mode) {		editorEnabled = mode;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?