📄 singlegroupnavigationpanel.java
字号:
protected void paintComponent(Graphics g) { super.paintComponent(g); if (isEnabled() && m_activeIcon != null) { m_activeIcon.paintIcon(this, g, 0, 0); } } } public SingleGroupTableModel getTableModel() { return (SingleGroupTableModel) m_groupNavigationTable.getModel(); } /** * @return */ public Group getGroup() { 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.isAway()) { label = label + " (Away)"; } else if (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 final class MyGroupListener implements GroupListener { private final GroupStatusControl m_parentGroupStatusControl; private final GroupStatusControl m_ownGroupStatusControl; private final Group m_ownGroup; public MyGroupListener(Group group, GroupStatusControl p_rdvConnectionControl, GroupStatusControl p_ownGroupControl) { m_parentGroupStatusControl = p_rdvConnectionControl; m_ownGroupStatusControl = p_ownGroupControl; m_ownGroup = group; updateControl(group.getParentGroup(), m_parentGroupStatusControl); updateControl(group, m_ownGroupStatusControl); } public void groupEvent(Group g, String s, EventObject p_re) { if (g.equals(m_ownGroup)) { eventGroup(g.getParentGroup(), m_parentGroupStatusControl); eventGroup(g, m_ownGroupStatusControl); } else { eventGroup(g, m_parentGroupStatusControl); } } private void eventGroup(Group g, GroupStatusControl p_control) { updateControl(g, p_control); } private void updateControl(Group g, GroupStatusControl p_control) { if (g.isConnected()) { boolean ownPeerRdv = g.isOwnPeerRdv(); if (ownPeerRdv) { p_control.setIsRdv(); } else { p_control.setEdgeConnected(true); } } else { p_control.setEdgeConnected(false); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -