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.base; 016 017 018 /** 019 * This class describes a text element (a word or a phrase) to be used by the predictive editor. 020 * Every text element contains a text and one or more grammatical categories. If a text element 021 * contains more than one category then this means that it can stand for any of these categories. 022 * 023 * @author Tobias Kuhn 024 */ 025 public class TextElement { 026 027 private String text; 028 private TextContainer textContainer; 029 030 /** 031 * Creates a new text element. 032 * 033 * @param text The text of the new text element. 034 */ 035 public TextElement(String text) { 036 this.text = text; 037 } 038 039 /** 040 * Creates a new text element without initializing the fields of the object. 041 */ 042 protected TextElement() { 043 } 044 045 /** 046 * Returns the original text of this text element. This is the unchanged text before the 047 * context is checked by the text operator. 048 * 049 * @return The original text (before context checking). 050 */ 051 public String getOriginalText() { 052 return text; 053 } 054 055 /** 056 * Returns the text of this text element. The text might have been changed by the context 057 * checking of the text operator. 058 * 059 * @return The text (after context checking). 060 */ 061 public String getText() { 062 if (textContainer != null) { 063 return textContainer.getTextElementText(this); 064 } 065 return getOriginalText(); 066 } 067 068 /** 069 * Sets the text container that contains this text element. 070 * 071 * @param textContainer The text container. 072 */ 073 void setTextContainer(TextContainer textContainer) { 074 this.textContainer = textContainer; 075 } 076 077 /** 078 * Removes the text container. 079 */ 080 void removeTextContainer() { 081 this.textContainer = null; 082 } 083 084 /** 085 * Two text elements are equals if they share the same text. 086 */ 087 public boolean equals(Object obj) { 088 if (!(obj instanceof TextElement)) return false; 089 TextElement other = (TextElement) obj; 090 if (!toString().equals(other.toString())) return false; 091 return true; 092 } 093 094 public String toString() { 095 return text; 096 } 097 098 }