Package org.geoforge.guillc.treenode

Source Code of org.geoforge.guillc.treenode.GfrNodCtrFixFolderTopPrjSecAbs

/*
*  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.treenode;


import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Logger;
import javax.swing.tree.DefaultTreeModel;
import org.geoforge.guillc.handler.IGfrHandlerDisplayableObjectsSet;
import org.geoforge.guillc.optionpane.GfrOptionPaneAbs;
import org.geoforge.guillc.panel.GfrPnlStatusBarAbs;
import org.geoforge.guillc.tree.GfrTreAbs;
import org.geoforge.java.util.logging.filehandler.FileHandlerLogger;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatRenamedTlo;
import org.geoforge.mdldsp.event.state.singleton.selecttlo.GfrEvtMdlSttSngSelTlo;
import org.geoforge.mdldsp.state.singleton.selecttlo.GfrMdlSttSngSelTlo;

/**
*
* @author bantchao
*
* email: bantchao_AT_gmail.com
* ... please remove "_AT_" from the above string to get the right email address
*
*/

abstract public class GfrNodCtrFixFolderTopPrjSecAbs extends GfrNodCtrFixFolderTopPrjAbs
{
    // ----
    // begin: instantiate logger for this class
    final private static Logger _LOGGER_ = Logger.getLogger(GfrNodCtrFixFolderTopPrjSecAbs.class.getName());

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

    // end: instantiate logger for this class
    // ----
   
   
    transient protected GfrPnlStatusBarAbs _pnlStatusBar = null;
    transient protected String _strIdViewer = null;
   
   @Override
    abstract public void addAllObjects() throws Exception;
  
   @Override
    abstract public Object addObjectVariable(String strId) throws Exception;
   
    protected GfrNodCtrFixFolderTopPrjSecAbs(
            ActionListener alrControllerSpcPrj,
            ActionListener alrControllerPrs,
            IGfrHandlerDisplayableObjectsSet enuValueKindObjectTlo,
            GfrTreAbs tre,
            ActionListener alrParentPanelMvc,
            GfrPnlStatusBarAbs pnlStatusBar,
            String strIdViewer
            )
    {
        super(
                alrControllerSpcPrj,
                alrControllerPrs,
                enuValueKindObjectTlo,
                tre,
                alrParentPanelMvc);
       
        this._pnlStatusBar = pnlStatusBar;
        this._strIdViewer = strIdViewer;
    }
   
   @Override
    public void destroy()
    {
       super.destroy();
    }
   
    @Override
   public void releaseTransient() throws Exception
   {     
      super.releaseTransient();
     
      GfrMdlSttSngSelTlo.getInstance().deleteObserver((Observer) this);
   }
   
    @Override
   public void loadTransient() throws Exception
   {     
      super.loadTransient();
     
      GfrMdlSttSngSelTlo.getInstance().addObserver((Observer) this);
      addAllObjects();
   }
   
    @Override
   public void update(Observable obs, Object objEvt)
   {
      if (objEvt instanceof GfrEvtMdlIdDatRenamedTlo)
         return;
     
      try
     
         if (objEvt instanceof GfrEvtMdlSttSngSelTlo)
         {
            GfrEvtMdlSttSngSelTlo evt = (GfrEvtMdlSttSngSelTlo) objEvt;
            String strId = evt.getKey();
            _updateChildSelected_(strId, evt.getValue());

            return;
         }
      }
     
      catch(Exception exc)
      {
         exc.printStackTrace();
         String str = exc.getMessage();
         GfrNodCtrFixFolderTopPrjSecAbs._LOGGER_.severe(str);
         GfrOptionPaneAbs.s_showDialogError(null, str);
         return;
      }

      super.update(obs, objEvt);
   }
   
    private void _updateChildSelected_(String strId, boolean bln) throws Exception
    {
       if (bln)
       {
          addObjectVariable(strId);
          return;
       }
      
       _updateChildRemoved_(strId);  
    }
   
   
    @Override
    public void loadUnserializedObject() throws Exception
    {
        int intCount = super.getChildCount();
       
        if (intCount > 0)
        {
            String str = "intCount > 0, intCount=" + intCount;
            GfrNodCtrFixFolderTopPrjSecAbs._LOGGER_.severe(str);
            throw new Exception(str);
        }  
       
        super.loadUnserializedObject();
       
        //open();
    }
   
   
   
    /*
     * TODO: store uniqueIds of selected TLOs
     *
     */
    @Override
    public void releaseUnserializedObject() throws Exception
    {
        super.releaseUnserializedObject();
       
       
       
        //this._lstUniqueIdSelectedSerial_.clear();
       
        ArrayList<GfrNodCtrAbs> nodsChild = new ArrayList<GfrNodCtrAbs>();
       
        /*for (int i=0; i<super.getChildCount(); i++)
        {
            GfrNodCtrAbs nodCur = (GfrNodCtrAbs) super.getChildAt(i);
            nodsChild.add(nodCur);
           
            // beg storing checked TLOs
            if (! (nodCur instanceof IHandlerCheckableNode))
                continue;
         
            IHandlerCheckableNode nodCurCheck = (IHandlerCheckableNode) nodCur;
               
            if (! nodCurCheck.isSelected())
                continue;
           
            String strUniqueIdCur = nodCurCheck.getUniqueId();
            this._lstUniqueIdSelectedSerial_.add(strUniqueIdCur);
            // end storing checked TLOs
        }*/
       
        for (int i=0; i<nodsChild.size(); i++)
        {
            GfrNodCtrAbs nodCur =  nodsChild.get(i);
            nodCur.removeFromParent();
        }
       
        // !!!!
        //DefaultTreeModel dtm = (DefaultTreeModel) this._tree.getModel();
        //dtm.nodeStructureChanged(this);
       
        // TODO: about nodCur's children
        for (int i=0; i<nodsChild.size(); i++)
        {
            GfrNodCtrAbs nodCur =  nodsChild.get(i);
           
            nodCur.destroy();
        }
       
        nodsChild.clear();
        nodsChild = null;
    }
   
   
    public void deleteChild(GfrNodCtrAbs nodChild) throws Exception
    {
        DefaultTreeModel dtm = (DefaultTreeModel) super._tree.getModel();
        dtm.removeNodeFromParent(nodChild);
       
        nodChild.destroy();
        nodChild = null;
    }
   
   
    // ----
    // beg private
   
    private void _updateChildRemoved_(String strId) throws Exception
    {
        for (int i=0; i<super.getChildCount(); i++)
        {
            GfrNodCtrMovAbs nodCur = (GfrNodCtrMovAbs) super.getChildAt(i);
            String strIdCur = nodCur.getId();
           
            if (strIdCur.compareTo(strId) != 0)
                continue;
           
            this.deleteChild(nodCur);
            return;
        }
       
    }
   
}

TOP

Related Classes of org.geoforge.guillc.treenode.GfrNodCtrFixFolderTopPrjSecAbs

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.