/*
* 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.guillcogc.treenode;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Logger;
import javax.swing.tree.DefaultTreeModel;
import org.geoforge.guillc.optionpane.GfrOptionPaneAbs;
import org.geoforge.guillc.tree.GfrTreAbs;
import org.geoforge.guillc.treenode.GfrNodAbs;
import org.geoforge.guillc.treenode.GfrNodCtrAbs;
import org.geoforge.guillc.treenode.GfrNodCtrMovAbs;
import org.geoforge.guillcogc.popupmenu.GfrPmuCtlCtrFolderTopPrjLblRunOgcWms;
import org.geoforge.java.util.logging.filehandler.FileHandlerLogger;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatRenamedTlo;
import org.geoforge.mdldatogc.GfrMdlDatIdObjTloOgcWms;
import org.geoforge.mdldatogc.event.GfrEvtMdlIdDatAddedLloVarWmsLyrLeaf;
import org.geoforge.mdldsp.event.state.singleton.selecttlo.GfrEvtMdlSttSngSelTlo;
import org.geoforge.mdldsp.state.singleton.selecttlo.GfrMdlSttSngSelTlo;
import org.geoforge.wrpbasprsdsp.state.singleton.selecttlo.GfrWrpObjSttSngSelTlo;
import org.geoforge.wrpbasprssynogc.GfrWrpBasTopSynOgcWmss;
/**
*
* @author bantchao
*
* email: bantchao_AT_gmail.com
* ... please remove "_AT_" from the above string to get the right email address
*
*/
public class GfrNodCtrFixFolderTopPrjLblWmssRun extends GfrNodCtrFixFolderTopPrjLblWmssAbs
{
// ----
// begin: instantiate logger for this class
final private static Logger _LOGGER_ = Logger.getLogger(GfrNodCtrFixFolderTopPrjLblWmssRun.class.getName());
static
{
GfrNodCtrFixFolderTopPrjLblWmssRun._LOGGER_.addHandler(FileHandlerLogger.s_getInstance());
}
// end: instantiate logger for this class
// ----
public GfrNodCtrFixFolderTopPrjLblWmssRun(
ActionListener alrControllerSpcPrj,
ActionListener alrControllerPrs,
GfrTreAbs tre,
ActionListener alrParentPanelMvc)
throws Exception
{
super(alrControllerSpcPrj,
alrControllerPrs,
tre,
alrParentPanelMvc);
super._pop = new GfrPmuCtlCtrFolderTopPrjLblRunOgcWms(
alrControllerSpcPrj,
tre
);
GfrMdlDatIdObjTloOgcWms.getInstance().addObserver((Observer) this);
GfrMdlSttSngSelTlo.getInstance().addObserver((Observer) this);
}
@Override
public void destroy()
{
GfrMdlDatIdObjTloOgcWms.getInstance().deleteObserver((Observer) this);
GfrMdlSttSngSelTlo.getInstance().deleteObserver((Observer) this);
super.destroy();
}
@Override
public void addAllObjects() throws Exception
{
String[] strsUniqueId =
GfrWrpBasTopSynOgcWmss.getInstance().getSelectedIdsTlo();
if (strsUniqueId == null || strsUniqueId.length < 1)
return;
for (int i = 0; i < strsUniqueId.length; i++)
{
GfrNodAbs nod = new GfrNodCtrMovFolderLblTloPrjWmsRun(
super._alrControllerSpace,
super._alrControllerPerspective,
strsUniqueId[i],
super._tree,
super._alrParentPanelMvc_);
super._addObjectVariableNode(nod);
}
}
@Override
public Object addObjectVariable(String strId) throws Exception
{
if (!GfrWrpBasTopSynOgcWmss.getInstance().containsTlo(strId))
return null;
if (!GfrWrpObjSttSngSelTlo.getInstance().isEnabled(strId))
return null;
GfrNodAbs nod = new GfrNodCtrMovFolderLblTloPrjWmsRun(
super._alrControllerSpace,
super._alrControllerPerspective,
strId,
super._tree,
super._alrParentPanelMvc_);
super._addObjectVariableNode(nod);
return nod;
}
@Override
public void update(Observable obs, Object objEvt)
{
if (objEvt instanceof GfrEvtMdlIdDatAddedLloVarWmsLyrLeaf)
return;
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();
GfrNodCtrFixFolderTopPrjLblWmssRun._LOGGER_.severe(str);
GfrOptionPaneAbs.s_showDialogError(null, str);
return;
}
super.update(obs, objEvt);
}
@Override
public void loadTransient() throws Exception
{
super.loadTransient();
}
@Override
public void releaseTransient() throws Exception
{
super.releaseTransient();
}
private void _updateChildSelected_(String strId, boolean bln) throws Exception
{
if (bln)
{
addObjectVariable(strId);
return;
}
_updateChildRemoved_(strId);
}
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;
}
}
// !!! private ???
public void deleteChild(GfrNodCtrAbs nodChild) throws Exception
{
DefaultTreeModel dtm = (DefaultTreeModel) super._tree.getModel();
dtm.removeNodeFromParent(nodChild);
nodChild.destroy();
nodChild = null;
}
}