package com.jmxp;
import java.awt.Color;
import java.util.ArrayList;
import com.jmxp.libmxp.alignType;
import com.jmxp.structures.SendStruct;
import com.jmxp.structures.flagStruct;
import com.jmxp.structures.formatStruct;
import com.jmxp.structures.gaugeStruct;
import com.jmxp.structures.imageStruct;
import com.jmxp.structures.internalWindowStruct;
import com.jmxp.structures.linkStruct;
import com.jmxp.structures.moveStruct;
import com.jmxp.structures.relocateStruct;
import com.jmxp.structures.soundStruct;
import com.jmxp.structures.statStruct;
import com.jmxp.structures.varStruct;
import com.jmxp.structures.windowStruct;
public class ResultHandler
{
/**
* result that was most recently sent to the app
*/
private MXPResult returnedResult;
private ArrayList<MXPResult> results = new ArrayList<MXPResult>();
/**
* constructor
*/
public ResultHandler()
{
returnedResult = null;
}
public MXPResult createError(String error)
{
MXPResult res = new MXPResult();
res.type = -1;
res.data = error;
return res;
}
public void addToList(MXPResult res)
{
if (res!=null)
{
results.add(res);
}
}
public MXPResult createText(String t)
{
MXPResult res = new MXPResult();
res.type = 1;
res.data = t;
return res;
}
public MXPResult createWarning(String string)
{
MXPResult res = new MXPResult();
res.type = -2;
res.data = string;
return res;
}
public MXPResult createVariable(String varName, String varValue, boolean erase)
{
MXPResult res = new MXPResult();
res.type = 4;
varStruct vs = new varStruct();
vs.name = varName;
vs.value = varValue;
vs.erase = erase;
res.data = vs;
return res;
}
public void deleteResult(MXPResult res)
{
if (res == null)
return;
res.data = null;
res = null;
}
public MXPResult createSendThis(String text)
{
MXPResult res = new MXPResult();
res.type = 9;
res.data = text;
return res;
}
public MXPResult createFlag(boolean begin, String flag)
{
MXPResult res = new MXPResult();
res.type = 3;
flagStruct fs = new flagStruct();
fs.begin = begin;
fs.name = flag;
res.data = fs;
return res;
}
public MXPResult createFormatting(int usemask, int curattrib,
Color fgcolor, Color bgcolor, String font, int cursize)
{
MXPResult res = new MXPResult();
res.type = 5;
formatStruct fs = new formatStruct();
fs.usemask = usemask;
fs.attributes = curattrib;
fs.fg = fgcolor;
fs.bg = bgcolor;
fs.size = cursize;
fs.font = font;
res.data = fs;
return res;
}
public MXPResult createSetWindow(String curWindow)
{
MXPResult res = new MXPResult();
res.type = 15;
res.data = curWindow;
return res;
}
public MXPResult createLink(String name, String url, String text,
String hint)
{
MXPResult res = new MXPResult();
res.type = 6;
linkStruct ls = new linkStruct();
ls.name = name;
ls.url = url;
ls.text = text;
ls.hint = hint;
res.data = ls;
return res;
}
public MXPResult createSendLink(String name, String cmd, String text,
String hint, boolean prompt, boolean menu)
{
MXPResult res = new MXPResult();
res.type = 7;
SendStruct ss = new SendStruct();
ss.name = name;
ss.command = cmd;
ss.text = text;
ss.hint = hint;
ss.toprompt = prompt;
ss.ismenu = menu;
res.data = ss;
return res;
}
public MXPResult createExpire(String name)
{
MXPResult res = new MXPResult();
res.type = 8;
res.data = name;
return res;
}
public MXPResult createHorizLine()
{
MXPResult res = new MXPResult();
res.type = 10;
res.data = null;
return res;
}
public MXPResult createSound(boolean isSOUND, String fname, int vol, int count,
int priority, boolean contifrereq, String type, String url)
{
MXPResult res = new MXPResult();
res.type = 11;
soundStruct ss = new soundStruct();
ss.fname = fname;
ss.type = type;
ss.url = url;
ss.isSOUND = isSOUND;
ss.vol = vol;
ss.repeats = count;
ss.priority = priority;
ss.continuemusic = contifrereq;
res.data = ss;
return res;
}
public MXPResult createGauge(String variable, String maxvariable,
String caption, Color color)
{
MXPResult res = new MXPResult();
res.type = 22;
gaugeStruct gs = new gaugeStruct();
gs.variable = variable;
gs.maxvariable = maxvariable;
gs.caption = caption;
gs.color = color;
res.data = gs;
return res;
}
public MXPResult createMoveCursor(int x, int y)
{
MXPResult res = new MXPResult();
res.type = 16;
moveStruct ms = new moveStruct();
ms.x = x;
ms.y = y;
res.data = ms;
return res;
}
public MXPResult createEraseText(boolean feof)
{
MXPResult res = new MXPResult();
res.type = 17;
res.data = feof;
return res;
}
public MXPResult createStat(String variable, String maxvariable, String caption)
{
MXPResult res = new MXPResult();
res.type = 23;
statStruct ss = new statStruct();
ss.variable = variable;
ss.maxvariable = maxvariable;
ss.caption = caption;
res.data = ss;
return res;
}
public MXPResult createInternalWindow(String nm, String tt, alignType at,
boolean scrolling)
{
MXPResult res = new MXPResult();
res.type = 13;
internalWindowStruct ws = new internalWindowStruct();
ws.name = nm;
ws.align = at;
ws.scrolling = scrolling;
res.data = ws;
return res;
}
public MXPResult createWindow(String nm, String tt, int left, int top,
int width, int height, boolean scrolling, boolean floating)
{
MXPResult res = new MXPResult();
res.type = 12;
windowStruct ws = new windowStruct();
ws.name = nm;
ws.title = tt;
ws.left = left;
ws.top = top;
ws.width = width;
ws.height = height;
ws.scrolling = scrolling;
ws.floating = floating;
res.data = ws;
return res;
}
public MXPResult createCloseWindow(String nm)
{
MXPResult res = new MXPResult();
res.type = 14;
res.data = nm;
return res;
}
public MXPResult createRelocate(String hostname, int port)
{
MXPResult res = new MXPResult();
res.type = 18;
relocateStruct rs = new relocateStruct();
rs.server = hostname;
rs.port = port;
res.data = rs;
return res;
}
public MXPResult createSendLogin(boolean username)
{
MXPResult res = new MXPResult();
res.type = 19;
res.data = (Boolean)username;
return res;
}
public MXPResult createImageMap(String lastcmd)
{
MXPResult res = new MXPResult();
res.type = 21;
res.data = lastcmd;
return res;
}
public MXPResult createImage(String fname, String url, String type,
int height, int width, int hspace, int vspace, alignType at)
{
MXPResult res = new MXPResult();
res.type = 20;
imageStruct is = new imageStruct();
is.fname = fname;
is.url = url;
is.type = type;
is.height = height;
is.width = width;
is.hspace = hspace;
is.vspace = vspace;
is.align = at;
res.data = is;
return res;
}
public MXPResult createLineTag(int number)
{
MXPResult res = new MXPResult();
res.type = 2;
res.data = number;
return res;
}
public boolean haveResults()
{
return results.size() > 0;
}
public MXPResult nextResult()
{
returnedResult = results.get(0);
results.remove(0);
return returnedResult;
}
}