\r
package eu.etaxonomy.taxeditor.editor.name;\r
\r
+import java.beans.PropertyChangeEvent;\r
+import java.beans.PropertyChangeListener;\r
+\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.runtime.Assert;\r
import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.text.TextViewer;\r
import org.eclipse.jface.util.IPropertyChangeListener;\r
+import org.eclipse.swt.events.DisposeEvent;\r
+import org.eclipse.swt.events.DisposeListener;\r
import org.eclipse.swt.events.FocusAdapter;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.graphics.Font;\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
\r
private static final String EMPTY_NAME_PROMPT = "Click to add name";\r
\r
- private NameViewer nameViewer;\r
+// private NameViewer nameViewer;\r
+// private NameViewer textViewer;\r
\r
/**\r
* Used to turn parser on and off.\r
*/\r
private boolean isUseParser = false;\r
\r
+ protected boolean isParsing;\r
+\r
+ private NameViewer nameViewer;\r
+\r
/**\r
* The constructor for a DescriptionElementComposite. Takes a parent Composite on which to\r
* create itself, and an IManagedForm for Composite life cycle methods, i.e.\r
createNameViewer();\r
createBorderSupport();\r
createLineWrapSupport();\r
-\r
+ \r
setData(data);\r
+ \r
+ createNameListener(data);\r
+ \r
transform(compositeType);\r
\r
createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
- \r
createParser();\r
\r
setFocus();\r
}\r
\r
+ /**\r
+ * Listens for changes to this name's <code>fullTitleCache</code>.\r
+ * \r
+ * @param data\r
+ */\r
+ private void createNameListener(TaxonBase taxonBase) {\r
+ if (taxonBase.getName() == null) {\r
+ return;\r
+ }\r
+ \r
+ final TaxonNameBase name = taxonBase.getName();\r
+ \r
+ final PropertyChangeListener listener = new PropertyChangeListener() {\r
+ @Override\r
+ public void propertyChange(PropertyChangeEvent evt) {\r
+ \r
+ if (isParsing) {\r
+ return;\r
+ }\r
+ \r
+ deactivateParser();\r
+ ((NameViewer) getTextViewer()).setText(name.getFullTitleCache());\r
+ activateParser();\r
+ }\r
+ };\r
+ \r
+ name.addPropertyChangeListener("fullTitleCache", listener);\r
+ name.addPropertyChangeListener("nomenclaturalMicroReference", listener);\r
+\r
+ name.addPropertyChangeListener(ITaxEditorConstants.REFRESH_NAMEVIEWER, listener);\r
+ \r
+ StrictReferenceBase reference = (StrictReferenceBase) name.getNomenclaturalReference();\r
+ if (reference != null) {\r
+ reference.addPropertyChangeListener("titleCache", listener);\r
+ }\r
+ \r
+ this.addDisposeListener(new DisposeListener() {\r
+\r
+ @Override\r
+ public void widgetDisposed(DisposeEvent e) {\r
+// name.removePropertyChangeListener(listener);\r
+ }\r
+ });\r
+ }\r
+\r
/**\r
* All cosmetic - non-data-related, i.e. icons, fonts, etc. -\r
* transformations take place in this method.\r
setIcon(HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON);\r
}\r
}\r
-\r
+ \r
if (transformation.equals(REMOVE_GROUP_BASIONYM)) {\r
if (compositeType.equals(HOMOTYPIC_SYNONYM)) {\r
setIcon(HOMOTYPIC_SYNONYM_ICON);\r
}\r
\r
private void createParser() {\r
- nameViewer.setParseListener(new ParseListener() {\r
+ ((NameViewer) getTextViewer()).setParseListener(new ParseListener() {\r
\r
@Override\r
public void parse(String text) {\r
\r
+ isParsing = true;\r
+ \r
if (!isUseParser) {\r
return;\r
}\r
\r
if (nonViralName != null) {\r
CdmUtil.parseFullReference(nonViralName, text, null, true);\r
- nameViewer.setShowError(nonViralName.getHasProblem());\r
+ ((NameViewer) getTextViewer()).setShowError(nonViralName.getHasProblem());\r
}\r
\r
setDirty(true);\r
+ \r
+ isParsing = false;\r
}\r
});\r
activateParser();\r
}\r
\r
private NameViewer createNameViewer() {\r
- nameViewer = new NameViewer(this);\r
- nameViewer.setLineBreakListener(new LineBreakListener() {\r
+// nameViewer = new NameViewer(this);\r
+// nameViewer.setLineBreakListener(new LineBreakListener() {\r
+ \r
+ setTextViewer(new NameViewer(this));\r
+ getTextViewer().setLineBreakListener(new LineBreakListener() {\r
\r
@Override\r
public void handleSplitText(String text) {\r
\r
});\r
\r
- nameViewer.getTextWidget().addFocusListener(new FocusAdapter() {\r
+// nameViewer.getTextWidget().addFocusListener(new FocusAdapter() {\r
+ getTextViewer().getTextWidget().addFocusListener(new FocusAdapter() {\r
public void focusGained(FocusEvent e) {\r
setFocus();\r
}\r
});\r
\r
// createLineWrapSupport(nameViewer);\r
-\r
- this.textViewer = nameViewer;\r
-\r
- nameViewer.getTextWidget().setBackground(TaxEditorPlugin.getDefault().\r
- getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR));\r
+//\r
+// this.textViewer = nameViewer;\r
+// nameViewer.getTextWidget().setBackground(TaxEditorPlugin.getDefault().\r
+// getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR));\r
+ getTextViewer().getTextWidget().setBackground(TaxEditorPlugin.getDefault().\r
+ getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR)); \r
\r
- return nameViewer;\r
+ return (NameViewer) getTextViewer();\r
}\r
\r
/**\r
\r
}\r
return false;\r
- } \r
+ }\r
+ \r
+ public void setText(String text) {\r
+ Assert.isNotNull(getTextViewer(), \r
+ "Cannot set text for a TextViewer that has not yet been initialized.");\r
+ Assert.isNotNull(getTextViewer().getDocument(), \r
+ "Cannot set text for a TextViewer whose Document has not yet been initialized.");\r
+ getTextViewer().getDocument().set(text);\r
+ }\r
+ \r
+ public NameViewer getTextViewer() {\r
+ return this.nameViewer;\r
+ }\r
+ \r
+ public void setTextViewer(NameViewer textViewer) {\r
+ this.nameViewer = textViewer;\r
+ }\r
}
\ No newline at end of file
import java.beans.PropertyChangeListener;\r
import java.beans.PropertyChangeSupport;\r
import java.util.ArrayList;\r
+import java.util.Calendar;\r
import java.util.Date;\r
import java.util.List;\r
import java.util.Set;\r
import org.eclipse.ui.views.properties.PropertyDescriptor;\r
import org.eclipse.ui.views.properties.TextPropertyDescriptor;\r
\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.model.common.Annotation;\r
import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.TimePeriod;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.reference.Article;\r
+import eu.etaxonomy.cdm.model.reference.BibtexReference;\r
+import eu.etaxonomy.cdm.model.reference.Book;\r
+import eu.etaxonomy.cdm.model.reference.BookSection;\r
+import eu.etaxonomy.cdm.model.reference.Generic;\r
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
public static final String P_ID_NOMENCLATURAL_REF = "nomenclaturalref";\r
public static final String P_ID_NOMENCLATURAL_MICROREF = "nomenclaturalmicroref";\r
public static final String P_ID_REFERENCEYEAR = "referenceyear";\r
+ public static final String P_ID_NOMREF_TYPE = "nomreftype";\r
+ public static final String P_ID_NOMREF_YEAR = "nomrefyear";\r
+ public static final String P_ID_NOMREF_TITLE = "nomreftitle";\r
\r
// Property display keys\r
// Note: for an explanation of the sorting prefixes ("04:"), \r
public static final String P_CREATEDBY = "16:Created By";\r
public static final String P_NOMENCLATURAL_CODE = "02:Nomenclatural Code";\r
public static final String P_NOMENCLATURAL_REF = "09:Nomenclatural Reference";\r
- public static final String P_NOMENCLATURAL_MICROREF = "10:Nomenclatural Micro Reference";\r
+ public static final String P_NOMENCLATURAL_MICROREF = "10:Micro Reference";\r
+ public static final String P_NOMREF_TYPE = "00:Reference Type";\r
+ public static final String P_NOMREF_YEAR = "02:Year";\r
+ public static final String P_NOMREF_TITLE = "01:Title";\r
\r
protected static final String[] TOP_LEVEL_PROPERTIES = new String[] {P_ID_PARSED, P_ID_RANK, P_ID_TITLECACHE, \r
P_ID_ANNOTATIONS, P_ID_NOMSTATUS, P_ID_NAMERELATIONS, P_ID_UUID, P_ID_NOMENCLATURAL_REF,\r
}\r
\r
static String[] P_NOMENCLATURALCODE_MENU = new String[] { "ICZN", "ICBN" };\r
+ static String[] P_NOMREF_TYPE_MENU = new String[] { "Article", "Bibtex", "Book", "Book Section", "Generic" }; \r
\r
// ***********************************************************\r
// NOMENCLATURAL STATUS\r
}\r
if (id.equals(P_ID_NOMENCLATURAL_REF)) {\r
descriptors.addElement(\r
- new TextPropertyDescriptor(P_ID_NOMENCLATURAL_REF, P_NOMENCLATURAL_REF));\r
+// new TextPropertyDescriptor(P_ID_NOMENCLATURAL_REF, P_NOMENCLATURAL_REF));\r
+ new PropertyDescriptor(P_ID_NOMENCLATURAL_REF, P_NOMENCLATURAL_REF));\r
}\r
if (id.equals(P_ID_NOMENCLATURAL_MICROREF)) {\r
descriptors.addElement(\r
new TextPropertyDescriptor(P_ID_NOMENCLATURAL_MICROREF,P_NOMENCLATURAL_MICROREF));\r
}\r
+ if (id.equals(P_ID_NOMREF_TYPE)) {\r
+ descriptors.addElement(\r
+ new PropertyDescriptor(P_ID_NOMREF_TYPE, P_NOMREF_TYPE));\r
+// new ComboBoxPropertyDescriptor(P_ID_NOMREF_TYPE, P_NOMREF_TYPE, P_NOMREF_TYPE_MENU));\r
+ }\r
+ if (id.equals(P_ID_NOMREF_YEAR)) {\r
+ descriptors.addElement(\r
+ new TextPropertyDescriptor(P_ID_NOMREF_YEAR, P_NOMREF_YEAR));\r
+ }\r
+ if (id.equals(P_ID_NOMREF_TITLE)) {\r
+ descriptors.addElement(\r
+ new TextPropertyDescriptor(P_ID_NOMREF_TITLE, P_NOMREF_TITLE));\r
+ } \r
}\r
\r
/**\r
// If the name has not been parsed, only show the title cache\r
// if (name.getHasProblem()) {\r
if (name.getRank() == null) {\r
- return subEmptyForNull(name.getTitleCache());\r
+ return CdmUtils.Nz(name.getTitleCache());\r
} else {\r
return new NonViralNamePropertySource(name, P_ID_TITLECACHE, getNameFields());\r
}\r
}\r
if (id.equals(P_ID_UNINOMIAL)) {\r
- return subEmptyForNull(name.getGenusOrUninomial());\r
+ return CdmUtils.Nz(name.getGenusOrUninomial());\r
}\r
if (id.equals(P_ID_INFRAGENERICEP)) {\r
- return subEmptyForNull(name.getInfraGenericEpithet());\r
+ return CdmUtils.Nz(name.getInfraGenericEpithet());\r
}\r
if (id.equals(P_ID_SPECIESEP)) {\r
- return subEmptyForNull(name.getSpecificEpithet());\r
+ return CdmUtils.Nz(name.getSpecificEpithet());\r
}\r
if (id.equals(P_ID_INFRASPECIFICEP)) {\r
- return subEmptyForNull(name.getInfraSpecificEpithet());\r
+ return CdmUtils.Nz(name.getInfraSpecificEpithet());\r
}\r
if (id.equals(P_ID_APPENDEDPHRASE)) {\r
- return subEmptyForNull(name.getAppendedPhrase());\r
+ return CdmUtils.Nz(name.getAppendedPhrase());\r
}\r
if (id.equals(P_ID_AUTHORSHIPCACHE)) {\r
- return subEmptyForNull(name.getAuthorshipCache());\r
+ return CdmUtils.Nz(name.getAuthorshipCache());\r
}\r
if (id.equals(P_ID_HOMOTYPICALGROUP)) {\r
- return subEmptyForNull(name.getHomotypicalGroup().getUuid().toString());\r
+ return CdmUtils.Nz(name.getHomotypicalGroup().getUuid().toString());\r
}\r
if (id.equals(P_ID_ANNOTATIONS)) {\r
return new AnnotationPropertySource(name.getAnnotations());\r
return "";\r
}\r
if (id.equals(P_ID_UUID)) {\r
- return subEmptyForNull(name.getUuid().toString());\r
+ return CdmUtils.Nz(name.getUuid().toString());\r
}\r
if (id.equals(P_ID_MARKERS)) {\r
return new MarkersPropertySource(name.getMarkers());\r
if (name.getCreatedBy() == null) {\r
return "";\r
} else {\r
- return subEmptyForNull(name.getCreatedBy().generateTitle());\r
+ return CdmUtils.Nz(name.getCreatedBy().generateTitle());\r
}\r
}\r
if (id.equals(P_ID_NOMENCLATURAL_CODE)) {\r
return "none (nonviral name)";\r
}\r
if (id.equals(P_ID_NOMENCLATURAL_REF)) {\r
+// INomenclaturalReference nomenclaturalReference = (INomenclaturalReference) name.getNomenclaturalReference();\r
+// if (nomenclaturalReference == null) {\r
+// return "";\r
+// } \r
+// String microReference = name.getNomenclaturalMicroReference();\r
+// return CdmUtils.Nz(nomenclaturalReference.getNomenclaturalCitation(microReference));\r
+ \r
INomenclaturalReference nomenclaturalReference = (INomenclaturalReference) name.getNomenclaturalReference();\r
- if (nomenclaturalReference == null) {\r
+ if (name.getNomenclaturalReference() == null) {\r
return "";\r
+ } else {\r
+ return new NonViralNamePropertySource(name, P_ID_NOMENCLATURAL_REF, getReferenceFields());\r
}\r
-// getNomReference();\r
-// getNom\r
- String microReference = name.getNomenclaturalMicroReference();\r
- return subEmptyForNull(nomenclaturalReference.getNomenclaturalCitation(microReference));\r
}\r
if (id.equals(P_ID_NOMENCLATURAL_MICROREF)) {\r
- return subEmptyForNull(name.getNomenclaturalMicroReference());\r
+ return CdmUtils.Nz(name.getNomenclaturalMicroReference());\r
+ }\r
+ INomenclaturalReference nomenclaturalReference = (INomenclaturalReference) name.getNomenclaturalReference();\r
+ if (id.equals(P_ID_NOMREF_TYPE)) {\r
+ if (nomenclaturalReference instanceof Article) {\r
+ return "Article";\r
+ }\r
+ if (nomenclaturalReference instanceof BibtexReference) {\r
+ return "Bibtex";\r
+ }\r
+ if (nomenclaturalReference instanceof Book) {\r
+ return "Book"; \r
+ }\r
+ if (nomenclaturalReference instanceof BookSection) {\r
+ return "Book Section"; \r
+ }\r
+ if (nomenclaturalReference instanceof Generic) {\r
+ return "Generic"; \r
+ } \r
+ return "none";\r
+ }\r
+ if (id.equals(P_ID_NOMREF_YEAR)) {\r
+ return CdmUtils.Nz(nomenclaturalReference.getYear());\r
+ }\r
+ if (id.equals(P_ID_NOMREF_TITLE)) {\r
+ if (nomenclaturalReference instanceof Article) {\r
+ return CdmUtils.Nz(((Article) nomenclaturalReference).getTitle());\r
+ }\r
+ if (nomenclaturalReference instanceof BibtexReference) {\r
+ return CdmUtils.Nz(((BibtexReference) nomenclaturalReference).getTitle());\r
+ }\r
+ if (nomenclaturalReference instanceof Book) {\r
+ return CdmUtils.Nz(((Book) nomenclaturalReference).getTitle());\r
+ }\r
+ if (nomenclaturalReference instanceof BookSection) {\r
+ return CdmUtils.Nz(((BookSection) nomenclaturalReference).getTitle());\r
+ }\r
+ if (nomenclaturalReference instanceof Generic) {\r
+ return CdmUtils.Nz(((Generic) nomenclaturalReference).getTitle());\r
+ }\r
}\r
return null;\r
}\r
return nameFields.toArray(new String[nameFields.size()]);\r
}\r
\r
+ private String[] getReferenceFields() {\r
+ List<String> referenceFields = new ArrayList<String>();\r
+ \r
+ INomenclaturalReference reference = (INomenclaturalReference) name.getNomenclaturalReference();\r
+ if (reference == null) {\r
+ return null;\r
+ }\r
+ \r
+ referenceFields.add(P_ID_NOMREF_TYPE);\r
+ referenceFields.add(P_ID_NOMREF_YEAR);\r
+ referenceFields.add(P_ID_NOMENCLATURAL_MICROREF);\r
+ referenceFields.add(P_ID_NOMREF_TITLE);\r
+ \r
+ if (reference instanceof Article) {\r
+\r
+ }\r
+ if (reference instanceof BibtexReference) {\r
+ \r
+ }\r
+ if (reference instanceof Book) {\r
+\r
+ }\r
+ if (reference instanceof BookSection) {\r
+ \r
+ }\r
+ if (reference instanceof Generic) {\r
+ \r
+ }\r
+ \r
+ return referenceFields.toArray(new String[referenceFields.size()]);\r
+ }\r
+ \r
private Object formatDate(Date date) {\r
return String.format("%1$tm-%1$td-%1$tY %1$tH:%1$tM:%1$tS", date);\r
}\r
-\r
- /**\r
- * If the value of a TextPropertyDescriptor is initialized with NULL,\r
- * the user can't edit it; such values need to be set to "". \r
- * Hence this function.\r
- * \r
- * @param string\r
- * @return\r
- */\r
- protected String subEmptyForNull(String string) {\r
- if (string == null)\r
- return "";\r
- return string;\r
- }\r
\r
@Override\r
public boolean isPropertySet(Object id) {\r
*/\r
@Override\r
public void setPropertyValue(Object id, Object value) {\r
- \r
+ \r
// Since this is only called when the property value changes,\r
// it is a reliable place to fire the name's property change\r
// listener.\r
-// name.firePropertyChange((String) id, null, value);\r
name.firePropertyChange(ITaxEditorConstants.PROPERTY_SHEET_CHANGE, null, null);\r
\r
if (id.equals(P_ID_RANK)) {\r
}\r
if (id.equals(P_ID_SPECIESEP)) {\r
name.setSpecificEpithet((String) value);\r
- name.setAppendedPhrase("joemama");\r
}\r
if (id.equals(P_ID_INFRASPECIFICEP)) {\r
name.setInfraSpecificEpithet((String) value);\r
// TODO ask Andreas M. how best to set nom. ref\r
}\r
if (id.equals(P_ID_NOMENCLATURAL_MICROREF)) {\r
- // TODO decide if this is editable at all, and if so, how to implement\r
+ name.setNomenclaturalMicroReference((String) value);\r
+ }\r
+ if (id.equals(P_ID_NOMREF_YEAR)) {\r
+ INomenclaturalReference reference = name.getNomenclaturalReference();\r
+ \r
+ if (reference instanceof BibtexReference) {\r
+ ((BibtexReference) reference).setYear((String) value);\r
+ }\r
+ TimePeriod datePublished = getDatePublished((String) value);\r
+ if (reference instanceof Article) {\r
+ ((Article) reference).setDatePublished(datePublished);\r
+ }\r
+ if (reference instanceof Book) {\r
+ ((Book) reference).setDatePublished(datePublished);\r
+ }\r
+ if (reference instanceof BookSection) {\r
+ ((BookSection) reference).setDatePublished(datePublished);\r
+ }\r
+ if (reference instanceof Generic) {\r
+ ((Generic) reference).setDatePublished(datePublished);\r
+ }\r
}\r
- boolean test = false;\r
- if (test) test = true;\r
+ if (id.equals(P_ID_NOMREF_TITLE)) {\r
+ INomenclaturalReference reference = name.getNomenclaturalReference();\r
+ \r
+ if (reference instanceof BibtexReference) {\r
+ ((BibtexReference) reference).setTitle((String) value);\r
+ }\r
+ if (reference instanceof Article) {\r
+ ((Article) reference).setTitle((String) value);\r
+ }\r
+ if (reference instanceof Book) {\r
+ ((Book) reference).setTitle((String) value);\r
+ }\r
+ if (reference instanceof BookSection) {\r
+ ((BookSection) reference).setTitle((String) value);\r
+ }\r
+ if (reference instanceof Generic) {\r
+ ((Generic) reference).setTitle((String) value);\r
+ }\r
+ }\r
+ \r
+ // Reset both caches to reflect property sheet changes\r
+ name.setTitleCache(name.generateTitle(), false);\r
+ name.setFullTitleCache(name.generateFullTitle(), false);\r
+ \r
+// name.firePropertyChange("fullTitleCache", null, name.getFullTitleCache());\r
+ name.firePropertyChange(ITaxEditorConstants.REFRESH_NAMEVIEWER, null, null);\r
+ }\r
+\r
+ private TimePeriod getDatePublished(String refYear) {\r
+ if (refYear == null){\r
+ return null;\r
+ }\r
+ \r
+ String[] years = refYear.split("-");\r
+ Calendar calStart = null;\r
+ Calendar calEnd = null;\r
+ if (years.length > 2 || years.length <= 0){\r
+ logger.warn("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX getDatePublished");\r
+ }else {\r
+ calStart = getCalendar(years[0]);\r
+ if (years.length >= 2){\r
+ calEnd = getCalendar(years[1]);\r
+ }\r
+ }\r
+ TimePeriod result = TimePeriod.NewInstance(calStart, calEnd);\r
+ return result;\r
}\r
+ \r
+ private static Calendar getCalendar(String strYear){\r
+ \r
+ //FIXME until now only quick and dirty and wrong\r
+ Calendar cal = Calendar.getInstance();\r
+ cal.set(9999, Calendar.DECEMBER, 30, 0, 0, 0);\r
+ if (CdmUtils.isNumeric(strYear)){\r
+ try {\r
+ Integer year = Integer.valueOf(strYear.trim());\r
+ if (year > 1750 && year < 2030){\r
+ cal.set(year, Calendar.JANUARY, 1, 0, 0, 0);\r
+ }\r
+ } catch (NumberFormatException e) {\r
+ logger.debug("Not a Integer format in getCalendar()");\r
+ }\r
+ }\r
+ \r
+ return cal;\r
+ \r
+ }\r
+ \r
\r
/** \r
* Any node with children must override {@link java.lang.Object#toString()} \r
*/\r
@Override\r
public String toString() {\r
- if (parentid.equals(P_ID_TITLECACHE))\r
+ if (parentid.equals(P_ID_TITLECACHE)) {\r
return name.getTitleCache(); \r
-// return name.getFullTitleCache();\r
+ }\r
+ if (parentid.equals(P_ID_NOMENCLATURAL_REF)) {\r
+ INomenclaturalReference nomenclaturalReference = name.getNomenclaturalReference();\r
+ if (nomenclaturalReference == null) {\r
+ return "";\r
+ } \r
+ String microReference = name.getNomenclaturalMicroReference();\r
+ return CdmUtils.Nz(nomenclaturalReference.getNomenclaturalCitation(microReference));\r
+ }\r
return super.toString();\r
}\r
\r