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

📄 picturedialog.java

📁 [linux.rar] - 嵌入式linux开发教程
💻 JAVA
字号:
//
// $Id: PictureDialog.java 298 2007-07-12 10:17:32 +0000 (jeu., 12 juil. 2007)
// etienne_sf $
//
// jupload - A file upload applet.
// Copyright 2007 The JUpload Team
//
// Created: 2006-07-10
// Creator: etienne_sf
// Last modified: $Date: 2008-12-03 09:57:11 +0100 $
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version. This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details. You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation, Inc.,
// 675 Mass Ave, Cambridge, MA 02139, USA.

package wjhk.jupload2.gui.image;

import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;

import javax.swing.JButton;
import javax.swing.JDialog;

import wjhk.jupload2.filedata.PictureFileData;
import wjhk.jupload2.policies.UploadPolicy;

/**
 * A maximized modal dialog box, that display the selected picture.
 * 
 * @author etienne_sf
 */
public class PictureDialog extends JDialog implements ActionListener,
        ComponentListener {

    /** A generated serialVersionUID, to avoid warning during compilation */
    private static final long serialVersionUID = 7802205907550854333L;

    JButton buttonClose;

    PictureFileData pictureFileData = null;

    PicturePanel picturePanel = null;

    UploadPolicy uploadPolicy = null;

    /**
     * Creates a new instance.
     * 
     * @param owner The parent frame.
     * @param pictureFileData The picture to manage.
     * @param uploadPolicy The upload policy which applies.
     */
    public PictureDialog(Frame owner, PictureFileData pictureFileData,
            UploadPolicy uploadPolicy) {
        super(owner, pictureFileData.getFileName(), true);

        this.uploadPolicy = uploadPolicy;
        this.pictureFileData = pictureFileData;

        // This will be a long operation. The cursor will set back to normal in
        // componentShown, see below
        setCursor(new Cursor(Cursor.WAIT_CURSOR));

        // Creation of the image area
        this.picturePanel = new DialogPicturePanel(this, uploadPolicy,
                pictureFileData);

        // Creation of the buttonClose button.
        this.buttonClose = new JButton(uploadPolicy.getString("buttonClose"));
        this.buttonClose.setMaximumSize(new Dimension(100, 100));
        this.buttonClose.addActionListener(this);

        getContentPane().add(this.buttonClose, BorderLayout.SOUTH);
        getContentPane().add(this.picturePanel);

        pack();
        // Correction given by
        // setSize(getMaximumSize()); generate very high number under MAC OSX ->
        // Applet Crash
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(0, 0, screenSize.width, screenSize.height);

        // The dialog is modal: the next line will return when the DialogPicture
        // is hidden (to be closed, in our case)
        // But we want to know when it will becom visible, to clear the wait
        // cursor.
        addComponentListener(this);
        setVisible(true);

        // MEMORY LEAK CORRECTION :

        // Let's free some memory.
        // This is necessary, as the finalize method is not called (if anyone
        // has an explanation...).
        // So, I have to manually free the memory consummed to display the
        // image, here.
        this.picturePanel.setPictureFile(null, null, null);
    }

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent event) {
        if (event.getActionCommand() == this.buttonClose.getActionCommand()) {
            this.uploadPolicy.displayDebug(
                    "[PictureDialog] Before this.dispose()", 10);
            this.dispose();
        }
    }

    /** {@inheritDoc} */
    public void componentHidden(ComponentEvent arg0) {
        // No action
    }

    /** {@inheritDoc} */
    public void componentMoved(ComponentEvent arg0) {
        // No action
    }

    /** {@inheritDoc} */
    public void componentResized(ComponentEvent arg0) {
        // No action
    }

    /** {@inheritDoc} */
    public void componentShown(ComponentEvent arg0) {
        // We set the cursor back to normal
        setCursor(new Cursor(Cursor.HAND_CURSOR));
    }

}

⌨️ 快捷键说明

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