001 /** 002 * BooleanEditor.java 003 * jCOLIBRI2 framework. 004 * @author Juan A. Recio-García. 005 * GAIA - Group for Artificial Intelligence Applications 006 * http://gaia.fdi.ucm.es 007 * 02/11/2007 008 */ 009 package jcolibri.method.gui.editors; 010 011 import java.util.Collection; 012 013 import javax.swing.JComboBox; 014 import javax.swing.JComponent; 015 016 /** 017 * Parameter Editor for Boolean values. 018 * 019 * @author Juan A. Recio-Garcia 020 * @version 1.0 021 * @see jcolibri.method.gui.editors.ParameterEditor 022 */ 023 public class BooleanEditor extends JComboBox implements ParameterEditor { 024 private static final long serialVersionUID = 1L; 025 026 027 private final String ANY = "<any>"; 028 private final String TRUE = "true"; 029 private final String FALSE = "false"; 030 031 /** 032 * Creates a new instance 033 */ 034 public BooleanEditor() { 035 super(); 036 addItem(ANY); 037 addItem(TRUE); 038 addItem(FALSE); 039 } 040 041 /** 042 * Returns a Boolean object 043 */ 044 public Object getEditorValue() { 045 if(getSelectedItem().equals(ANY)) 046 return null; 047 if(getSelectedItem().equals(TRUE)) 048 return true; 049 else 050 return false; 051 } 052 053 /** 054 * Returns the JComponent 055 */ 056 public JComponent getJComponent() { 057 return (JComponent) this; 058 } 059 060 /** 061 * Receives a Boolean value 062 */ 063 public void setEditorValue(Object value) { 064 if(value == null) 065 setSelectedItem(ANY); 066 if (!(value instanceof Boolean)) 067 return; 068 Boolean bvalue = (Boolean) value; 069 if(bvalue.booleanValue()) 070 setSelectedItem(TRUE); 071 else 072 setSelectedItem(FALSE); 073 074 } 075 076 /** 077 * Receives a Collection of Boolean objects. 078 */ 079 public void setAllowedValues(Collection<Object> allowedValues) 080 { 081 boolean containTrue = false; 082 boolean containFalse = false; 083 for(Object o: allowedValues) 084 { 085 Boolean bool = (Boolean)o; 086 if(!containTrue) 087 containTrue = bool.booleanValue(); 088 if(!containFalse) 089 containFalse = !bool.booleanValue(); 090 } 091 if(!containTrue) 092 removeItem(TRUE); 093 if(!containFalse) 094 removeItem(FALSE); 095 } 096 }