Package org.geoforge.guillc.frame

Source Code of org.geoforge.guillc.frame.GfrFrmAbs

/*
*  Copyright (C) 2011-2014 GeoForge Project
*
*  This program is free software: you can redistribute it and/or modify
*  it under the terms of the GNU Lesser General Public License as published by
*  the Free Software Foundation, either version 3 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 Lesser General Public License for more details.
*
*  You should have received a copy of the GNU Lesser General Public License
*  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/



package org.geoforge.guillc.frame;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.logging.Logger;
import javax.help.HelpBroker;
import javax.swing.JFrame;
import javax.swing.JPopupMenu;
import javax.swing.WindowConstants;
import org.geoforge.guihlp.GfrCSH;
import org.geoforge.guillc.border.GfrBorderHelpOnThis;
import org.geoforge.guillc.checkboxmenuitem.GfrCmiAlrFullScreen_NOT_YET_IN_USE;
import org.geoforge.guillc.optionpane.GfrOptionPaneAbs;
import org.geoforge.guillc.panel.GfrPnl;
import org.geoforge.guillc.panel.GfrPnlStatusBarMain;
import org.geoforge.io.handler.IGfrHandlerUnserializedObject;
import org.geoforge.java.enumeration.GfrEnuSystemPropertiesKeys;
import org.geoforge.lang.handler.IGfrHandlerLifeCycleObject;
import org.geoforge.lang.handler.IGfrHandlerTransitoryObject;
import org.geoforge.java.util.logging.filehandler.FileHandlerLogger;

/**
*
* @author bantchao
*
* email: bantchao_AT_gmail.com
* ... please remove "_AT_" from the above string to get the right email address
*
*/
abstract public class GfrFrmAbs extends JFrame implements
        Printable,
        IGfrHandlerLifeCycleObject,
        IGfrHandlerTransitoryObject,
        IGfrHandlerUnserializedObject,
        ActionListener
{
    // ----
    // begin: instantiate logger for this class
    final static private Logger _LOGGER_ = Logger.getLogger(GfrFrmAbs.class.getName());

    static
    {
        GfrFrmAbs._LOGGER_.addHandler(FileHandlerLogger.s_getInstance());
    }

    // end: instantiate logger for this class
    // ----
   
    // ---
   
    // beg transient stuff
    transient private Image _img_ = null;
    // end transient stuff
   
   
    protected GfrPnl _pnlContentPane = null; // destroy never called !!!!!!!!!!!!!
   
   
    abstract protected void _setBoundsFirstRun();
    protected GfrFrmAbs(
            String strNameIcon)
    {
        super(System.getProperty(GfrEnuSystemPropertiesKeys.NAME_LONG_APPLI.getLabel()));
        this._strNameIcon = strNameIcon;
       
        // ---
        this._pnlContentPane = new GfrPnl(new BorderLayout());
        this._pnlContentPane.init();
        super.setContentPane(this._pnlContentPane);
        GfrBorderHelpOnThis.s_set(this._pnlContentPane);
        // ---
       
       
        super.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    }

    public boolean doPrint()
    {
        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        PrinterJob job = PrinterJob.getPrinterJob();
        job.setPrintable(this);

        boolean blnOk = true;

        if (job.printDialog())
        {
           try
           {
               job.print();
               setCursor(Cursor.getDefaultCursor());
           }

           catch(Exception exc)
           {
              setCursor(Cursor.getDefaultCursor());
               exc.printStackTrace();
               GfrFrmAbs._LOGGER_.warning(exc.getMessage());
               GfrOptionPaneAbs.s_showDialogWarning(this, exc.getMessage());
               blnOk = false;
           }
        }
       
        else
         setCursor(Cursor.getDefaultCursor());

       
        return blnOk;
    }

    @Override
    public int print(Graphics g, PageFormat pft, int intPageIndex)
    {
        Graphics2D g2 = (Graphics2D) g;

        g2.setColor(Color.black);
        Dimension d = this.getSize();

        double dblPanelW = d.getWidth();
        double dblPanelH = d.getHeight();

        double dblPageW = pft.getImageableWidth();
        double dblPageH = pft.getImageableHeight();

        double dblScale = dblPageW / dblPanelW;
        int intPageNb = (int) Math.ceil(dblScale * dblPanelH / dblPageH);

        if (intPageIndex >= intPageNb)
                return Printable.NO_SUCH_PAGE;

        g2.translate(pft.getImageableX(), pft.getImageableY());

        g2.translate(0f, -intPageIndex*dblPageH);

        g2.scale(dblScale, dblScale);
        this.paint(g2);

        return Printable.PAGE_EXISTS;

    }
   
    static public JFrame s_getFrameOwnerTrickForActionController(Component cmp)
    {
       JFrame frm = s_getFrameOwner(cmp);
       JFrame frmMain = s_getFrameOwner(GfrPnlStatusBarMain.s_getInstance());
      
       if (frm == frmMain)
          return frm;
      
       return null;
    }
   

    static public JFrame s_getFrameOwner(Component cmp)
    {
        while (cmp != null)
        {
            if (cmp instanceof JFrame)
                return (JFrame) cmp;

            if (cmp instanceof JPopupMenu)
            {
                JPopupMenu pop = (JPopupMenu) cmp;
                cmp = pop.getInvoker();
            }

            cmp = cmp.getParent();
        }

        return null;
    }
   

    @Override
    public void setIconImage(Image img)
    {
        this._img_ = img;
        super.setIconImage(this._img_);
    }

   
    @Override
    public void releaseTransient() throws Exception
    {
        super.setIconImage(null);
    }

    // memo: hidden source call
    private void writeObject(ObjectOutputStream out) throws IOException
    {
        out.defaultWriteObject();
    }

    @Override
    public boolean init()
    {
        try
        {
            loadTransient();
        }

        catch (Exception exc)
        {
            exc.printStackTrace();

            GfrFrmAbs._LOGGER_.severe(exc.getMessage());
            GfrOptionPaneAbs.s_showDialogError(this, exc.getMessage());

            return false;
        }

        return true;
    }


     @Override
    public void pack()
    {
        /*if (this._dimPreferred_ == null)
        {
            this._dimPreferred_ =  super.getPreferredSize();
        }*/

        super.pack();
    }

    private void _setFullScreen(boolean bln)
    {
        /*
        super.dispose();

        if (bln)
        {
            this._rec_ = super.getBounds();
            super.setUndecorated(true);
            super.setExtendedState(Frame.MAXIMIZED_BOTH);
            super.setVisible(true);
            return;
        }

        if (this._dimPreferred_ == null)
        {
            System.err.println("this._dimPreferred == null, aborting");
            super.setVisible(true);
            return;
        }

        super.setUndecorated(false);
        super.setExtendedState(GfrFrmMain.NORMAL);
        super.setBounds(this._rec_);
        super.setPreferredSize(this._dimPreferred_);


        super.setVisible(true);

         */
    }

    @Override
    public void actionPerformed(ActionEvent evt)
    {
        if (evt.getSource() instanceof GfrCmiAlrFullScreen_NOT_YET_IN_USE)
        {
            GfrCmiAlrFullScreen_NOT_YET_IN_USE mim = (GfrCmiAlrFullScreen_NOT_YET_IN_USE) evt.getSource();

            if (mim.getState())
            {
                // full screen
                //System.out.println("full screen");
                this._setFullScreen(true);

                return;
            }

            // normal screen
            //System.out.println("normal screen");
            this._setFullScreen(false);

            return;
        }

        // dev coding error
        String str = "Uncaught action: " + evt.getSource().getClass().toString();
        GfrFrmAbs._LOGGER_.severe(str);
        GfrOptionPaneAbs.s_showDialogError(this, str);
    }

    // should be a static call, once a time
    public void setEnabledHelpKey(HelpBroker hbr)
    {
        try
        {
            // F1 key
            String strKey = "_app_welcome_";
           
            if (hbr != null)
                    hbr.enableHelpKey(this.getRootPane(), strKey, (javax.help.HelpSet) null);

            GfrCSH.setHelpIDString(this, strKey);
        }
       
        catch(Exception exc)
        {
            exc.printStackTrace();
            String str = exc.getMessage();
            GfrFrmAbs._LOGGER_.severe(str);
            GfrOptionPaneAbs.s_showDialogError(this, str);
            return;
        }
       
    }

    //*/
    //private Dimension _dimPreferred_ = null;
    //private Rectangle _rec_ = null;
   
    protected String _strNameIcon = null;
    //protected String _strKindBackgroundIcon = "";

    @Override
    public void loadUnserializedObject() throws Exception
    {
        this.loadTransient();

        for (int i=0; i<super.getComponentCount(); i++)
        {
            Component cmpCur = super.getComponent(i);

            if (cmpCur instanceof IGfrHandlerUnserializedObject)
            {
                IGfrHandlerUnserializedObject serCur = (IGfrHandlerUnserializedObject) cmpCur;
                serCur.loadUnserializedObject();
            }
        }
    }
   
    @Override
    public void releaseUnserializedObject() throws Exception
    {
        this.releaseTransient();

        for (int i=0; i<super.getComponentCount(); i++)
        {
            Component cmpCur = super.getComponent(i);

            if (cmpCur instanceof IGfrHandlerUnserializedObject)
            {
                IGfrHandlerUnserializedObject serCur = (IGfrHandlerUnserializedObject) cmpCur;
                serCur.releaseUnserializedObject();
            }
        }
    }


   
   
}
TOP

Related Classes of org.geoforge.guillc.frame.GfrFrmAbs

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.