📄 panelparticipants.java
字号:
fillReportInfoNode ( node, reportSender ); node.addActionListener ( this ); } } private void fillReportInfoNode ( TreeNode nodeParent, Report objReport ) { updateReportBlocks ( nodeParent, objReport ); } private void addParticipant ( Participant participant ) { TreeNode nodeParent; TreeNode node; String strName; JMPanel panel; Object objPanel; if ( participant == null ) return; nodeParent = findParticipantListNode (); node = findParticipantNode ( participant ); if ( node != null ) // is there already return; strName = participant.getCNAME (); node = controlTree.createSubElement ( nodeParent, strName ); panel = new ViewParticipantInfo ( mngrSession, participant ); node.setUserData ( panel ); fillParticipantInfoNode ( node, participant ); node.addActionListener ( this ); objPanel = nodeParent.getUserData(); if ( objPanel != null && (objPanel instanceof ViewParticipantList) ) ((ViewParticipantList)objPanel).updateFields (); } private void removeParticipant ( Participant participant ) { TreeNode nodeParent; TreeNode node; String strName; JMPanel panel; Object objPanel; node = findParticipantNode ( participant ); if ( node == null ) return; nodeParent = findParticipantListNode (); controlTree.destroySubElement ( nodeParent, node ); objPanel = nodeParent.getUserData(); if ( objPanel != null && (objPanel instanceof ViewParticipantList) ) ((ViewParticipantList)objPanel).updateFields (); } private void addRtpStream ( Participant participant, RTPStream stream ) { TreeNode nodeParticipant; TreeNode nodeStream; nodeParticipant = findParticipantNode ( participant ); addRtpStream ( nodeParticipant, stream ); } private void addRtpStream ( TreeNode nodeParticipant, RTPStream stream ) { TreeNode nodeStream; String strName; JMPanel panel; if ( nodeParticipant == null ) return; nodeStream = findStreamNode ( nodeParticipant, stream ); if ( nodeStream != null ) return; strName = createStreamNodeName ( stream ); nodeStream = controlTree.createSubElement ( nodeParticipant, strName ); panel = new ViewRtpStreamInfo ( mngrSession, stream ); nodeStream.setUserData ( panel ); fillStreamInfoNode ( nodeStream, stream ); nodeStream.addActionListener ( this ); } private void removeRtpStream ( RTPStream stream ) { Participant participant; TreeNode nodeParticipant; TreeNode nodeStream; participant = stream.getParticipant(); if ( participant == null ) return; nodeParticipant = findParticipantNode ( participant ); removeRtpStream ( nodeParticipant, stream ); } private void removeRtpStream ( TreeNode nodeParticipant, RTPStream stream ) { TreeNode nodeStream; if ( nodeParticipant == null ) return; nodeStream = findStreamNode ( nodeParticipant, stream ); if ( nodeStream == null ) return; controlTree.destroySubElement ( nodeParticipant, nodeStream ); } private void addReport ( Participant participant, Report report ) { TreeNode nodeParticipant; if ( participant == null ) return; nodeParticipant = findParticipantNode ( participant ); addReport ( nodeParticipant, report ); } private void addReport ( TreeNode nodeParticipant, Report report ) { String strName; TreeNode node; Object objPanel; if ( nodeParticipant == null ) return; strName = createReportNodeName ( report ); node = nodeParticipant.getSubElement(strName); if ( node != null ) { // just update the existing report objPanel = node.getUserData(); if ( objPanel != null ) { if ( objPanel instanceof ViewReceiverReport && report instanceof ReceiverReport ) ((ViewReceiverReport)objPanel).updateFields ( (ReceiverReport)report ); else if ( objPanel instanceof ViewSenderReport && report instanceof SenderReport ) ((ViewSenderReport)objPanel).updateFields ( (SenderReport)report ); } updateReportBlocks ( node, report ); } else { // create new node node = controlTree.createSubElement ( nodeParticipant, strName ); if ( report instanceof SenderReport ) { objPanel = new ViewSenderReport ( mngrSession, (SenderReport)report ); } else if ( report instanceof ReceiverReport ) { objPanel = new ViewReceiverReport ( (ReceiverReport)report ); } else { objPanel = null; } node.setUserData ( objPanel ); fillReportInfoNode ( node, report ); node.addActionListener ( this ); objPanel = nodeParticipant.getUserData(); if ( objPanel != null && (objPanel instanceof ViewParticipantInfo) ) ((ViewParticipantInfo)objPanel).updateFields ( report ); } if ( report instanceof SenderReport ) { node = findStreamNode ( nodeParticipant, ((SenderReport)report).getStream() ); if ( node != null ) node = findStreamLatestReportNode ( node ); if ( node != null ) { objPanel = node.getUserData(); if ( objPanel != null && (objPanel instanceof ViewSenderReport) ) ((ViewSenderReport)objPanel).updateFields ( (SenderReport)report ); updateReportBlocks ( node, report ); } } } private void updateReportBlocks ( TreeNode nodeReport, Report report ) { int i; int nCount; SenderReport reportSender; ReceiverReport reportReceiver; Vector vectorFeedbacks; Feedback feedback; TreeNode node; String strName; JMPanel panel; Object objPanel; if ( report == null ) return; if ( report instanceof SenderReport ) { reportSender = (SenderReport)report; feedback = reportSender.getSenderFeedback (); strName = REPORT_BLOCK_BY_ME; node = nodeReport.getSubElement ( strName ); if ( node == null ) { node = controlTree.createSubElement ( nodeReport, strName ); panel = new ViewReportBlock ( feedback ); node.setUserData ( panel ); node.addActionListener ( this ); } else { objPanel = node.getUserData(); if ( objPanel != null && objPanel instanceof ViewReportBlock ) ((ViewReportBlock)objPanel).updateFields ( feedback ); } vectorFeedbacks = reportSender.getFeedbackReports (); nCount = vectorFeedbacks.size (); for ( i = 0; i < nCount; i++ ) { feedback = (Feedback) vectorFeedbacks.elementAt ( i ); strName = SENDER_REPORT_BLOCK + " " + i; node = nodeReport.getSubElement ( strName ); if ( node == null ) { node = controlTree.createSubElement ( nodeReport, strName ); panel = new ViewReportBlock ( feedback ); node.setUserData ( panel ); node.addActionListener ( this ); } else { objPanel = node.getUserData(); if ( objPanel != null && objPanel instanceof ViewReportBlock ) ((ViewReportBlock)objPanel).updateFields ( feedback ); } } } else if ( report instanceof ReceiverReport ) { reportReceiver = (ReceiverReport)report; vectorFeedbacks = reportReceiver.getFeedbackReports (); nCount = vectorFeedbacks.size (); for ( i = 0; i < nCount; i++ ) { feedback = (Feedback) vectorFeedbacks.elementAt ( i ); strName = REPORT_BLOCK + " " + i; node = nodeReport.getSubElement ( strName ); if ( node == null ) { node = controlTree.createSubElement ( nodeReport, strName ); panel = new ViewReportBlock ( feedback ); node.setUserData ( panel ); node.addActionListener ( this ); } else { objPanel = node.getUserData(); if ( objPanel != null && objPanel instanceof ViewReportBlock ) ((ViewReportBlock)objPanel).updateFields ( feedback ); } } } } private TreeNode findParticipantListNode () { TreeNode nodeRoot; nodeRoot = controlTree.getRootElement (); return ( nodeRoot ); } private TreeNode findParticipantNode ( Participant participant ) { TreeNode nodeRoot; TreeNode node; nodeRoot = controlTree.getRootElement (); node = nodeRoot.getSubElement ( participant.getCNAME() ); return ( node ); } private TreeNode findStreamNode ( TreeNode nodeParticipant, RTPStream stream ) { TreeNode node; String strName; strName = createStreamNodeName ( stream ); node = nodeParticipant.getSubElement ( strName ); return ( node ); } private TreeNode findStreamLatestReportNode ( TreeNode nodeStream ) { String strName; TreeNode node; strName = createStreamLatestReportNodeName (); node = nodeStream.getSubElement ( strName ); return ( node ); } private String createStreamNodeName ( RTPStream stream ) { String strName; if ( stream == null ) return ( null ); if ( stream instanceof ReceiveStream ) strName = REMOTE_RECEIVE_STREAM + ": "; else strName = UNKNOWN_STREAM + ": "; strName = strName + stream.getParticipant().getCNAME (); return ( strName ); } private String createReportNodeName ( Report report ) { String strName; long lSSRC; lSSRC = report.getSSRC (); strName = REPORT + " " + Signed.UnsignedInt((int)lSSRC); return ( strName ); } private String createStreamLatestReportNodeName () { String strName; strName = LATEST_SENDER_REPORT; return ( strName ); } private void setViewPanel ( TreeNode node ) { Object objData; String strName; if ( node == null ) return; objData = node.getUserData (); strName = node.getFullPathName (); if ( objData != null && objData instanceof JMPanel ) { panelCurrentView = (JMPanel) objData; if ( panelCurrentView.getParent() == null ) panelView.add ( panelCurrentView, strName ); layoutView.show ( panelView, strName ); } } private void removeViewPanel ( TreeNode node ) { Object objData; String strName; objData = node.getUserData (); if ( objData != null && objData instanceof JMPanel ) { if ( ((JMPanel)objData).getParent() == panelView ) panelView.remove ( (JMPanel)objData ); } setViewPanel ( controlTree.getCurrentElement() ); } private void layoutComponents () { Dimension dim; int nWidthTree; dim = this.getSize (); nWidthTree = (dim.width - MARGINH) / 2; if ( controlTree != null ) controlTree.setBounds ( 0, 0, nWidthTree, dim.height ); if ( panelView != null ) { panelView.setBounds ( nWidthTree + MARGINH, 0, dim.width - (nWidthTree + MARGINH), dim.height ); panelView.doLayout (); } repaint (); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -