2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.taxeditor
.actions
.ui
;
12 import org
.apache
.log4j
.Logger
;
13 import org
.eclipse
.jface
.action
.Action
;
14 import org
.eclipse
.jface
.resource
.ImageDescriptor
;
16 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
17 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
19 import eu
.etaxonomy
.taxeditor
.ITaxEditorConstants
;
20 import eu
.etaxonomy
.taxeditor
.TaxEditorPlugin
;
21 import eu
.etaxonomy
.taxeditor
.controller
.TreeController
;
22 import eu
.etaxonomy
.taxeditor
.model
.CdmSessionDataRepository
;
23 import eu
.etaxonomy
.taxeditor
.navigation
.TaxonomicTreeViewer
;
24 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
27 * Open up a celleditor in the taxonomic tree
28 * to add a quickname to taxon
34 public class AddQuickNameAction
extends Action
{
35 private static final Logger logger
= Logger
36 .getLogger(AddQuickNameAction
.class);
38 private static String text
= "Add child taxon with quick name";
39 private ImageDescriptor image
= TaxEditorPlugin
.getDefault()
40 .getImageDescriptor(ITaxEditorConstants
.QUICK_ADD_ICON
);
42 private Taxon parentTaxon
;
43 private Taxon quickNameTaxon
;
45 private AddQuickNameAction() {
47 setImageDescriptor(image
);
50 public AddQuickNameAction(Taxon parentTaxon
) {
53 this.parentTaxon
= parentTaxon
;
58 // Create empty Taxon, add it to its parent
59 NonViralName name
= PreferencesUtil
.getInstanceOfPreferredNameClass();
60 ReferenceBase sec
= parentTaxon
.getSec();
61 quickNameTaxon
= Taxon
.NewInstance(name
, sec
);
62 parentTaxon
.addTaxonomicChild(quickNameTaxon
, null, null);
64 CdmSessionDataRepository
.getDefault().addTaxon(quickNameTaxon
);
66 // ULTRA HACKY, ULTRA MYSTERIOUS - if this is not called, name created with quick name
67 // then deleted in the same session causes error
68 // "org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade"
69 // (new PropertySourceAdapter(quickNameTaxon.getName())).getPropertySource();
71 firePropertyChange(ITaxEditorConstants
.QUICK_NAME_TAXON
, null, quickNameTaxon
);
73 TaxonomicTreeViewer treeViewer
= TreeController
.getTreeViewer();
74 if (treeViewer
== null) {
79 treeViewer
.revealTaxon(quickNameTaxon
);
81 // Put cursor in empty node
82 treeViewer
.editElement(quickNameTaxon
, 0);
85 public Taxon
getQuickNameTaxon() {
86 return quickNameTaxon
;