📄 termsdisplay.java
字号:
* */ protected void previousHistory() { try { // get previous term from History Array if (historyCtr<=0) return; else historyCtr--; if (historyCtr==0) prevBtn.setEnabled(false); // if user keeps pressing back and reaches start OWLNamedObject namedObj = historyEntity[historyCtr][0]; OWLOntology histOnt = (OWLOntology) historyEntity[historyCtr][1]; boolean imports = historyImports[historyCtr]; this.traverseHistory(namedObj, histOnt, imports); // if previous was pressed, next button must be enabled nextBtn.setEnabled(true); } catch (Exception ex) { ex.printStackTrace(); } } /** * Traverse to the next element in the History * Calls traverseHistory with the appropriate arguments (entity, ontology, imports) * as obtained from the historyEntity list. * */ protected void nextHistory() { try { // get next term from History Array historyCtr++; OWLNamedObject namedObj = historyEntity[historyCtr][0]; OWLOntology histOnt = (OWLOntology) historyEntity[historyCtr][1]; boolean imports = historyImports[historyCtr]; if (historyEntity[historyCtr+1][0]==null) nextBtn.setEnabled(false); this.traverseHistory(namedObj, histOnt, imports); // if next was pressed, previous button must be enabled prevBtn.setEnabled(true); } catch (Exception ex) { ex.printStackTrace(); } } /** * Apply changes when user edits text directly (abstract syntax, rdf/xml..) */ public void applyDirectTextChanges() { try { // if uncommitted changes exist on the list you need to commit those instead if (swoopModel.getUncommittedChanges().size()>0) { System.out.println("Applied Uncommited Changes alone - skipping text changes..."); return; } // get the entity description only int index = termDisplayPane.getSelectedIndex(); SwoopEntityRenderer renderer = (SwoopEntityRenderer) renderers.get(index); // New approach for RDF/XML renderer if (renderer instanceof RDFXMLEntityRenderer) { OWLEntity currEntity = swoopModel.getSelectedEntity(); OWLOntology currOnt = swoopModel.getSelectedOntology(); // get new entity code XmlEditorPane editor = (XmlEditorPane) editors.get(index); String newEntityCode = editor.getText(); //String currEntityURI = currEntity.getURI().toString(); // save entity checkpoint if option is enabled BEFORE operation if (swoopModel.getEnableAutoSaveChkPts()) { swoopHandler.changeLog.saveCheckPoint(ChangeLog.ENTITY_SCOPE, swoopModel.selectedOntology, swoopModel.selectedEntity, "Saving State BEFORE change made directly in RDF/XML code", null); } // --- call swoopModel function to perform RDF edit --- boolean update = swoopModel.replaceEntityRDF(currOnt, currEntity, newEntityCode); if (update) { // save entity checkpoint if option is enabled AFTER operation if (swoopModel.getEnableAutoSaveChkPts()) { swoopHandler.changeLog.saveCheckPoint(ChangeLog.ENTITY_SCOPE, swoopModel.selectedOntology, swoopModel.selectedEntity, "Saving State AFTER change made directly in RDF/XML code", null); } } else { JOptionPane.showMessageDialog(this, "Error parsing RDF/XML source code", "Parse Error", JOptionPane.ERROR_MESSAGE); } applyChangesBtn.setEnabled(false); } else if (renderer instanceof AbstractSyntaxEntityRenderer) { // get current selections OWLEntity currEntity = swoopModel.getSelectedEntity(); OWLOntology currOnt = swoopModel.getSelectedOntology(); // get new entity code JEditorPane editor = (JEditorPane) editors.get(index); String newEntityStr = editor.getText(); String newEntityCode = editor.getText(1,editor.getDocument().getLength()-1); // get string after entity name String str = ""; if (currEntity instanceof OWLClass) str = "Class"; else if (currEntity instanceof OWLObjectProperty) str = "ObjectProperty"; else if (currEntity instanceof OWLDataProperty) str = "DataProperty"; else if (currEntity instanceof OWLIndividual) str = "Individual"; newEntityCode = newEntityCode.substring(newEntityCode.indexOf(str), newEntityCode.lastIndexOf(")")); // clone ontology, remove entity and then get its AS code// OWLOntology copy = swoopModel.cloneOntology(currOnt);// OWLEntity ent = swoopModel.getEntity(copy, currEntity.getURI(), true);// RemoveEntity re = new RemoveEntity(copy, ent, null);// re.accept((ChangeVisitor) copy); StringWriter st1 = new StringWriter();// org.semanticweb.owl.io.abstract_syntax.Renderer asRend = // new org.semanticweb.owl.io.abstract_syntax.Renderer();// asRend.renderOntology(copy, st1); AbstractSyntaxEntityRenderer asRend = (AbstractSyntaxEntityRenderer) renderer; asRend.setNoLinks(true); asRend.renderOntology(swoopModel, currOnt, currEntity, newEntityCode, st1);// String ontStr = st1.toString();// ontStr = ontStr.substring(0, ontStr.lastIndexOf(")"));// newEntityCode = ontStr + newEntityCode + ")";; String newOntCode = st1.toString(); // get oldEntity code as well// StringWriter st2 = new StringWriter();// org.semanticweb.owl.io.abstract_syntax.Renderer as = new org.semanticweb.owl.io.abstract_syntax.Renderer();// as.renderOntology(currOnt, st2);// String oldEntityCode = st2.toString(); // String currEntityURI = currEntity.getURI().toString(); // save entity checkpoint if option is enabled BEFORE operation if (swoopModel.getEnableAutoSaveChkPts()) { swoopHandler.changeLog.saveCheckPoint(ChangeLog.ENTITY_SCOPE, swoopModel.selectedOntology, swoopModel.selectedEntity, "Saving State BEFORE change made directly in RDF/XML code", null); } // --- call update method in swoopModel boolean update = swoopModel.replaceEntityAS(currOnt, newOntCode); if (update) { // save entity checkpoint if option is enabled AFTER operation if (swoopModel.getEnableAutoSaveChkPts()) { swoopHandler.changeLog.saveCheckPoint(ChangeLog.ENTITY_SCOPE, swoopModel.selectedOntology, swoopModel.selectedEntity, "Saving State AFTER change made directly in RDF/XML code", null); } } else { JOptionPane.showMessageDialog(this, "Error parsing Abstract Syntax source code", "Parse Error", JOptionPane.ERROR_MESSAGE); } applyChangesBtn.setEnabled(false); } else if ( renderer instanceof TurtleEntityRenderer ) { // save old qname state boolean oldQNameState = swoopModel.getShowQNames(); OWLEntity currEntity = swoopModel.getSelectedEntity(); OWLOntology currOnt = swoopModel.getSelectedOntology(); String baseURI = currOnt.getLogicalURI().toString(); // get new entity code JEditorPane editor = (JEditorPane) editors.get(index); Document d = editor.getDocument(); String newEntityCode = d.getText( 1, d.getLength() - 1 ).trim(); // removing strange characters that makes TurtleParser fail char c = 160; newEntityCode = newEntityCode.replaceAll( ""+c, " " ); // segment newEntityCode to have the same line breaks as displayed newEntityCode = Turtle2RDFConverter.addLineInfo( newEntityCode, editor.getText() ); String rdfCode = Turtle2RDFConverter.turtle2RDF( newEntityCode, baseURI, this, editor ); // if parse failed, stop if ( rdfCode == null ) { return; } boolean update = false; if (rdfCode!=null) { String currEntityURI = currEntity.getURI().toString(); // save entity checkpoint if option is enabled BEFORE operation if (swoopModel.getEnableAutoSaveChkPts()) { swoopHandler.changeLog.saveCheckPoint(ChangeLog.ENTITY_SCOPE, swoopModel.selectedOntology, swoopModel.selectedEntity, "Saving State BEFORE change made directly in RDF/XML code", null); } // --- call swoopModel function to perform RDF edit --- update = swoopModel.replaceEntityRDF(currOnt, currEntity, rdfCode); } if (update) { // save entity checkpoint if option is enabled AFTER operation if (swoopModel.getEnableAutoSaveChkPts()) { swoopHandler.changeLog.saveCheckPoint(ChangeLog.ENTITY_SCOPE, swoopModel.selectedOntology, swoopModel.selectedEntity, "Saving State AFTER change made directly in RDF/XML code", null); } } else { JOptionPane.showMessageDialog(this, "Error parsing RDF/XML source code converted from TURTLE ", "Parse Error", JOptionPane.ERROR_MESSAGE); } applyChangesBtn.setEnabled(false); } } catch (Exception e) { e.printStackTrace(); } } public void actionPerformed(ActionEvent e) { // when user presses ENTER while typing in lookupFld if ((e.getSource()==lookupFld) || (e.getSource()==lookupBtn)) { lookupTerm(); } else if (e.getSource()==addClassBtn) { addNewClass(swoopModel.getSelectedOntology()); } else if (e.getSource()==addPropBtn) { addNewProperty(swoopModel.getSelectedOntology()); } else if (e.getSource()==addIndBtn) { addNewIndividual(swoopModel.getSelectedOntology()); } else if (e.getSource()==addGCIBtn) { popupNewGCI(); } else // remove term button clicked if (e.getSource()==remTermBtn) { List removeEntities = new ArrayList(); // if tab pane is showing a class/property tree // get selected tree nodes if (termTabPane.getSelectedIndex()<2) { JTree tree = trees[termTabPane.getSelectedIndex()]; if (tree.getSelectionCount()==1) { removeEntities.add(swoopModel.getSelectedEntity()); } else { TreePath[] paths = tree.getSelectionPaths(); for (int i=0; i<paths.length; i++) { TreePath path = paths[i]; Object obj = ((DefaultMutableTreeNode) path.getLastPathComponent()).getUserObject(); if (obj instanceof Set) removeEntities.addAll((Set) obj); } } } else { // if tab pane is showing alphabetical list // remove GCI separately if (termList.getSelectedValue() instanceof OWLSubClassAxiom) { swoopModel.removeGCI(swoopModel.selectedOntology, termList.getSelectedValues(), true); return; } //*** Note RETURN statement above if (termList.getSelectedValues().length==1) { removeEntities.add(swoopModel.selectedEntity); } else { Object[] obj = termList.getSelectedValues(); for (int i=0; i<obj.length; i++) { removeEntities.add((OWLEntity) obj[i]); } } } // now remove entities depending on whether single entity is to be removed // or a batch of selected entities are to be removed if (removeEntities.size()==1) { // remove single OWL entity removeEntity(swoopModel.getSelectedOntology(), swoopModel.getSelectedEntity(), true); } else { // batch removal of entities (selected in tree) String title = "Batch Removal of OWL Entities"; int options = JOptionPane.YES_NO_OPTION; int result = JOptionPane.showConfirmDialog(this, "This is going to remove ALL References of the Selected Entities from the Ontology. Continue?", title, options); if (result == JOptionPane.YES_OPTION) { for (Iterator iter = removeEntities.iterator(); iter.hasNext();) { OWLEntity entity = (OWLEntity) iter.next(); removeEntity(swoopModel.getSelectedOntology(), entity, false); } } } } if (e.getSource()==renameTermBtn) { try { OWLEntity entity = swoopModel.getSelectedEntity(); String name = swoopModel.shortForm(entity.getURI()); if (name.indexOf(":")>=0) name = name.substring(name.indexOf(":")+1, name.length()); String newTerm = JOptionPane.showInputDialog( null, new Object[] { "(Note: All references of the entity will be renamed)", "Current Name (ID): " + name, "Enter New Name (ID):" }, "Rename OWL Entity", JOptionPane.PLAIN_MESSAGE ); if (newTerm!=null) { newTerm = newTerm.replaceAll(" ", "_"); // check if name already used in ontology OWLOntology ont = swoopModel.getSelectedOntology(); URI newURI = new URI(ont.getURI().toString()+"#"+newTerm); if (swoopModel.getEntity(ont, newURI, true)!=null) { JOptionPane.showMessageDialog(this, "URI already in use for another OWL Entity", "Rename Error" , JOptionPane.ERROR_MESSAGE); return; } else swoopModel.renameOWLEntity(swoopModel.getSelectedOntology(), entity, newTerm); } } catch (Exception ex) { ex.printStackTrace(); } } // when user presses the Previous Button (History) if (e.getSource()==prevBtn) { previousHistory(); } // when user presses the Next Button (History) if (e.getSource()==nextBtn) { nextHistory(); } // if user checks on search all ontologies if (e.getSource()==searchAllChk) { swoopModel.setLookupAllOnts(searchAllChk.isSelected()); } // if user checks on enable debugging if (e.getSource()==debugChk) { if (debugChk.isSelected()) { int answer = JOptionPane.YES_OPTION; JPanel debugPanel = new JPanel(); debugPanel.setLayout(new GridLayout(2,1)); JLabel debugLbl = new JLabel("Debugging may slow down browsing considerably. Are you sure you want to continue?"); debugPanel.add(debugLbl); JCheckBox switchPellet = new JCheckBox("Also switch to Pellet Reasoner?"); switchPellet.setSelected(true); if (!(swoopModel.getReasoner() instanceof PelletReasoner)) debugPanel.add(switchPellet); // confirm the user before enabling debugging
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -