⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcardeditor.java.svn-base

📁 开源项目openfire的完整源程序
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
        personalPanel.focus();
    }

    /**
     * Displays a users profile.
     *
     * @param jid    the jid of the user.
     * @param vcard  the users vcard.
     * @param parent the parent component, used for location handling.
     */
    public void displayProfile(final String jid, VCard vcard, JComponent parent) {
        VCardViewer viewer = new VCardViewer(jid);

        final JFrame dlg = new JFrame(Res.getString("title.view.profile.for", jid));


        avatarLabel = new JLabel();
        avatarLabel.setHorizontalAlignment(JButton.RIGHT);
        avatarLabel.setBorder(BorderFactory.createBevelBorder(0, Color.white, Color.lightGray));

        // Construct main panel w/ layout.
        final JPanel mainPanel = new JPanel();

        // The user should only be able to close this dialog.
        Object[] options = {"View Full Profile", Res.getString("close")};
        final JOptionPane pane = new JOptionPane(viewer, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, options, options[0]);

        //  mainPanel.add(pane, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0));


        dlg.setIconImage(SparkRes.getImageIcon(SparkRes.PROFILE_IMAGE_16x16).getImage());

        dlg.pack();
        dlg.setSize(350, 250);
        dlg.setResizable(true);
        dlg.setContentPane(pane);
        dlg.setLocationRelativeTo(parent);

        PropertyChangeListener changeListener = new PropertyChangeListener() {
            public void propertyChange(PropertyChangeEvent e) {
                if (pane.getValue() instanceof Integer) {
                    pane.removePropertyChangeListener(this);
                    dlg.dispose();
                    return;
                }
                String value = (String)pane.getValue();
                if (Res.getString("close").equals(value)) {
                    pane.removePropertyChangeListener(this);
                    dlg.dispose();
                }
                else if ("View Full Profile".equals(value)) {
                    pane.setValue(JOptionPane.UNINITIALIZED_VALUE);
                    SparkManager.getVCardManager().viewFullProfile(jid, pane);
                }
            }
        };

        pane.addPropertyChangeListener(changeListener);

        dlg.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent keyEvent) {
                if (keyEvent.getKeyChar() == KeyEvent.VK_ESCAPE) {
                    dlg.dispose();
                }
            }
        });

        dlg.setVisible(true);
        dlg.toFront();
        dlg.requestFocus();
    }


    /**
     * Builds the UI based on a VCard.
     *
     * @param vcard the vcard used to build the UI.
     */
    private void buildUI(VCard vcard) {
        personalPanel.setFirstName(vcard.getFirstName());
        personalPanel.setMiddleName(vcard.getMiddleName());
        personalPanel.setLastName(vcard.getLastName());
        personalPanel.setEmailAddress(vcard.getEmailHome());
        personalPanel.setNickname(vcard.getNickName());
        personalPanel.setJID(vcard.getJabberId());

        businessPanel.setCompany(vcard.getOrganization());
        businessPanel.setDepartment(vcard.getOrganizationUnit());
        businessPanel.setStreetAddress(vcard.getAddressFieldWork("STREET"));
        businessPanel.setCity(vcard.getAddressFieldWork("LOCALITY"));
        businessPanel.setState(vcard.getAddressFieldWork("REGION"));
        businessPanel.setZipCode(vcard.getAddressFieldWork("PCODE"));
        businessPanel.setCountry(vcard.getAddressFieldWork("CTRY"));
        businessPanel.setJobTitle(vcard.getField("TITLE"));
        businessPanel.setPhone(vcard.getPhoneWork("VOICE"));
        businessPanel.setFax(vcard.getPhoneWork("FAX"));
        businessPanel.setPager(vcard.getPhoneWork("PAGER"));
        businessPanel.setMobile(vcard.getPhoneWork("CELL"));
        businessPanel.setWebPage(vcard.getField("URL"));

        // Load Home Info
        homePanel.setStreetAddress(vcard.getAddressFieldHome("STREET"));
        homePanel.setCity(vcard.getAddressFieldHome("LOCALITY"));
        homePanel.setState(vcard.getAddressFieldHome("REGION"));
        homePanel.setZipCode(vcard.getAddressFieldHome("PCODE"));
        homePanel.setCountry(vcard.getAddressFieldHome("CTRY"));
        homePanel.setPhone(vcard.getPhoneHome("VOICE"));
        homePanel.setFax(vcard.getPhoneHome("FAX"));
        homePanel.setPager(vcard.getPhoneHome("PAGER"));
        homePanel.setMobile(vcard.getPhoneHome("CELL"));

        // Set avatar
        byte[] bytes = vcard.getAvatar();
        if (bytes != null) {
            ImageIcon icon = new ImageIcon(bytes);
            avatarPanel.setAvatar(icon);
            avatarPanel.setAvatarBytes(bytes);
            if (avatarLabel != null) {
                icon = GraphicUtils.scaleImageIcon(icon, 48, 48);

                avatarLabel.setIcon(icon);
            }
        }
    }

    /**
     * Saves the VCard.
     */
    private void saveVCard() {
        final VCard vcard = new VCard();

        // Save personal info
        vcard.setFirstName(personalPanel.getFirstName());
        vcard.setLastName(personalPanel.getLastName());
        vcard.setMiddleName(personalPanel.getMiddleName());
        vcard.setEmailHome(personalPanel.getEmailAddress());
        vcard.setNickName(personalPanel.getNickname());

        // Save business info
        vcard.setOrganization(businessPanel.getCompany());
        vcard.setAddressFieldWork("STREET", businessPanel.getStreetAddress());
        vcard.setAddressFieldWork("LOCALITY", businessPanel.getCity());
        vcard.setAddressFieldWork("REGION", businessPanel.getState());
        vcard.setAddressFieldWork("PCODE", businessPanel.getZipCode());
        vcard.setAddressFieldWork("CTRY", businessPanel.getCountry());
        vcard.setField("TITLE", businessPanel.getJobTitle());
        vcard.setOrganizationUnit(businessPanel.getDepartment());
        vcard.setPhoneWork("VOICE", businessPanel.getPhone());
        vcard.setPhoneWork("FAX", businessPanel.getFax());
        vcard.setPhoneWork("PAGER", businessPanel.getPager());
        vcard.setPhoneWork("CELL", businessPanel.getMobile());
        vcard.setField("URL", businessPanel.getWebPage());

        // Save Home Info
        vcard.setAddressFieldHome("STREET", homePanel.getStreetAddress());
        vcard.setAddressFieldHome("LOCALITY", homePanel.getCity());
        vcard.setAddressFieldHome("REGION", homePanel.getState());
        vcard.setAddressFieldHome("PCODE", homePanel.getZipCode());
        vcard.setAddressFieldHome("CTRY", homePanel.getCountry());
        vcard.setPhoneHome("VOICE", homePanel.getPhone());
        vcard.setPhoneHome("FAX", homePanel.getFax());
        vcard.setPhoneHome("PAGER", homePanel.getPager());
        vcard.setPhoneHome("CELL", homePanel.getMobile());

        // Save Avatar
        final File avatarFile = avatarPanel.getAvatarFile();
        byte[] avatarBytes = avatarPanel.getAvatarBytes();

        if (avatarFile != null) {
            try {
                // Make it 48x48
                ImageIcon icon = new ImageIcon(avatarFile.toURL());
                Image image = icon.getImage();
                image = image.getScaledInstance(-1, 48, Image.SCALE_SMOOTH);
                avatarBytes = GraphicUtils.getBytesFromImage(image);
            }
            catch (MalformedURLException e) {
                Log.error("Unable to set avatar.", e);
            }
        }

        // If avatar bytes, persist as vcard.
        if (avatarBytes != null) {
            vcard.setAvatar(avatarBytes);
        }

        try {
            final VCardManager vcardManager = SparkManager.getVCardManager();
            vcardManager.setPersonalVCard(vcard);

            vcard.save(SparkManager.getConnection());

            // Notify users.
            if (avatarFile != null || avatarBytes != null) {
                Presence presence = SparkManager.getWorkspace().getStatusBar().getPresence();
                Presence newPresence = new Presence(presence.getType(), presence.getStatus(), presence.getPriority(), presence.getMode());

                // Change my own presence
                SparkManager.getSessionManager().changePresence(newPresence);

                // Chnage avatar in status bar.
                StatusBar statusBar = SparkManager.getWorkspace().getStatusBar();
                statusBar.setAvatar(new ImageIcon(vcard.getAvatar()));
            }
            else {
                String firstName = vcard.getFirstName();
                String lastName = vcard.getLastName();
                StatusBar statusBar = SparkManager.getWorkspace().getStatusBar();
                if (ModelUtil.hasLength(firstName) && ModelUtil.hasLength(lastName)) {
                    statusBar.setNickname(firstName + " " + lastName);
                }
                else if (ModelUtil.hasLength(firstName)) {
                    statusBar.setNickname(firstName);
                }

                statusBar.setAvatar(null);
            }

            // Notify listenres
            SparkManager.getVCardManager().notifyVCardListeners();
        }
        catch (XMPPException e) {
            Log.error(e);
            JOptionPane.showMessageDialog(SparkManager.getMainWindow(), Res.getString("message.vcard.not.supported"), Res.getString("title.error"), JOptionPane.ERROR_MESSAGE);
        }
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -