package thaw.plugins.miniFrost;
import java.util.Vector;
import java.util.Iterator;
import thaw.plugins.MiniFrost;
import thaw.plugins.miniFrost.interfaces.Author;
import thaw.plugins.miniFrost.interfaces.Board;
import thaw.plugins.miniFrost.interfaces.Draft;
import thaw.plugins.miniFrost.interfaces.Message;
import thaw.plugins.signatures.Identity;
import thaw.core.I18n;
public class Outbox implements Board {
private MiniFrost miniFrost;
public Outbox(MiniFrost miniFrost) {
this.miniFrost = miniFrost;
}
public boolean destroy() {
/* just can't */
return false;
}
public Draft getDraft(Message inReplyTo) {
/* just can't */
return null;
}
private static class DraftAuthorShell implements thaw.plugins.miniFrost.interfaces.Author {
private Draft draft;
public DraftAuthorShell(Draft draft) {
this.draft = draft;
}
public Identity getIdentity() {
return draft.getAuthorIdentity();
}
public String toString() {
return draft.getAuthorNick();
}
public String toString(boolean noDup) {
return toString();
}
}
private static class DraftSubMessageShell implements thaw.plugins.miniFrost.interfaces.SubMessage {
private Draft draft;
public DraftSubMessageShell(Draft draft) {
this.draft = draft;
}
public Author getAuthor() {
return new DraftAuthorShell(draft);
}
public java.util.Date getDate() {
return draft.getDate();
}
public String getMessage() {
return draft.getText();
}
}
private static class DraftShell implements thaw.plugins.miniFrost.interfaces.Message {
private Draft draft;
public DraftShell(Draft draft) {
this.draft = draft;
}
public String getMsgId() {
return "kwain.net";
}
public String getInReplyToId() {
return null;
}
public String getSubject() {
return draft.getSubject();
}
public Author getSender() {
return new DraftAuthorShell(draft);
}
public java.util.Date getDate() {
return draft.getDate();
}
/**
* @return < 0 if must not be displayed
*/
public int getRev() {
return -1;
}
public boolean isArchived() {
return false;
}
public boolean isRead() {
return true;
}
public Identity encryptedFor() {
return null;
}
public void setRead(boolean read) {
/* ni ! */
}
public void setArchived(boolean archived) {
/* ni ! */
}
public Board getBoard() {
return draft.getBoard();
}
/**
* SubMessage vector. (Don't store / cache !)
*/
public Vector getSubMessages() {
Vector v = new Vector();
v.add(new DraftSubMessageShell(draft));
return v;
}
/**
* @return null if none
*/
public Vector getAttachments() {
return draft.getAttachments();
}
public boolean equals(Object o) {
return (o == this);
}
public int compareTo(Object o) {
if (getDate() == null && ((Message)o).getDate() != null)
return -1;
if (getDate() != null && ((Message)o).getDate() == null)
return 1;
if (getDate() == null && ((Message)o).getDate() == null)
return 0;
int c = getDate().compareTo( ((Message)o).getDate());
return -1 * c;
}
}
public Vector getMessages(String[] keywords, int orderBy, boolean desc,
boolean archived, boolean read, boolean unsigned, int minTrustLevel) {
Vector drafts = miniFrost.getPanel().getDrafts();
Vector msgs = new Vector();
if (drafts == null)
return msgs;
for (Iterator it = drafts.iterator();
it.hasNext();) {
Draft draft = (Draft)it.next();
msgs.add(new DraftShell(draft));
}
return msgs;
}
private final static String outboxStr = I18n.getMessage("thaw.plugin.miniFrost.outbox");
public String getName() {
return outboxStr;
}
public int getNewMessageNumber(boolean unsigned, boolean archived, int minTrustLevel) {
Vector drafts = miniFrost.getPanel().getDrafts();
return ((drafts == null) ? 0 : drafts.size());
}
public Message getNextUnreadMessage(boolean unsigned, boolean archived,
int minTrustLevel) {
/* always */
return null;
}
public boolean isRefreshing() {
/* never refreshing */
return false;
}
public void refresh() {
/* can't */
}
public int compareTo(Object arg0) {
return -1;
}
public boolean equals(Object o) {
return false;
}
public String toString() {
return getName();
}
}