ref #9393: fix problems when removing reused name - code cleaning
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / classification / TaxonNodeDetailElement.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.ui.section.classification;
10
11 import java.util.ArrayList;
12 import java.util.Collection;
13 import java.util.HashMap;
14 import java.util.Map;
15
16 import org.apache.commons.lang3.StringUtils;
17 import org.eclipse.jface.resource.JFaceResources;
18 import org.eclipse.swt.SWT;
19 import org.eclipse.swt.graphics.Font;
20 import org.eclipse.swt.widgets.Control;
21 import org.eclipse.swt.widgets.Label;
22 import org.eclipse.swt.widgets.Text;
23
24 import eu.etaxonomy.cdm.common.CdmUtils;
25 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
26 import eu.etaxonomy.cdm.model.common.Language;
27 import eu.etaxonomy.cdm.model.common.LanguageString;
28 import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
29 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
30 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
31 import eu.etaxonomy.cdm.model.metadata.PublishEnum;
32 import eu.etaxonomy.cdm.model.name.TaxonName;
33 import eu.etaxonomy.cdm.model.reference.Reference;
34 import eu.etaxonomy.cdm.model.taxon.Classification;
35 import eu.etaxonomy.cdm.model.taxon.Taxon;
36 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
37 import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
38 import eu.etaxonomy.taxeditor.l10n.Messages;
39 import eu.etaxonomy.taxeditor.model.AbstractUtility;
40 import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
41 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
42 import eu.etaxonomy.taxeditor.preference.Resources;
43 import eu.etaxonomy.taxeditor.store.CdmStore;
44 import eu.etaxonomy.taxeditor.store.StoreUtil;
45 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
46 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
47 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
48 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
49 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
50 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
51 import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
52 import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
53 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
54 import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractSingleSourceElement;
55 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
56 import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
57
58 /**
59 * @author n.hoffmann
60 * @created Sep 27, 2010
61 */
62 public class TaxonNodeDetailElement extends AbstractSingleSourceElement<TaxonNode> {
63
64 private static final String STATUS_NOTES = Messages.TaxonNodeWizardPage_STATUS_NOTES;
65 private static final String CLASSIFICATION_STR = Messages.TaxonNodeWizardPage_CLASSIFICATION;
66 private static final String REUSE_EXISTING_TAXON = Messages.TaxonNodeWizardPage_REUSE_EXISTING_TAXON;
67 private static final String REUSE_EXISTING_NAME = Messages.TaxonNodeWizardPage_REUSE_EXISTING_NAME;
68 private static final String SECUNDUM_REFERENCE = Messages.TaxonNodeWizardPage_SECUNDUM_REFERENCE;
69
70 private static final Font FONT_BOLD = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);
71
72 private boolean createNew = false;
73 private Classification classification;
74 private TaxonNode parentNode;
75 private Taxon taxon;
76 private boolean complete;
77 private TaxonNodeStatus status = null;
78 private Map<Language, LanguageString> multilanguageTextCache;
79
80 private TaxonNodeSelectionElement selection_parentTaxonNode;
81 private EntitySelectionElement<Taxon> selection_reuseExistingTaxon;
82 private EntitySelectionElement<TaxonName> selection_reuseExistingName;
83 private EntitySelectionElement<Reference> selection_SecRef;
84
85 // private OriginalSourceElement singleSourceSection;
86
87 private TextWithLabelElement textTaxonSec;
88 private TextWithLabelElement microReference;
89 private TextWithLabelElement textNewTaxonName;
90 private TaxonNodeAgentRelationCollectionSection selectionNodeAgentRelation;
91 private EnumComboElement<TaxonNodeStatus> combo_status;
92 private CheckboxElement checkbox_publish;
93 private MultilanguageTextElement multiLanguageTextStatusNotes;
94
95 public TaxonNodeDetailElement(CdmFormFactory formFactory,
96 ICdmFormElement formElement, boolean isCreateNew) {
97 super(formFactory, formElement);
98 createNew = isCreateNew;
99 }
100
101 public Map<Language, LanguageString> getMultiLanguageTextExcludedNotes() {
102 return multiLanguageTextStatusNotes.getMultilanguageText();
103 }
104
105 public TaxonNodeStatus getTaxonNodeStatus(){
106 return status;
107 }
108
109 public Reference getRef() {
110 return getEntity().getCitation();
111 }
112 public TaxonName getExistingName() {
113 return selection_reuseExistingName.getEntity();
114 }
115 public String getMicroReference() {
116 return microReference.getText();
117 }
118
119 @Override
120 public void createControls(ICdmFormElement formElement,TaxonNode entity, int style) {
121 // taxon = entity.getTaxon();
122
123 Label taxonTitle = new Label(getLayoutComposite(), SWT.NULL);
124 taxonTitle.setText(Messages.TaxonNodeWizardPage_TAXON_INFORMATION);
125 taxonTitle.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
126 taxonTitle.setFont(FONT_BOLD);
127
128
129
130 if (isCreateNew()){
131 textNewTaxonName = formFactory.createTextWithLabelElement(formElement,
132 Messages.TaxonNodeWizardPage_NEW_TAXON, "", style);
133 textNewTaxonName.setFocus();
134 textNewTaxonName.setIndent(10);
135
136 selection_reuseExistingTaxon = formFactory
137 .createSelectionElement(Taxon.class,//getConversationHolder(),
138 formElement,
139 REUSE_EXISTING_TAXON, null,
140 EntitySelectionElement.DELETABLE, style);
141 selection_reuseExistingTaxon.setIndent(10);
142 selection_reuseExistingName = formFactory
143 .createSelectionElement(TaxonName.class,//getConversationHolder(),
144 formElement,
145 REUSE_EXISTING_NAME, taxon != null? taxon.getName(): null,
146 EntitySelectionElement.DELETABLE, style);
147 selection_reuseExistingName.setIndent(10);
148 selection_SecRef = formFactory
149 .createSelectionElement(Reference.class,//getConversationHolder(),
150 formElement, SECUNDUM_REFERENCE, taxon != null? taxon.getSec(): null,
151 EntitySelectionElement.DELETABLE, style, 100);
152 selection_SecRef.setIndent(10);
153 microReference = formFactory.createTextWithLabelElement(formElement, "Secundum Details", "", style);
154
155 microReference.setIndent(10);
156 checkbox_publish = formFactory.createCheckbox(formElement,
157 Messages.TaxonNodeWizardPage_TAXON_IS_PUBLISH, true, style);
158
159 checkbox_publish.setEnabled(isCreateNew());
160 checkbox_publish.setIndent(10);
161 Label spacer = new Label(getLayoutComposite(), SWT.NULL);
162 spacer.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 2));
163 Label nodeTitle = new Label(getLayoutComposite(), SWT.NULL);
164 nodeTitle.setText("Taxon Node");
165 nodeTitle.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
166 nodeTitle.setFont(FONT_BOLD);
167 // LabelElement nodeTitle = formFactory.createLabel(formElement, Messages.TaxonNodeWizardPage_TAXON_INFORMATION);
168 // nodeTitle.setLayout(LayoutConstants.FILL_HORIZONTALLY(2, 1));
169 // nodeTitle.setBackground(getPersistentBackground());
170 // nodeTitle.setBold();
171
172 selection_parentTaxonNode = formFactory
173 .createTaxonNodeSelectionElement(getConversationHolder(), formElement, Messages.TaxonNodeWizardPage_PARENT, parentNode,
174 EntitySelectionElement.SELECTABLE, style, 100);
175 selection_parentTaxonNode.setIndent(10);
176
177
178
179 }else{
180 taxon = getEntity().getTaxon();
181 selection_reuseExistingTaxon = formFactory
182 .createSelectionElement(Taxon.class, formElement,
183 Messages.TaxonNodeWizardPage_TAXON, taxon,
184 EntitySelectionElement.DELETABLE, SWT.NULL);
185
186 selection_reuseExistingTaxon.setIndent(10);
187 textTaxonSec = formFactory.createTextWithLabelElement(formElement,SECUNDUM_REFERENCE, "", SWT.NULL);
188 textTaxonSec.setIndent(10);
189 microReference = formFactory.createTextWithLabelElement(formElement, "Secundum Details", "", SWT.NULL);
190 microReference.setIndent(10);
191
192 if (entity.getTaxon().getSec() != null){
193 textTaxonSec.setText(taxon.getSec().getTitleCache());
194 }
195 textTaxonSec.setEnabled(false);
196 microReference.setEnabled(false);
197 Label spacer = new Label(getLayoutComposite(), SWT.NULL);
198 spacer.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 2));
199
200 Label nodeTitle = new Label(getLayoutComposite(), SWT.NULL);
201 nodeTitle.setText("Taxon Node");
202 nodeTitle.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
203 nodeTitle.setFont(FONT_BOLD);
204
205 // LabelElement nodeTitle = formFactory.createLabel(formElement, "Taxon Node");
206 // nodeTitle.setLayout(LayoutConstants.FILL_HORIZONTALLY(2, 1));
207 // nodeTitle.setBackground(getPersistentBackground());
208 // nodeTitle.setBold();
209
210
211 if (entity.getParent().getTaxon() == null){
212 TextWithLabelElement textParent = formFactory.createTextWithLabelElement(
213 formElement,CLASSIFICATION_STR, entity.getClassification().getTitleCache(), SWT.NULL);
214 textParent.setEnabled(false);
215 textParent.setIndent(10);
216 }else{
217 TextWithLabelElement textParent = formFactory.createTextWithLabelElement(
218 formElement, Messages.TaxonNodeWizardPage_PARENT, entity.getParent().getTaxon().getTitleCache(), SWT.NULL);
219 textParent.setEnabled(false);
220 textParent.setIndent(10);
221 }
222 }
223
224
225 combo_status = formFactory.createEnumComboElement(TaxonNodeStatus.class, formElement, SWT.NULL, true);
226 if (!isCreateNew()){
227 combo_status.setSelection(entity.getStatus());
228 }
229 combo_status.setIndent(10);
230 if(isCreateNew()){
231
232 String defaultPublish = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey());
233 if (defaultPublish != null && defaultPublish.equals(PublishEnum.Publish.getKey())){
234 checkbox_publish.setSelection(true);
235 } else if (defaultPublish != null && defaultPublish.equals(PublishEnum.NotPublish.getKey())){
236 checkbox_publish.setSelection(false);
237 }else{
238 if(this.getParentTreeNode() != null && this.getParentTreeNode().isInstanceOf(TaxonNode.class) && this.getParentTreeNode().getTaxon() != null){
239 checkbox_publish.setSelection(this.getParentTreeNode().getTaxon().isPublish());
240 }else{
241 checkbox_publish.setSelection(true);
242 }
243 }
244 } else{
245 setTreeNode(entity);
246 complete = true;
247 }
248
249 if (isCreateNew()){
250 preFillTaxonName();
251 }
252
253 multiLanguageTextStatusNotes = formFactory.createMultiLanguageTextElement(formElement, STATUS_NOTES, null, 50, style);
254 if (!isCreateNew()){
255 multiLanguageTextStatusNotes.setMultilanguageText(entity.getStatusNote());
256 multiLanguageTextStatusNotes.setEnabled(entity.getStatus() != null);
257 }
258 multiLanguageTextStatusNotes.setIndent(10);
259 singleSourceSection = formFactory.createOriginalSourceElement(formElement, entity, "");
260 if (isCreateNew() || entity.getSource() == null){
261 DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(null, null);
262 entity.setSource(source);
263 singleSourceSection.setEntity(source);
264 }else{
265 singleSourceSection.setEntity(entity.getSource());
266
267 }
268 singleSourceSection.setIndent(10);
269 // singleSourceSection.set
270
271 // super.createControls(formElement, entity, style);
272
273 setSourceLabel(Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE);
274
275
276 selectionNodeAgentRelation = formFactory.createTaxonNodeAgentRelationCollectionSection(formElement, getConversationHolder(), StoreUtil.getSectionStyle(TaxonNodeAgentRelationCollectionSection.class, entity.getClass().getCanonicalName()));
277 selectionNodeAgentRelation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
278 selectionNodeAgentRelation.setEntity(entity);
279 selectionNodeAgentRelation.setIndent(10);
280 selectionNodeAgentRelation.setFont(AbstractUtility.getFont(Resources.COLOR_FONT_DEFAULT));
281 setBackground(getPersistentBackground());
282
283 }
284
285 private void preFillTaxonName() {
286 TaxonNode node = parentNode;
287 if(node != null && node.getTaxon()!=null){
288 Taxon taxon = HibernateProxyHelper.deproxy(node.getTaxon(), Taxon.class);
289 if(taxon.getName()!=null){
290 TaxonName name = HibernateProxyHelper.deproxy(node.getTaxon().getName());
291 if (!isCreateNew()){
292 textNewTaxonName.setText(name.getNameCache());
293 } else if( ! name.isSupraGeneric() && name.getRank() != null){
294 String taxonName = "";
295 if(name.isGenus() || name.isInfraGeneric()|| name.isSpeciesAggregate() ){
296 taxonName = name.getGenusOrUninomial();
297 }
298 else if(name.isSpecies() || name.isInfraSpecific() ){
299 taxonName = CdmUtils.concat(" ", name.getGenusOrUninomial(),name.getSpecificEpithet());
300 }
301 if (StringUtils.isNotBlank(taxonName)){
302 textNewTaxonName.setText(taxonName + " ");
303 if(textNewTaxonName.getMainControl() instanceof Text){
304 Text text = (Text)textNewTaxonName.getMainControl();
305 text.setSelection(textNewTaxonName.getText().length());
306 }
307 }
308 }
309 }
310 }
311 }
312
313 @Override
314 public void handleEvent(Object eventSource) {
315 if (eventSource == selection_parentTaxonNode) {
316 setParentTreeNode(selection_parentTaxonNode.getEntity());
317 } else if (eventSource == selection_reuseExistingTaxon) {
318 if (selection_reuseExistingTaxon.getEntity() != null){
319 setTaxon(selection_reuseExistingTaxon.getEntity());
320 if (getTaxon().getSec()!= null){
321 microReference.setText(getTaxon().getSecMicroReference());
322 if (isCreateNew()){
323 selection_SecRef.setEntity(getTaxon().getSec());
324 }else{
325 textTaxonSec.setText((getTaxon().getSec().getTitleCache()));
326 }
327 }else{
328 microReference.setText("");
329 if (isCreateNew()){
330 selection_SecRef.setEntity(null);
331 }else{
332 textTaxonSec.setText("");
333 }
334 }
335 checkbox_publish.setSelected(getTaxon().isPublish());
336 }
337 boolean enabled = selection_reuseExistingTaxon.getEntity() == null;
338 if (selection_reuseExistingName != null){
339 selection_reuseExistingName.setEnabled(enabled);
340 }
341 if (textNewTaxonName != null){
342 textNewTaxonName.setEnabled(enabled);
343 }
344 complete = true;
345 } else if (eventSource == selection_reuseExistingName) {
346 boolean enabled = selection_reuseExistingName.getEntity() == null;
347 setTaxon(HibernateProxyHelper.deproxy(selection_reuseExistingName.getEntity()));
348 if (selection_reuseExistingTaxon != null){
349 selection_reuseExistingTaxon.setEnabled(enabled);
350 }
351 textNewTaxonName.setEnabled(enabled);
352 complete = !textNewTaxonName.getText().isEmpty();
353 }
354
355 if (eventSource == combo_status) {
356 status = combo_status.getSelection();
357 if (status == null){
358 if (multiLanguageTextStatusNotes.getMultilanguageText() != null && !multiLanguageTextStatusNotes.getMultilanguageText().isEmpty()){
359 multilanguageTextCache = new HashMap<>();
360 for (LanguageString langString: multiLanguageTextStatusNotes.getMultilanguageText().values()){
361 multilanguageTextCache.put(langString.getLanguage(), langString);
362 }
363 // multilanguageTextCache = multiLanguageTextStatusNotes.getMultilanguageText();
364 }
365 multiLanguageTextStatusNotes.setMultilanguageText(new HashMap<>());
366 // multiLanguageTextStatusNotes.refresh();
367
368 }else if (multilanguageTextCache != null ){
369
370 multiLanguageTextStatusNotes.setMultilanguageText(multilanguageTextCache);
371 multilanguageTextCache = null;
372 }
373 if (!isCreateNew()){
374 getEntity().setStatus(status);
375 if (status == null){
376 getEntity().getStatusNote().clear();
377 multiLanguageTextStatusNotes.setMultilanguageText(new HashMap<>());
378 multiLanguageTextStatusNotes.refresh();
379 }else{
380 if (multiLanguageTextStatusNotes.getMultilanguageText() != null){
381 for (LanguageString lang:multiLanguageTextStatusNotes.getMultilanguageText().values()){
382 getEntity().putStatusNote(lang);
383 }
384 }
385 }
386 }
387
388 multiLanguageTextStatusNotes.setEnabled(status != null);
389
390 complete = true;
391 }
392
393 if (eventSource == textNewTaxonName) {
394 boolean enabled = CdmUtils.isBlank(textNewTaxonName.getText());
395 if (selection_reuseExistingTaxon != null){
396 selection_reuseExistingTaxon.setEnabled(enabled);
397 }
398 selection_reuseExistingName.setEnabled(enabled);
399
400 complete = CdmUtils.isNotBlank(textNewTaxonName.getText());
401 }
402
403 if (eventSource == selectionNodeAgentRelation){
404 boolean allComplete = true;
405 for (ICdmFormElement element : selectionNodeAgentRelation.getElements()){
406 allComplete &=((TaxonNodeAgentRelationCollectionElement)element).isComplete();
407 }
408 complete = !isCreateNew() && allComplete;
409 }
410 }
411
412 public Classification getClassification() {
413 return classification;
414 }
415
416 public TaxonNode getParentTreeNode() {
417 return parentNode;
418 }
419
420 public void setParentTreeNode(TaxonNode parentTreeNode) {
421 this.parentNode = parentTreeNode;
422 updateContent();
423 if (parentTreeNode.getTaxon() == null) {
424 classification = parentTreeNode.getClassification();
425 if (selection_parentTaxonNode != null){
426 selection_parentTaxonNode.setEntity(classification.getRootNode());
427 selection_parentTaxonNode.setClassification(classification);
428 selection_SecRef.setEntity(classification.getReference());
429 }
430 } else {
431 classification = HibernateProxyHelper
432 .deproxy(parentTreeNode.getClassification());
433 if (selection_parentTaxonNode != null){
434 selection_parentTaxonNode.setEntity(HibernateProxyHelper.deproxy(parentTreeNode));
435 selection_parentTaxonNode.setClassification(classification);
436 selection_SecRef.setEntity(parentTreeNode.getTaxon().getSec());
437 }
438 }
439 }
440
441 @Override
442 protected void updateControlStates(){
443 Collection<Object> except = new ArrayList<Object>();
444 for(ICdmFormElement formElement:getElements()){
445 if(formElement instanceof IEnableableFormElement && !((IEnableableFormElement) formElement).isEnabled()){
446 except.add(formElement);
447 }
448 }
449 if (isCreateNew() ){
450 enabled = true;
451 }else{
452 enabled = getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud);
453 }
454 setEnabled(enabled, except);
455 }
456
457 private void setTreeNode(TaxonNode treeNode) {
458 classification = HibernateProxyHelper
459 .deproxy(treeNode.getClassification());
460 if (isCreateNew()){
461 selection_parentTaxonNode.setEntity(treeNode.getParent());
462 selection_parentTaxonNode.setClassification(treeNode.getParent().getClassification());
463 selection_SecRef.setEntity(treeNode.getTaxon().getSec());
464 }
465 }
466
467 private void setTaxon(Taxon taxon) {
468 this.taxon = taxon;
469 if (!isCreateNew()){
470 getEntity().setTaxon(taxon);
471 }
472 this.set_publish(taxon.isPublish());
473 if (isCreateNew()){
474 textNewTaxonName.setText(taxon.getName().getTitleCache());
475 if (taxon.getSec() != null){
476 selection_SecRef.setEntity(taxon.getSec());
477 }
478 }else{
479 if (taxon.getSec() != null) {
480 this.textTaxonSec.setText(taxon.getSec().getTitleCache());
481 }
482 }
483 }
484
485 private void setTaxon(TaxonName taxonName) {
486 Reference secundum = null;
487 if (getParentTreeNode() != null) {
488 if (this.selection_SecRef.getEntity() != null){
489 secundum = this.selection_SecRef.getEntity();
490 }
491 }
492
493 }
494
495 public String getTaxonName() {
496 return textNewTaxonName.getText();
497 }
498 public Taxon getTaxon() {
499 return taxon;
500 }
501
502 public Reference getSecReference(){
503 return selection_SecRef.getSelection();
504 }
505
506 public Control getMainControl(){
507 return textNewTaxonName.getMainControl();
508 }
509
510 public boolean isComplete() {
511 boolean allComplete = true;
512 if (!isCreateNew()){
513 for (ICdmFormElement element : selectionNodeAgentRelation.getElements()){
514 allComplete &=((TaxonNodeAgentRelationCollectionElement)element).isComplete();
515 }
516 complete = allComplete;
517 }
518 return complete;
519 }
520
521 public boolean isCreateNew() {
522 return createNew;
523 }
524
525 public boolean is_publish() {
526 boolean isPublishPreference = true;
527 CdmPreference defaultPublish = CdmPreferenceCache.instance().get(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey());
528 if (defaultPublish != null && defaultPublish.getValue()!= null && defaultPublish.getValue().equals(PublishEnum.NotPublish.getKey())){
529 isPublishPreference = false;
530 }
531 return checkbox_publish!=null?checkbox_publish.getSelection():isPublishPreference;
532 }
533
534 public void set_publish(boolean publish) {
535 this.checkbox_publish.setSelection(publish);
536 }
537
538 /**
539 * Updates all widgets to display the latest data
540 */
541 @Override
542 protected void updateContent() {
543 removeElements();
544 if (isCreateNew()){
545 createControls(this, parentNode, SWT.NONE);
546 }else{
547 createControls(this, getEntity(), SWT.NONE);
548 }
549 updateControlStates();
550 }
551
552 @Override
553 public SelectionArbitrator getSelectionArbitrator() {
554 // TODO Auto-generated method stub
555 return null;
556 }
557 }