/*
* Copyright 2003,2004 Colin Crist
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package hermes.browser.dialog;
import hermes.HermesException;
import hermes.browser.HermesBrowser;
import hermes.config.ClasspathGroupConfig;
import hermes.impl.SimpleClassLoaderManager;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
import javax.swing.JComboBox;
import javax.swing.JTable;
import org.apache.commons.collections.map.LRUMap;
import org.apache.log4j.Logger;
import com.jidesoft.grid.ContextSensitiveCellEditor;
import com.jidesoft.grid.EditorContext;
/**
* @author colincrist@hermesjms.com
* @version $Id: ClasspathIdCellEdtitor.java,v 1.3 2005/04/22 15:15:24 colincrist Exp $
*/
public class ClasspathIdCellEdtitor extends ContextSensitiveCellEditor
{
/**
*
*/
private static final long serialVersionUID = 1038218166129278067L;
private static final Logger log = Logger.getLogger(ClasspathIdCellEdtitor.class);
public static final EditorContext CONTEXT = new EditorContext("ClasspathId");
private String selection = SimpleClassLoaderManager.SYSTEM_LOADER;
private Map tableToCombo = new LRUMap(10);
/*
* (non-Javadoc)
*
* @see javax.swing.table.TableCellEditor#getTableCellEditorComponent(javax.swing.JTable,
* java.lang.Object, boolean, int, int)
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean arg2, int arg3, int arg4)
{
try
{
if (tableToCombo.containsKey(table))
{
return (Component) tableToCombo.get(table);
}
else
{
final Vector items = new Vector();
for (Iterator iter = HermesBrowser.getBrowser().getConfig().getClasspathGroup().iterator(); iter.hasNext();)
{
ClasspathGroupConfig config = (ClasspathGroupConfig) iter.next();
items.add(config.getId());
}
items.add("System") ;
final JComboBox combo = new JComboBox(items);
combo.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
selection = (String) combo.getSelectedItem();
}
});
if (value != null)
{
combo.setSelectedItem(value);
}
log.debug("value=" + value);
tableToCombo.put(table, combo);
return combo;
}
}
catch (HermesException e)
{
log.error(e.getMessage(), e);
}
return table;
}
/*
* (non-Javadoc)
*
* @see javax.swing.CellEditor#getCellEditorValue()
*/
public Object getCellEditorValue()
{
return selection;
}
}