001    // This file is part of the Attempto Java Packages.
002    // Copyright 2008, Attempto Group, University of Zurich (see http://attempto.ifi.uzh.ch).
003    //
004    // The Attempto Java Packages is free software: you can redistribute it and/or modify it under the
005    // terms of the GNU Lesser General Public License as published by the Free Software Foundation,
006    // either version 3 of the License, or (at your option) any later version.
007    //
008    // The Attempto Java Packages is distributed in the hope that it will be useful, but WITHOUT ANY
009    // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
010    // PURPOSE. See the GNU Lesser General Public License for more details.
011    //
012    // You should have received a copy of the GNU Lesser General Public License along with the Attempto
013    // Java Packages. If not, see http://www.gnu.org/licenses/.
014    
015    package ch.uzh.ifi.attempto.acewiki.gui.page;
016    
017    import static ch.uzh.ifi.attempto.ape.OutputType.DRSPP;
018    import nextapp.echo2.app.Column;
019    import nextapp.echo2.app.Insets;
020    import nextapp.echo2.app.event.ActionEvent;
021    import nextapp.echo2.app.event.ActionListener;
022    import ch.uzh.ifi.attempto.acewiki.Wiki;
023    import ch.uzh.ifi.attempto.acewiki.core.ontology.Sentence;
024    import ch.uzh.ifi.attempto.acewiki.gui.Title;
025    import ch.uzh.ifi.attempto.echocomp.VSpace;
026    import echopointng.DirectHtml;
027    import echopointng.util.HtmlKit;
028    
029    /**
030     * This class represents a page that shows the logical representation of an ACE sentence.
031     * 
032     * @author Tobias Kuhn
033     */
034    public class LogicPage extends WikiPage implements ActionListener {
035    
036            private static final long serialVersionUID = 61958212885537L;
037    
038            private Sentence sentence;
039    
040            /**
041             * Creates a new logic page.
042             * 
043             * @param wiki The wiki instance.
044             * @param sentence The sentence whose logical representation should be shown in the page.
045             */
046            public LogicPage(Wiki wiki, Sentence sentence) {
047                    super(wiki, new Title(sentence.toString(), "- Logic"));
048                    this.sentence = sentence;
049                    
050                    addTab("Sentence", this);
051                    addSelectedTab("Logic");
052                    
053                    add(new VSpace(15));
054                    
055                    addHeadline("Logical representation");
056                    
057                    Column drsColumn = new Column();
058                    drsColumn.setInsets(new Insets(10, 0, 5, 15));
059                    drsColumn.add(new DirectHtml("<i><pre>" + sentence.getParserResult().get(DRSPP) + "</pre></i>"));
060                    add(drsColumn);
061                    
062                    if (sentence.isOWLSWRL()) {
063                            
064                            if (sentence.isOWL()) {
065                                    addHeadline("OWL (XML syntax)");
066                            } else {
067                                    addHeadline("OWL+SWRL (RDF/XML syntax)");
068                            }
069                            
070                            Column owlrdfColumn = new Column();
071                            owlrdfColumn.setInsets(new Insets(10, 0, 5, 25));
072                            owlrdfColumn.add(new DirectHtml("<i><pre>" + HtmlKit.encode(sentence.getOWLXML()) + "</pre></i>"));
073                            add(owlrdfColumn);
074                    }
075            }
076    
077            public void actionPerformed(ActionEvent e) {
078                    if ("Sentence".equals(e.getActionCommand())) {
079                            getWiki().showPage(new SentencePage(getWiki(), sentence));
080                    }
081            }
082    
083            public boolean equals(Object obj) {
084                    if (obj instanceof LogicPage) {
085                            return sentence == ((LogicPage) obj).sentence;
086                    }
087                    return false;
088            }
089            
090            public String toString() {
091                    return "Logic: " + sentence.getText();
092            }
093    
094    }