?? workspacesession.java
字號:
package connex.session;
import connex.core.WS.Workspace;
import connex.core.WS.WorkspaceManager;
import connex.core.Presence.PresenceService;
import java.util.Enumeration;
import connex.session.desktop.Desktop;
import java.io.*;
import connex.session.desktop.BuddyList;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import javax.swing.ImageIcon;
import javax.swing.JToggleButton;
import connex.core.WS.RendezvousTracker;
import connex.core.WS.RdvListener;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import connex.session.plugin.PluginManager;
import connex.session.plugin.PluginDescriptor;
import connex.session.plugin.PluginAction;
import java.net.URL;
import java.net.*;
import java.awt.Image;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: FH-Dortmund</p>
*
* @author not attributable
* @version 1.0
*/
public class WorkspaceSession implements RdvListener {
//private Workspace ws = null;
//private Desktop desktop = null;
private boolean running = false;
private Desktop desktop;
private Workspace ws;
private RendezvousStatus t;
private RendezvousTracker rt;
static final Logger LOG = Logger.getLogger(WorkspaceSession.class);
public WorkspaceSession(Workspace ws) {
this.ws = ws;
ws.getPeerGroup().getRendezVousService().setAutoStart(true, 1000 * 60 * 2);
LOG.setLevel(Level.INFO);
}
protected void start() {
// WorkspaceSessionManager
desktop = new Desktop();
// desktop.pack();
desktop.showDesktop();
desktop.setTitle(ws.getPeerAdv().getName() + "@" + ws.getName() +
": ConneX 1.0");
desktop.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
this_windowClosing(e);
}
});
BuddyList bl = new BuddyList("Workspace");
desktop.setBuddyList(bl);
try {
PresenceService.getInstance().init(ws);
PresenceService.getInstance().addListener(bl);
PresenceService.getInstance().start();
} catch (IOException ex) {
}
loadPlugins();
rt = new RendezvousTracker(ws.getPeerGroup());
rt.addListener(this);
t = new RendezvousStatus();
t.start();
running = true;
}
protected void stop() {
unloadPlugins();
System.out.println(Runtime.getRuntime().totalMemory() + " : " +
Runtime.getRuntime().freeMemory()); ;
PresenceService.getInstance().stop();
WorkspaceManager.getInstance().leaveCurrentWorkspace();
desktop.dispose();
System.out.println(Runtime.getRuntime().totalMemory() + " : " +
Runtime.getRuntime().freeMemory());
rt.removeListener(this);
running = false;
t.interrupt();
}
public boolean isRunning() {
return running;
}
public Desktop getDesktop() {
return desktop;
}
public Workspace getWorkspace() {
return ws; }
private void unloadPlugins() {
try {
PluginManager.getInstance().unloadPlugins();
} catch (Exception ex) {
}
System.gc();
}
private void loadPlugins() {
File f = new File("plugins");
PluginManager.getInstance().loadPlugins(f.getAbsolutePath());
JToggleButton bt = null;
Enumeration pluginsnum = null;
try {
pluginsnum = (Enumeration) PluginManager.getInstance().getDescriptors().
iterator();
while (pluginsnum.hasMoreElements()) {
PluginDescriptor pd = (PluginDescriptor) pluginsnum.nextElement();
bt = new JToggleButton(new PluginAction(this, pd));
bt.setIcon(pd.getIcon());
bt.setActionCommand(pd.getId());
bt.setOpaque(false);
bt.setToolTipText(pd.getName());
desktop.getPluginContainer().add(bt);
}
} catch (Exception ex1) {
}
}
public void this_windowClosing(WindowEvent e) {
stop();
}
public void update(String e) {
if (LOG.isEnabledFor(Level.INFO)) {
LOG.info("RendezvousEvent :" + ws.getName() + " : " + e);
LOG.info("RendezvousEvent :" + rt.getConnectedRdvID());
}
}
private class RendezvousStatus extends Thread {
public void run() {
while (running) {
desktop.statusBar.setText("isRendezvous : " +
ws.getPeerGroup().isRendezvous());
try {
Thread.sleep(1000 * 60);
} catch (InterruptedException ex) {
}
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -