001 // This file is part of AceWiki. 002 // Copyright 2008-2012, AceWiki developers. 003 // 004 // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU 005 // Lesser General Public License as published by the Free Software Foundation, either version 3 of 006 // the License, or (at your option) any later version. 007 // 008 // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 009 // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 010 // Lesser General Public License for more details. 011 // 012 // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If 013 // not, see http://www.gnu.org/licenses/. 014 015 package ch.uzh.ifi.attempto.acewiki.gui; 016 017 import java.util.List; 018 019 import nextapp.echo.app.Column; 020 import nextapp.echo.app.Font; 021 import nextapp.echo.app.Insets; 022 import ch.uzh.ifi.attempto.acewiki.Wiki; 023 import ch.uzh.ifi.attempto.acewiki.core.LanguageUtils; 024 import ch.uzh.ifi.attempto.acewiki.core.Sentence; 025 import ch.uzh.ifi.attempto.acewiki.core.SentenceDetail; 026 import ch.uzh.ifi.attempto.echocomp.SolidLabel; 027 import ch.uzh.ifi.attempto.echocomp.VSpace; 028 import echopoint.DirectHtml; 029 030 /** 031 * This class represents a page that shows the details of an ACE sentence. 032 * 033 * @author Tobias Kuhn 034 */ 035 public class SentencePage extends WikiPage { 036 037 private static final long serialVersionUID = -1550505465878272821L; 038 039 private Sentence sentence; 040 041 /** 042 * Creates a new sentence page. 043 * 044 * @param wiki The wiki instance. 045 * @param sentence The sentence to be shown in the page. 046 */ 047 public SentencePage(Wiki wiki, Sentence sentence) { 048 super(wiki); 049 this.sentence = sentence; 050 051 addSelectedTab("Sentence"); 052 053 String t = LanguageUtils.getPrettyPrinted(sentence.getText(wiki.getLanguage())); 054 add(new Title(t, false)); 055 addHorizontalLine(); 056 add(new VSpace(15)); 057 058 List<SentenceDetail> l = sentence.getDetails(wiki.getLanguage()); 059 060 if (l == null || l.isEmpty()) { 061 Column col = new Column(); 062 col.setInsets(new Insets(10, 5, 5, 15)); 063 col.add(new SolidLabel("(no detail information available)", Font.ITALIC, 10)); 064 add(col); 065 } else { 066 for (SentenceDetail si : l) { 067 addHeadline(si.getName()); 068 Column infoColumn = new Column(); 069 infoColumn.setInsets(new Insets(10, 5, 5, 15)); 070 infoColumn.add(new DirectHtml(si.getRichText())); 071 add(infoColumn); 072 } 073 } 074 075 } 076 077 public boolean equals(Object obj) { 078 if (obj instanceof SentencePage) { 079 return sentence == ((SentencePage) obj).sentence; 080 } 081 return false; 082 } 083 084 public String toString() { 085 return sentence.getText(getWiki().getEngine().getLanguages()[0]); 086 } 087 088 }