Package org.geoforge.guillc.frame

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

/*
*  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.ActionListener;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.logging.Logger;
import javax.help.HelpBroker;
import javax.swing.*;
import org.geoforge.guihlp.handler.IGfrHandlerSetEnabledTrueHelpOnThisSection;
import org.geoforge.guillc.handler.IGfrHandlerCloseSpace;
import org.geoforge.guillc.handler.IGfrHandlerOpenSpaceAny;
import org.geoforge.guillc.handler.IGfrHandlerOpenSpaceAppProject;
import org.geoforge.guillc.menubar.GfrMbrSpcAppAbs;
import org.geoforge.guillc.panel.GfrPnlStatusBarMain;
import org.geoforge.guillc.tabbedpane.GfrTabSpcAppAbs;
import org.geoforge.guillc.tabbedpane.GfrTabSpcAppClsPrjAbs;
import org.geoforge.guillc.toolbar.GfrTbrHlpMainSpcAppAbs;
import org.geoforge.io.handler.IGfrHandlerUnserializedObject;
import org.geoforge.io.serial.GfrSerializeFrameMainSpaceProject;
import org.geoforge.io.serial.GfrSerializeFrameMainSpaceRoot;
import org.geoforge.io.serial.GfrSerializeFrameMainSpaceWork;
import org.geoforge.lang.handler.IGfrHandlerLifeCycleObject;
import org.geoforge.java.enumeration.GfrEnuSystemPropertiesKeys;
import org.geoforge.lang.util.GfrResBundleLang;
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 GfrFrmMainAppAbs extends GfrFrmAbs implements
        IGfrHandlerSetEnabledTrueHelpOnThisSection
{
    final static private int _F_INT_WIDTH_PREF_ = 1200;
    final static private int _F_INT_HEIGT_PREF_ = 800;
   
        // ----
    // begin: instantiate logger for this class
    final static private Logger _LOGGER_ = Logger.getLogger(GfrFrmMainAppAbs.class.getName());

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

    // end: instantiate logger for this class
    // ----
   
   
   
   
    protected GfrMbrSpcAppAbs _mbrSpcRoot = null;
    protected GfrTbrHlpMainSpcAppAbs _tbrSpcRoot = null;
    protected GfrTabSpcAppAbs _tpnSpcRoot = null;
   
    protected GfrMbrSpcAppAbs _mbrSpcClsWork = null;
    protected GfrTbrHlpMainSpcAppAbs _tbrSpcClsWork = null;
    protected GfrTabSpcAppAbs _tpnSpcClsWork = null;

    protected GfrMbrSpcAppAbs _mbrSpcClsPrjWwdMan = null;
    protected GfrTbrHlpMainSpcAppAbs _tbrSpcClsPrjWwdMan = null;
    protected GfrTabSpcAppAbs _tpnSpcClsPrjWwdMan = null;
   
    protected GfrMbrSpcAppAbs _mbrSpcClsPrjWwdSel = null;
    protected GfrTbrHlpMainSpcAppAbs _tbrSpcClsPrjWwdSel = null;
    protected GfrTabSpcAppAbs _tpnSpcClsPrjWwdSel = null;
   
    protected GfrMbrSpcAppAbs _mbrSpcClsPrjRun = null;
    protected GfrTbrHlpMainSpcAppAbs _tbrSpcClsPrjRun = null;
    protected GfrTabSpcAppAbs _tpnSpcClsPrjRun = null;
   
    protected ArrayList<IGfrHandlerLifeCycleObject> _altObjComponentChildren = null;
   
    protected GfrFrmMainAppAbs() throws Exception
    {
        super(
                "THIS" // strIconAppli
                );
       
        this._altObjComponentChildren = new ArrayList<IGfrHandlerLifeCycleObject>();
    }
   
    @Override
    public void loadUnserializedObject() throws Exception
    {
        this.loadTransient();

        for (int i=0; i<this._altObjComponentChildren.size(); i++)
        {
            IGfrHandlerLifeCycleObject obj = this._altObjComponentChildren.get(i);

            if (obj instanceof IGfrHandlerUnserializedObject)
            {
                ((IGfrHandlerUnserializedObject) obj).loadUnserializedObject();
            }

        }
    }

    @Override
    public void releaseUnserializedObject() throws Exception
    {
        this.releaseTransient();

        for (int i=0; i<this._altObjComponentChildren.size(); i++)
        {
            IGfrHandlerLifeCycleObject obj = this._altObjComponentChildren.get(i);

            if (obj instanceof IGfrHandlerUnserializedObject)
            {
                ((IGfrHandlerUnserializedObject) obj).releaseUnserializedObject();
            }

        }
    }
   
    public void setEnabledHelpGettingStarted(HelpBroker hbr)
    {
        for (int i=0; i<this._altObjComponentChildren.size(); i++)
        {
            IGfrHandlerLifeCycleObject obj = this._altObjComponentChildren.get(i);

            if (obj instanceof GfrMbrSpcAppAbs)
            {
                ((GfrMbrSpcAppAbs) obj).setEnabledHelpGettingStarted(hbr);
            }
        }
    }
   
    public void closeSpaceRoot() throws Exception
    {
       Rectangle rec = super.getBounds();
       GfrSerializeFrameMainSpaceRoot.s_writeBounds(rec);

    }
   
    public void closeSpaceWork() throws Exception
    {
       Rectangle rec = super.getBounds();
       GfrSerializeFrameMainSpaceWork.s_writeBounds(rec);
      
       ((IGfrHandlerCloseSpace) this._tpnSpcClsWork).closeSpace();
    }
   
   
    public void closeSpaceProject() throws Exception
    {
       Rectangle rec = super.getBounds();
       GfrSerializeFrameMainSpaceProject.s_writeBounds(rec);
      
       ((IGfrHandlerCloseSpace) this._tbrSpcClsPrjWwdMan).closeSpace();
        ((IGfrHandlerCloseSpace) this._tbrSpcClsPrjWwdSel).closeSpace();
        ((IGfrHandlerCloseSpace) this._tbrSpcClsPrjRun).closeSpace();
       
        ((IGfrHandlerCloseSpace) this._tpnSpcClsPrjWwdMan).closeSpace();
        ((IGfrHandlerCloseSpace) this._tpnSpcClsPrjWwdSel).closeSpace();
        ((IGfrHandlerCloseSpace) this._tpnSpcClsPrjRun).closeSpace();
    }
   
    public void openSpaceProject(
            ActionListener alrControllerSpcPrj,
            ActionListener alrControllerPrsMan,
            ActionListener alrControllerPrsSel,
            ActionListener alrControllerPrsRun) throws Exception
    {
       _setBoundsSpaceProject();
      
       ((IGfrHandlerOpenSpaceAny) this._tbrSpcClsPrjWwdMan).openSpaceAny(alrControllerSpcPrj);
        ((IGfrHandlerOpenSpaceAny) this._tbrSpcClsPrjWwdSel).openSpaceAny(alrControllerSpcPrj);
        ((IGfrHandlerOpenSpaceAny) this._tbrSpcClsPrjRun).openSpaceAny(alrControllerSpcPrj);
      
        ((IGfrHandlerOpenSpaceAppProject) this._tpnSpcClsPrjWwdMan).openSpaceApplicationProject(alrControllerSpcPrj, alrControllerPrsMan);
        ((IGfrHandlerOpenSpaceAppProject) this._tpnSpcClsPrjWwdSel).openSpaceApplicationProject(alrControllerSpcPrj, alrControllerPrsSel);
        ((IGfrHandlerOpenSpaceAppProject) this._tpnSpcClsPrjRun).openSpaceApplicationProject(alrControllerSpcPrj, alrControllerPrsRun);
    }
   
    @Override
    public boolean init()
    {
        if (! super.init())
            return false;

        for (int i=0; i<this._altObjComponentChildren.size(); i++)
        {
            IGfrHandlerLifeCycleObject obj = this._altObjComponentChildren.get(i);

            if (! obj.init())
                return false;
        }
       
        this._pnlContentPane.add(GfrPnlStatusBarMain.s_getInstance(), BorderLayout.SOUTH);
       
        return true;
    }
   
    public void setEnabledTabsContents(boolean bln)
    {
        for (int i=0; i<this._altObjComponentChildren.size(); i++)
        {
            IGfrHandlerLifeCycleObject obj = this._altObjComponentChildren.get(i);

            if (obj instanceof GfrTabSpcAppClsPrjAbs)
            {
                ((GfrTabSpcAppClsPrjAbs) obj).setEnabled(bln);
            }
        }
    }
   
    public void openSpaceWork(
            String strPathAbsSpaceWork,
            ActionListener alrControllerSpcWrk) throws Exception // workspace
    {
       _setBoundsSpaceWork();
      
       ((IGfrHandlerOpenSpaceAny) this._tpnSpcClsWork).openSpaceAny(alrControllerSpcWrk);
      
        _setSpace_(
                GfrResBundleLang.s_getInstance().getValue("word.workspace"),
                strPathAbsSpaceWork,
                this._mbrSpcClsWork,
                this._tbrSpcClsWork,
                this._tpnSpcClsWork);

        String strTitle = super.getTitle();
        strTitle += " - ";
        strTitle += "\"";
        strTitle += strPathAbsSpaceWork;
        strTitle += "\"";
       
        super.setTitle(strTitle);
    }
   
    public void openSpaceRoot() throws Exception
    {
       _setBoundsSpaceRoot();
      
       _setSpace_(
                GfrResBundleLang.s_getInstance().getValue("word.desktop"),
                "_void_",
                this._mbrSpcRoot,
                this._tbrSpcRoot,
                this._tpnSpcRoot);
    }
   
    public void switchPerspectiveProject(String strNameSpaceProject,
         String strKindPersp) throws Exception
    {
       
        GfrMbrSpcAppAbs mbr = null;
        GfrTbrHlpMainSpcAppAbs tbr = null;
        GfrTabSpcAppAbs tab = null;
       
        if (strKindPersp.compareTo(GfrResBundleLang.s_getInstance().getValue("verb.manage").toLowerCase()) == 0)
        {
            mbr = this._mbrSpcClsPrjWwdMan;
            tbr = this._tbrSpcClsPrjWwdMan;
            tab = this._tpnSpcClsPrjWwdMan;
        }
               
        else if (strKindPersp.compareTo(GfrResBundleLang.s_getInstance().getValue("verb.select").toLowerCase()) == 0)
        {  
            mbr = this._mbrSpcClsPrjWwdSel;
            tbr = this._tbrSpcClsPrjWwdSel;
            tab = this._tpnSpcClsPrjWwdSel;
        }
               
        else if (strKindPersp.compareTo(GfrResBundleLang.s_getInstance().getValue("verb.run").toLowerCase()) == 0)
        {
            mbr = this._mbrSpcClsPrjRun;
            tbr = this._tbrSpcClsPrjRun;
            tab = this._tpnSpcClsPrjRun; 
        }
       
        else
        {
            String str = "uncaught strKindPersp:" + strKindPersp;
            GfrFrmMainAppAbs._LOGGER_.severe(str);
            throw new Exception(str);
        }
       
        // ----
       
        _setSpace_(
                GfrResBundleLang.s_getInstance().getValue("word.project"),
                strNameSpaceProject,
                mbr,
                tbr,
                tab);
       
        // ----
        // do job

         String strTitle = super.getTitle();
         strTitle += " - ";
         strTitle += "\"";
         strTitle += strNameSpaceProject;
         strTitle += "\"";
         strTitle += " - ";
         strTitle += strKindPersp;
        
         super.setTitle(strTitle);
    }
   
    @Override
    public void setEnabledTrueHelpOnThisSection(HelpBroker hbr)
    {
        for (int i=0; i<this._altObjComponentChildren.size(); i++)
        {
            IGfrHandlerLifeCycleObject obj = this._altObjComponentChildren.get(i);

            if (obj instanceof IGfrHandlerSetEnabledTrueHelpOnThisSection)
            {
                ((IGfrHandlerSetEnabledTrueHelpOnThisSection) obj).setEnabledTrueHelpOnThisSection(hbr);
            }
        }
    }
  
    @Override
    public void destroy()
    {    
       try
       {
          Rectangle rec = super.getBounds();
          String strTypeDisplay = GfrPnlStatusBarMain.s_getInstance().getTypeDisplay();
         
          if (strTypeDisplay.compareTo(GfrResBundleLang.s_getInstance().getValue("word.desktop")) == 0)
          {
             GfrSerializeFrameMainSpaceRoot.s_writeBounds(rec);
          }
         
          else if (strTypeDisplay.compareTo(GfrResBundleLang.s_getInstance().getValue("word.workspace")) == 0)
          {
             GfrSerializeFrameMainSpaceWork.s_writeBounds(rec);
          }
         
          else if (strTypeDisplay.compareTo(GfrResBundleLang.s_getInstance().getValue("word.project")) == 0)
          {
             GfrSerializeFrameMainSpaceProject.s_writeBounds(rec);
          }
         
          else
          {
             GfrFrmMainAppAbs._LOGGER_.severe("Uncaught strTypeDisplay: " + strTypeDisplay);
          }
         

          //Rectangle rec = super.getBounds();
          //TO_REMOVE_GfrSerializeFrameMain.s_writeBounds(rec);
       }
      
       catch(Exception exc)
       {
          exc.printStackTrace();
       }
      
        for (int i = 0; i < this._altObjComponentChildren.size(); i++)
        {
            IGfrHandlerLifeCycleObject obj = this._altObjComponentChildren.get(i);

            if (obj == null)
                continue;

            obj.destroy();
            obj = null;
        }

        this._altObjComponentChildren.clear();
        this._altObjComponentChildren = null;

        super.dispose();
    }
   
    // ---
   
 
    private void _setBoundsSpaceRoot() throws Exception
    {
       Object objRectangle = GfrSerializeFrameMainSpaceRoot.s_readBounds();

        if (objRectangle == null) // first run
        {
            _setBoundsFirstRun();
            return;
        }

        if (! (objRectangle instanceof Rectangle))
            throw new Exception("! (objRectangle instanceof Rectangle)");


        Rectangle recBounds = (Rectangle) objRectangle;
        super.setBounds(recBounds);
        super.setPreferredSize(new Dimension(recBounds.width, recBounds.height));
        super.setSize(recBounds.width, recBounds.height);
    }
   
    private void _setBoundsSpaceWork() throws Exception
    {
       Object objRectangle = GfrSerializeFrameMainSpaceWork.s_readBounds();

        if (objRectangle == null) // first run
        {
            _setBoundsSpaceRoot();
            return;
        }

        if (! (objRectangle instanceof Rectangle))
            throw new Exception("! (objRectangle instanceof Rectangle)");


        Rectangle recBounds = (Rectangle) objRectangle;
        super.setBounds(recBounds);
        super.setPreferredSize(new Dimension(recBounds.width, recBounds.height));
        super.setSize(recBounds.width, recBounds.height);
    }
   
    private void _setBoundsSpaceProject() throws Exception
    {
       Object objRectangle = GfrSerializeFrameMainSpaceProject.s_readBounds();

        if (objRectangle == null) // first run
        {
            _setBoundsSpaceWork();
            return;
        }

        if (! (objRectangle instanceof Rectangle))
            throw new Exception("! (objRectangle instanceof Rectangle)");


        Rectangle recBounds = (Rectangle) objRectangle;
        super.setBounds(recBounds);
        super.setPreferredSize(new Dimension(recBounds.width, recBounds.height));
        super.setSize(recBounds.width, recBounds.height);
    }
   
    @Override
    protected void _setBoundsFirstRun()
    {
       Toolkit tlk = Toolkit.getDefaultToolkit();
        Dimension dimScreen = tlk.getScreenSize();
        int intWScreen = dimScreen.width;
        int intHScreen = dimScreen.height;
        //System.out.println("intWScreen=" + intWScreen);
        //System.out.println("intHScreen=" + intHScreen);
        intWScreen -= 5; // NOT YET TESTED
        intHScreen -= 5; // NOT YET TESTED
       
       
       
        int intW = GfrFrmMainAppAbs._F_INT_WIDTH_PREF_;
        int intH = GfrFrmMainAppAbs._F_INT_HEIGT_PREF_;
       
        if (intW > intWScreen)
           intW = intWScreen;
       
        if (intH > intHScreen)
           intH = intHScreen;

        super.setPreferredSize(new Dimension(intW, intH));
        super.setSize(intW, intH);
    }
   
    // ---
   
    private void _setSpace_(
            String strTypeDisplay,  // to be remove
            String strValueDisplay, // to be remove
            JMenuBar mbr,
            JToolBar tbr,
            JTabbedPane tabContents)
    {
        GfrPnlStatusBarMain.s_getInstance().setTypeDisplay(strTypeDisplay);
        GfrPnlStatusBarMain.s_getInstance().setValueDisplay(strValueDisplay);
  
       
        JMenuBar mbrPrev = super.getJMenuBar();

        if (mbrPrev != null)
            super.remove(mbrPrev);

        super.setJMenuBar(mbr);

        //Component[] cmps = super.getContentPane().getComponents();
        Component[] cmps = this._pnlContentPane.getComponents();
       
        // removing toolbar and contents
        for (int i=0; i<cmps.length; i++)
        {
            if (cmps[i] instanceof GfrPnlStatusBarMain)
                continue;
           
            //super.getContentPane().remove(cmps[i]);
            this._pnlContentPane.remove(cmps[i]);
        }
      
       
        this._pnlContentPane.add(tbr, BorderLayout.NORTH);
        this._pnlContentPane.add((Component) tabContents, BorderLayout.CENTER);

     
        String strTitle = System.getProperty(GfrEnuSystemPropertiesKeys.NAME_LONG_APPLI.getLabel());

        if (strTypeDisplay != null) // TODO: first letter in upperCase
        {
            strTitle += " - ";
            strTitle += strTypeDisplay;
        }


        super.setTitle(strTitle);

     
        JComponent cmp = (JComponent) this._pnlContentPane;
        cmp.revalidate();
       
        if (cmp.isVisible())
            cmp.repaint();
    }
   
    // memo: hidden source call, please don't remove this method!
    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
    {
        // our "pseudo-constructor"
        in.defaultReadObject();
        // now we are a "live" object again, so let's run rebuild and start
       
    }
}
TOP

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

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.