import org.eclipse.swt.layout.GridLayout;\r
import org.eclipse.swt.widgets.Button;\r
import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Dialog;\r
import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Text;\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.taxeditor.dialogs.FilteredNameSelectionDialog;\r
-import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;\r
-import eu.etaxonomy.taxeditor.model.Resources;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
\r
/**\r
\r
Label lblName = new Label(this, SWT.NONE);\r
lblName.setLayoutData(new GridData());\r
- lblName.setText("Choose a name either by searching or by entering it as free text:");\r
+ lblName.setText("Choose a name:");\r
\r
// Create 3-columned composite for name input\r
Composite nameComposite = new Composite(this, SWT.NONE);\r
\r
// Create name input\r
txtName = new Text(nameComposite, SWT.BORDER);\r
+ txtName.setEnabled(false);\r
txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
txtName.addModifyListener(new ModifyListener() {\r
public void modifyText(ModifyEvent e) {\r
clearName();\r
}\r
});\r
- \r
- // Create message re: editing names\r
- Label lblNewNameFeedback = new Label(this, SWT.NONE);\r
- lblNewNameFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
- lblNewNameFeedback.setFont(\r
- Resources.italicizeFont(lblNewNameFeedback.getFont()));\r
- lblNewNameFeedback.setText("Existing names can not be edited.");\r
}\r
\r
/**\r
/**\r
* \r
*/\r
- protected void popupSearch() {\r
-// Dialog dialog = new NameSearchDialog(getShell());\r
-// Object value = ((NameSearchDialog) dialog).open();\r
-// \r
-// if (value instanceof TaxonNameBase) {\r
-// setSavedName((TaxonNameBase<?, ?>) value);\r
-// }\r
- \r
- TaxonNameBase name = FilteredNameSelectionDialog.selectName(getShell());\r
+ protected void popupSearch() { \r
+ TaxonNameBase name = FilteredNameSelectionDialog.selectName(getShell(), savedName);\r
if(name != null){\r
setSavedName(name);\r
}\r
* @return\r
*/\r
public TaxonNameBase<?, ?> getName() {\r
- TaxonNameBase<?, ?> name = null;\r
- if (savedName != null) {\r
- name = savedName;\r
- } else {\r
- if (!txtName.getText().equals("")) {\r
- name = PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null);\r
- name.setTitleCache(txtName.getText());\r
- }\r
- }\r
- return name;\r
+ return savedName;\r
}\r
}
\ No newline at end of file
if (homotypicGroupOfAcceptedTaxon != null) {\r
List<Synonym> homotypicSynonyms = homotypicGroupOfAcceptedTaxon.getSynonymsInGroup(taxon.getSec());\r
for (Synonym synonym : homotypicSynonyms) {\r
-\r
- // Make sure synonym belongs to the taxon\r
- // TODO why? doesn't taxon.getHomotypicGroup.getSynonymsInGroup return synonyms of the taxon only? I would think so!\r
- if (synonym.getAcceptedTaxa().contains(taxon)) {\r
- createSynonym(synonym);\r
- }\r
+ createSynonym(synonym);\r
}\r
}\r
\r
// Draw heterotypic synonym groups\r
List<HomotypicalGroup> heterotypicSynonymGroups = taxon.getHeterotypicSynonymyGroups();\r
for (HomotypicalGroup homotypicalGroup : heterotypicSynonymGroups) {\r
- \r
- // Make sure this is not the taxon's homotypic group\r
- // TODO why? doesn't taxon.getHeterotypicSynonymyGroups return only the heterotypic synonymy groups of the taxon and not the homotypic group? I would think so!\r
- if (!homotypicalGroup.equals(homotypicGroupOfAcceptedTaxon)) {\r
\r
- List<Synonym> heterotypicSynonyms = homotypicalGroup.\r
- getSynonymsInGroup(taxon.getSec());\r
- for (Synonym synonym : heterotypicSynonyms) {\r
-\r
- // Make sure synonym belongs to the taxon \r
- // TODO why? doesn't taxon.getHeterotypicSynonymyGroups return synonyms of the taxon only? I would think so!\r
- if (synonym.getAcceptedTaxa().contains(taxon)) {\r
- createSynonym(synonym);\r
- }\r
- }\r
+ List<Synonym> heterotypicSynonyms = homotypicalGroup.\r
+ getSynonymsInGroup(taxon.getSec());\r
+ for (Synonym synonym : heterotypicSynonyms) {\r
+ createSynonym(synonym);\r
}\r
}\r
\r
\r
Label lblReference = new Label(this, SWT.NONE);\r
lblReference.setLayoutData(new GridData());\r
- lblReference.setText("Choose a reference either by searching or entering it as free text:");\r
+ lblReference.setText("Choose a reference:");\r
\r
// Create 3-columned composite for reference input\r
Composite refComposite = new Composite(this, SWT.NONE);\r
// Create reference input\r
txtReference = new Text(refComposite, SWT.BORDER);\r
txtReference.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ txtReference.setEnabled(false);\r
\r
// Create reference search button\r
Button btnSearchReference = new Button(refComposite, SWT.NONE);\r
clearReference();\r
}\r
});\r
- \r
- // Create message re: editing references\r
- Label lblNewRefFeedback = new Label(this, SWT.NONE);\r
- lblNewRefFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
- lblNewRefFeedback.setFont(\r
- Resources.italicizeFont(lblNewRefFeedback.getFont()));\r
- lblNewRefFeedback.setText("Existing references can only be edited in property sheet.");\r
\r
Label lblMicroref = new Label(this, SWT.NONE);\r
lblMicroref.setText("Enter reference detail (e.g., page no.):");\r
* \r
*/\r
protected void popupSearch() {\r
- ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(getShell());\r
+ ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(getShell(), savedReference);\r
if (reference != null) {\r
setSavedReference(reference);\r
}\r
* @return\r
*/\r
public ReferenceBase<?> getReference() {\r
- ReferenceBase<?> reference = null;\r
- if (savedReference != null) {\r
- reference = savedReference;\r
- } else {\r
- if (!txtReference.getText().equals("")) {\r
- reference = Generic.NewInstance();\r
- reference.setTitleCache(txtReference.getText());\r
- }\r
- }\r
- return reference;\r
+ return savedReference;\r
}\r
\r
public String getMicroReference() {\r
protected Vector<PropertyDescriptor> descriptors = new Vector<PropertyDescriptor>();\r
\r
protected void addDescriptor(String id) {\r
- \r
- // Reference search\r
- if (id.equals(P_ID_SEARCH)) {\r
-// descriptors.addElement(\r
-// new ReferenceSearchDescriptor(P_ID_SEARCH, P_SEARCH, getSearchType()) {\r
-// protected void saveReference(ReferenceBase reference) {\r
-// setPropertyValue(P_ID_SEARCH, reference);\r
-// }\r
-// });\r
- }\r
- \r
+ \r
// Editable cache\r
if (id.equals(P_ID_EDITABLECACHE)) {\r
descriptors.addElement(\r
}\r
\r
boolean isProtectedCache = name.isProtectedTitleCache();\r
-// boolean isProtectedCache = false;\r
\r
// Uninomial (aka Genus)\r
if (id.equals(P_ID_UNINOMIAL)) {\r
new PropertyDescriptor(P_ID_TAXONNAME, P_TAXONNAME));\r
} \r
if (id.equals(P_ID_TAXONSEC)) {\r
- descriptors.addElement(new ReferenceSearchDescriptor(P_ID_TAXONSEC, P_TAXONSEC, IReferenceSearch.BIBREF) {\r
+ descriptors.addElement(new ReferenceSearchDescriptor(P_ID_TAXONSEC, P_TAXONSEC, IReferenceSearch.BIBREF, taxonBase.getSec()) {\r
protected void saveReference(ReferenceBase reference) {\r
setPropertyValue(P_ID_TAXONSEC, reference);\r
}\r
// Reference search\r
if (id.equals(P_ID_SEARCH)) {\r
descriptors.addElement(\r
- new ReferenceSearchDescriptor(P_ID_SEARCH, P_SEARCH, getSearchType()) {\r
+ new ReferenceSearchDescriptor(P_ID_SEARCH, P_SEARCH, getSearchType(), reference) {\r
protected void saveReference(ReferenceBase reference) {\r
setPropertyValue(P_ID_SEARCH, reference);\r
}\r
if (id.equals(P_ID_PROTECT_CACHE)) {\r
descriptors.addElement(\r
new ComboBoxPropertyDescriptor(P_ID_PROTECT_CACHE, P_PROTECT_CACHE, \r
- new String[] {"no", "yes"}));\r
-// descriptors.addElement(\r
-// new CheckboxPropertyDescriptor(P_ID_PROTECT_CACHE, P_PROTECT_CACHE)); \r
+ new String[] {"no", "yes"})); \r
}\r
\r
// Reference type\r
abstract public class ReferenceSearchDescriptor extends PropertyDescriptor {\r
\r
int searchType;\r
+ private ReferenceBase existingReference;\r
\r
- public ReferenceSearchDescriptor(Object id, String displayName, int searchType) {\r
+ public ReferenceSearchDescriptor(Object id, String displayName, int searchType, ReferenceBase existingReference) {\r
super(id, displayName);\r
\r
this.searchType = searchType;\r
+ this.existingReference = existingReference;\r
}\r
\r
public CellEditor createPropertyEditor(Composite parent) {\r
protected Object openDialogBox(\r
Control cellEditorWindow) { \r
\r
- ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(cellEditorWindow.getShell());\r
+ ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(cellEditorWindow.getShell(), existingReference);\r
if (reference != null) {\r
saveReference(reference);\r
return new ReferencePropertySource(reference);\r
\r
package eu.etaxonomy.taxeditor.propertysheet.type.wizard;\r
\r
+import java.beans.PropertyChangeEvent;\r
+import java.beans.PropertyChangeListener;\r
+\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.databinding.observable.list.WritableList;\r
import org.eclipse.core.runtime.Assert;\r
import org.eclipse.jface.wizard.WizardPage;\r
import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.KeyAdapter;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.layout.GridData;\r
import org.eclipse.swt.layout.GridLayout;\r
import org.eclipse.swt.widgets.Button;\r
import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Label;\r
import org.eclipse.swt.widgets.Text;\r
\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.taxeditor.dialogs.FilteredNameSelectionDialog;\r
+import eu.etaxonomy.taxeditor.editor.name.NameSelectComposite;\r
import eu.etaxonomy.taxeditor.editor.reference.ReferenceSelectComposite;\r
-import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;\r
-import eu.etaxonomy.taxeditor.model.Resources;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
\r
/**\r
private TaxonNameBase<?, ?> savedName;\r
\r
private Text txtName;\r
- private Button btnClearName;\r
private Button btnRejected;\r
private Button btnConserved;\r
private Button btnLecto;\r
\r
private ReferenceSelectComposite referenceComposite;\r
\r
+ private NameSelectComposite nameComposite;\r
+\r
+ private boolean nameSelected;\r
+\r
/**\r
* @param typeDesignation\r
* @param name\r
Composite container = new Composite(parent, SWT.NULL);\r
container.setLayout(new GridLayout());\r
setControl(container);\r
- \r
- // Create name text\r
- final Label lblName = new Label(container, SWT.NONE);\r
- lblName.setText("Choose a name either by searching or entering it as free text:");\r
- \r
- // Create 3-columned composite for name\r
- Composite nameComposite = new Composite(container, SWT.NULL);\r
- nameComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
- GridLayout gridLayout = new GridLayout();\r
- gridLayout.numColumns = 3;\r
- gridLayout.marginHeight = 0;\r
- gridLayout.marginWidth = 0;\r
- nameComposite.setLayout(gridLayout);\r
- \r
- // Create name input\r
- // TODO replace w NameSelectComposite\r
- txtName = new Text(nameComposite, SWT.BORDER);\r
- txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
- txtName.addKeyListener(new KeyAdapter() {\r
- @Override\r
- public void keyReleased(KeyEvent e) {\r
- updatePage();\r
- } \r
- });\r
- \r
- // Create name search button\r
- Button btnSearchName = new Button(nameComposite, SWT.NONE);\r
- btnSearchName.setEnabled(true);\r
- btnSearchName.setLayoutData(new GridData());\r
- btnSearchName.setText("Search ...");\r
- btnSearchName.addSelectionListener(new SelectionAdapter() {\r
\r
- // Popup reference search\r
- public void widgetSelected(SelectionEvent e) {\r
- popupNameSearch();\r
+ // Create name input composite\r
+ nameComposite = new NameSelectComposite(container);\r
+ nameComposite.addPropertyChangeListener(new PropertyChangeListener() {\r
+ public void propertyChange(PropertyChangeEvent evt) {\r
+ setName();\r
}\r
});\r
-\r
- // Create clear name button\r
- btnClearName = new Button(nameComposite, SWT.NONE);\r
- btnClearName.setEnabled(false);\r
- btnClearName.setText("Clear");\r
- btnClearName.addSelectionListener(new SelectionAdapter() {\r
- \r
- // Clear selected reference\r
- public void widgetSelected(SelectionEvent e) {\r
- clearName();\r
- }\r
- });\r
-\r
- // Set text to name text if exists, disable ability to edit name\r
- if (typeDesignation != null && typeDesignation.getTypeName() != null) {\r
- \r
- savedName = typeDesignation.getTypeName();\r
- txtName.setText(savedName.getTitleCache());\r
- txtName.setEditable(false);\r
- \r
- btnClearName.setEnabled(false);\r
- btnSearchName.setEnabled(false);\r
- }\r
\r
- // Tell user when he is entering a new name\r
- Label lblNewNameFeedback = new Label(container, SWT.NONE);\r
- lblNewNameFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
- lblNewNameFeedback.setFont(\r
- Resources.italicizeFont(lblNewNameFeedback.getFont()));\r
- lblNewNameFeedback.setText("Existing names can not be edited.");\r
+ if (typeDesignation != null) {\r
+ nameComposite.setName(typeDesignation.getTypeName());\r
+ }\r
\r
// Create 2-columned composite for name\r
Composite booleansComposite = new Composite(container, SWT.NULL);\r
}\r
}\r
}\r
-\r
+ \r
/**\r
- * \r
*/\r
- protected void popupNameSearch() {\r
- // TODO delete this when FilteredSelectionDialog works\r
-// Dialog dialog = new NameSearchDialog(getShell());\r
-// Object value = ((NameSearchDialog) dialog).open();\r
-// \r
-// if (value instanceof TaxonNameBase) {\r
-// setSavedName((TaxonNameBase<?, ?>) value);\r
-// updatePage();\r
-// }\r
- \r
- setSavedName(FilteredNameSelectionDialog.selectName(getShell()));\r
+ private void setName() {\r
+ savedName = nameComposite.getName();\r
+ nameSelected = (savedName != null);\r
updatePage();\r
}\r
- \r
- /**\r
- * @param value\r
- */\r
- private void setSavedName(TaxonNameBase<?, ?> savedName) {\r
\r
- this.savedName = savedName;\r
- \r
- txtName.setText(savedName.getTitleCache());\r
- txtName.setEditable(false);\r
- \r
- btnClearName.setEnabled(true);\r
- }\r
- \r
/**\r
* \r
*/\r
protected void clearName() {\r
savedName = null;\r
- \r
- txtName.setText("");\r
- txtName.setEditable(true);\r
- \r
- btnClearName.setEnabled(false); \r
+ txtName.setText(""); \r
}\r
\r
@Override\r
}\r
\r
public boolean isPageComplete() {\r
- return (txtName.getText().length() > 0);\r
+ return nameComposite.getName() != null;\r
}\r
\r
private void updatePage() {\r
- \r
getWizard().getContainer().updateButtons();\r
}\r
\r