package se.cambio.openehr.view.panels;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public abstract class DVComboBoxPanel extends DVGenericPanel implements DVPanelInterface{
private static final long serialVersionUID = 1L;
private JComboBox comboBox;
private Map<String, String> _itemsName = null;
private Map<String, String> _itemsDescription = null;
public DVComboBoxPanel(String idElement, String idTemplate, boolean allowsNull, boolean requestFocus){
super(idElement, idTemplate, allowsNull, requestFocus);
this.setLayout(new BorderLayout());
_itemsName = new HashMap<String, String>();
_itemsDescription = new HashMap<String, String>();
this.add(getComboBox(), BorderLayout.CENTER);
}
protected JComboBox getComboBox(){
if (comboBox==null){
comboBox = new JComboBox();
comboBox.setRenderer(new DVComboBoxRendered());
if (isAllowsNull()){
comboBox.addItem(" ");
}
if (isRequestFocus()){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
comboBox.requestFocus();
}
});
}
}
return comboBox;
}
protected void insertOption(String index, String name, String description){
getComboBox().addItem(index);
_itemsName.put(index, name);
_itemsDescription.put(index, description);
}
private class DVComboBoxRendered extends JLabel implements ListCellRenderer{
/**
*
*/
private static final long serialVersionUID = 1L;
public DVComboBoxRendered(){
setOpaque(true);
setHorizontalAlignment(LEFT);
setVerticalAlignment(CENTER);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
if (_itemsName.containsKey(value)){
setText(_itemsName.get(value));
setToolTipText(_itemsDescription.get(value));
}else{
setText(" ");
setToolTipText("");
}
return this;
}
}
public Collection<JComponent> getJComponents() {
Collection<JComponent> components = new ArrayList<JComponent>();
components.add(getComboBox());
return components;
}
}
/*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 2.0/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public 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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an 'AS IS' basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
*
* The Initial Developers of the Original Code are Iago Corbal and Rong Chen.
* Portions created by the Initial Developer are Copyright (C) 2012-2013
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Software distributed under the License is distributed on an 'AS IS' basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* ***** END LICENSE BLOCK *****
*/