-/**\r
- * \r
- */\r
-package eu.etaxonomy.taxeditor.editor.view.descriptive;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.Map;\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.description.DescriptionBase;\r
-import eu.etaxonomy.cdm.model.description.FeatureTree;\r
-import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
-import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
-import eu.etaxonomy.taxeditor.store.TermStore;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @author n.hoffmann\r
- */\r
-public class DescriptiveContentProvider implements ITreeContentProvider {\r
- private static final Logger logger = Logger\r
- .getLogger(DescriptiveContentProvider.class);\r
-\r
- private static final Object[] NO_CHILDREN = new Object[0];\r
- private Map<TaxonDescription, FeatureNodeContainer> featureNodeContainerCache;\r
- \r
- public DescriptiveContentProvider(Map<TaxonDescription, FeatureNodeContainer> featureNodeContainerCache) {\r
- this.featureNodeContainerCache = featureNodeContainerCache;\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)\r
- */\r
- public Object[] getChildren(Object parentElement) {\r
- if (parentElement instanceof TaxonEditorInput) {\r
- return getDescriptions((TaxonEditorInput) parentElement).toArray(); \r
- }\r
- else if (parentElement instanceof TaxonDescription) {\r
- if ( ! ((TaxonDescription) parentElement).isImageGallery()) {\r
- TaxonDescription description = (TaxonDescription) parentElement;\r
- FeatureNodeContainer rootContainer = FeatureNodeContainer.CreateTree(getFeatureTree(description), description);\r
- featureNodeContainerCache.put(description, rootContainer);\r
- return rootContainer.getChildren().toArray();\r
- }\r
- }\r
- else if (parentElement instanceof FeatureNodeContainer){\r
- FeatureNodeContainer container = (FeatureNodeContainer) parentElement;\r
- if(container.isLeaf()){\r
- return container.getDescriptionElements().toArray();\r
- }else{\r
- return container.getChildren().toArray();\r
- }\r
- }\r
- \r
- return NO_CHILDREN;\r
- }\r
-\r
- @Override\r
- public boolean hasChildren(Object element) {\r
- return getChildren(element).length != 0;\r
- }\r
- \r
- /**\r
- * Retrieves the feature tree associated with the given description\r
- * \r
- * TODO as of now this is always the same thing because feature trees may not be associated \r
- * to descriptions yet.\r
- * \r
- * @param description\r
- * @return\r
- */\r
- private FeatureTree getFeatureTree(DescriptionBase description){\r
- FeatureTree featureTree = null;\r
- \r
- // TODO change this to the feature tree associated with this taxon description\r
- if (description.hasStructuredData()){ \r
- featureTree = PreferencesUtil.getDefaultFeatureTreeForStructuredDescription();\r
- }else{\r
- featureTree = PreferencesUtil.getDefaultFeatureTreeForTextualDescription();\r
- }\r
- \r
- // create a transient tree with all features if none was selected\r
- if(featureTree == null){\r
- featureTree = FeatureTree.NewInstance(TermStore.getFeatures());\r
- }\r
- \r
- return featureTree;\r
- }\r
-\r
- /**\r
- * Get all descriptions associated with the given TaxonEditorInput\r
- * \r
- * @param parentElement\r
- * @return\r
- */\r
- private List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {\r
- Taxon taxon = parentElement.getTaxon();\r
- List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();\r
- for(DescriptionBase description : taxon.getDescriptions()){\r
- if(! description.isImageGallery()){\r
- descriptions.add(description);\r
- }\r
- } \r
- return descriptions;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)\r
- */\r
- public Object getParent(Object element) {\r
- return null;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)\r
- */\r
- public Object[] getElements(Object inputElement) {\r
- return getChildren(inputElement);\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IContentProvider#dispose()\r
- */\r
- public void dispose() {}\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)\r
- */\r
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {} \r
- \r
-}
\ No newline at end of file
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.editor.view.descriptive;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.TermStore;
+
+/**
+ * <p>DescriptiveContentProvider class.</p>
+ *
+ * @author p.ciardelli
+ * @author n.hoffmann
+ * @version $Id: $
+ */
+public class DescriptiveContentProvider implements ITreeContentProvider {
+ private static final Logger logger = Logger
+ .getLogger(DescriptiveContentProvider.class);
+
+ private static final Object[] NO_CHILDREN = new Object[0];
+ private Map<TaxonDescription, FeatureNodeContainer> featureNodeContainerCache;
+
+ /**
+ * <p>Constructor for DescriptiveContentProvider.</p>
+ *
+ * @param featureNodeContainerCache a {@link java.util.Map} object.
+ */
+ public DescriptiveContentProvider(Map<TaxonDescription, FeatureNodeContainer> featureNodeContainerCache) {
+ this.featureNodeContainerCache = featureNodeContainerCache;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ /** {@inheritDoc} */
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof TaxonEditorInput) {
+ return getDescriptions((TaxonEditorInput) parentElement).toArray();
+ }
+ else if (parentElement instanceof TaxonDescription) {
+ if ( ! ((TaxonDescription) parentElement).isImageGallery()) {
+ TaxonDescription description = (TaxonDescription) parentElement;
+ FeatureNodeContainer rootContainer = FeatureNodeContainer.CreateTree(getFeatureTree(description), description);
+ featureNodeContainerCache.put(description, rootContainer);
+ return rootContainer.getChildren().toArray();
+ }
+ }
+ else if (parentElement instanceof FeatureNodeContainer){
+ FeatureNodeContainer container = (FeatureNodeContainer) parentElement;
+ if(container.isLeaf()){
+ return container.getDescriptionElements().toArray();
+ }else{
+ return container.getChildren().toArray();
+ }
+ }
+
+ return NO_CHILDREN;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length != 0;
+ }
+
+ /**
+ * Retrieves the feature tree associated with the given description
+ *
+ * TODO as of now this is always the same thing because feature trees may not be associated
+ * to descriptions yet.
+ *
+ * @param description
+ * @return
+ */
+ private FeatureTree getFeatureTree(DescriptionBase description){
+ FeatureTree featureTree = null;
+
+ // TODO change this to the feature tree associated with this taxon description
+ if (description.hasStructuredData()){
+ featureTree = PreferencesUtil.getDefaultFeatureTreeForStructuredDescription();
+ }else{
+ featureTree = PreferencesUtil.getDefaultFeatureTreeForTextualDescription();
+ }
+
+ // create a transient tree with all features if none was selected
+ if(featureTree == null){
+ featureTree = FeatureTree.NewInstance(TermStore.getFeatures());
+ }
+
+ return featureTree;
+ }
+
+ /**
+ * Get all descriptions associated with the given TaxonEditorInput
+ *
+ * @param parentElement
+ * @return
+ */
+ private List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {
+ Taxon taxon = parentElement.getTaxon();
+ List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();
+ for(DescriptionBase description : taxon.getDescriptions()){
+ if(! description.isImageGallery()){
+ descriptions.add(description);
+ }
+ }
+ return descriptions;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ /** {@inheritDoc} */
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ /** {@inheritDoc} */
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ /**
+ * <p>dispose</p>
+ */
+ public void dispose() {}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ /** {@inheritDoc} */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
+
+}