OSDN Git Service

initial commit
[xdf/git-repos.git] / xdf-swing / src / main / java / jp / ac / aiit / xdf / component / swing / mappers / JTabbedPaneMapper.java
1 package jp.ac.aiit.xdf.component.swing.mappers;
2
3 import java.util.Map;
4
5 import javax.swing.JTabbedPane;
6
7 import jp.ac.aiit.xdf.component.swing.Tabpanel;
8 import jp.ac.aiit.xdf.component.swing.attribute.AttributeProcessingUnit;
9 import jp.ac.aiit.xdf.component.swing.attribute.CommonAttributeStore;
10 import jp.ac.aiit.xdf.component.swing.attribute.GetterAttributeProcessor;
11 import jp.ac.aiit.xdf.component.swing.attribute.SetterAttributeProcessor;
12 import jp.ac.aiit.xdf.core.action.EventHandler;
13 import jp.ac.aiit.xdf.core.model.ObjectModel;
14 import jp.ac.aiit.xdf.core.typeconvert.TypeConverter;
15
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18
19 /**
20  * tabgroupをSwingのJTabbedPaneとしてマッピングするクラス
21  * @author kodama
22  */
23 public class JTabbedPaneMapper extends SwingComponentMapperTemplate {
24
25         private static final Logger log
26                 = LoggerFactory.getLogger(SwingComponentMapperTemplate.class);
27
28         @Override
29         protected Map<String, AttributeProcessingUnit> initProcessingUnits() {
30                 Map<String, AttributeProcessingUnit> result = CommonAttributeStore.commonAttributes(model);
31                 result.put("tabplace", new AttributeProcessingUnit(new SetterAttributeProcessor("setTabPlacement", true), new GetterAttributeProcessor("getTabPlacement"), new TabplaceValueConverter()));
32                 
33                 return result;
34         }
35         
36         @Override
37         protected Object newComponent() {
38                 return new JTabbedPane();
39         }
40
41         @Override
42         protected void processingChildComponents() {
43                 for(ObjectModel child : model.children()){
44                         child.realize();
45                         
46                         try{
47                                 Tabpanel tab = (Tabpanel)child.getComponent();
48                                 tab.setContainer((JTabbedPane)this.component);
49                         } catch(ClassCastException e){
50                                 log.warn("タブ区画の中にタブでないコンポネントが指定されている");
51                         } catch(Exception e){
52                         }
53                 }
54         }
55
56         private static class TabplaceValueConverter implements TypeConverter<Integer>{
57                 @Override
58                 public Integer apply(String target) {
59                         if( target == null ) {
60                                 return JTabbedPane.TOP;
61                         } else {
62                                 String lowered = target.toLowerCase();
63                                 if( lowered.equals("top") ) {
64                                         return JTabbedPane.TOP;
65                                 } else if( lowered.equals("bottom") ) {
66                                         return JTabbedPane.BOTTOM;
67                                 } else if( lowered.equals("left") ) {
68                                         return JTabbedPane.LEFT;
69                                 } else if( lowered.equals("right") ) {
70                                         return JTabbedPane.RIGHT;
71                                 } else {
72                                         return JTabbedPane.TOP;
73                                 }
74                         }
75                 }
76                 
77                 @Override
78                 public boolean isAppliable(String target) {
79                         return true;
80                 }
81         }
82
83         @Override
84         protected Map<String, EventHandler> intiProcessingAction() {
85                 return null;
86         }
87
88 }