MokaByte Numero 10 - Luglio Agosto 1997
 
 



 
 
ü***************************************************

*    Class :  PrintJobUse                            *

******************************************************/







ü Questa classe permette di provare il funzionamento

* della gestione della stampa in Java.

*@author Massimo Carli (MokaByte)

*/











import  java.awt.*;                                     // Per la gestione dell'UI

import  java.awt.event.*;               // Per la gestione degli eventi

import  java.util.*;                            // Per le Properties





public class PrintJobUse extends Frame

        implements ActionListener {

        

        protected       Panel                           pan_south;              // Panel che andrà a south nel Layout

        protected       Button                          but_stampa;             // Bottone per la stampa

        protected       Button                          but_printall;   // Bottone per la stampa di tutto

        protected       Button                          but_newpage;    // Bottone di nuova pagina

        protected       Button                          but_delete;             // Bottone per cancellare la TextArea

        protected       TextArea                        txa_input;              // TextArea di input

        protected       boolean                         tutto;                          // Dice se stampare tutto o solo il testo

        protected       Properties              prop;                                   // Proprietà per la stampante

        protected       Graphics                        g;                                              // Contesto da stampare

        

        // Delimitatore di pagina

        protected       String                  delim_page="*********";

        //protected     DrawCanvas      disegno;                // Canvas su cui disegnare

        

        

        

        

        ü

        * Costruttore

        */

        public PrintJobUse(){

                        super("PrintJobUse");

                        crea_interfaccia();

                        setSize(550,300);

        }// fine costruttore

        

        

        

        

        // Creazione dell'interfaccia grafica

        private final void crea_interfaccia(){

                        prop= new Properties();

                        setLayout(new BorderLayout(5,5));

                        pan_south = new Panel();

                        // Bottone per cancellare la pagina

                        but_delete = new Button("Delete Page");                 

                        but_delete.addActionListener(this);

                        pan_south.add(but_delete);                      

                        // Bottone per stampare il contenuto della TextArea

                        but_stampa = new Button("Print");                       

                        but_stampa.addActionListener(this);

                        pan_south.add(but_stampa);

                        // Bottone per stampare il tutto

                        but_printall = new Button("Print All");                 

                        but_printall.addActionListener(this);

                        pan_south.add(but_printall);    

                        // Bottone per stampare il tutto

                        but_newpage = new Button("New Page");                   

                        but_newpage.addActionListener(this);

                        pan_south.add(but_newpage);                             

                        // TextArea per inserire il testo da stampare

                        txa_input= new TextArea();      

                        // Aggiunta pannelli            

                        add(pan_south,BorderLayout.SOUTH);

                        add(txa_input,BorderLayout.CENTER);                     

                        validate();

                        txa_input.setVisible(true);

        } // fine crea_interfaccia()

                

                

        private final void gestisci_stampa(){

                // Dobbiamo stampare il contenuto del TextArea

                Toolkit         tk= Toolkit.getDefaultToolkit();                // Acquisiamo il toolkit                

                PrintJob        pj= tk.getPrintJob(this," Stampa testo",prop);

                stampa_proprieta(prop);         

                if (pj!=null){  // Se e' stato ritornato un PrintJob

                        if (!tutto){

                                String vecchio = txa_input.getText();   // prendiamo il testo

                                // Esaminiamo il testo e vediamo se ci sono dei delimitatori di pagina

                                StringTokenizer pagine=new StringTokenizer(txa_input.getText(),delim_page);

                                while (pagine.hasMoreTokens()){

                                        g = pj.getGraphics();   // Acquisiamo una pagina

                                        txa_input.setText(pagine.nextToken());

                                        if (g!=null){

                                                txa_input.printAll(g);  

                                        }// fine if (g!=null    )

                                        g.dispose();    

                                }       // fine while

                                txa_input.setText(vecchio);

                        }       else {

                                        g = pj.getGraphics();   // Acquisiamo l'unica pagina

                                        if (g!=null){

                                                printAll(g);    

                                                g.dispose();                            

                                        }// fine if g   

                                }       

                        pj.end();

                }

        }       // fine gestisci_stampa()

        

                

                

        private final void stampa_proprieta(Properties prop){

                prop.list(System.out);

        }       

                

        public void actionPerformed(ActionEvent ae){

                Button sorg= (Button)(ae.getSource());  

                if (sorg.equals(but_delete)){

                        txa_input.setText("");

                }       else if (sorg.equals(but_newpage)){

                                txa_input.append("\n");

                                txa_input.append(delim_page);

                                txa_input.append("\n");

                                txa_input.requestFocus();

                }       else{

                                tutto = sorg.equals(but_printall);

                                gestisci_stampa()       ;

                        }       



        }       // fine actionPerformed()

                

                

        

        

        

        

        

        ü

        * Permette di mettere il Frame in centro

        */

        public void setVisible(boolean vis){

                Dimension sc=Toolkit.getDefaultToolkit().getScreenSize();               // Dim. Schermo

                int pos_x=((sc.width-getSize().width)/2);               // Posizione x centrata

                int pos_y=((sc.height-getSize().height)/2);     // Posizione y centrata

                setBounds(pos_x,pos_y,getSize().width,getSize().height);

                super.setVisible(vis);

        }// fine setVisible()   

        

        

        

        public static void main(String[] str){

                PrintJobUse pju= new PrintJobUse();

                pju.setVisible(true);

        }// fine main

        

        

        

        

}// fine PrintJobUse