package com.iambookmaster.client.paragraph;
import java.util.ArrayList;
import com.iambookmaster.client.beans.Greeting;
import com.iambookmaster.client.beans.Paragraph;
import com.iambookmaster.client.beans.ParagraphConnection;
import com.iambookmaster.client.locale.AppConstants;
import com.iambookmaster.client.locale.AppMessages;
import com.iambookmaster.client.model.Model;
import com.iambookmaster.client.model.ParagraphParsingHandler;
public class TextBookDecrator implements BookDecorator {
protected StringBuffer buffer;
private AppConstants appConstants;
private AppMessages appMessages;
private Model model;
public TextBookDecrator(Model mod,AppConstants appConstants,AppMessages appMessages) {
this.model = mod;
this.appConstants = appConstants;
this.appMessages = appMessages;
buffer = new StringBuffer();
buffer.append(model.getSettings().getBookTitle());
buffer.append('\n');
buffer.append('\n');
buffer.append(model.getSettings().getBookAuthors());
buffer.append('\n');
buffer.append(model.getSettings().getBookDescription());
buffer.append('\n');
buffer.append(appConstants.bookCreatedByText());
buffer.append('\n');
if (model.getBookRules().length() >0) {
buffer.append('\n');
buffer.append(appConstants.bookRules());
buffer.append('\n');
buffer.append(model.getBookRules());
buffer.append('\n');
}
}
public void setStartParagraph(Paragraph paragraph) {
buffer.append(appMessages.textDecoratorStartParagraph(paragraph.getNumber()));
buffer.append("\n\n");
}
public String decorateNumber(int number,Paragraph from,Paragraph to, ParagraphConnection connection) {
return "<"+number+">";
}
public void appendParagraph(int number,String text,Paragraph paragraph,ArrayList<ParagraphConnection> connections,ArrayList<ParagraphConnection> incomeConnections) {
buffer.append(number);
buffer.append(". ");
if (model.getSettings().isHiddenUsingObjects() && incomeConnections != null && incomeConnections.size()>0){
boolean first=true;
for (ParagraphConnection connection : incomeConnections) {
if (connection.getType()==ParagraphConnection.TYPE_NORMAL && connection.getObject() != null) {
if (first) {
buffer.append('[');
first = false;
} else {
buffer.append(',');
}
if (connection.getTo()==paragraph) {
buffer.append(connection.getFrom().getNumber());
} else {
buffer.append(connection.getTo().getNumber());
}
}
}
if (first==false) {
buffer.append("] ");
}
}
buffer.append(text);
buffer.append("\n\n");
}
public byte[] toBytes() {
return null;
}
public void endBook() {
}
public void startBook() {
}
public void addGreeting(Greeting greeting) {
buffer.append(greeting.getName());
if (greeting.getUrl() != null && greeting.getUrl().length()>0) {
buffer.append(" (");
buffer.append(greeting.getUrl());
buffer.append(")");
}
buffer.append('\n');
if (greeting.getText() != null && greeting.getText().length()>0) {
buffer.append(greeting.getText());
buffer.append('\n');
}
buffer.append('\n');
}
public void endGreeting() {
buffer.append('\n');
}
public void startGreeting() {
buffer.append(appConstants.decoratorStartGreetings());
buffer.append('\n');
}
public boolean isPlayerMode() {
return false;
}
public ParagraphParsingHandler getParagraphParsingHandler() {
return null;
}
public boolean isHideAbsoluteModificators() {
return true;
}
public String toText() {
return buffer.toString();
}
}