\r
@Override\r
public void setFocus(){\r
- logger.warn("");\r
// bind the conversation\r
getConversationHolder().bind();\r
// pass focus to the active editor page\r
public static TaxonEditorInput NewInstance(UUID taxonNodeUuid){
ConversationHolder conversation = CdmStore.NewTransactionalConversation();
- TaxonNode taxonNode = CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNodeUuid);
+ TaxonNode taxonNode = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNodeUuid);
if(taxonNode == null){
MessageDialog.openWarning(EditorUtil.getShell(), "Not yet implemented", "Selected element is not type TaxonBase.");
ConversationHolder conversation = CdmStore.NewTransactionalConversation();
TaxonNameBase<?, ?> name = PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null);
- ITreeNode parentNode = CdmStore.getTaxonService().getTreeNodeByUuid(parentNodeUuid);
+ ITreeNode parentNode = CdmStore.getTaxonTreeService().getTreeNodeByUuid(parentNodeUuid);
Taxon newTaxon = Taxon.NewInstance(name, parentNode.getReference());
TaxonNode newTaxonNode = parentNode.addChildTaxon(newTaxon, parentNode.getReference(), parentNode.getMicroReference(), null);
// add the new taxon to the editors persistence context
- CdmStore.getTaxonService().saveTaxonNode(newTaxonNode);
+ CdmStore.getTaxonTreeService().saveTaxonNode(newTaxonNode);
return new TaxonEditorInput(newTaxonNode, conversation);
}
* @see org.eclipse.ui.IEditorInput#getPersistable()
*/
public IPersistableElement getPersistable() {
- TaxonNode test = CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNode.getUuid());
- boolean isPersistable = CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNode.getUuid()) != null;
+ TaxonNode test = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNode.getUuid());
+ boolean isPersistable = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNode.getUuid()) != null;
if (isPersistable) {
return this;
} else {
public IAdaptable createElement(IMemento memento) {\r
// Get the uuid\r
String taxonNodeUuid = memento.getString(TAXON_NODE_UUID);\r
- if (taxonNodeUuid == null || CdmStore.getTaxonService().getTaxonNodeByUuid(UUID.fromString(taxonNodeUuid)) == null) {\r
+ if (taxonNodeUuid == null || CdmStore.getTaxonTreeService().getTaxonNodeByUuid(UUID.fromString(taxonNodeUuid)) == null) {\r
logger.warn("Couldn't find taxon node with UUID " + taxonNodeUuid);\r
// return MementoOutOfSyncInput.NewInstance(memento);\r
return null;\r
*/
package eu.etaxonomy.taxeditor.editor.name;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
-import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.strategy.match.MatchException;
import eu.etaxonomy.cdm.strategy.match.MatchMode;
import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;
+import eu.etaxonomy.taxeditor.parser.ParserUtil;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
private NonViralName name;
- private StyledText textWidget;
+ private Control textWidget;
- private ParseHandler(StyledText textWidget, TaxonNameBase name){
+ private ParseHandler(Control textWidget, TaxonNameBase name){
+
nonViralNameParser = NonViralNameParserImpl.NewInstance();
- this.textWidget = textWidget;
- this.name = (NonViralName) HibernateProxyHelper.deproxy(name);
+
+ if(textWidget != null){
+ this.textWidget = textWidget;
+ checkControlHasText();
+ }else{
+ throw new IllegalArgumentException("text widget must not be null");
+ }
+
+ if(name == null){
+ this.name = nonViralNameParser.getNonViralNameInstance("", PreferencesUtil.getPreferredNomenclaturalCode());
+ }else{
+ this.name = (NonViralName) HibernateProxyHelper.deproxy(name);
+ }
}
- public static ParseHandler NewInstance(StyledText textWidget, TaxonNameBase name){
+ public static ParseHandler NewInstance(Control textWidget, TaxonNameBase name){
return new ParseHandler(textWidget, name);
}
+ private void checkControlHasText(){
+ Class clazz = textWidget.getClass();
+
+ try {
+ clazz.getDeclaredMethod("getText", null);
+ } catch (SecurityException e) {
+ } catch (NoSuchMethodException e) {
+ throw new IllegalArgumentException("Given composite does not have a getText method");
+ }
+ }
+
/**
*
* @param unparsedNameString
* @return
*/
public NonViralName parse(){
- String unparsedNameString = textWidget.getText();
+
+
+ String unparsedNameString = "";
+ try {
+ Method getText;
+ getText = textWidget.getClass().getDeclaredMethod("getText", null);
+ unparsedNameString = (String) getText.invoke(textWidget, null);
+ } catch (Exception e) {
+ // we should never get here
+ logger.error("Error trying to invoke getText method");
+ }
+
nonViralNameParser.parseReferencedName(name, unparsedNameString,
name.getRank(), true);
/**
* @return the textWidget
*/
- public StyledText getTextWidget() {
+ public Control getTextWidget() {
return textWidget;
}
/**
* @param textWidget the textWidget to set
*/
- public void setTextWidget(StyledText textWidget) {
+ public void setTextWidget(Control textWidget) {
this.textWidget = textWidget;
+ checkControlHasText();
}
}
// Choose new accepted taxon \r
List<UUID> excludeTaxa = new ArrayList<UUID>();\r
excludeTaxa.add(oldAcceptedTaxon.getUuid());\r
- Taxon newAcceptedTaxon = FilteredTaxonNodeSelectionDialog.selectTaxonNode(HandlerUtil.getActiveShell(event), "Choose the accepted taxon", excludeTaxa).getTaxon();\r
+ Taxon newAcceptedTaxon = FilteredTaxonNodeSelectionDialog.selectTaxonNode(HandlerUtil.getActiveShell(event), "Choose the accepted taxon", excludeTaxa, null).getTaxon();\r
\r
\r
if (newAcceptedTaxon == null) {\r
}\r
\r
\r
- oldTaxon.getTaxonNodes().iterator().next().remove();\r
+ oldTaxon.getTaxonNodes().iterator().next().delete();\r
\r
}\r
\r
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
import eu.etaxonomy.cdm.model.common.TimePeriod;\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.CdDvd;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.reference.Report;\r
import eu.etaxonomy.cdm.model.reference.SectionBase;\r
-import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
import eu.etaxonomy.cdm.model.reference.Thesis;\r
import eu.etaxonomy.cdm.model.reference.WebPage;\r
import eu.etaxonomy.taxeditor.model.Resources;\r
// displayFields.add(P_ID_CROSSREF);\r
// }\r
\r
- if (reference instanceof StrictReferenceBase) {\r
+ if (reference instanceof ReferenceBase) {\r
\r
displayFields.add(P_ID_DATEPUBLISHED);\r
displayFields.add(P_ID_TITLE);\r
new TimePeriodPropertySource(datePublished);\r
timePeriodPropertySource.addPropertyChangeListener(new PropertyChangeListener() {\r
public void propertyChange(PropertyChangeEvent evt) {\r
- if (reference instanceof StrictReferenceBase && evt.getNewValue() instanceof TimePeriod) { \r
- ((StrictReferenceBase) reference).setDatePublished((TimePeriod) evt.getNewValue());\r
+ if (reference instanceof ReferenceBase && evt.getNewValue() instanceof TimePeriod) { \r
+ ((ReferenceBase) reference).setDatePublished((TimePeriod) evt.getNewValue());\r
}\r
}\r
});\r
// Year - only set directly by Bibtex refs\r
if (id.equals(P_ID_YEAR)) {\r
String year = (String) value;\r
- if (reference instanceof BibtexReference) {\r
- ((BibtexReference) reference).setYear(year);\r
+ if (reference instanceof ReferenceBase) {\r
+// ((ReferenceBase) reference).setYear(year);\r
}\r
}\r
\r
// Date published\r
if (id.equals(P_ID_DATEPUBLISHED)) {\r
\r
- if (!(reference instanceof StrictReferenceBase)) {\r
+ if (!(reference instanceof ReferenceBase)) {\r
return;\r
}\r
\r
yearsPublished = TimeHelper.convertTimePeriod(year);\r
\r
// Update reference's dataPublished field\r
- TimePeriod datePublished = ((StrictReferenceBase<?>) reference).getDatePublished();\r
+ TimePeriod datePublished = ((ReferenceBase<?>) reference).getDatePublished();\r
\r
if (datePublished == null) {\r
- ((StrictReferenceBase<?>) reference).setDatePublished(yearsPublished);\r
+ ((ReferenceBase<?>) reference).setDatePublished(yearsPublished);\r
} else {\r
\r
// Any months or days should be left as is - only update years \r
datePublished.setEndYear(yearsPublished.getEndYear());\r
}\r
} else {\r
- ((StrictReferenceBase<?>) reference).setDatePublished(null);\r
+ ((ReferenceBase<?>) reference).setDatePublished(null);\r
}\r
\r
\r