/*
* :tabSize=2:indentSize=2:noTabs=true:
* :folding=explicit:collapseFolds=1:
*
* Copyright (C) 2009 Chaniel AB, Thomas Dilts This program is free
* software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation;
* either version 2 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 General Public License for more
* details. You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA For more
* information, surf to www.lazy8.nu or email support@lazy8.nu
*/
package nu.lazy8.ledger.jdbc;
//{{{ imports
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.sql.Date;
import java.sql.Types;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.ListIterator;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import nu.lazy8.ledger.main.Lazy8Ledger;
import nu.lazy8.util.gen.IntHolder;
import nu.lazy8.util.help.DateField;
import nu.lazy8.util.help.DoubleField;
import nu.lazy8.util.help.IntegerField;
import nu.lazy8.util.gen.SystemLog;
//}}}
/**
* Description of the Class
*
* @author Lazy Eight Data HB, Thomas Dilts
* @created den 5 mars 2002
*/
public class DataComboBox extends JComboBox {
//{{{ members
public ArrayList keySecondaryArray = new ArrayList();
public ArrayList keyArray = new ArrayList();
private static LinkedList allInstances;
boolean bShowFirstItemBlank;
public JdbcTable dataAccess;
private String helpField;
private String helpName;
private Integer key;
private String sDescField;
private String sIntField;
private JFrame view;
//}}}
//{{{ +DataComboBox(JdbcTable, boolean, String, String, JFrame) : <init>
/**
* Constructor for the DataComboBox object
*
* @param dataAccessin Description of the Parameter
* @param bShowBlank Description of the Parameter
* @param HelpField Description of the Parameter
* @param HelpFile Description of the Parameter
* @param view Description of the Parameter
*/
public DataComboBox(JdbcTable dataAccessin, boolean bShowBlank, String HelpField, String HelpFile, JFrame view) {
this.view = view;
dataAccess = dataAccessin;
bShowFirstItemBlank = bShowBlank;
helpName = HelpFile;
helpField = HelpField;
FocusListener l =
new FocusListener() {
//{{{ +focusGained(FocusEvent) : void
public void focusGained(FocusEvent e) {
showHelp();
}//}}}
//{{{ +focusLost(FocusEvent) : void
public void focusLost(FocusEvent e) {
}//}}}
};
addFocusListener(l);
}//}}}
//{{{ +existsKey(Integer) : boolean
/**
* Description of the Method
*
* @param key Description of the Parameter
* @return Description of the Return Value
*/
public boolean existsKey(Integer key) {
int j = 0;
Integer nextKey;
for (ListIterator i = keyArray.listIterator(0); i.hasNext(); j++) {
nextKey = (Integer) i.next();
if (nextKey.compareTo(key) == 0) {
return true;
}
}
return false;
}//}}}
//{{{ +getSelectedItemsKey() : Object
/**
* Gets the selectedItemsKey attribute of the DataComboBox object
*
* @return The selectedItemsKey value
*/
public Object getSelectedItemsKey() {
try {
return keyArray.get(getSelectedIndex());
} catch (Exception e) {
return new Integer(0);
}
}//}}}
//{{{ +getSelectedItemsSecondaryKey() : Object
/**
* Gets the selectedItemsSecondaryKey attribute of the DataComboBox object
*
* @return The selectedItemsSecondaryKey value
*/
public Object getSelectedItemsSecondaryKey() {
try {
return keySecondaryArray.get(getSelectedIndex());
} catch (Exception e) {
return new Integer(0);
}
}//}}}
//{{{ +loadComboBox(String, String, Integer) : void
/**
* Description of the Method
*
* @param sDescField Description of the Parameter
* @param sIntField Description of the Parameter
* @param key Description of the Parameter
*/
public void loadComboBox(String sDescField, String sIntField, Integer key) {
this.sDescField = sDescField;
this.sIntField = sIntField;
this.key = key;
keyArray.clear();
keySecondaryArray.clear();
removeAllItems();
IntHolder iFieldTypeOut1 = new IntHolder();
IntHolder iFieldTypeOut2 = new IntHolder();
Object objDescField1;
Object objDescField2;
String sDescFieldToString1 = new String();
String sDescFieldToString2 = new String();
if (key.intValue() != 0) {
dataAccess.setObject(key, "CompId");
}
if (bShowFirstItemBlank) {
addItem(new String(""));
keyArray.add(new Integer(0));
keySecondaryArray.add(new String(""));
}
if (dataAccess.GetFirstRecord()) {
do {
objDescField1 = dataAccess.getObject(sIntField, iFieldTypeOut1);
objDescField2 = dataAccess.getObject(sDescField, iFieldTypeOut2);
keyArray.add(objDescField1);
keySecondaryArray.add(objDescField2);
switch (iFieldTypeOut1.iValue) {
case Types.INTEGER:
sDescFieldToString1 = IntegerField.ConvertIntToLocalizedString((Integer) objDescField1);
break;
case Types.DOUBLE:
sDescFieldToString1 = DoubleField.ConvertDoubleToLocalizedString((Double) objDescField1);
break;
case Types.DATE:
sDescFieldToString1 = DateField.ConvertDateToLocalizedString((Date) objDescField1);
break;
default:
sDescFieldToString1 = (String) objDescField1;
break;
}
switch (iFieldTypeOut2.iValue) {
case Types.INTEGER:
sDescFieldToString2 = IntegerField.ConvertIntToLocalizedString((Integer) objDescField2);
break;
case Types.DOUBLE:
sDescFieldToString2 = DoubleField.ConvertDoubleToLocalizedString((Double) objDescField2);
break;
case Types.DATE:
sDescFieldToString2 = DateField.ConvertDateToLocalizedString((Date) objDescField2);
break;
default:
sDescFieldToString2 = (String) objDescField2;
break;
}
addItem(sDescFieldToString1 + " : " + sDescFieldToString2);
} while (dataAccess.GetNextRecord());
}
}//}}}
//{{{ +reload() : void
/**
* Description of the Method
*/
public void reload() {
Object tempkey = getSelectedItem();
loadComboBox(sDescField, sIntField, key);
setSelectedItem(tempkey);
}//}}}
//{{{ +setSelectedItemFromKey(Integer) : void
/**
* Sets the selectedItemFromKey attribute of the DataComboBox object
*
* @param key The new selectedItemFromKey value
*/
public void setSelectedItemFromKey(Integer key) {
int j = 0;
Integer nextKey;
for (ListIterator i = keyArray.listIterator(0); i.hasNext(); j++) {
nextKey = (Integer) i.next();
if (nextKey.compareTo(key) == 0) {
setSelectedIndex(j);
return;
}
}
ListIterator i = keyArray.listIterator(0);
if (i.hasNext()) {
setSelectedIndex(0);
}
}//}}}
//{{{ +setSelectedItemFromKeys(java.util.Date, java.util.Date) : void
/**
* Sets the selectedItemFromKeys attribute of the DataComboBox object
*
* @param key The new selectedItemFromKeys value
* @param key2 The new selectedItemFromKeys value
*/
public void setSelectedItemFromKeys(java.util.Date key, java.util.Date key2) {
int j = 0;
java.util.Date nextKey;
java.util.Date nextKey2;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd");
ListIterator i2 = keySecondaryArray.listIterator(0);
for (ListIterator i = keyArray.listIterator(0); i.hasNext(); j++) {
nextKey = (java.util.Date) i.next();
nextKey2 = (java.util.Date) i2.next();
if (sdf.format(nextKey).compareTo(sdf.format(key)) == 0 && sdf.format(nextKey2).compareTo(sdf.format(key2)) == 0) {
setSelectedIndex(j);
return;
}
}
ListIterator i = keyArray.listIterator(0);
if (i.hasNext()) {
setSelectedIndex(0);
}
}//}}}
//{{{ +showHelp() : void
/**
* Description of the Method
*/
public void showHelp() {
Lazy8Ledger.ShowContextHelp(view, helpName, helpField);
}//}}}
}