📄 singlegroupnavigationpanel.java
字号:
m_notActiveIcon.paintIcon(this, g, 0, 0); } } else { m_disabledIcon.paintIcon(this, g, 0, 0); } } } public SingleGroupTableModel getTableModel() { return (SingleGroupTableModel) m_groupNavigationTable.getModel(); } public void updatePeerInfo(PeerNode p) { m_groupTableModel.addOrRefreshPeer(p); } /** * @return */ public Group getGroup() { // TODO Auto-generated method stub return m_groupTableModel.getGroup(); } private class MyTableCellRenderer extends DefaultTableCellRenderer { /** * Returns the default table cell renderer. * * @param table the <code>JTable</code> * @param value the value to assign to the cell at * <code>[row, column]</code> * @param isSelected true if cell is selected * @param hasFocus true if cell has focus * @param row the row of the cell to render * @param column the column of the cell to render * @return the default table cell renderer */ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { String label; if (value instanceof PeerEntry) { PeerEntry peerEntry = (PeerEntry) value; setIcon(peerEntry.getIcon(isSelected, hasFocus)); long secs = System.currentTimeMillis() - peerEntry.getLastSeen(); secs = secs / 1000; label = peerEntry.m_peer.getName(); //todo localise StringBuffer tooltipText = new StringBuffer().append("<html>").append(label).append(" was last seen ").append(secs).append(" sec ago"); tooltipText.append("<br>Reverse discovery status: "); if (Boolean.TRUE.equals(peerEntry.getNode().getReverseDiscoveryState())) tooltipText.append("true"); else if (Boolean.FALSE.equals(peerEntry.getNode().getReverseDiscoveryState())) tooltipText.append("false"); else tooltipText.append("unknown"); tooltipText.append("<br>Online status: "); PeerStatus presenceStatus = peerEntry.getNode().getPresenceStatus(); if (presenceStatus == null) { presenceStatus = PeerStatus.getUnknownState(); peerEntry.getNode().setInfo(PeerNode.STATUS_PRESENCE, presenceStatus, false); } tooltipText.append(presenceStatus.getState()).append(" / ").append(presenceStatus.getStatusMessage()); tooltipText.append("</html>"); setToolTipText(tooltipText.toString()); if (peerEntry.getNode().isConnecting()) { label = label + " connecting..."; } else if (presenceStatus != null && presenceStatus.isAway()) { label = label + " (Away)"; } else if (presenceStatus != null && presenceStatus.isOffline()) { label = label + " (Offline)"; } else if (peerEntry.getNode().wasReachable() == Boolean.FALSE) { label = label + " (Unreachable)"; } //label=label+" " + secs + peerEntry+":"+peerEntry.getNode(); } else { label = value.toString(); } return super.getTableCellRendererComponent(table, label, isSelected, hasFocus, row, column); } } /** * called before the component is removed from the navigation panel */ public void shutdown() { m_groupTableModel.shutdown(); m_view.getControl().getPluginContainer().removeSelectionProvider(this); } /** * Mouse Listener of the Table - responsible for the doubleclick behaviour and the triggering of the * context menu */ private class MyTableMouseListener extends MouseAdapter { /** * Invoked when a mouse button has been pressed on a component. */ public void mousePressed(MouseEvent e) { processMouseEvent(e); } /** * Invoked when a mouse button has been released on a component. */ public void mouseReleased(MouseEvent e) { processMouseEvent(e); } private void processMouseEvent(MouseEvent e) { if (e.isPopupTrigger()) { JTable table = (JTable) e.getSource(); int row = table.rowAtPoint(e.getPoint()); if (!table.getSelectionModel().isSelectedIndex(row)) { table.getSelectionModel().setSelectionInterval(row, row); } triggerGlobalMyJxtaPopup(e); } } /** * Invoked when the mouse has been clicked on a component. */ public void mouseClicked(MouseEvent e) { if (e.getClickCount() > 1) { doubleClick(e); } } private void doubleClick(MouseEvent p_e) { JTable table = (JTable) p_e.getSource(); int row = table.rowAtPoint(p_e.getPoint()); int column = table.columnAtPoint(p_e.getPoint()); PeerEntry value = (PeerEntry) table.getValueAt(row, column); doubleClick(p_e,value.getNode()); } private void doubleClick(MouseEvent p_e,PeerNode p_peer) {// if (p_peer.getPeer().getPipeAdvertisement().getPipeID().equals(getGroup().getOwnPeersCommandId())) {// return; // no self-chat!// } triggerGlobalMyJxtaPopup(p_e); // Peer peer = p_peer.getPeer();// MyPeerChatAction myPeerChatAction = new MyPeerChatAction(peer.getName(), m_view, p_peer);// if (myPeerChatAction.isEnabled()) {// myPeerChatAction.actionPerformed(null);// } } private void triggerGlobalMyJxtaPopup(MouseEvent p_e) { Object source = p_e.getSource(); JComponent jComponent = null; //normally the JTable should be the source if (source instanceof JComponent) { jComponent = (JComponent) source; } else { source = SingleGroupNavigationPanel.this.m_scrollPane; } m_view.getControl().getPluginContainer().triggerGlobalMyJxtaPopup(getSelectedNodes(), p_e, jComponent); } } public ISelectableNode[] getSelectedNodes() { final int rows[] = m_groupNavigationTable.getSelectedRows(); if (rows.length == 0) { return null; } ISelectableNode[] result = new ISelectableNode[rows.length]; for (int i = 0; i < rows.length; i++) { final int finalRow = rows[i]; result[i] = new ISelectableNode() { public JxtaNode getJxtaNode() { PeerEntry peerEntry = (PeerEntry) m_groupNavigationTable.getValueAt(finalRow, 0); if (peerEntry != null) { return peerEntry.getNode(); } else { System.out.println(""); return null; } } public SelectionNodeType getType() { return SelectionNodeType.Peer; } }; }// System.out.println("return:"+result[0].getJxtaNode()); return result; } private static class MyGroupListener implements GroupListener { private final GroupStatusControl m_rdvConnectionControl; private final GroupStatusControl m_rdvControl; public MyGroupListener(GroupStatusControl p_rdvConnectionControl, GroupStatusControl p_rdvControl) { m_rdvConnectionControl = p_rdvConnectionControl; m_rdvControl = p_rdvControl; } public void groupEvent(Group g, String s, EventObject p_re) { m_rdvConnectionControl.setActive(g.isConnected()); m_rdvConnectionControl.setToolTipText(g.isConnected() ? "you are connected to " + g.getName() : "you are NOT connected to " + g.getName()); if (g.isConnected()) { m_rdvControl.setEnabled(true); boolean ownPeerRdv = g.isOwnPeerRdv(); if (m_rdvControl != null) { m_rdvControl.setActive(ownPeerRdv); m_rdvControl.setToolTipText(ownPeerRdv ? "you are a rdv" : "you are an edge peer"); } } else { if (m_rdvControl != null) m_rdvControl.setEnabled(false); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -