📄 bsdiscowindow.java
字号:
selectedItemView.display(null);
browseList.setListData(new Vector());
backButton.setEnabled(currHistoryNum > 0);
forwardButton.setEnabled(currHistoryNum < history.size()-1);
if (discoBean != null)
discoBean.discoverItems(jidStr, nodeStr, itemsServedID);
}
protected void discoverHistory(int index) {
currHistoryNum = index;
BSDiscoHistoryItem hi = (BSDiscoHistoryItem)history.elementAt(index);
discoverImpl(hi.jidStr, hi.node);
discoverInfoFor(hi.jidStr, hi.node);
}
protected void discover(String jidStr, String nodeStr) {
// removes part of history
while (history.size()-1 > currHistoryNum)
history.removeElementAt(currHistoryNum+1);
// adds new jid into history
history.add(new BSDiscoHistoryItem(jidStr, nodeStr));
currHistoryNum++;
progressInfo.setText("Sending request...");
discoverImpl(jidStr, nodeStr);
discoverInfoFor(jidStr, nodeStr);
}
/** Sends request for disco#info for given item */
protected void discoverInfoFor(DiscoItem di) {
if (di == null) return;
String jidStr = di.getAttribute("jid");
String nodeStr = di.getAttribute("node");
progressInfo.setText("Sending request...");
discoverInfoFor(jidStr, nodeStr);
}
/** Sends request for disco#info for given jid and node */
protected void discoverInfoFor(String jidStr, String nodeStr) {
progressInfo.setText("Sending request...");
if (discoBean != null)
discoBean.discoverInfo(jidStr, nodeStr, infoServedID);
}
/** Removes this from listeners for disco events */
public void cancelListening() {
if (discoBean != null)
discoBean.removeDiscoListener(this);
}
/** <code>MouseListener</code> function - catches double-clicks. */
public void mouseClicked(MouseEvent e) {
// handles only double clicks on JID nodes
if (e.getClickCount() == 2) {
DiscoItem di = (DiscoItem) browseList.getSelectedValue();
if (di == null) return;
String jidStr = di.getAttribute("jid");
String nodeStr = di.getAttribute("node");
discover(jidStr, nodeStr);
}
}
/** <code>MouseListener</code> function - catches popup clicks. */
public void mousePressed(MouseEvent e) {
//maybeShowPopup(e);
}
/** <code>MouseListener</code> function - catches popup clicks. */
public void mouseReleased(MouseEvent e) {
//maybeShowPopup(e);
}
/** <code>MouseListener</code> function - empty implementation. */
public void mouseEntered(MouseEvent e) { }
/** <code>MouseListener</code> function - empty implementation. */
public void mouseExited(MouseEvent e) { }
/** Called when link action performed - calls performAction of mainFrame */
public void hyperlinkUpdate(HyperlinkEvent evt) {
if (HyperlinkEvent.EventType.ACTIVATED == evt.getEventType()) {
/*String namespace = evt.getDescription();
JID jid;
if (evt.getSource() == thisItemView)
jid = thisItemView.getJID();
else if (evt.getSource() == selectedItemView)
jid = selectedItemView.getJID();
else
jid = selectedItemView.getJID();
((BSDiscoWinManager)winMan).callPerformAction(jid, namespace);*/
}
}
/** Empty implementation */
public void keyTyped(KeyEvent evt) { }
/** Empty implementation */
public void keyReleased(KeyEvent keyEvent) { }
/** Handles key strokes - sends on ENTER */
public void keyPressed(KeyEvent keyEvent) {
if (keyEvent.getKeyCode() == KeyEvent.VK_ENTER) {
jidStr = addressTextField.getText();
nodeStr = nodeTextField.getText();
if ("".equals(nodeStr)) nodeStr = null;
discover(jidStr, nodeStr);
}
}
/** Called when info received */
public void receivedInfo(IQDiscoInfo info, String id) {
if (infoServedID.getID() == null || !infoServedID.getID().equals(id)) return;
selectedItemView.display(info);
infoServedID.setID(null);
if (itemsServedID.getID() == null)
progressInfo.setText("Done");
}
/** <code>BSDiscoListener</code> function called when items received */
public void receivedItems(IQDiscoItems items, String id) {
if (itemsServedID.getID() == null || !itemsServedID.getID().equals(id)) return;
browseList.setListData(items.getItems());
browseList.clearSelection();
itemsServedID.setID(null);
if (infoServedID.getID() == null)
progressInfo.setText("Done");
}
/** <code>BSDiscoListener</code> function. */
public void error(InfoQuery iq, String id) {
if (id == null ||
(!id.equals(itemsServedID.getID()) &&
!id.equals(infoServedID.getID()) ) )
return;
String errCode = iq.getErrorCode();
String errMsg = iq.getErrorText();
winMan.selectWindow(this);
progressInfo.setText("Error");
JOptionPane.showMessageDialog(docked? ((BSDiscoWinManager)winMan).mainFrame : frame,
"Error " + errCode + ": " + errMsg + "!",
"Error",
JOptionPane.ERROR_MESSAGE);
progressInfo.setText("");
if (id.equals(itemsServedID.getID()))
itemsServedID.setID(null);
else
infoServedID.setID(null);
}
/** Called when a send fails */
public void sendFailed(InfoQuery iq, String id) {
if (id == null ||
(!id.equals(itemsServedID.getID()) &&
!id.equals(infoServedID.getID()) ) )
return;
winMan.selectWindow(this);
progressInfo.setText("Error");
JOptionPane.showMessageDialog(docked? ((BSDiscoWinManager)winMan).mainFrame : frame,
"Request couldn't be sent",
"Error",
JOptionPane.ERROR_MESSAGE);
progressInfo.setText("");
if (id.equals(itemsServedID.getID()))
itemsServedID.setID(null);
else
infoServedID.setID(null);
}
/** Called when empty result (possible of previous "set") received */
public void receivedEmptyResult(InfoQuery iq, String id) { }
/** Called when request for info received */
public void receivedInfoRequest(InfoQuery iq, String id) { }
/** Called when request for items received */
public void receivedItemsRequest(InfoQuery iq, String id) { }
/** Class for history holding jid and node */
class BSDiscoHistoryItem {
public String node = null;
public String jidStr = null;
public BSDiscoHistoryItem(String jidStr, String node) {
this.node = node;
this.jidStr = jidStr;
}
}
/** Renderer of list of disco items */
class BSDiscoListCellRenderer extends JLabel
implements ListCellRenderer {
/*final static ImageIcon longIcon = new ImageIcon("component.gif");
final static ImageIcon shortIcon = new ImageIcon("service.gif");*/
protected Border noFocusBorder;
/**
* Constructor.
*/
public BSDiscoListCellRenderer() {
super();
if (noFocusBorder == null) {
noFocusBorder = new EmptyBorder(1, 1, 1, 1);
}
setOpaque(true);
setBorder(noFocusBorder);
}
public Component getListCellRendererComponent(
JList list,
Object value, // value to display
int index, // cell index
boolean isSelected, // is the cell selected
boolean cellHasFocus) { // the list and the cell have the focus
setComponentOrientation(list.getComponentOrientation());
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
//setIcon(null);
DiscoItem di = (DiscoItem) value;
String name = di.getAttribute("name");
String jidStr = di.getAttribute("jid");
String node = di.getAttribute("node");
//setText(name + " (" + category /*+ " / " + type*/ + ")");
String txt = ((name != null)? name : "");
if (jidStr != null) {
txt += " (" + jidStr;
if (node == null) txt += ")";
}
if (node != null) {
if (jidStr != null) txt += " - " + node + ")";
else txt += " (" + node + ")";
}
setText(txt);
setEnabled(list.isEnabled());
setFont(list.getFont());
setBorder((cellHasFocus) ? UIManager.getBorder("List.focusCellHighlightBorder") : noFocusBorder);
return this;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -