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? k­QJ‘¦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=.


Reply via email to