Revision: 2688
Author: seba.wagner
Date: Sat Nov 21 06:34:35 2009
Log: Part of Issue 171
http://code.google.com/p/openmeetings/source/detail?r=2688
Added:
/trunk/singlewebapp/src/screenviewer/menupointer.png
Modified:
/trunk/singlewebapp/src/app/org/openmeetings/server/codec/ServerDesktopRequestEncoder.java
/trunk/singlewebapp/src/app/org/openmeetings/server/socket/ServerPacketMinaHandler.java
/trunk/singlewebapp/src/client/org/openmeetings/client/codec/ClientDesktopRequestDecoder.java
/trunk/singlewebapp/src/client/org/openmeetings/client/gui/ClientViewerScreen.java
/trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java
/trunk/singlewebapp/src/client/org/openmeetings/client/transport/ClientPacketMinaProcess.java
=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/screenviewer/menupointer.png Sat Nov 21
06:34:35 2009
@@ -0,0 +1,12 @@
+‰PNG
+
+
+IHDR Ä´l; €IDATxœ½Ó1ŠÛ@ Æñ¿ôdÍ Æ ÁU‚} vË4®“Ê Iö Î 6'È–ën
àS¸ÍÞ`·òŒG#)
+vÅ8‘ì âÁüÞÇ ÁÿÎr¹\/ ‹Ñ¥ç%4\V ”R÷"r3ŸÏ v»Ý¡/
+‡†Zk²,C)• Û¢(z7? kQJ‘¦i>
+ ·³Ù¬
+„³,#Ë2Ò4%I D$ ‘-Ð ÂI’ µf0 Ç1"B
+ǹRª3þÇ« D„(Šˆ¢ É Nx PJ½A_¥ ~ naíü ? ;ç¨ëš¦i.ƒ°µ–�...@uu4mó{a`i
܇Œ$4ôÞcŒ¡,Kªª¢®ëvû;àñøþÔ 6ÆP×5Î9¼÷oðc> ·¡³§œ½
+c Î9ʲüê½ iÁï /½áý~ÿdÅZûy³Ù|÷Þß š¿Ê7zü‰Á e1šn�...@ÓzÖwÁ “Éd
+€ àÝUðx<
+ ¡Ö?®‚ i·þ |ú ð©õóqÉu ï’ü ŸÌ¥Õæl_h IEND®B`‚
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/server/codec/ServerDesktopRequestEncoder.java
Mon Oct 26 08:27:13 2009
+++
/trunk/singlewebapp/src/app/org/openmeetings/server/codec/ServerDesktopRequestEncoder.java
Sat Nov 21 06:34:35 2009
@@ -9,6 +9,7 @@
import org.apache.mina.filter.codec.ProtocolEncoder;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;
import org.openmeetings.server.beans.ServerFrameBean;
+import org.openmeetings.server.beans.ServerFrameCursorStatus;
import org.openmeetings.server.beans.ServerStatusBean;
import java.util.zip.*;
@@ -106,6 +107,46 @@
out.write(buffer);
+ } else if (message instanceof ServerFrameCursorStatus) {
+
+ ServerFrameCursorStatus cursorStatus =
(ServerFrameCursorStatus)
message;
+
+ byte[] securityTokenAsByte =
cursorStatus.getPublicSID().getBytes();
+
+ Integer lengthSecurityToken = securityTokenAsByte.length;
+
+ Integer frameSize = 4 * 8 + lengthSecurityToken;
+
+ IoBuffer buffer = IoBuffer.allocate(frameSize, false);
+
+ log.debug("######################### 1Send Cursor
Bean "+cursorStatus.getMode());
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### Send Cursor Bean");
+ log.debug("######################### 9Send Cursor Bean");
+
+ //mode is 6
+
buffer.put(this.convertIntToByteArray(cursorStatus.getMode()));// 4 Byte
+
buffer.put(this.convertIntToByteArray(cursorStatus.getSequenceNumber()));//4
Byte
+
buffer.put(this.convertIntToByteArray(lengthSecurityToken));//4 Byte
+
buffer.put(this.convertIntToByteArray(cursorStatus.getX()));//4 Byte
+
buffer.put(this.convertIntToByteArray(cursorStatus.getY()));//4 Byte
+ buffer.put(this.convertIntToByteArray(0));//4 Byte
+ buffer.put(this.convertIntToByteArray(0));//4 Byte
+ buffer.put(this.convertIntToByteArray(0));//4 Byte =>
this data is not
needed
+ buffer.put(securityTokenAsByte);//32 Byte usually
+
+ buffer.flip();
+
+ //out.write(buffer);
+
}
}
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/server/socket/ServerPacketMinaHandler.java
Sat Nov 21 04:39:39 2009
+++
/trunk/singlewebapp/src/app/org/openmeetings/server/socket/ServerPacketMinaHandler.java
Sat Nov 21 06:34:35 2009
@@ -115,20 +115,20 @@
log.debug("Session created... ################ ");
-// session.getConfig().setMinReadBufferSize(49152);
+// session.getConfig().setMinReadBufferSize(65535);
// session.getConfig().setMaxReadBufferSize(65535);
-// session.getConfig().setReadBufferSize(49152);
-
+// session.getConfig().setReadBufferSize(65535);
//
+////
// if (session.getConfig() instanceof SocketSessionConfig) {
//
// log.debug("CONFIG SET TO new Buffer Size ...
################ ");
//
// ((SocketSessionConfig)
session.getConfig()).setReceiveBufferSize(49152);
//
-//
+// ((SocketSessionConfig)
session.getConfig()).setTcpNoDelay(true);
// }
-
+//
session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
SocketAddress remoteAddress = session.getRemoteAddress();
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/client/codec/ClientDesktopRequestDecoder.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/client/codec/ClientDesktopRequestDecoder.java
Sat Nov 21 06:34:35 2009
@@ -5,6 +5,7 @@
import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
+import org.openmeetings.client.beans.ClientCursorStatus;
import org.openmeetings.client.beans.ClientFrameBean;
import org.openmeetings.client.beans.ClientStatusBean;
import org.apache.log4j.Logger;
@@ -148,6 +149,45 @@
serverFrameBeanState.publicSID = new
String(byteBuffer);
log.debug("publicSID SET
"+serverFrameBeanState.publicSID);
+
+ if (serverFrameBeanState.mode == 6) {
+
+ ClientCursorStatus clientCursorStatus =
new
ClientCursorStatus();
+
+
clientCursorStatus.setMode(serverFrameBeanState.mode);
+
clientCursorStatus.setSequenceNumber(serverFrameBeanState.sequenceNumber);
+
clientCursorStatus.setPublicSID(serverFrameBeanState.publicSID);
+
clientCursorStatus.setX(serverFrameBeanState.xValue);
+
clientCursorStatus.setY(serverFrameBeanState.yValue);
+
+ log.debug("Out Buffer Full
clientCursorStatus Bean");
+
+ //Write the result to the Handler
+ out.write(clientCursorStatus);
+
+ //Reset the Buffer Values
+ serverFrameBeanState.mode = null;
+ serverFrameBeanState.sequenceNumber =
null;
+
serverFrameBeanState.lengthSecurityToken = null;
+ serverFrameBeanState.xValue =
null;
+ serverFrameBeanState.yValue =
null;
+ serverFrameBeanState.width =
null;
+ serverFrameBeanState.height =
null;
+
serverFrameBeanState.lengthPayload = null;
+ serverFrameBeanState.publicSID
= null;
+ serverFrameBeanState.imageBytes
= null;
+ serverFrameBeanState.tileHeight
= null;
+ serverFrameBeanState.tileWidth
= null;
+
+ return true;
+
+ } else {
+
+ return false;
+
+ }
+
+
} else {
return false;
}
@@ -255,7 +295,48 @@
} else {
return false;
}
- }
+ }
+
+
+// if (serverFrameBeanState.tileHeight == null &&
+// (serverFrameBeanState.mode == 6)) {
+// //try to set the lengthPayload
+// if (in.remaining() >= 4) {
+// serverFrameBeanState.tileHeight = in.getInt();
+//
+// ClientCursorStatus clientCursorStatus = new
ClientCursorStatus();
+//
+//
clientCursorStatus.setMode(serverFrameBeanState.mode);
+//
clientCursorStatus.setSequenceNumber(serverFrameBeanState.sequenceNumber);
+//
clientCursorStatus.setPublicSID(serverFrameBeanState.publicSID);
+//
clientCursorStatus.setX(serverFrameBeanState.xValue);
+//
clientCursorStatus.setY(serverFrameBeanState.yValue);
+//
+// log.debug("Out Buffer Full Status Bean");
+//
+// //Write the result to the Handler
+// out.write(clientCursorStatus);
+//
+// //Reset the Buffer Values
+// serverFrameBeanState.mode = null;
+// serverFrameBeanState.sequenceNumber = null;
+// serverFrameBeanState.lengthSecurityToken = null;
+// serverFrameBeanState.xValue = null;
+// serverFrameBeanState.yValue = null;
+// serverFrameBeanState.width = null;
+// serverFrameBeanState.height = null;
+// serverFrameBeanState.lengthPayload =
null;
+// serverFrameBeanState.publicSID = null;
+// serverFrameBeanState.imageBytes = null;
+// serverFrameBeanState.tileHeight = null;
+// serverFrameBeanState.tileWidth = null;
+//
+// return true;
+//
+// } else {
+// return false;
+// }
+// }
return false;
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/client/gui/ClientViewerScreen.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/client/gui/ClientViewerScreen.java
Sat Nov 21 06:34:35 2009
@@ -27,6 +27,7 @@
import org.apache.log4j.Logger;
import org.openmeetings.client.beans.ClientConnectionBean;
+import org.openmeetings.client.beans.ClientCursorStatus;
import org.openmeetings.client.beans.ClientFrameBean;
import org.openmeetings.client.beans.ClientViewerRegisterBean;
import org.openmeetings.client.transport.ClientTransportMinaPool;
@@ -48,12 +49,16 @@
private JLabel textWarningArea;
private JScrollPane scrollPane;
private JPanel scrollContent;
+ private ImageIcon menupointer;
+ private ImagePanel menupointerPanel;
private String label728 = "Desktop Viewer";
private String label729 = "exit";
public String label736 = "End of Session";
public String label742 = "Connection was closed by Server";
+ private boolean mousePointerLoaded = false;
+
private List<ImagePanel> imageScreens = new LinkedList<ImagePanel>();
private int maxSizeX = 0;
@@ -105,6 +110,9 @@
// see
http://developer.java.sun.com/developer/bugParade/bugs/4155617.html
UIManager.getLookAndFeelDefaults().put( "ClassLoader",
getClass().getClassLoader() );
+
+ menupointer = createImageIcon("/menupointer.png");
+
Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
t = new JFrame(this.label728);
@@ -204,6 +212,11 @@
}
}
+
+ protected static ImageIcon createImageIcon(String path) throws
Exception {
+ java.net.URL imgURL = ClientStartScreen.class.getResource(path);
+ return new ImageIcon(imgURL);
+ }
public void showWarningPopUp(String warning){
JOptionPane.showMessageDialog(t, warning);
@@ -232,6 +245,33 @@
}
}
+
+ public void updateCursor(ClientCursorStatus clientCursorStatus) {
+ try {
+
+ this.showBandwidthWarning("Receive updateCursor");;
+
+ if (true) return;
+
+ if (!this.mousePointerLoaded) {
+
+ this.menupointerPanel = new
ImagePanel(clientCursorStatus.getX(),
clientCursorStatus.getY());
+
this.menupointerPanel.setBounds(clientCursorStatus.getX(),
clientCursorStatus.getY(), 22, 22);
+
+
this.menupointerPanel.setImages(menupointer.getImage(), 22, 22);
+
+ }
+
+
this.menupointerPanel.setBounds(clientCursorStatus.getX(),
clientCursorStatus.getY(), 22, 22);
+ this.menupointerPanel.repaint();
+
+
//this.menupointerPanel.setImages(menupointer.getImage(), 22, 22);
+
+ } catch (Exception ex) {
+ log.error("[add]",ex);
+ this.showWarningPopUp(ex.getMessage());
+ }
+ }
public void addClientFrameBean(ClientFrameBean clientFrameBean) {
try {
@@ -292,13 +332,13 @@
iPanel.setImages(bufferedImage,clientFrameBean.getWidth(),clientFrameBean.getHeight());
-
//contentPane.repaint();
//t.setVisible(true);
} catch (Exception err) {
log.error("[add]",err);
+ //this.showWarningPopUp(err.getMessage());
}
}
@@ -327,6 +367,7 @@
//contentPane.add(iPanel);
scrollContent.add(iPanel);
+ scrollContent.setComponentZOrder(iPanel, 1);
imageScreens.add(iPanel);
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java
Sat Nov 21 04:39:39 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java
Sat Nov 21 06:34:35 2009
@@ -122,21 +122,22 @@
}
-
- ClientCursorStatus clientCursorStatus = new
ClientCursorStatus();
-
clientCursorStatus.setSequenceNumber(ClientConnectionBean.getFrameNumber());
- clientCursorStatus.setPublicSID(ClientConnectionBean.publicSID);
-
- PointerInfo a = MouseInfo.getPointerInfo();
- Point mouseP = a.getLocation();
-
- Integer x =
Long.valueOf(Math.round(ClientConnectionBean.imgQuality *
mouseP.getX())).intValue();
- Integer y =
Long.valueOf(Math.round(ClientConnectionBean.imgQuality *
mouseP.getY())).intValue();
-
- clientCursorStatus.setX(x);
- clientCursorStatus.setY(y);
-
- ClientTransportMinaPool.sendMessage(clientCursorStatus);
+ if (ClientConnectionBean.sendMousePosition){
+ ClientCursorStatus clientCursorStatus = new
ClientCursorStatus();
+
clientCursorStatus.setSequenceNumber(ClientConnectionBean.getFrameNumber());
+
clientCursorStatus.setPublicSID(ClientConnectionBean.publicSID);
+
+ PointerInfo a = MouseInfo.getPointerInfo();
+ Point mouseP = a.getLocation();
+
+ Integer x =
Long.valueOf(Math.round(ClientConnectionBean.imgQuality *
mouseP.getX())).intValue();
+ Integer y =
Long.valueOf(Math.round(ClientConnectionBean.imgQuality *
mouseP.getY())).intValue();
+
+ clientCursorStatus.setX(x);
+ clientCursorStatus.setY(y);
+
+ ClientTransportMinaPool.sendMessage(clientCursorStatus);
+ }
}
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/client/transport/ClientPacketMinaProcess.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/client/transport/ClientPacketMinaProcess.java
Sat Nov 21 06:34:35 2009
@@ -13,10 +13,12 @@
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.transport.socket.SocketSessionConfig;
import org.apache.mina.transport.socket.nio.NioDatagramConnector;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.openmeetings.client.beans.ClientConnectionBean;
+import org.openmeetings.client.beans.ClientCursorStatus;
import org.openmeetings.client.beans.ClientFrameBean;
import org.openmeetings.client.beans.ClientStatusBean;
import org.openmeetings.client.codec.ClientDesktopCodecSharingFactory;
@@ -59,6 +61,7 @@
log.debug("Default Send Buffer
Size "+connector.getSessionConfig().getSendBufferSize());
connector.getSessionConfig().setSendBufferSize(8192*8);
+ connector.getSessionConfig().setTcpNoDelay(true);
connector.getFilterChain().addLast("codec", new
ProtocolCodecFilter(new
ClientDesktopCodecSharingFactory()));
@@ -159,6 +162,18 @@
}
}
+
+ if (message instanceof ClientCursorStatus) {
+
+ ClientCursorStatus clientCursorStatus =
(ClientCursorStatus) message;
+
+ SocketAddress remoteAddress =
session.getRemoteAddress();
+
+ log.debug("Recv Status Bean
"+clientCursorStatus.getMode());
+
+
ClientViewerScreen.instance.updateCursor(clientCursorStatus);
+
+ }
if (message instanceof IoBuffer) {
--
You received this message because you are subscribed to the Google Groups
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/openmeetings-dev?hl=.