📄 multifolder.java
字号:
package net.sf.pim.mail;
import java.util.List;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.MethodNotSupportedException;
import javax.mail.Store;
import javax.mail.event.MessageCountListener;
public class MultiFolder extends Folder {
private String name;
private List<Folder> folders;
private boolean opend;
protected MultiFolder(Store store, String name, List<Folder> list) {
super(store);
this.name=name;
this.folders=list;
}
@Override
public void open(int mode) throws MessagingException {
for(Folder folder:folders)
folder.open(mode);
opend=true;
}
@Override
public void close(boolean expunge) throws MessagingException {
for(Folder folder:folders)
folder.close(expunge);
}
@Override
public boolean exists() throws MessagingException {
return true;
}
@Override
public String getFullName() {
return MailPlugin.convertFolderName(name);
}
@Override
public String getName() {
return name;
}
@Override
public Message getMessage(int msgnum) throws MessagingException {
return null;
}
@Override
public int getMessageCount() throws MessagingException {
int count=0;
for(Folder folder:folders)
count += folder.getMessageCount();
return count;
}
@Override
public synchronized Message[] getMessages() throws MessagingException {
Message[] messages=new Message[getMessageCount()];
int count=0;
for(Folder f:folders){
Message[] ms=f.getMessages();
System.arraycopy(ms, 0, messages, count, ms.length);
count += ms.length;
}
return messages;
}
@Override
public void appendMessages(Message[] msgs) throws MessagingException {
throw new MethodNotSupportedException();
}
@Override
public boolean create(int type) throws MessagingException {
throw new MethodNotSupportedException();
}
@Override
public boolean delete(boolean recurse) throws MessagingException {
throw new MethodNotSupportedException();
}
@Override
public Message[] expunge() throws MessagingException {
throw new MethodNotSupportedException();
}
@Override
public Folder getFolder(String name) throws MessagingException {
throw new MethodNotSupportedException();
}
@Override
public Folder getParent() throws MessagingException {
return null;
}
@Override
public Flags getPermanentFlags() {
return null;
}
@Override
public char getSeparator() throws MessagingException {
return '/';
}
@Override
public int getType() throws MessagingException {
return Folder.HOLDS_MESSAGES;
}
@Override
public boolean hasNewMessages() throws MessagingException {
return false;
}
@Override
public boolean isOpen() {
return opend;
}
@Override
public Folder[] list(String pattern) throws MessagingException {
return null;
}
@Override
public boolean renameTo(Folder f) throws MessagingException {
return false;
}
@Override
public synchronized void addMessageCountListener(MessageCountListener l) {
for(Folder f:folders)
f.addMessageCountListener(l);
}
@Override
public synchronized void removeMessageCountListener(MessageCountListener l) {
for(Folder f:folders)
f.removeMessageCountListener(l);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -