eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/messages.properties -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameEditorInput.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameTreeContentProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/TaxTreeContentProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/TaxonomicTreeContentProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/FavoritesTableViewer.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/FavoritesView.java -text
// layout.addView(IPageLayout.ID_PROBLEM_VIEW, IPageLayout.BOTTOM, 0.8f, editorArea);
IFolderLayout folderLayoutLeft = layout.createFolder("leftfolder", IPageLayout.LEFT, 0.3f, editorArea);
+
folderLayoutLeft.addView(TaxonomicTreeView.ID);
folderLayoutLeft.addView(SearchView.ID);
public static final String CODE_PREFERENCE_ICZN = "iczn";\r
public static final String DEFAULT_CODE_PREFERENCE = CODE_PREFERENCE_ICBN;\r
public static final String INITIALIZED = "initialized";\r
+ public static final String INITIALIZE_W_TESTDATA = "init_w_testdata";\r
\r
/* ***************************************************************************************\r
STRINGS\r
************************************************************************************** */\r
public static final String FEATURE_PREFERENCE = "feature_preference";\r
public static final String RANK_PREFERENCE = "rank_preference";\r
+;\r
\r
}\r
plugin = this;\r
\r
boolean initDatastore = false;\r
-\r
+ \r
// If the preferences INITIALIZED has not been set, the IF clause\r
// will return false, i.e. datastore will be initialized first\r
// time the application is run after being installed.\r
- boolean initialized = getPreferenceStore()\r
- .getBoolean(ITaxEditorConstants.INITIALIZED);\r
- \r
-// initialized = false; // to re-init db, uncomment this line\r
+ boolean initialized = false;\r
+ if (getPreferenceStore()\r
+ .contains(ITaxEditorConstants.INITIALIZED)) {\r
+ initialized = getPreferenceStore().getBoolean(\r
+ ITaxEditorConstants.INITIALIZED);\r
+ }\r
+ \r
if (!initialized) {\r
+ \r
logger.warn("Initializing datastore");\r
- initDatastore = true;\r
+ \r
+ dbSchemaValidation = DbSchemaValidation.CREATE;\r
+ \r
+ if (getPreferenceStore().getBoolean(\r
+ ITaxEditorConstants.INITIALIZE_W_TESTDATA)) {\r
+ initDatastore();\r
+ getPreferenceStore().setValue(\r
+ ITaxEditorConstants.INITIALIZE_W_TESTDATA, false); \r
+ }\r
\r
getPreferenceStore()\r
.setValue(ITaxEditorConstants.INITIALIZED, true);\r
- } else {\r
- logger.warn("Datastore already initialized");\r
}\r
\r
- if (initDatastore) {\r
- dbSchemaValidation = DbSchemaValidation.CREATE;\r
- initDatastore();\r
- }\r
-\r
- cdmApp = getCdmApp();\r
-\r
-// if (initDatastore) {\r
-// initDatastore();\r
-// }\r
- \r
+ cdmApp = getCdmApp(); \r
}\r
\r
/*\r
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)\r
*/\r
public void stop(BundleContext context) throws Exception {\r
- stopTransaction();\r
+ commitTransaction();\r
plugin = null;\r
super.stop(context);\r
\r
try {\r
ICdmDataSource ds =\r
CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "");\r
-// CdmDataSource.NewMySqlInstance("192.168.2.10", "cdm_test_andreasM2", "edit", "wp5");\r
+// CdmDataSource.NewMySqlInstance("192.168.2.10", "cdm_editor_test1", "edit", "wp5");\r
\r
- // Is this the problem?\r
cdmApp = CdmApplicationController\r
.NewInstance(ds, dbSchemaValidation);\r
- \r
- \r
+ \r
// cdmApp = CdmApplicationController\r
// .NewInstance(dbSchemaValidation);\r
\r
startTransaction();\r
- Object txStatus = cdmApp.startTransaction();\r
+// Object txStatus = cdmApp.startTransaction();\r
+ \r
// cdmApp.commitTransaction((TransactionStatus) txStatus);\r
\r
} catch (DataSourceNotFoundException e) {\r
}\r
}\r
\r
- public void stopTransaction() {\r
+ public void commitTransaction() {\r
if (txStatus != null) {\r
cdmApp.commitTransaction(txStatus);\r
txStatus = null;\r
colorMap = new HashMap<String, Color>();\r
\r
colorMap.put(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR,\r
- new Color(null, 246, 246, 246));\r
+ new Color(null, 240, 240, 240));\r
}\r
return colorMap;\r
}\r
\r
public Set<Taxon> getSessionRootTaxa() {\r
if (sessionRootTaxa == null) {\r
+ \r
sessionRootTaxa = new HashSet<Taxon>();\r
sessionRootTaxa.addAll(getCdmApp().getTaxonService().getRootTaxa(\r
getSec(), null, false));\r
// sessionRootTaxa.addAll(getCdmApp().getTaxonService().getRootTaxa(\r
// getSec(), null, true)); \r
addSessionTaxa(sessionRootTaxa);\r
+ \r
}\r
return sessionRootTaxa;\r
}\r
\r
// BUG deleted taxon were re-appearing as NULL children\r
Set<Taxon> childTaxa = new HashSet<Taxon>();\r
+ \r
+// TransactionStatus tx = getCdmApp().startTransaction();\r
+// getCdmApp().getTaxonService().saveTaxon(parentTaxon);\r
for (Taxon taxon : parentTaxon.getTaxonomicChildren()) {\r
if (taxon != null) {\r
childTaxa.add(taxon);\r
}\r
}\r
+// getCdmApp().commitTransaction(tx);\r
+ \r
getTaxonomicChildrenMap().put(parentTaxon, childTaxa);\r
}\r
}\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
-import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
/**\r
* Delete this taxon from the CDM\r
TaxonRelationshipType type = taxonRelation.getType();\r
Taxon fromTaxon = taxonRelation.getFromTaxon();\r
\r
- // BUG beware of phantom taxon relations with a "NULL" fromTaxon\r
+ // Beware of phantom taxon relations with a "NULL" fromTaxon\r
if (fromTaxon == null) {\r
continue;\r
}\r
import org.eclipse.ui.IEditorPart;\r
import org.eclipse.ui.PartInitException;\r
\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.UiUtil;\r
import eu.etaxonomy.taxeditor.actions.cdm.SaveTaxonAction;\r
import eu.etaxonomy.taxeditor.editor.SelectTaxonDialog;\r
+import eu.etaxonomy.taxeditor.editor.name.IterableSynonymyList;\r
import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
/**\r
null, null);\r
\r
// TODO move any children, descriptions, synonyms\r
- // TODO delete taxon from CDM, tree, recent names list \r
+ for (TaxonDescription description: oldTaxon.getDescriptions()) {\r
+ destinationTaxon.addDescription(description);\r
+ oldTaxon.removeDescription(description);\r
+ }\r
+ \r
+ for (TaxonRelationship fromRelation : oldTaxon.getRelationsFromThisTaxon()) {\r
+ fromRelation.setFromTaxon(destinationTaxon);\r
+ }\r
+ \r
+ for (TaxonRelationship toRelation : oldTaxon.getRelationsToThisTaxon()) {\r
+ toRelation.setToTaxon(destinationTaxon);\r
+ }\r
+ \r
+// if (!TaxEditorPlugin.getDefault().getObservableRecentNamesList().\r
+// contains(oldTaxon)) { \r
+ TaxEditorPlugin.getDefault().getObservableRecentNamesList().\r
+ remove(oldTaxon);\r
+// }\r
+ \r
+ TaxEditorPlugin.getDefault().removeSessionTaxon(oldTaxon); \r
\r
// Close open editor for oldTaxon without forcing save.\r
// User has already saved or declined to do so above.\r
.getLogger(OpenTaxonEditorAction.class);\r
\r
private static String editTaxonText = "Edit taxon";\r
- private static String newTaxonText = "Open new taxon";\r
+ private static String newTaxonText = "Add new taxon";\r
// private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
// .getImageDescriptor(ITaxEditorConstants.OPEN_TAXON_ICON);\r
private ImageDescriptor image = null;\r
\r
draggableLabel = new Label(this, SWT.NONE);\r
draggableLabel.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
- draggableLabel.setLayoutData(new TableWrapData(TableWrapData.CENTER, TableWrapData.MIDDLE));\r
+ draggableLabel.setLayoutData(new TableWrapData(TableWrapData.CENTER, TableWrapData.TOP));\r
\r
setDraggableControl(draggableLabel);\r
}\r
import org.eclipse.ui.IEditorSite;\r
import org.eclipse.ui.PartInitException;\r
import org.eclipse.ui.part.MultiPageEditorPart;\r
+import org.springframework.transaction.TransactionStatus;\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.actions.cdm.SaveTaxonAction;\r
import eu.etaxonomy.taxeditor.editor.description.TaxonDescriptionEditorView;\r
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditorView;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
/**\r
* \r
\r
private Taxon taxon;\r
private boolean dirty;\r
+\r
+ private TransactionStatus tx;\r
\r
+ public MultiPageTaxonEditor() {\r
+ super();\r
+// tx = CdmUtil.startTransaction();\r
+ }\r
+ \r
+ @Override\r
+ public void dispose() {\r
+ super.dispose();\r
+// CdmUtil.commitTransaction(tx);\r
+ }\r
+ \r
@Override\r
protected void createPages() {\r
\r
\r
// TODO lazy create\r
addPage(1, new TaxonDescriptionEditorView(), getEditorInput());\r
-// addPage(1, new EmptyEditorView(), getEditorInput());\r
setPageText(1, "Descriptive");\r
\r
addPage(2, new EmptyEditorView(), getEditorInput());\r
@Override\r
public void doSave(IProgressMonitor monitor) {\r
// monitor.beginTask(name, totalWork)\r
- logger.warn("Calling doSave");\r
new SaveTaxonAction(taxon).run();\r
+// CdmUtil.commitTransaction(tx);\r
setDirty(false);\r
+ tx = CdmUtil.startTransaction();\r
+ CdmUtil.getTaxonService().saveTaxon(taxon);\r
}\r
\r
private void setDirty(boolean dirty) {\r
taxon = null;\r
}\r
\r
+ // Save taxon to put it into this transaction\r
+// CdmUtil.getTaxonService().saveTaxon(taxon);\r
+ \r
// Listen for name changes, \r
// change tab for this taxon editor accordingly\r
taxon.addPropertyChangeListener("name", new PropertyChangeListener() {\r
NonViralName nonViralName = (NonViralName) taxonBase.getName();\r
if (nonViralName != null) {\r
// CdmUtil.parseFullName(nonViralName, text, null, true);\r
- CdmUtil.parseFullReference(nonViralName, text, null, true);\r
+ \r
+ // Changed makeEmpty from true -> false\r
+// CdmUtil.parseFullReference(nonViralName, text, null, true);\r
+ CdmUtil.parseFullReference(nonViralName, text, null, false);\r
\r
nameViewer.setShowError(nonViralName.getHasProblem());\r
}\r
import java.util.SortedSet;\r
\r
import org.apache.log4j.Logger;\r
+import org.springframework.transaction.TransactionStatus;\r
\r
import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
import eu.etaxonomy.cdm.api.service.INameService;\r
\r
public static SortedSet<Rank> getRanks() {\r
if (ranks == null) {\r
+// TransactionStatus tx = startReadOnlyTransaction();\r
OrderedTermVocabulary<Rank> rankVocabulary = TaxEditorPlugin.getDefault().getRankVocabulary();\r
ranks = rankVocabulary.getOrderedTerms(null);\r
+// commitTransaction(tx);\r
}\r
return ranks;\r
}\r
return resultsSet;\r
}\r
\r
-\r
+ public static TransactionStatus startTransaction() {\r
+ return TaxEditorPlugin.getDefault().getCdmApp().startTransaction();\r
+ }\r
+ \r
+ public static TransactionStatus startReadOnlyTransaction() {\r
+ return TaxEditorPlugin.getDefault().getCdmApp().startTransaction(true);\r
+ }\r
+ \r
+ public static void commitTransaction(TransactionStatus tx) {\r
+ TaxEditorPlugin.getDefault().getCdmApp().commitTransaction(tx);\r
+ }\r
}\r
+++ /dev/null
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.taxeditor.model;\r
-\r
-import java.util.Set;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.core.databinding.observable.Realm;\r
-import org.eclipse.core.databinding.observable.list.IListChangeListener;\r
-import org.eclipse.core.databinding.observable.list.IObservableList;\r
-import org.eclipse.core.databinding.observable.list.ListChangeEvent;\r
-import org.eclipse.core.databinding.observable.list.ListDiffEntry;\r
-import org.eclipse.core.databinding.observable.list.WritableList;\r
-import org.eclipse.core.databinding.observable.set.IObservableSet;\r
-import org.eclipse.core.databinding.observable.set.WritableSet;\r
-import org.eclipse.core.runtime.Assert;\r
-import org.eclipse.jface.databinding.swt.SWTObservables;\r
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
-import org.eclipse.jface.viewers.ITreeContentProvider;\r
-import org.eclipse.jface.viewers.TreeViewer;\r
-import org.eclipse.jface.viewers.Viewer;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.ui.model.WorkbenchContentProvider;\r
-\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
-\r
-/**\r
- * Adds tree functionality (get parent, get children) to ObservableListContentProvider;\r
- * much code was copied almost in tact from parent class due to\r
- * viewer type restrictions and private settings of variables and methods\r
- * \r
- * @author p.ciardelli\r
- * @created 14.05.2008\r
- * @version 1.0\r
- */\r
-public class NameTreeContentProvider extends ObservableListContentProvider \r
-// implements ILazyTreeContentProvider {\r
- implements ITreeContentProvider {\r
- private static final Logger logger = Logger.getLogger(NameTreeContentProvider.class);\r
-\r
- public Object[] getChildren(Object parentElement) {\r
- Taxon parentTaxon = (Taxon) parentElement;\r
-// Set<Taxon> children = TaxEditorPlugin.getDefault().getTaxonomicChildren(parentTaxon);\r
- \r
- Set<Taxon> children = parentTaxon.getTaxonomicChildren();\r
-// for (Taxon childTaxon : children) {\r
-// observableList.add(childTaxon);\r
-// }\r
- // TODO: suppress notify\r
- observableList.addAll(children);\r
- return children == null ? new Object[0] : children.toArray();\r
- }\r
-\r
- @Override\r
- public Object getParent(Object element) {\r
- return ((Taxon) element).getTaxonomicParent();\r
- }\r
-\r
- public boolean hasChildren(Object element) {\r
- return ((Taxon) element).hasTaxonomicChildren();\r
- }\r
- \r
- private IObservableList observableList;\r
-\r
- private Viewer viewer;\r
-\r
- private IListChangeListener listener = new IListChangeListener() {\r
- public void handleListChange(ListChangeEvent event) {\r
- if (viewer.getControl().isDisposed()) {\r
- return;\r
- }\r
- ListDiffEntry[] differences = event.diff.getDifferences();\r
- for (int i = 0; i < differences.length; i++) {\r
- ListDiffEntry entry = differences[i];\r
- \r
- if (entry.isAddition()) {\r
- \r
- knownElements.add(entry.getElement());\r
- \r
- Taxon newTaxon = (Taxon) entry.getElement();\r
- Taxon parent = newTaxon.getTaxonomicParent();\r
- ((TreeViewer) viewer).add(parent, newTaxon);\r
- \r
- } else {\r
-\r
- knownElements.remove(entry.getElement());\r
- \r
- ((TreeViewer) viewer).remove(entry.getElement());\r
- }\r
- }\r
- }\r
- };\r
-\r
- private IObservableSet knownElements;\r
-\r
- /**\r
- * \r
- */\r
- public NameTreeContentProvider() {\r
- \r
- Assert.isNotNull(Realm.getDefault());\r
- \r
- observableList = new WritableList(SWTObservables.getRealm(Display.getDefault()));\r
- knownElements = new WritableSet(SWTObservables.getRealm(Display.getDefault()));\r
- }\r
-\r
- public Object[] getElements(Object inputElement) {\r
- return observableList.toArray();\r
- }\r
-\r
- public void dispose() {\r
- observableList.removeListChangeListener(listener);\r
- }\r
-\r
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
- this.viewer = viewer;\r
-\r
- if (newInput != null && !(newInput instanceof IObservableList)) {\r
- throw new IllegalArgumentException(\r
- "This content provider only works with input of type IObservableList"); //$NON-NLS-1$\r
- }\r
-\r
- setInput((IObservableList) newInput);\r
- }\r
-\r
- /**\r
- * @param list\r
- */\r
- private void setInput(IObservableList list) {\r
- \r
-// list = null;\r
- \r
- if (list == null) {\r
- list = new WritableList(SWTObservables.getRealm(Display.getDefault()));\r
-// list.addAll(TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().getRootTaxa(null));\r
- }\r
-\r
- if (observableList != null) {\r
- observableList.removeListChangeListener(listener);\r
- }\r
- observableList = list; // this sets observablelist to TaxEditorPlugin.getDefault().getObservableTaxonTreeList()\r
- /*\r
- * So then the question is: what's the first call that gets made to the content provider?\r
- */\r
- observableList.addListChangeListener(listener);\r
- \r
- knownElements.clear(); \r
-// knownElements.addAll(list);\r
- knownElements.addAll(TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().getRootTaxa(null));\r
-\r
- }\r
-\r
- /**\r
- * @return the set of elements known to this content provider. Label providers may track\r
- * this set if they need to be notified about additions before the viewer sees the added\r
- * element, and notified about removals after the element was removed from the viewer.\r
- */\r
- public IObservableSet getKnownElements() {\r
- return knownElements;\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/**\r
- * Copyright (C) 2007 EDIT\r
- * European Distributed Institute of Taxonomy \r
- * http://www.e-taxonomy.eu\r
- * \r
- * The contents of this file are subject to the Mozilla Public License Version 1.1\r
- * See LICENSE.TXT at the top of this package for the full license terms.\r
- */\r
-\r
-package eu.etaxonomy.taxeditor.model;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.jface.viewers.ITreeContentProvider;\r
-import org.eclipse.jface.viewers.Viewer;\r
-\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 27.06.2008\r
- * @version 1.0\r
- */\r
-public class TaxTreeContentProvider implements ITreeContentProvider {\r
- private static final Logger logger = Logger\r
- .getLogger(TaxTreeContentProvider.class);\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)\r
- */\r
- @Override\r
- public Object[] getChildren(Object parentElement) {\r
- \r
- if (parentElement instanceof Taxon) {\r
- return getTaxonChildren((Taxon) parentElement).toArray();\r
- }\r
- \r
- if (!(parentElement instanceof Collection)) {\r
- throw new IllegalArgumentException(\r
- "getChildren() expects either a Collection or a Taxon object."); //$NON-NLS-1$ \r
- }\r
- \r
- List<Taxon> children = new ArrayList<Taxon>();\r
- for (Object parent : (Collection) parentElement) {\r
- if (!(parent instanceof Taxon)) {\r
- throw new IllegalArgumentException(\r
- "parentElement Collection can only contain Taxon objects."); //$NON-NLS-1$ \r
- }\r
- \r
- children.addAll(getTaxonChildren((Taxon) parent));\r
- }\r
- return children.toArray();\r
- }\r
-\r
- public Set<Taxon> getTaxonChildren(Taxon parentTaxon) {\r
-\r
- return TaxEditorPlugin.getDefault().getSessionTaxonomicChildren(\r
- parentTaxon);\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)\r
- */\r
- @Override\r
- public Object getParent(Object element) {\r
- if (!(element instanceof Taxon)) {\r
- throw new IllegalArgumentException(\r
- "getParent() expects a Taxon object."); //$NON-NLS-1$ \r
- }\r
- return ((Taxon) element).getTaxonomicParent();\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)\r
- */\r
- @Override\r
- public boolean hasChildren(Object element) {\r
- if (!(element instanceof Taxon)) {\r
- throw new IllegalArgumentException(\r
- "getParent() expects a Taxon object."); //$NON-NLS-1$ \r
- }\r
- \r
- // This seems a bit buggy\r
-// return ((Taxon) element).hasTaxonomicChildren();\r
- \r
- // Replace with this for now:\r
- return getChildren(element).length > 0;\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)\r
- */\r
- @Override\r
- public Object[] getElements(Object inputElement) {\r
- \r
- // BIG QUESTION: should getElements return only root taxa, or all taxa?\r
- // CONFLICTING INFO ONLINE!!!\r
-// return TaxEditorPlugin.getDefault().getObservableSessionTaxa().toArray();\r
- return TaxEditorPlugin.getDefault().getSessionRootTaxa().toArray();\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see org.eclipse.jface.viewers.IContentProvider#dispose()\r
- */\r
- @Override\r
- public void dispose() {}\r
-\r
- /*\r
- * (non-Javadoc)\r
- * \r
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,\r
- * java.lang.Object, java.lang.Object)\r
- */\r
- @Override\r
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
- // TODO Auto-generated method stub\r
- }\r
-}
\ No newline at end of file
* The contents of this file are subject to the Mozilla Public License Version 1.1\r
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
-\r
package eu.etaxonomy.taxeditor.model;\r
\r
import java.util.ArrayList;\r
import java.util.Set;\r
\r
import org.apache.log4j.Logger;\r
-import org.eclipse.core.databinding.observable.set.IObservableSet;\r
-import org.eclipse.core.databinding.observable.set.ISetChangeListener;\r
-import org.eclipse.core.databinding.observable.set.SetChangeEvent;\r
import org.eclipse.jface.viewers.ITreeContentProvider;\r
-import org.eclipse.jface.viewers.TreeViewer;\r
import org.eclipse.jface.viewers.Viewer;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
- * An implementation of ITreeContentProvider which adds taxa displayed in the tree\r
- * to the Editor session on an as-loaded basis. Listens for any changes to the \r
- * set of session taxa, updates the TreeViewer accordingly.\r
- * <p> \r
- * Could be re-written to implement ILazyTreeContentProvider at some point in the future. \r
- * NO: sorting not possible with lazy tree.\r
- * \r
* @author p.ciardelli\r
- * @created 28.05.2008\r
+ * @created 27.06.2008\r
* @version 1.0\r
*/\r
public class TaxonomicTreeContentProvider implements ITreeContentProvider {\r
private static final Logger logger = Logger\r
.getLogger(TaxonomicTreeContentProvider.class);\r
\r
- TreeViewer viewer;\r
- \r
- /* (non-Javadoc)\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)\r
*/\r
@Override\r
public Object[] getChildren(Object parentElement) {\r
- if (!(parentElement instanceof Taxon)) {\r
- logger.error("Method getChildren() expects a parentElement of type Taxon");\r
- return new Object[0];\r
+ \r
+ if (parentElement instanceof Taxon) {\r
+ return getTaxonChildren((Taxon) parentElement).toArray();\r
}\r
-\r
- Taxon parentTaxon = (Taxon) parentElement;\r
-\r
- // If this does not return null, the taxon's children have already\r
- // been requested during this session\r
- Set<Taxon> childTaxa = TaxEditorPlugin.getDefault()\r
- .getSessionTaxonomicChildren(parentTaxon);\r
- if (childTaxa == null) {\r
- \r
- removeSessionTaxaListener();\r
- \r
- // Request this taxon's children for the first time \r
- // during this session\r
- childTaxa = parentTaxon.getTaxonomicChildren();\r
- TaxEditorPlugin.getDefault().addSessionTaxa(childTaxa);\r
+ \r
+ if (!(parentElement instanceof Collection)) {\r
+ throw new IllegalArgumentException(\r
+ "getChildren() expects either a Collection or a Taxon object."); //$NON-NLS-1$ \r
+ }\r
+ \r
+ List<Taxon> children = new ArrayList<Taxon>();\r
+ for (Object parent : (Collection) parentElement) {\r
+ if (!(parent instanceof Taxon)) {\r
+ throw new IllegalArgumentException(\r
+ "parentElement Collection can only contain Taxon objects."); //$NON-NLS-1$ \r
+ }\r
\r
- addSessionTaxaListener();\r
+ children.addAll(getTaxonChildren((Taxon) parent));\r
}\r
+ return children.toArray();\r
+ }\r
+\r
+ public Set<Taxon> getTaxonChildren(Taxon parentTaxon) {\r
\r
- logger.warn("returning " + childTaxa.toString());\r
- return childTaxa.toArray();\r
+ return TaxEditorPlugin.getDefault().getSessionTaxonomicChildren(\r
+ parentTaxon);\r
}\r
\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)\r
+ */\r
@Override\r
public Object getParent(Object element) {\r
if (!(element instanceof Taxon)) {\r
- return null; \r
+ throw new IllegalArgumentException(\r
+ "getParent() expects a Taxon object."); //$NON-NLS-1$ \r
}\r
return ((Taxon) element).getTaxonomicParent();\r
}\r
\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)\r
+ */\r
@Override\r
public boolean hasChildren(Object element) {\r
if (!(element instanceof Taxon)) {\r
- return false; \r
+ throw new IllegalArgumentException(\r
+ "getParent() expects a Taxon object."); //$NON-NLS-1$ \r
}\r
- return ((Taxon) element).hasTaxonomicChildren();\r
+ \r
+ return getChildren(element).length > 0;\r
}\r
\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)\r
+ */\r
@Override\r
public Object[] getElements(Object inputElement) {\r
-// logger.warn("Get elements for " + inputElement.toString() + " with class " + inputElement.getClass());\r
-// List elements = new ArrayList();\r
-// if (inputElement instanceof Collection) {\r
-// logger.warn("instanceof collection");\r
-//// elements.addAll((Collection) inputElement);\r
-// for (Object parentElement : (Collection) inputElement) {\r
-// if (parentElement instanceof Taxon) {\r
-// for (Object childElement : getChildren(parentElement)) {\r
-// elements.add(childElement);\r
-// }\r
-// }\r
-// }\r
-// }\r
-//// return TaxEditorPlugin.getDefault().getSessionRootTaxa().toArray();\r
-//// return getChildren(inputElement);\r
-// logger.warn("elements have " + elements.size());\r
-// return elements.toArray();\r
- return null;\r
+ \r
+ // BIG QUESTION: should getElements return only root taxa, or all taxa?\r
+ // CONFLICTING INFO ONLINE!!!\r
+// return TaxEditorPlugin.getDefault().getObservableSessionTaxa().toArray();\r
+ \r
+ return TaxEditorPlugin.getDefault().getSessionRootTaxa().toArray();\r
}\r
\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()\r
+ */\r
@Override\r
- public void dispose() {\r
- removeSessionTaxaListener();\r
- }\r
+ public void dispose() {}\r
\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,\r
+ * java.lang.Object, java.lang.Object)\r
+ */\r
@Override\r
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
- if (!(viewer instanceof TreeViewer)) {\r
- throw new IllegalArgumentException(\r
- "This content provider only works with viewer of type TreeViewer"); //$NON-NLS-1$ \r
- }\r
- this.viewer = (TreeViewer) viewer;\r
- \r
- if (newInput != null && !(newInput instanceof Collection)) {\r
- throw new IllegalArgumentException(\r
- "This content provider only works with input of type Collection<Taxon>"); //$NON-NLS-1$\r
- }\r
- \r
- try {\r
- Collection<Taxon> input = (Collection<Taxon>) newInput;\r
- setInput(input);\r
- } catch (ClassCastException e) {\r
- throw new IllegalArgumentException(\r
- "This content provider only works with input of type Collection<Taxon>"); //$NON-NLS-1$\r
- }\r
+ // TODO Auto-generated method stub\r
}\r
- \r
- private void setInput(Collection<Taxon> input) {\r
- \r
- removeSessionTaxaListener();\r
- \r
- if (input != null) {\r
- TaxEditorPlugin.getDefault().addSessionTaxa(input);\r
- }\r
-\r
- addSessionTaxaListener();\r
- }\r
-\r
- private IObservableSet getObservableSessionTaxonSet() {\r
- return TaxEditorPlugin.getDefault().getObservableSessionTaxa();\r
- }\r
- \r
- private void addSessionTaxaListener() {\r
- getObservableSessionTaxonSet().addSetChangeListener(listener);\r
- }\r
- \r
- private void removeSessionTaxaListener() {\r
- getObservableSessionTaxonSet().removeSetChangeListener(listener);\r
- }\r
- \r
- private ISetChangeListener listener = new ISetChangeListener() {\r
- @Override\r
- public void handleSetChange(SetChangeEvent event) {\r
- if (viewer.getControl().isDisposed()) {\r
- return;\r
- }\r
- for (Object addition : event.diff.getAdditions()) {\r
- if (addition instanceof Taxon) {\r
- Taxon taxon = (Taxon) addition;\r
- Taxon parentTaxon = taxon.getTaxonomicParent();\r
- if (parentTaxon == null) {\r
- \r
- // If a new root item has been added, \r
- // set it as the viewer's input\r
- List<Taxon> newInput = new ArrayList<Taxon>();\r
- newInput.add(taxon);\r
- viewer.setInput(newInput);\r
-// viewer.setInput(TaxEditorPlugin.getDefault().getSessionRootTaxa());\r
- } else {\r
- viewer.add(parentTaxon, taxon);\r
- }\r
- }\r
- }\r
- for (Object removal : event.diff.getRemovals()) {\r
- if (removal instanceof Taxon) {\r
- Taxon taxon = (Taxon) removal; \r
- viewer.remove(taxon);\r
- }\r
- }\r
-// viewer.getControl().setRedraw(true);\r
- viewer.refresh();\r
- }\r
- };\r
-}\r
+}
\ No newline at end of file
favoritesLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
favoritesLabel.setText("Drag favorite elements into this area for easy access later.");\r
\r
+ // TEMPORARY PENDING IMPLEMENTATION - Disable visible fields\r
+ favoritesComposite.setEnabled(false);\r
+ favoritesLabel.setEnabled(false);\r
+ \r
new FavoritesTableViewer(favoritesComposite); \r
\r
createActions();\r
final Button searchButton = new Button(searchComposite, SWT.NONE);\r
searchButton.setText("Search");\r
\r
+ // TEMPORARY PENDING IMPLEMENTATION - Disable visible fields\r
+ searchComposite.setEnabled(false);\r
+ searchButton.setEnabled(false);\r
+ \r
createActions();\r
initializeToolBar();\r
initializeMenu();\r
*/\r
@Override\r
public void createPartControl(Composite parent) {\r
- \r
+ \r
parent.setLayout(new FillLayout());\r
GridLayout gridLayout = new GridLayout();\r
gridLayout.horizontalSpacing = 0;\r
}\r
\r
// Create tree\r
+ \r
treeViewer = new TaxonomicTreeViewer(taxTreeComposite);\r
\r
// TODO move these into this class\r
import org.eclipse.swt.dnd.DropTargetAdapter;\r
import org.eclipse.swt.dnd.DropTargetEvent;\r
import org.eclipse.swt.dnd.Transfer;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.graphics.Point;\r
import org.eclipse.swt.graphics.Rectangle;\r
import org.eclipse.swt.layout.FillLayout;\r
import org.eclipse.swt.widgets.Shell;\r
import org.eclipse.swt.widgets.Tree;\r
import org.eclipse.swt.widgets.TreeItem;\r
+import org.springframework.transaction.TransactionStatus;\r
\r
-import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
-import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
import eu.etaxonomy.taxeditor.editor.name.IterableSynonymyList;\r
import eu.etaxonomy.taxeditor.model.CdmUtil;\r
-import eu.etaxonomy.taxeditor.model.TaxTreeContentProvider;\r
+import eu.etaxonomy.taxeditor.model.TaxonomicTreeContentProvider;\r
\r
/**\r
* Taxon tree viewer which responds to events within individual taxa.\r
* Set up content providers and viewer input\r
*/\r
private void createContent() {\r
- // IContentProvider viewerContentProviderList = new\r
- // TaxonomicTreeContentProvider();\r
-\r
+ \r
// Yet another custom content provider ...\r
- IContentProvider viewerContentProviderList = new TaxTreeContentProvider();\r
+ IContentProvider viewerContentProviderList = new TaxonomicTreeContentProvider();\r
this.setContentProvider(viewerContentProviderList);\r
\r
// Label provider that listens for changes to name cache\r
IObservableSet observableTaxonSet = TaxEditorPlugin.getDefault()\r
.getObservableSessionTaxa();\r
- this\r
- .setLabelProvider(new TaxonomicTreeLabelProvider(\r
+ this.setLabelProvider(new TaxonomicTreeLabelProvider(\r
observableTaxonSet));\r
\r
// TaxonTreeList added to every time a node is opened with its\r
import org.eclipse.swt.SWT;\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.ui.IWorkbenchPreferencePage;\r
\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.UiUtil;\r
\r
/**\r
* @author p.ciardelli\r
\r
public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.initdb";\r
\r
- private boolean doReinitialize;\r
+ private Button btnInit;\r
+ private Button btnTestData;\r
\r
public InitializeDbPreferences() {\r
super();\r
Composite container = new Composite(parent, SWT.NULL);\r
container.setLayout(new GridLayout());\r
\r
- final Button btnInit = new Button(container, SWT.CHECK);\r
+ btnInit = new Button(container, SWT.CHECK);\r
+ btnInit.setText("Initialize datastore on next application start");\r
btnInit.addSelectionListener(new SelectionAdapter() {\r
- public void widgetSelected(final SelectionEvent e) {\r
- setDoReinitialize(btnInit.getSelection());\r
+\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ if (btnInit.getSelection() == true) {\r
+ \r
+ // Enable test data option\r
+ btnTestData.setEnabled(true);\r
+ \r
+ } else {\r
+ \r
+ // Disable test data option, set selected to "false"\r
+ btnTestData.setEnabled(false);\r
+ btnTestData.setSelection(false);\r
+ }\r
}\r
+ \r
});\r
- btnInit.setText("Initialize datastore on next application start");\r
- \r
+\r
+ btnTestData = new Button(container, SWT.CHECK);\r
+ btnTestData.setEnabled(false);\r
+ final GridData gridData = new GridData();\r
+ gridData.horizontalIndent = 20;\r
+ btnTestData.setLayoutData(gridData);\r
+ btnTestData.setText("Initialize with Palmweb test data");\r
\r
return container;\r
}\r
* Initialize the preference page\r
*/\r
public void init(IWorkbench workbench) {\r
- setPreferenceStore(TaxEditorPlugin.getDefault().getPreferenceStore());\r
+ setPreferenceStore(UiUtil.getPrefStore());\r
}\r
\r
- public boolean performOk() {\r
- logger.warn("Setting init'ed to " + doReinitialize);\r
- TaxEditorPlugin.getDefault().getPreferenceStore().\r
- setValue(ITaxEditorConstants.INITIALIZED, !doReinitialize);\r
- return true;\r
+ @Override\r
+ protected void performDefaults() {\r
+ btnInit.setSelection(false);\r
+ btnTestData.setSelection(false);\r
+ super.performDefaults();\r
}\r
\r
- private void setDoReinitialize(boolean doReinitialize) {\r
- this.doReinitialize = doReinitialize;\r
+ @Override \r
+ public boolean performOk() {\r
+ boolean doReinitialize = !(btnInit.getSelection());\r
+ boolean doInitTestdata = btnTestData.getSelection();\r
+ \r
+ UiUtil.getPrefStore().setValue(ITaxEditorConstants.INITIALIZED, doReinitialize);\r
+ UiUtil.getPrefStore().setValue(ITaxEditorConstants.INITIALIZE_W_TESTDATA, doInitTestdata); \r
+ return true;\r
}\r
}\r