receivemessage.java.svn-base

来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 629 行 · 第 1/2 页

SVN-BASE
629
字号
                        });                        invalidate();                        validate();                        repaint();                        return;                    }                    String transferMessage = "";                    if (transfer.getStatus() == FileTransfer.Status.error) {                        if (transfer.getException() != null) {                            Log.error("There was an error during file transfer.", transfer.getException());                        }                        transferMessage = Res.getString("message.error.during.file.transfer");                    }                    else if (transfer.getStatus() == FileTransfer.Status.refused) {                        transferMessage = Res.getString("message.transfer.refused");                    }                    else if (transfer.getStatus() == FileTransfer.Status.cancelled ||                        transfer.getAmountWritten() < request.getFileSize()) {                        transferMessage = Res.getString("message.transfer.cancelled");                    }                    setFinishedText(transferMessage);                    showAlert(true);                }            };            worker.start();        }        catch (Exception e) {            Log.error(e);        }    }    private void setFinishedText(String text) {        acceptLabel.setText("");        declineLabel.setText("");        fileLabel.setText("");        titleLabel.setText(text);        titleLabel.setForeground(new Color(65, 139, 179));        progressBar.setVisible(false);        cancelButton.setVisible(false);        invalidate();        validate();        repaint();    }    private void transferDone(final FileTransferRequest request, FileTransfer transfer) {        cancelButton.setVisible(false);        showAlert(true);        String bareJID = StringUtils.parseBareAddress(request.getRequestor());        ContactList contactList = SparkManager.getWorkspace().getContactList();        ContactItem contactItem = contactList.getContactItemByJID(bareJID);        titleLabel.setText(Res.getString("message.received.file", contactItem.getNickname()));        fileLabel.setText(request.getFileName());        remove(acceptLabel);        remove(declineLabel);        remove(progressBar);        final TransferButton openFileButton = new TransferButton();        final TransferButton openFolderButton = new TransferButton();        add(openFileButton, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));        add(openFolderButton, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));        Downloads downloads = Downloads.getInstance();        final File downloadedFile = new File(downloads.getDownloadDirectory(), request.getFileName());        openFileButton.addMouseListener(new MouseAdapter() {            public void mouseEntered(MouseEvent e) {                openFileButton.setCursor(new Cursor(Cursor.HAND_CURSOR));            }            public void mouseExited(MouseEvent e) {                openFileButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));            }            public void mousePressed(MouseEvent e) {                openFile(downloadedFile);            }        });        openFolderButton.addMouseListener(new MouseAdapter() {            public void mouseEntered(MouseEvent e) {                openFolderButton.setCursor(new Cursor(Cursor.HAND_CURSOR));            }            public void mouseExited(MouseEvent e) {                openFolderButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));            }            public void mousePressed(MouseEvent event) {                try {                    Downloads downloads = Downloads.getInstance();                    if (!Spark.isMac()) {                        SparkManager.getNativeManager().openFile(downloads.getDownloadDirectory());                    }                    else if (Spark.isMac()) {                        Runtime.getRuntime().exec("open " + downloads.getDownloadDirectory().getCanonicalPath());                    }                }                catch (IOException e1) {                    Log.error(e1);                }            }        });        add(fileLabel, new GridBagConstraints(1, 1, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));        ResourceUtils.resButton(openFileButton, Res.getString("open"));        ResourceUtils.resButton(openFolderButton, Res.getString("open.folder"));        openFileButton.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(73, 113, 196)));        openFileButton.setForeground(new Color(73, 113, 196));        openFileButton.setFont(new Font("Dialog", Font.BOLD, 11));        openFolderButton.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(73, 113, 196)));        openFolderButton.setForeground(new Color(73, 113, 196));        openFolderButton.setFont(new Font("Dialog", Font.BOLD, 11));        imageLabel.setIcon(GraphicUtils.getIcon(downloadedFile));        imageLabel.addMouseListener(new MouseAdapter() {            public void mousePressed(MouseEvent e) {                showPopup(e, downloadedFile);            }            public void mouseReleased(MouseEvent e) {                showPopup(e, downloadedFile);            }        });        if (isImage(downloadedFile.getName())) {            try {                URL imageURL = downloadedFile.toURL();                ImageIcon image = new ImageIcon(imageURL);                image = GraphicUtils.scaleImageIcon(image, 64, 64);                imageLabel.setIcon(image);            }            catch (MalformedURLException e) {                Log.error("Could not locate image.", e);                imageLabel.setIcon(SparkRes.getImageIcon(SparkRes.DOCUMENT_INFO_32x32));            }        }        invalidate();        validate();        repaint();    }    private void openFile(File downloadedFile) {        try {            if (!Spark.isMac()) {                boolean opened = SparkManager.getNativeManager().openFile(downloadedFile);                if (!opened) {                    JOptionPane.showMessageDialog(this, Res.getString("title.error"), "No application associated with file type.", JOptionPane.ERROR_MESSAGE);                }            }            else if (Spark.isMac()) {                Process child = Runtime.getRuntime().exec("open " + downloadedFile.getCanonicalPath());            }        }        catch (IOException e1) {            Log.error(e1);        }    }    private class TransferButton extends JButton {        public TransferButton() {            decorate();        }        /**         * Create a new RolloverButton.         *         * @param text the button text.         * @param icon the button icon.         */        public TransferButton(String text, Icon icon) {            super(text, icon);            decorate();        }        /**         * Decorates the button with the approriate UI configurations.         */        private void decorate() {            setBorderPainted(false);            setOpaque(true);            setContentAreaFilled(false);            setMargin(new Insets(1, 1, 1, 1));        }    }    private boolean isImage(String fileName) {        fileName = fileName.toLowerCase();        String[] imageTypes = {"jpeg", "gif", "jpg", "png"};        for (int i = 0; i < imageTypes.length; i++) {            if (fileName.endsWith(imageTypes[i])) {                return true;            }        }        return false;    }    private void showAlert(boolean alert) {        if (alert) {            titleLabel.setForeground(new Color(211, 174, 102));            setBackground(new Color(250, 249, 242));        }        else {            setBackground(new Color(239, 245, 250));            titleLabel.setForeground(new Color(65, 139, 179));        }    }    public void cancelTransfer() {        if (transfer != null) {            transfer.cancel();        }    }    /**     * Handle the UI for the Cancel Button     */    private void decorateCancelButton() {        cancelButton.setVisible(false);        ResourceUtils.resButton(cancelButton, Res.getString("cancel"));        cancelButton.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(73, 113, 196)));        cancelButton.setForeground(new Color(73, 113, 196));        cancelButton.setFont(new Font("Dialog", Font.BOLD, 11));        cancelButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                cancelTransfer();            }        });        cancelButton.addMouseListener(new MouseAdapter() {            public void mouseEntered(MouseEvent e) {                cancelButton.setCursor(new Cursor(Cursor.HAND_CURSOR));            }            public void mouseExited(MouseEvent e) {                cancelButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));            }        });    }    private void showPopup(MouseEvent e, final File downloadedFile) {        if (e.isPopupTrigger()) {            final JPopupMenu popup = new JPopupMenu();            final ReceiveMessage ui = this;            Action saveAsAction = new AbstractAction() {                public void actionPerformed(ActionEvent e) {                    final JFileChooser chooser = Downloads.getInstance().getFileChooser();                    File selectedFile = chooser.getSelectedFile();                    if (selectedFile != null) {                        selectedFile = new File(selectedFile.getParent(), downloadedFile.getName());                    }                    else {                        selectedFile = downloadedFile;                    }                    chooser.setSelectedFile(selectedFile);                    int ok = chooser.showSaveDialog(ui);                    if (ok == JFileChooser.APPROVE_OPTION) {                        File file = chooser.getSelectedFile();                        try {                            if (file.exists()) {                                int confirm = JOptionPane.showConfirmDialog(ui, Res.getString("message.file.exists.question"), Res.getString("title.file.exists"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);                                if (confirm == JOptionPane.NO_OPTION) {                                    return;                                }                            }                            URLFileSystem.copy(downloadedFile.toURL(), file);                        }                        catch (IOException e1) {                            Log.error(e1);                        }                    }                }            };            saveAsAction.putValue(Action.NAME, Res.getString("menuitem.save.as"));            popup.add(saveAsAction);            popup.show(this, e.getX(), e.getY());        }    }}

⌨️ 快捷键说明

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