01 /* 
02  * Copyright 2008-2014 the original author or authors. 
03  * 
04  * Licensed under the Apache License, Version 2.0 (the "License"); 
05  * you may not use this file except in compliance with the License. 
06  * You may obtain a copy of the License at 
07  * 
08  *     http://www.apache.org/licenses/LICENSE-2.0 
09  * 
10  * Unless required by applicable law or agreed to in writing, software 
11  * distributed under the License is distributed on an "AS IS" BASIS, 
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
13  * See the License for the specific language governing permissions and 
14  * limitations under the License. 
15  */ 
16 package griffon.core.editors; 
17  
18 import griffon.core.formatters.BooleanFormatter; 
19 import griffon.core.formatters.Formatter; 
20  
21 import static griffon.util.GriffonNameUtils.isBlank; 
22  
23 /** 
24  * @author Andres Almiray 
25  * @since 2.0.0 
26  */ 
27 public class BooleanPropertyEditor extends AbstractPropertyEditor { 
28     protected void setValueInternal(Object value) { 
29         if (null == value) { 
30             super.setValueInternal(null); 
31         } else if (value instanceof CharSequence) { 
32             handleAsString(String.valueOf(value)); 
33         } else if (value instanceof Boolean) { 
34             handleAsBoolean((Boolean) value); 
35         } else { 
36             throw illegalValue(value, Boolean.class); 
37         } 
38     } 
39  
40     private void handleAsString(String str) { 
41         super.setValueInternal(isBlank(str) ? null : Boolean.parseBoolean(str)); 
42     } 
43  
44     private void handleAsBoolean(Boolean bool) { 
45         super.setValueInternal(bool); 
46     } 
47  
48     protected Formatter<Boolean> resolveFormatter() { 
49         return isBlank(getFormat()) ? null : BooleanFormatter.getInstance(getFormat()); 
50     } 
51 }
    
    |