| HOME | FORUM | INDICE |

MyDialog.java

/*
    Finestra di dialogo per la richiesta di conferma.

    Autore: Agosto 2009, Giovanni Iacobelli - http://www.iacosoft.com
*/


import java.awt.*;
import java.awt.event.*;

class MyDialog extends Dialog implements WindowListener, ActionListener
{
    static final int RESULT_OK= 1;
    static final int RESULT_CANCEL= 0;

    int m_stato= MyDialog.RESULT_CANCEL;

    //costruttore
    public MyDialog(Frame parent, String titolo, String domanda)
    {
        super(parent, titolo, true);
    
        //aggiunge il gestore per l'evento di chiusura
        addWindowListener(this);

        //imposta le dimensioni iniziali della finestra    
        setSize(300,100);
        
        //un pannello conterrą l'icona e il messaggio
        Panel cont= new Panel();
        ContenitoreImage img= new ContenitoreImage("question.gif");
        cont.add(img);
        Label lbl= new Label(domanda, Label.CENTER);
        cont.add(lbl);

        //aggiunge il pannello nella zona centrale della finestra
        add(cont, BorderLayout.CENTER);
        
        //un altro pannello conterrą i pulsanti OK e CANCEL
        Panel contCmd= new Panel();
        Button cmdOK= new Button("OK");
        cmdOK.addActionListener(this);
        cmdOK.setActionCommand("CMD OK");
        contCmd.add(cmdOK);

        Button cmdCancel= new Button("CANCEL");
        cmdCancel.addActionListener(this);
        cmdCancel.setActionCommand("CMD CANCEL");
        contCmd.add(cmdCancel);

        //aggiunge il pannello nella zona inferiore della finestra
        add(contCmd, BorderLayout.SOUTH);

        //compatta la finestra
        pack();

        //determina le dimensioni dello schermo
        GraphicsEnvironment ge= GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice dv= ge.getDefaultScreenDevice();
        GraphicsConfiguration cfgScr= dv.getDefaultConfiguration();
        Rectangle dim= cfgScr.getBounds();

        //rilegge le dimensioni in seguito al compattamento della finestra
        Dimension d= getSize();

        //imposta la posizione della finestra centrata rispetto allo schermo.
        setLocation((dim.width - d.width)/2, (dim.height - d.height)/2);

        setVisible(true);
    }

    //proprietą per la lettura della risposta utente
    public int getResponse()
    {
        return m_stato;
    }

    //metodi dell'interfaccia ActionListener
    
    public void actionPerformed(ActionEvent e)
    {
        String cmd= e.getActionCommand();

        if (cmd.compareTo("CMD OK") == 0)
        {
            m_stato= MyDialog.RESULT_OK;
        }

        if (cmd.compareTo("CMD CANCEL") == 0)
        {
            m_stato= MyDialog.RESULT_CANCEL;
        }

        this.setVisible(false);
    }

    //fine metodi dell'interfaccia ActionListener

    //metodi dell'interfaccia WindowListener
    public void windowClosing(WindowEvent e)
    {
        Dialog w= (Dialog) e.getSource();
        w.setVisible(false);
        m_stato= m_stato= MyDialog.RESULT_CANCEL;
    }
    
    public void windowDeactivated(WindowEvent e)
    {
    }
    
    public void windowDeiconified(WindowEvent e)
    {
    }

    public void windowActivated(WindowEvent e)
    {
    }

    public void windowIconified(WindowEvent e)
    {
    }
    
    public void windowClosed(WindowEvent e)
    {
    }
    
    public void windowOpened(WindowEvent e)
    {
    }
    //fine metodi dell'interfaccia WindowListener

}