⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p2pview.java

📁 mywork是rcp开发的很好的例子
💻 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 + -