/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jimmui.view.text;
import jimm.Jimm;
import jimm.comm.StringUtils;
import jimmui.view.icons.Icon;
import java.util.Vector;
import javax.microedition.lcdui.Font;
import jimmui.view.base.CanvasEx;
import jimmui.view.base.GraphicsEx;
import jimm.util.JLocale;
/**
*
* @author vladimir
*/
public final class TextListModel {
private final Vector<Par> pars = new Vector<Par>();
private Font[] fontSet = GraphicsEx.chatFontSet;
private String header = null;
Font[] getFontSet() {
return fontSet;
}
public void updateFontSet() {
fontSet = GraphicsEx.chatFontSet;
}
public final void addPar(Parser item) {
pars.addElement(item.getPar());
}
protected final Par getPar(int index) {
return (Par) pars.elementAt(index);
}
public final int getSize() {
return pars.size();
}
private Parser createParser(boolean selectable) {
final int width = Jimm.getJimm().getDisplay().getNativeCanvas().getMinScreenMetrics() - 3;
Parser parser = new Parser(fontSet, width);
parser.setSelectable(selectable);
return parser;
}
public final Parser createNewParser(boolean selectable) {
return createParser(selectable);
}
protected final String getAllText() {
StringBuilder result = new StringBuilder();
// Fills the lines
int size = getSize();
for (int i = 0; i < size; ++i) {
String text = getPar(i).getText();
if (null != text) {
result.append(text).append("\n");
}
}
String retval = result.toString().trim();
return (0 == retval.length()) ? null : retval;
}
public final boolean isSelectable(int index) {
return getPar(index).selectable;
}
public final String getParText(int index) {
Par par = getPar(index);
return par.selectable ? par.getText() : null;
}
/** Remove all lines form list */
public void clear() {
pars.removeAllElements();
header = null;
}
public void removeFirst() {
pars.removeElementAt(0);
}
///////////////////////////////////////////////////////////////////////////
public final void addItem(String text, boolean active) {
byte type = active ? CanvasEx.FONT_STYLE_BOLD : CanvasEx.FONT_STYLE_PLAIN;
Parser item = createParser(true);
item.useMinHeight();
item.addText(text, CanvasEx.THEME_TEXT, type);
addPar(item);
}
///////////////////////////////////////////////////////////////////////////
public final void setHeader(String header) {
this.header = header;
}
public final void setInfoMessage(String text) {
Parser par = createParser(false);
par.addText(text, CanvasEx.THEME_TEXT, CanvasEx.FONT_STYLE_PLAIN);
addPar(par);
}
private void addHeader() {
if (null != header) {
Parser line = createParser(false);
line.addText(JLocale.getString(header),
CanvasEx.THEME_TEXT, CanvasEx.FONT_STYLE_BOLD);
addPar(line);
header = null;
}
}
public void addParam(String langStr, String str) {
if (!StringUtils.isEmpty(str)) {
addHeader();
Parser line = createParser(true);
line.addText(JLocale.getString(langStr) + ": ",
CanvasEx.THEME_TEXT, CanvasEx.FONT_STYLE_PLAIN);
line.addText(str, CanvasEx.THEME_PARAM_VALUE, CanvasEx.FONT_STYLE_PLAIN);
addPar(line);
}
}
public void addParamImage(String langStr, Icon img) {
if (null != img) {
addHeader();
Parser line = createParser(true);
if (!StringUtils.isEmpty(langStr)) {
line.addText(JLocale.getString(langStr) + ": ",
CanvasEx.THEME_TEXT, CanvasEx.FONT_STYLE_PLAIN);
}
line.addImage(img);
addPar(line);
}
}
}