
jadex.commons.gui.autocombo.AbstractAutoComboModel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jadex-commons-gui Show documentation
Show all versions of jadex-commons-gui Show documentation
Common GUI support classes.
package jadex.commons.gui.autocombo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import jadex.commons.future.IResultListener;
import jadex.commons.future.ISubscriptionIntermediateFuture;
import jadex.commons.gui.future.SwingResultListener;
/**
*
*/
public abstract class AbstractAutoComboModel extends AbstractListModel implements ComboBoxModel
{
protected T selected;
protected int max = 20;
protected List entries;
protected AutoCompleteCombo combo;
/**
*
*/
public AbstractAutoComboModel(AutoCompleteCombo combo, int max)
{
this.combo = combo;
this.max = max;
this.entries = new ArrayList();
}
/**
*
*/
public abstract T convertFromString(String val);
/**
*
*/
public abstract String convertToString(T val);
/**
*
*/
public void addToTop(String val)
{
addValToTop(convertFromString(val));
}
/**
*
*/
public boolean contains(String val)
{
return containsVal(convertFromString(val));
}
/**
*
*/
public void addValToTop(T val)
{
if(val == null || entries.contains(val))
return;
if(entries.size() == 0)
{
entries.add(val);
}
else
{
entries.add(0, val);
}
while(max!=-1 && entries.size()>max)
{
int index = entries.size() - 1;
entries.remove(index);
}
// fireIntervalAdded(AbstractAutoComboModel.this, size1, size2 - 1);
fireContentsChanged(AbstractAutoComboModel.this, 0, entries.size() - 1);
// setPattern(null);
setSelectedItem(val);
}
/**
*
*/
public Object getSelectedItem()
{
return selected;
}
/**
*
*/
public void setSelectedItem(Object obj)
{
// System.out.println("sel obj is: "+obj);
// if(obj instanceof String)
// System.out.println("herer");
if((selected != null && !selected.equals(obj))
|| (selected == null && obj != null))
{
selected = (T)obj;
fireContentsChanged(this, -1, -1);
}
}
/**
*
*/
public void setSelectedItemQuiet(Object obj)
{
System.out.println("sel quiet is: "+obj);
selected = (T)obj;
}
/**
*
*/
public int getSize()
{
return entries.size();
}
/**
*
*/
public T getElementAt(int index)
{
return entries.get(index);
}
/**
*
*/
public boolean containsVal(T val)
{
if(val == null)// || val.trim().isEmpty())
return true;
// val = val.toLowerCase();
for(T item : entries)
{
if(item.equals(val))
{
return true;
}
}
return false;
}
/**
* Get the combo.
* @return The combo.
*/
public AutoCompleteCombo getCombo()
{
return combo;
}
/**
*
*/
public ISubscriptionIntermediateFuture setPattern(String pattern)
{
final int size1 = getSize();
ISubscriptionIntermediateFuture ret = doSetPattern(pattern);
ret.addResultListener(new SwingResultListener>(new IResultListener>()
{
public void resultAvailable(Collection result)
{
int size2 = getSize();
// System.out.println("sizes: "+size1+" "+size2);
fireChangeEvents(size1, size2);
}
public void exceptionOccurred(Exception exception)
{
}
}));
return ret;
}
/**
*
*/
public abstract ISubscriptionIntermediateFuture doSetPattern(final String pattern);
/**
* Get value from model that equals converted value.
*/
public T getModelValue(String text)
{
T ret = null;
T o = convertFromString(text);
for(T tmp: entries)
{
if(tmp.equals(o))
{
ret = tmp;
}
}
return ret;
}
/**
*
*/
protected void fireChangeEvents(int size1, int size2)
{
fireContentsChanged(this, 0, size2-1);
if(size1size2)
{
fireIntervalRemoved(this, size2, size1 - 1);
fireContentsChanged(this, 0, size2 - 1);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy