private String getCurrentJabberID(User user, RosterEntry rosterEntry) {
   Presence presence = _getPresence(user);
   String jabberId = null;
   if (presence != null) {
     jabberId = presence.getFrom();
   }
   if (jabberId == null) jabberId = rosterEntry.getUser();
   if (jabberId == null) jabberId = rosterEntry.getName();
   return jabberId;
 }
 private User addJabberUserToUserModelOrUpdateInfo(RosterEntry rosterEntry) {
   //    System.out.println("rosterEntry.getName() = " + rosterEntry.getName());
   //    System.out.println("rosterEntry.getUser() = " + rosterEntry.getUser());
   User user = myUserModel.createUser(getSimpleId(rosterEntry.getUser()), getName());
   String newGroup = getUserGroup(rosterEntry);
   if (newGroup != null) {
     user.setGroup(newGroup, myUserModel);
   }
   user.setDisplayName(rosterEntry.getName(), myUserModel);
   myUserModel.addUser(user);
   String jabberId = getCurrentJabberID(user, rosterEntry);
   updateIsIDEtalkClient(jabberId, user);
   return user;
 }
 @Nullable
 private static String getUserGroup(RosterEntry rosterEntry) {
   String group = null;
   for (RosterGroup rosterGroup : rosterEntry.getGroups()) {
     group = rosterGroup.getName();
   }
   return group;
 }
Ejemplo n.º 4
0
  /**
   * Constructor.
   *
   * @param connection The current active XMPPConnection.
   * @param remoteId The ID of the user to chat with. (May have a resource, but this will be used
   *     only as a hint for sending replies.)
   * @exception XMPPException If an error occurs joining the room.
   */
  public ChatWindow(XMPPConnection connection, String remoteId) throws XMPPException {
    mConnection = connection;
    mRemoteIdFull = remoteId;
    mRemoteIdBare = StringUtils.parseBareAddress(remoteId);

    if (!mRemoteIdFull.equals(mRemoteIdBare)) setLastKnownResource(mRemoteIdFull);

    mChatObject = new BetterChat(mConnection, mRemoteIdFull);

    // Get nickname for remote user and use for window title
    RosterEntry entry = mConnection.getRoster().getEntry(mRemoteIdBare);

    if (entry != null) {
      mRemoteNick = entry.getName();
    }

    if (mRemoteNick == null || mRemoteNick.equals("")) {
      mRemoteNick = mRemoteIdBare;
    }

    String val = JavolinApp.resources.getString("ChatWindow_WindowTitle");
    setTitle(JavolinApp.getAppName() + ": " + val + " " + mRemoteNick);

    // Get local user ID and chat color
    mLocalId = StringUtils.parseBareAddress(mConnection.getUser());
    mColorMap = new UserColorMap();
    mColorMap.getUserNameColor(mLocalId); // Give user first color

    // Set up UI
    buildUI();

    setSize(500, 400);
    mSizePosSaver = new SizeAndPositionSaver(this, NODENAME);
    restoreWindowState();

    // Send message when user presses Enter while editing input text
    mSendMessageAction =
        new AbstractAction() {
          public void actionPerformed(ActionEvent e) {
            doSendMessage();
          }
        };

    mInputText.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), mSendMessageAction);

    // Handle window events
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    addWindowListener(
        new WindowAdapter() {
          public void windowClosed(WindowEvent we) {
            saveWindowState();
            if (mLog != null) {
              mLog.dispose();
            }
            mColorMap.dispose();
          }

          public void windowOpened(WindowEvent we) {
            // Give focus to input text area when the window is created
            mInputText.requestFocusInWindow();
          }
        });

    /* We do *not* register as a message listener. The Smack Chat object is
     * kind of a crock; there's no documented way to turn off its packet
     * interception when we close this window. And the main JavolinApp
     * listener is already grabbing all CHAT and NORMAL message packets, so
     * there's no need for us to listen -- in fact, it leads to double
     * printing in some cases. */
  }