//--------------------------------------------------------------------------------//
// COPYRIGHT NOTICE //
//--------------------------------------------------------------------------------//
// Copyright (c) 2012, Instituto de Microelectronica de Sevilla (IMSE-CNM) //
// //
// All rights reserved. //
// //
// Redistribution and use in source and binary forms, with or without //
// modification, are permitted provided that the following conditions are met: //
// //
// * Redistributions of source code must retain the above copyright notice, //
// this list of conditions and the following disclaimer. //
// //
// * Redistributions in binary form must reproduce the above copyright //
// notice, this list of conditions and the following disclaimer in the //
// documentation and/or other materials provided with the distribution. //
// //
// * Neither the name of the IMSE-CNM nor the names of its contributors may //
// be used to endorse or promote products derived from this software //
// without specific prior written permission. //
// //
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" //
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE //
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE //
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE //
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL //
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR //
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, //
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE //
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //
//--------------------------------------------------------------------------------//
package xfuzzy.util;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
/**
* Clase que desarrolla un Combobox con etiqueta y lista desplegable
* siguiendo la est�tica com�n al entorno
*
* @author Francisco Jos� Moreno Velo
*
*/
public class XComboBox extends Box {
//----------------------------------------------------------------------------//
// CONSTANTES PRIVADAS //
//----------------------------------------------------------------------------//
/**
* C�digo asociado a la clase serializable
*/
private static final long serialVersionUID = 955056666030001L;
//----------------------------------------------------------------------------//
// MIEMBROS PRIVADOS //
//----------------------------------------------------------------------------//
/**
* Componente de la lista desplegable
*/
private JComboBox field;
/**
* Componente de la etiqueta
*/
private JLabel label;
//----------------------------------------------------------------------------//
// CONSTRUCTOR //
//----------------------------------------------------------------------------//
/**
* Constructor
*/
public XComboBox(String title) {
super(BoxLayout.X_AXIS);
field = new JComboBox(new XComboBoxModel() );
field.setBackground(XConstants.textbackground);
field.setEditable(false);
field.setFont(XConstants.textfont);
Dimension prefsize = field.getPreferredSize();
Dimension maxsize = field.getMaximumSize();
field.setMaximumSize(new Dimension(maxsize.width,prefsize.height));
label = new JLabel(" "+title+" ");
label.setAlignmentY(0.5f);
label.setFont(XConstants.font);
label.setForeground(Color.black);
label.setBorder(BorderFactory.createRaisedBevelBorder());
maxsize = label.getMaximumSize();
label.setMaximumSize(new Dimension(maxsize.width,prefsize.height));
label.setHorizontalAlignment(JLabel.CENTER);
add(label);
add(field);
}
//----------------------------------------------------------------------------//
// M�TODOS P�BLICOS //
//----------------------------------------------------------------------------//
/**
* Obtiene el componente del men� desplegable
*/
public JComboBox getField() {
return this.field;
}
/**
* Devuelve el objeto seleccionado
*/
public Object getSelectedItem() {
return field.getSelectedItem();
}
/**
* Selecciona un determinado objeto de la lista
*/
public void setSelectedItem(Object item) {
field.setSelectedItem(item);
}
/**
* Devuelve el �ndice del objeto seleccionado
*/
public int getSelectedIndex() {
return field.getSelectedIndex();
}
/**
* Selecciona el �ndice de un determinado objeto de la lista
*/
public void setSelectedIndex(int index) {
field.setSelectedIndex(index);
}
/**
* Asigna la lista de elementos seleccionables
*/
public void setList(Vector list) {
field.removeAllItems();
for(int i=0,size=list.size(); i<size; i++) field.addItem(list.elementAt(i));
}
/**
* Asigna la lista de elementos seleccionables
*/
public void setList(Object[] list) {
field.removeAllItems();
for(int i=0; i<list.length; i++) field.addItem(list[i]);
}
/**
* Asigna la clase que da forma a los elementos
*/
public void setRenderer(ListCellRenderer renderer) {
field.setRenderer(renderer);
}
/**
* A�ade un controlador a la lista
*/
public void addItemListener(ItemListener listener) {
field.addItemListener(listener);
}
/**
* Asigna la anchura del componente
*/
public void setWidth(int lbwidth, int fdwidth) {
Dimension minsize = this.label.getMinimumSize();
Dimension prefsize = this.label.getPreferredSize();
this.label.setMinimumSize(new Dimension(lbwidth,minsize.height));
this.label.setPreferredSize(new Dimension(lbwidth,prefsize.height));
minsize = this.field.getMinimumSize();
prefsize = this.field.getPreferredSize();
this.field.setMinimumSize(new Dimension(fdwidth,minsize.height));
this.field.setPreferredSize(new Dimension(fdwidth,prefsize.height));
}
/**
* (Des)Habilita el componente
*/
public void setEnabled(boolean enable) {
this.field.setEnabled(enable);
}
}