9d1ae680498df39ff7d4f2a31f9295d7ef2ad972
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / userecords / UseRecordDetailElement.java
1 package eu.etaxonomy.taxeditor.ui.section.userecords;
2
3
4
5 import java.util.ArrayList;
6 import java.util.List;
7 import java.util.UUID;
8
9 import org.apache.log4j.Logger;
10 import org.eclipse.swt.events.SelectionEvent;
11 import org.eclipse.swt.events.SelectionListener;
12 import org.eclipse.ui.forms.widgets.Section;
13
14 import eu.etaxonomy.cdm.api.service.IVocabularyService;
15 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
16 import eu.etaxonomy.cdm.model.common.Language;
17 import eu.etaxonomy.cdm.model.common.LanguageString;
18 import eu.etaxonomy.cdm.model.common.TermVocabulary;
19 import eu.etaxonomy.cdm.model.description.CategoricalData;
20 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
21 import eu.etaxonomy.cdm.model.description.State;
22 import eu.etaxonomy.cdm.model.description.StateData;
23 import eu.etaxonomy.taxeditor.store.CdmStore;
24 import eu.etaxonomy.taxeditor.store.TermStore;
25 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
26 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
27 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
28 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
29 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;
30 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
31 import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementDetailElement;
32 import eu.etaxonomy.taxeditor.ui.section.description.StateDataSection;
33 import eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement;
34
35 //public class UseRecordDetailElement extends AbstractDetailedDescriptionDetailElement<CategoricalData> {
36 public class UseRecordDetailElement extends AbstractCdmDetailElement<CategoricalData> implements SelectionListener {
37
38
39 private static final Logger logger = Logger
40 .getLogger(DescriptionElementDetailElement.class);
41
42 //private CheckboxElement checkbox_orderRelevant;
43 private TermComboElement<State> combo_UseCategory;
44 private TermComboElement<State> combo_UseSubCategory;
45 //private AbstractDetailedDescriptionDetailElement detailElement;
46
47 /*public UseRecordDetailElement(CdmFormFactory formFactory,
48 ICdmFormElement formElement, CategoricalData entity, int style) {
49 super(formFactory, formElement, entity, style);
50 }*/
51 /*public UseRecordDetailElement(CdmFormFactory formFactory,
52 ICdmFormElement formElement, int style) {*/
53 public UseRecordDetailElement(CdmFormFactory formFactory,
54 ICdmFormElement formElement) {
55 super(formFactory, formElement);
56 }
57
58 /** {@inheritDoc} */
59 @Override
60 protected void createControls(ICdmFormElement formElement,
61 CategoricalData entity, int style) {
62
63
64 //State state = State.NewInstance("Tato", "Toto", "Titi");
65 //checkbox_orderRelevant = formFactory.createCheckbox(formElement, "Order Relevant", entity.getOrderRelevant(), style);
66 combo_UseCategory = formFactory.createTermComboElement(State.class, this, "Use Category", null , style);
67 combo_UseCategory.addSelectionListener(this);
68 combo_UseSubCategory = formFactory.createTermComboElement(State.class, this, "Use Sub Category", null , style);
69 //List<State> listOfTerms = TermStore.getTerms(State.class,null , false);
70
71
72 //UUID uuidUseCategory = UUID.fromString("2bb365af-ce6c-4196-a30b-e69b05099ed0");
73 //TermVocabulary termVoc = CdmStore.getService(IVocabularyService.class).find(uuidUseCategory);
74 List<State> termsToAdd = setUseCategoryComboTerms(TermStore.getTerms(State.class,null , false));
75 //combo_UseCategory.setTerms(setUseCategoryComboTerms(listOfTerms));
76 combo_UseCategory.setTerms(termsToAdd);
77
78 //getPreferredTerms(State.class));
79 //UseSubCategory_stateData = formFactory.createTermComboElement(State.class, this, "Use Sub Category", null , style);
80 //createEntityDetailSection(EntityDetailType.USE_CAT, getConversationHolder(), formElement, Section.EXPANDED);
81 //UseSubCategory_stateData = (UseSubCategorySection) formFactory.createEntityDetailSection(EntityDetailType.USE_SUBCAT, getConversationHolder(), formElement,Section.EXPANDED);
82 //UseCategory_stateData.setEntity(entity);
83 //UseSubCategory_stateData.setEntity(entity);
84 //UseCategory_stateData.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
85 //UseSubCategory_stateData.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
86
87 }
88
89
90 private List<State> setUseCategoryComboTerms(List<State> listOfTerms) {
91 List<State> termsToAdd = new ArrayList<State>();
92 for(State term : listOfTerms) {
93
94 if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals("Use Category"))) {
95 termsToAdd.add(term);
96 }
97 }
98 return termsToAdd;
99
100 }
101
102 private List<State> setUseCategoryComboTerms(List<State> listOfTerms,
103 State selectedUseCategory) {
104 List<State> termsToAdd = new ArrayList<State>();
105 for(State term : listOfTerms) {
106 if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(selectedUseCategory.getTitleCache()))) {
107 termsToAdd.add(term);
108 }
109
110 }
111
112 // TODO Auto-generated method stub
113 return termsToAdd;
114 }
115
116 /** {@inheritDoc} */
117 @Override
118 public void handleEvent(Object eventSource) {
119 /*if(eventSource == checkbox_orderRelevant){
120 getEntity().setOrderRelevant(checkbox_orderRelevant.getSelection());
121 }*/
122 if(eventSource == combo_UseCategory){
123 /*TermVocabulary<State> useCategoryVocabulary = TermVocabulary.NewInstance("Use category vocabulary", "use categories", null, null);
124 State useCategory1 = State.NewInstance("My first use category", "use category 1", null);
125 useCategoryVocabulary.addTerm(useCategory1);
126 getEntity().addState(useCategory1);*/
127 StateData stateData = StateData.NewInstance(combo_UseCategory.getSelection());
128 stateData.setState(combo_UseCategory.getSelection());
129 //List<State> currentStates = new ArrayList<State>();
130 //currentStates.add(combo_UseCategory.getSelection());
131 getEntity().addState(stateData);
132 //getEntity().addState(combo_UseCategory.getSelection());
133 //.setOrderRelevant(combo_UseCategory.getSelection());
134 }
135 }
136
137 /** {@inheritDoc} */
138 @Override
139 public void setEntity(CategoricalData entity) {
140 // section_stateData.setEntity(entity);
141 super.setEntity(entity);
142 }
143
144 @Override
145 public void widgetSelected(SelectionEvent e) {
146 State selectedUseCategory = combo_UseCategory.getSelection();
147 if (selectedUseCategory != null) {
148 combo_UseSubCategory.setTerms(setUseCategoryComboTerms(TermStore.getTerms(State.class,null , false), selectedUseCategory));
149 /*selectedLanguageString = getMultilanguageText().get(
150 selectedLanguage);
151
152 element_languageString.setLanguageString(selectedLanguageString);*/
153 }
154
155 }
156
157
158
159 @Override
160 public void widgetDefaultSelected(SelectionEvent e) {
161 // TODO Auto-generated method stub
162
163 }
164
165
166 }