📄 p2pview.java
字号:
package net.sf.p2pim.jxta;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import net.jxta.myjxta.MyJXTA;
import net.jxta.myjxta.View;
import net.jxta.myjxta.dialog.Dialog;
import net.jxta.myjxta.dialog.OneToOneDialog;
import net.jxta.myjxta.dialog.filter.EmoticonFilter;
import net.jxta.myjxta.plugin.ISelectableNode;
import net.jxta.myjxta.plugin.PluginView;
import net.jxta.myjxta.plugin.PluginContainer.IPopupGenerator;
import net.jxta.myjxta.plugin.PluginContainer.IPopupProvider;
import net.jxta.myjxta.util.ConfigData;
import net.jxta.myjxta.util.Group;
import net.jxta.myjxta.util.GroupNode;
import net.jxta.myjxta.util.JxtaNode;
import net.jxta.myjxta.util.PeerNode;
import net.jxta.myjxta.util.ShareNode;
import net.sf.component.config.ConfigHelper;
import net.sf.p2pim.BuddyListView;
import net.sf.p2pim.ChatView;
import net.sf.util.StringUtil;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.WorkbenchWindow;
/**
* @author levin
* @since 2007-11-1
*/
public class P2PView implements View, IPopupProvider {
static final Logger LOG = Logger.getLogger(P2PView.class.getName());
private MyJXTA myjxta = null;
private ConfigData config = null;
private Group myjxtaGroup=null;
private String selfPeerID;
private static P2PView instance;
public P2PView(MyJXTA myJXTA) {
myjxta=myJXTA;
//固定一个密码
config = new ConfigData(ConfigHelper.getRy(), "p2pim123456");
instance=this;
}
public void addDialog(final Dialog dialog) {
final String dialogName = dialog.getName();
if(getBuddyListView() != null && dialog instanceof OneToOneDialog){
//清除不兼容的过滤器
//dialog.removeInboundFilter(HTMLNormalizerFilter.class);
//增加过滤器
EmoticonFilter emoticonFilter = new EmoticonFilter();
emoticonFilter.setValid(true);
dialog.addInboundFilter(emoticonFilter);
Display.getDefault().asyncExec(new Runnable(){
public void run() {
try {
String id2=String.valueOf(P2PViewer.viewID++);
ChatView chatView = (ChatView) BuddyListView.getInstance().getSite().getWorkbenchWindow().getActivePage().showView(ChatView.ID, id2, IWorkbenchPage.VIEW_ACTIVATE);
//绑定和dialog的关系
chatView.setPartName(dialogName);
chatView.setDialog(dialog);
dialog.addListener(chatView);
} catch (PartInitException e) {
e.printStackTrace();
}
}
});
}
}
public void addJxtaNode(JxtaNode node) {
addJxtaNode(node, false);
}
public void addJxtaNode(final JxtaNode node, boolean expand) {
//如果存在该节点,则更新状态,如果不存在,则增加一个节点,暂只处理myjxta组的节点
if(getBuddyListView() != null && node instanceof PeerNode && "MyJXTA".equals(node.getParent().toString())){
//如果还没有确定self身份,先不增加节点
if(selfPeerID == null){
if(expand)
selfPeerID=((PeerNode)node).getPeer().getId();
else
return ;
}
Display.getDefault().asyncExec(new Runnable(){
public void run() {
getBuddyListView().updatePeer(node);
}
});
}
}
public void addSearch(int search) {
}
public void addShareViewPanel(ShareNode p_sn) {
}
public void createGroupNavigation(Group p_group) {
myjxtaGroup=p_group;
}
public void disposeView() {
System.out.println("###disposeView:");
}
public ConfigData getConfig() {
return this.config;
}
public MyJXTA getControl() {
return myjxta;
}
public Group getGroup() {
return myjxtaGroup;
}
public JxtaNode getJxtaNode(Class c) {
//找groupnode
if(GroupNode.class == c && myjxtaGroup != null)
return new GroupNode(myjxtaGroup);
//找peernode
return BuddyListView.getInstance().getCurrentPeer();
}
public List<PluginView> getPluginPanels() {
ArrayList<PluginView> list = new ArrayList<PluginView>();
IViewReference[] vrs = BuddyListView.getInstance().getSite().getWorkbenchWindow().getActivePage().getViewReferences();
for (IViewReference vr : vrs) {
if(vr.getId().equals(ChatView.ID))
list.add((PluginView) vr.getView(true));
}
return list;
}
public void removeDialog(Dialog dialog) {
System.out.println("###removeDialog:"+dialog);
}
public void removeGroupNavigation(Group p_group) {
}
public void removeJxtaNode(final JxtaNode node) {
if(getBuddyListView() != null && node instanceof PeerNode){
Display.getDefault().asyncExec(new Runnable(){
public void run() {
getBuddyListView().removePeer(node);
}
});
}
}
public void setActionMenuContext() {
}
public void setControl(MyJXTA control) {
this.myjxta=control;
getControl().getPluginContainer().registerPopupProvider(this);
}
public void setStatus(final String status) {
Display.getDefault().asyncExec(new Runnable(){
public void run() {
try{
WorkbenchWindow window=(WorkbenchWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IStatusLineManager statusLineManager = window.getActionBars().getStatusLineManager();
statusLineManager.setMessage(status);
}catch(Exception ex){
;
}
}
});
}
public void setTitle(final String title) {
Display.getDefault().asyncExec(new Runnable(){
public void run() {
if(getBuddyListView() != null && StringUtil.isNotNull(title)){
BuddyListView.getShell().setText("P2PIM : "+title);
}
}
});
}
public void setVisible(boolean visible) {
setStatus(MyJXTA.VERSION);
}
public void showMessageDialog(final String p_message) {
Display.getDefault().asyncExec(new Runnable(){
public void run() {
MessageDialog.openInformation(BuddyListView.getInstance().getSite().getShell(), "消息", p_message);
}
});
}
public void showPreferences() {
}
public void showShareSavePanel(File p_file, ShareNode p_sn) {
}
public void updateJxtaNode(JxtaNode node) {
System.out.println("###updateJxtaNode:"+node);
}
public void updatePluginPanel(PluginView dialog, String title) {
System.out.println("###updatePluginPanel:"+title);
}
public boolean configure(PlatformConfigAccess configurator) {
configurator.setName(config.getName());
configurator.setDescription(MyJXTA.VERSION);
configurator.setSecurity(config.getName(), config.getPassword());
//configurator.setHome(new File(Env.getHome().getPath()));
return true;
}
public BuddyListView getBuddyListView(){
return BuddyListView.getInstance();
}
public void popupRequested(IPopupGenerator popupGenerator, ISelectableNode[] selectedNodes, MouseEvent triggerEvent) {
System.out.println("###popupRequested:"+popupGenerator);
}
public boolean isSelf(PeerNode pn){
if(selfPeerID != null && pn != null){
return pn.getId().equals(selfPeerID);
}
return false;
}
public static P2PView getInstance() {
return instance;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -