/*
* 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.dialog;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.geoforge.guillc.button.GfrBtnTxtRndCmdCheckAllXXSmall;
import org.geoforge.guillc.button.GfrBtnTxtRndCmdClearXXSmall;
import org.geoforge.guillc.button.GfrBtnTxtRndCmdNewXXSmall;
import org.geoforge.guillc.button.GfrBtnTxtRndCmdUncheckAllXXSmall;
import org.geoforge.guillc.panel.GfrPnlCmdCancelOkEnableDisableCheckUncheckAll;
import org.geoforge.guillc.panel.GfrPnlGrpSngTblSelectObjects;
/**
*
* @author Amadeus.Sowerby
*
* email: Amadeus.Sowerby_AT_gmail.com
* ... please remove "_AT_" from the above string to get the right email address
*/
public class GfrDlgSelectObjects extends GfrDlgCmdCancelOkCheckUncheckAllAbs implements
ListSelectionListener,
ChangeListener
{
private GfrPnlGrpSngTblSelectObjects _pnlItemsToSelect_;
public String[] getResult()
{
return _pnlItemsToSelect_.getResult();
}
public GfrDlgSelectObjects(
JFrame frmOwner,
String strTitleSuffix,
String[] strsValueNameCandidateSorted)
{
super(
frmOwner,
strTitleSuffix);
Object[][] objss = new Object[strsValueNameCandidateSorted.length][2];
for (int i = 0; i < strsValueNameCandidateSorted.length; i++)
{
objss[i][0] = Boolean.TRUE;
objss[i][1] = strsValueNameCandidateSorted[i];
}
this._pnlItemsToSelect_ = new GfrPnlGrpSngTblSelectObjects(
"Objects",
objss,
(ListSelectionListener) this,
(ChangeListener) this);
}
@Override
public boolean init()
{
if (!super.init())
return false;
if (!this._pnlItemsToSelect_.init())
return false;
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledOkCommandDialog(true);
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledButtonEnablingOk(false);
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledButtonDisablingOk(true);
super.add(this._pnlItemsToSelect_);
return true;
}
@Override
public void destroy()
{
super.destroy();
if (this._pnlItemsToSelect_ != null)
{
this._pnlItemsToSelect_.destroy();
this._pnlItemsToSelect_ = null;
}
}
@Override
public void valueChanged(ListSelectionEvent e)
{
this._someChange_();
}
@Override
public void actionPerformed(ActionEvent e)
{
Object objSource = e.getSource();
if (objSource instanceof GfrBtnTxtRndCmdNewXXSmall ||
objSource instanceof GfrBtnTxtRndCmdCheckAllXXSmall)
{
this._pnlItemsToSelect_.checkAll();
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledOkCommandDialog(true);
return;
}
if (objSource instanceof GfrBtnTxtRndCmdClearXXSmall ||
objSource instanceof GfrBtnTxtRndCmdUncheckAllXXSmall)
{
this._pnlItemsToSelect_.uncheckAll();
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledOkCommandDialog(false);
return;
}
super.actionPerformed(e);
}
@Override
protected boolean _okEnableable()
{
boolean blnAllUnchecked = this._pnlItemsToSelect_.isAllUnchecked();
return !blnAllUnchecked;
}
@Override
public void stateChanged(ChangeEvent e)
{
this._someChange_();
}
private void _someChange_()
{
boolean blnAllUnchecked = this._pnlItemsToSelect_.isAllUnchecked();
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledButtonDisablingOk(!blnAllUnchecked);
boolean blnAllChecked = this._pnlItemsToSelect_.isAllChecked();
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledButtonEnablingOk(!blnAllChecked);
((GfrPnlCmdCancelOkEnableDisableCheckUncheckAll) super._pnlCommand).setEnabledOkCommandDialog(!blnAllUnchecked);
}
}