Checking in before moving references' search button up in the hierarchy.
authorp.ciardelli <p.ciardelli@localhost>
Tue, 29 Sep 2009 16:14:46 +0000 (16:14 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 29 Sep 2009 16:14:46 +0000 (16:14 +0000)
.gitattributes
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/AuthorTeamPropertySource.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/PersonPropertySource.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDescriptor.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDialog.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListPropertySource.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/name/AuthorshipSearchDescriptor.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/name/NomenclaturalAuthorshipPropertySource.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/SingleRefTypePropertySource.java [deleted file]

index ad0dadd8ea1437a50f439d2624e7fffe1e6b3d52..4c1889520fe4a0cc1192c21175ee3244817f31b5 100644 (file)
@@ -843,6 +843,11 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/SelectMarker
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/SourceViewerConfig.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/TimePeriodPropertySource.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/YearValidator.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/AuthorTeamPropertySource.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/PersonPropertySource.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDescriptor.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDialog.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListPropertySource.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/name/AcceptedTaxonPropertySource.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/name/AuthorshipSearchDescriptor.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/name/BotanicalNamePropertySource.java -text
@@ -868,7 +873,6 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/IR
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/NomenclaturalReferencePropertySource.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/ReferencePropertySource.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDescriptor.java -text
-taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/SingleRefTypePropertySource.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/tabbed/AbstractNamePropertySection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/tabbed/AnnotationSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/tabbed/AuthorSection.java -text
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/AuthorTeamPropertySource.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/AuthorTeamPropertySource.java
new file mode 100644 (file)
index 0000000..2559b42
--- /dev/null
@@ -0,0 +1,170 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.propertysheet.authors;\r
+\r
+import java.util.Vector;\r
+\r
+import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;\r
+import org.eclipse.ui.views.properties.IPropertyDescriptor;\r
+import org.eclipse.ui.views.properties.PropertyDescriptor;\r
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.taxeditor.propertysheet.ICdmBasePropertySource;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class AuthorTeamPropertySource implements ICdmBasePropertySource {\r
+\r
+       private Team team;\r
+       \r
+       public static final String P_ID_TITLE = "P_ID_TITLE";\r
+       public static final String P_ID_NOM_TITLE = "P_ID_NOM_TITLE";\r
+       public static final String P_ID_PROTECT_CACHE = "P_ID_PROTECT_CACHE";\r
+       public static final String P_ID_AUTHORS = "P_ID_AUTHORS";\r
+\r
+       public static final String P_TITLE = "Editable title cache";\r
+       public static final String P_NOM_TITLE = "Editable nom. title cache";\r
+       public static final String P_PROTECT_CACHE = "Protect title caches?";\r
+       public static final String P_AUTHORS = "Authors";\r
+\r
+       private static final int CACHE_NOT_PROTECTED = 0;\r
+       private static final int CACHE_PROTECTED = 1;\r
+       \r
+       public AuthorTeamPropertySource(Team team) {\r
+               this.team = team;\r
+               \r
+               initDescriptors();\r
+       }\r
+       \r
+       /**\r
+        * \r
+        */\r
+       private void initDescriptors() {\r
+               addDescriptor(P_ID_TITLE);\r
+               addDescriptor(P_ID_NOM_TITLE);\r
+               addDescriptor(P_ID_PROTECT_CACHE);\r
+               addDescriptor(P_ID_AUTHORS);\r
+       }\r
+\r
+       protected Vector<PropertyDescriptor> descriptors = new Vector<PropertyDescriptor>();\r
+       \r
+       /**\r
+        * @param field\r
+        */\r
+       private void addDescriptor(String id) {\r
+               \r
+               // Editable cache\r
+               if (id.equals(P_ID_TITLE)) {\r
+                       descriptors.addElement(\r
+                                       new TextPropertyDescriptor(P_ID_TITLE, P_TITLE));\r
+               }\r
+               \r
+               // Editable cache\r
+               if (id.equals(P_ID_NOM_TITLE)) {\r
+                       descriptors.addElement(\r
+                                       new TextPropertyDescriptor(P_ID_NOM_TITLE, P_NOM_TITLE));\r
+               }\r
+               \r
+               // Protect cache?\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
+               }\r
+               \r
+               // Reference search\r
+               if (id.equals(P_ID_AUTHORS)) {\r
+                       descriptors.addElement(\r
+                                       new TeamAuthorsListDescriptor(P_ID_AUTHORS, P_AUTHORS, team));\r
+               }\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()\r
+        */\r
+       public IPropertyDescriptor[] getPropertyDescriptors() {\r
+               return (IPropertyDescriptor[]) descriptors.toArray(\r
+                new IPropertyDescriptor[descriptors.size()]);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()\r
+        */\r
+       public Object getEditableValue() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)\r
+        */\r
+       public Object getPropertyValue(Object id) {\r
+               \r
+               if (id.equals(P_ID_TITLE)) {\r
+                       return team.getTitleCache();\r
+               }\r
+\r
+               if (id.equals(P_ID_NOM_TITLE)) {\r
+                       return team.getNomenclaturalTitle();\r
+               }\r
+               \r
+               if (id.equals(P_ID_PROTECT_CACHE)) {\r
+                       if (team.isProtectedTitleCache()) {\r
+                               return CACHE_PROTECTED;\r
+                       } else {\r
+                               return CACHE_NOT_PROTECTED;\r
+                       }\r
+               }\r
+               \r
+               if (id.equals(P_ID_AUTHORS)) {\r
+                       return new TeamAuthorsListPropertySource(team.getTeamMembers());\r
+               }\r
+               \r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)\r
+        */\r
+       public boolean isPropertySet(Object id) {\r
+               // TODO Auto-generated method stub\r
+               return false;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)\r
+        */\r
+       public void resetPropertyValue(Object id) {\r
+               // TODO Auto-generated method stub\r
+\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)\r
+        */\r
+       public void setPropertyValue(Object id, Object value) {\r
+               \r
+               if (id.equals(P_ID_TITLE)) {\r
+                       team.setTitleCache((String) value);\r
+               }\r
+\r
+               if (id.equals(P_ID_NOM_TITLE)) {\r
+                       team.setNomenclaturalTitle((String) value);\r
+               }\r
+               \r
+               // Protect cache? \r
+               if (id.equals(P_ID_PROTECT_CACHE)) {\r
+                       if (((Integer) value).intValue() == CACHE_PROTECTED) {\r
+                               team.setProtectedTitleCache(true);\r
+                       } else {\r
+                               team.setProtectedTitleCache(false);\r
+                       }\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/PersonPropertySource.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/PersonPropertySource.java
new file mode 100644 (file)
index 0000000..9f94ad0
--- /dev/null
@@ -0,0 +1,223 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.propertysheet.authors;\r
+\r
+import java.util.Vector;\r
+\r
+import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;\r
+import org.eclipse.ui.views.properties.IPropertyDescriptor;\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.agent.Person;\r
+import eu.etaxonomy.taxeditor.propertysheet.ICdmBasePropertySource;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class PersonPropertySource implements ICdmBasePropertySource {\r
+\r
+       private Person person;\r
+       \r
+       public static final String P_ID_TITLE = "P_ID_TITLE";\r
+       public static final String P_ID_NOM_TITLE = "P_ID_NOM_TITLE";\r
+       public static final String P_ID_PROTECT_CACHE = "P_ID_PROTECT_CACHE";\r
+       public static final String P_ID_PREFIX = "P_ID_PREFIX";\r
+       public static final String P_ID_FIRSTNAME = "P_ID_FIRSTNAME";\r
+       public static final String P_ID_LASTNAME = "P_ID_LASTNAME";\r
+       public static final String P_ID_SUFFIX = "P_ID_SUFFIX";\r
+\r
+       public static final String P_TITLE = "Editable title cache";\r
+       public static final String P_NOM_TITLE = "Editable nom. title cache";\r
+       public static final String P_PROTECT_CACHE = "Protect title caches?";\r
+       public static final String P_PREFIX = "Prefix";\r
+       public static final String P_FIRSTNAME = "First name";\r
+       public static final String P_LASTNAME = "Last name";\r
+       public static final String P_SUFFIX = "Suffix";\r
+\r
+       private static final int CACHE_NOT_PROTECTED = 0;\r
+       private static final int CACHE_PROTECTED = 1;\r
+       \r
+       public PersonPropertySource(Person person) {\r
+               this.person = person;\r
+               \r
+               initDescriptors();\r
+       }\r
+       \r
+       /**\r
+        * \r
+        */\r
+       private void initDescriptors() {\r
+               addDescriptor(P_ID_TITLE);\r
+               addDescriptor(P_ID_NOM_TITLE);\r
+               addDescriptor(P_ID_PROTECT_CACHE);\r
+               addDescriptor(P_ID_PREFIX);\r
+               addDescriptor(P_ID_FIRSTNAME);\r
+               addDescriptor(P_ID_LASTNAME);\r
+               addDescriptor(P_ID_SUFFIX);\r
+       }\r
+\r
+       protected Vector<PropertyDescriptor> descriptors = new Vector<PropertyDescriptor>();\r
+       \r
+       /**\r
+        * @param field\r
+        */\r
+       private void addDescriptor(String id) {\r
+               \r
+               // Editable cache\r
+               if (id.equals(P_ID_TITLE)) {\r
+                       descriptors.addElement(\r
+                                       new TextPropertyDescriptor(P_ID_TITLE, P_TITLE));\r
+               }\r
+               \r
+               // Editable cache\r
+               if (id.equals(P_ID_NOM_TITLE)) {\r
+                       descriptors.addElement(\r
+                                       new TextPropertyDescriptor(P_ID_NOM_TITLE, P_NOM_TITLE));\r
+               }\r
+               \r
+               // Protect cache?\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
+               }\r
+               \r
+               boolean isProtectedCache = person.isProtectedTitleCache();\r
+               \r
+               if (id.equals(P_ID_PREFIX)) {\r
+                       descriptors.addElement(\r
+                                       isProtectedCache?\r
+                                                       new PropertyDescriptor(P_ID_PREFIX, P_PREFIX) :\r
+                                                       new TextPropertyDescriptor(P_ID_PREFIX, P_PREFIX));                     \r
+               }\r
+               if (id.equals(P_ID_FIRSTNAME)) {\r
+                       descriptors.addElement(\r
+                                       isProtectedCache?\r
+                                                       new PropertyDescriptor(P_ID_FIRSTNAME, P_FIRSTNAME) :\r
+                                                       new TextPropertyDescriptor(P_ID_FIRSTNAME, P_FIRSTNAME));                       \r
+               }\r
+               if (id.equals(P_ID_LASTNAME)) {\r
+                       descriptors.addElement(\r
+                                       isProtectedCache?\r
+                                                       new PropertyDescriptor(P_ID_LASTNAME, P_LASTNAME) :\r
+                                                       new TextPropertyDescriptor(P_ID_LASTNAME, P_LASTNAME));                 \r
+               }\r
+               if (id.equals(P_ID_SUFFIX)) {\r
+                       descriptors.addElement(\r
+                                       isProtectedCache?\r
+                                                       new PropertyDescriptor(P_ID_SUFFIX, P_SUFFIX) :\r
+                                                       new TextPropertyDescriptor(P_ID_SUFFIX, P_SUFFIX));                     \r
+               }\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()\r
+        */\r
+       public IPropertyDescriptor[] getPropertyDescriptors() {\r
+               return (IPropertyDescriptor[]) descriptors.toArray(\r
+                new IPropertyDescriptor[descriptors.size()]);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()\r
+        */\r
+       public Object getEditableValue() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)\r
+        */\r
+       public Object getPropertyValue(Object id) {\r
+               \r
+               if (id.equals(P_ID_TITLE)) {\r
+                       return CdmUtils.Nz(person.getTitleCache());\r
+               }\r
+\r
+               if (id.equals(P_ID_NOM_TITLE)) {\r
+                       return CdmUtils.Nz(person.getNomenclaturalTitle());\r
+               }\r
+               \r
+               if (id.equals(P_ID_PROTECT_CACHE)) {\r
+                       if (person.isProtectedTitleCache()) {\r
+                               return CACHE_PROTECTED;\r
+                       } else {\r
+                               return CACHE_NOT_PROTECTED;\r
+                       }\r
+               }\r
+               \r
+               if (id.equals(P_ID_PREFIX)) {\r
+                       return CdmUtils.Nz(person.getPrefix());\r
+               }\r
+               if (id.equals(P_ID_FIRSTNAME)) {\r
+                       return CdmUtils.Nz(person.getFirstname());\r
+               }\r
+               if (id.equals(P_ID_LASTNAME)) {\r
+                       return CdmUtils.Nz(person.getLastname());\r
+               }\r
+               if (id.equals(P_ID_SUFFIX)) {\r
+                       return CdmUtils.Nz(person.getSuffix());\r
+               }\r
+               \r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)\r
+        */\r
+       public boolean isPropertySet(Object id) {\r
+               // TODO Auto-generated method stub\r
+               return false;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)\r
+        */\r
+       public void resetPropertyValue(Object id) {\r
+               // TODO Auto-generated method stub\r
+\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)\r
+        */\r
+       public void setPropertyValue(Object id, Object value) {\r
+               \r
+               if (id.equals(P_ID_TITLE)) {\r
+                       person.setTitleCache((String) value);\r
+               }\r
+\r
+               if (id.equals(P_ID_NOM_TITLE)) {\r
+                       person.setNomenclaturalTitle((String) value);\r
+               }\r
+               \r
+               // Protect cache? \r
+               if (id.equals(P_ID_PROTECT_CACHE)) {\r
+                       if (((Integer) value).intValue() == CACHE_PROTECTED) {\r
+                               person.setProtectedTitleCache(true);\r
+                       } else {\r
+                               person.setProtectedTitleCache(false);\r
+                       }\r
+               }\r
+               \r
+               if (id.equals(P_ID_PREFIX)) {\r
+                       person.setPrefix((String) value);\r
+               }\r
+               if (id.equals(P_ID_FIRSTNAME)) {\r
+                       person.setFirstname((String) value);\r
+               }\r
+               if (id.equals(P_ID_LASTNAME)) {\r
+                       person.setLastname((String) value);\r
+               }\r
+               if (id.equals(P_ID_SUFFIX)) {\r
+                       person.setSuffix((String) value);\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDescriptor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDescriptor.java
new file mode 100644 (file)
index 0000000..e55b848
--- /dev/null
@@ -0,0 +1,53 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.propertysheet.authors;\r
+\r
+import java.util.List;\r
+\r
+import org.eclipse.jface.viewers.CellEditor;\r
+import org.eclipse.jface.viewers.DialogCellEditor;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.ui.views.properties.PropertyDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class TeamAuthorsListDescriptor extends PropertyDescriptor {\r
+\r
+       private Team team;\r
+\r
+       /**\r
+        * @param idAuthors\r
+        * @param authors\r
+        * @param team\r
+        */\r
+       public TeamAuthorsListDescriptor(String id, String displayName,\r
+                       Team team) {\r
+               super(id, displayName);\r
+               \r
+               this.team = team;\r
+       }\r
+       \r
+    public CellEditor createPropertyEditor(Composite parent) {\r
+        CellEditor editor = new DialogCellEditor(parent) {\r
+\r
+                       @Override\r
+                       protected Object openDialogBox(Control cellEditorWindow) {\r
+                               List<Person> authors = TeamAuthorsListDialog.getAuthorsList(cellEditorWindow.getShell(), team);\r
+                               if (authors != null) {\r
+                                       team.getTeamMembers().toArray();\r
+                               }\r
+                               return null;\r
+                       }\r
+               \r
+        };\r
+        return editor;\r
+    }\r
+\r
+}\r
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDialog.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListDialog.java
new file mode 100644 (file)
index 0000000..d571a34
--- /dev/null
@@ -0,0 +1,316 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.propertysheet.authors;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.eclipse.jface.dialogs.TitleAreaDialog;\r
+import org.eclipse.jface.viewers.ISelectionChangedListener;\r
+import org.eclipse.jface.viewers.IStructuredContentProvider;\r
+import org.eclipse.jface.viewers.IStructuredSelection;\r
+import org.eclipse.jface.viewers.ITableLabelProvider;\r
+import org.eclipse.jface.viewers.LabelProvider;\r
+import org.eclipse.jface.viewers.SelectionChangedEvent;\r
+import org.eclipse.jface.viewers.TableViewer;\r
+import org.eclipse.jface.viewers.TableViewerColumn;\r
+import org.eclipse.jface.viewers.Viewer;\r
+import org.eclipse.jface.window.Window;\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.graphics.Image;\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.Control;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.eclipse.swt.widgets.Table;\r
+\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.dialogs.filteredSelection.FilteredPersonSelectionDialog;\r
+import eu.etaxonomy.taxeditor.dialogs.filteredSelection.FilteredReferenceSelectionDialog;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class TeamAuthorsListDialog extends TitleAreaDialog {\r
+\r
+       /**\r
+        * @param shell \r
+        * @param team\r
+        * @return\r
+        */\r
+       public static List<Person> getAuthorsList(Shell shell, Team team) {\r
+               TeamAuthorsListDialog dialog = new TeamAuthorsListDialog(shell, team);\r
+               if (dialog.open() == Window.CANCEL) {\r
+                       return null;\r
+               }\r
+               return dialog.getAuthorsList();\r
+       }\r
+\r
+       /**\r
+        * @return\r
+        */\r
+       private List<Person> getAuthorsList() {\r
+               return null;\r
+       }\r
+\r
+       private Table authorListTable;\r
+       private Team team;\r
+       private List<Person> authors = new ArrayList<Person>();\r
+       private TableViewer authorListViewer;\r
+       private Button btnRemove;\r
+\r
+       private static final int UP = -1;\r
+       private static final int DOWN = 1;\r
+       \r
+       /**\r
+        * @param parentShell\r
+        * @param team \r
+        */\r
+       protected TeamAuthorsListDialog(Shell parentShell, Team team) {\r
+               super(parentShell);\r
+               \r
+               this.team = team;\r
+               this.authors.addAll(team.getTeamMembers());\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.dialogs.TitleAreaDialog#createContents(org.eclipse.swt.widgets.Composite)\r
+        */\r
+       @Override\r
+       protected Control createContents(Composite parent) {\r
+           Control contents = super.createContents(parent);\r
+                               \r
+               setTitle("Edit authors in team");\r
+               setMessage("Add or remove the members of this team, and move their position in the list.");\r
+\r
+               this.getShell().setText("Authors");\r
+               \r
+               return contents;\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)\r
+        */\r
+       @Override\r
+       protected Control createDialogArea(Composite parent) {\r
+               Composite container = (Composite) super.createDialogArea(parent);\r
+               \r
+        // create composite\r
+        Composite composite = new Composite(container, SWT.NULL);\r
+        composite.setLayoutData(new GridData(GridData.FILL_BOTH));\r
+               \r
+               final GridLayout gridLayout = new GridLayout();\r
+               gridLayout.numColumns = 4;\r
+               composite.setLayout(gridLayout);\r
+\r
+               Button btnAdd = new Button(composite, SWT.NONE);\r
+               btnAdd.setText("Add ...");\r
+               btnAdd.addSelectionListener(new SelectionAdapter() {\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               addAuthor();\r
+                       }\r
+               });\r
+\r
+               btnRemove = new Button(composite, SWT.NONE);\r
+               btnRemove.setText("Remove");\r
+               btnRemove.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));\r
+               btnRemove.addSelectionListener(new SelectionAdapter() {\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               removeSelectedAuthor();\r
+                       }\r
+               });\r
+               setRemoveEnabled(false);\r
+\r
+               final Button btnUp = new Button(composite, SWT.NONE);\r
+               btnUp.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
+               btnUp.setText("Up");\r
+               btnUp.addSelectionListener(new SelectionAdapter() {\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               moveAuthor(UP);\r
+                       }\r
+               });\r
+\r
+               final Button btnDown = new Button(composite, SWT.NONE);\r
+               btnDown.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
+               btnDown.setText("Down");\r
+               btnDown.addSelectionListener(new SelectionAdapter() {\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               moveAuthor(DOWN);\r
+                       }\r
+               });\r
+               \r
+               authorListViewer = new TableViewer(composite, SWT.BORDER | SWT.SINGLE);\r
+               createColumns(authorListViewer);\r
+               authorListViewer.setContentProvider(new AuthorListContentProvider());\r
+               authorListViewer.setLabelProvider(new AuthorListLabelProvider());\r
+               authorListViewer.addSelectionChangedListener(new ISelectionChangedListener () {\r
+                       public void selectionChanged(SelectionChangedEvent event) {\r
+                               setRemoveEnabled(true);\r
+                       }\r
+               });\r
+               \r
+               // TODO extend table viewer to show Person fields\r
+               authorListTable = authorListViewer.getTable();\r
+               authorListTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,\r
+                               true, 4, 1));\r
+               \r
+               populateAuthors();\r
+               \r
+               return container;\r
+       }\r
+\r
+       private void createColumns(TableViewer viewer) {\r
+               Table table = viewer.getTable();\r
+               String[] titles = {"Cache", "Nomenclatural Cache", "First Name", "Last Name"};\r
+               int[] bounds = { 130, 130, 90, 90};\r
+\r
+               for (int i = 0; i < titles.length; i++) {\r
+                       TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);\r
+                       column.getColumn().setText(titles[i]);\r
+                       column.getColumn().setWidth(bounds[i]);\r
+                       column.getColumn().setResizable(true);\r
+                       column.getColumn().setMoveable(true);\r
+               }\r
+               table.setHeaderVisible(true);\r
+               table.setLinesVisible(true);\r
+       }\r
+       \r
+       /**\r
+        * @param direction\r
+        */\r
+       private void moveAuthor(int direction) {\r
+               Person author = getSelectedAuthor();\r
+               if (author == null) {\r
+                       return;\r
+               }\r
+               int index = authors.indexOf(author);\r
+               if (direction == UP && index > 0) {\r
+                       Collections.swap(authors, index, index - 1);\r
+               }\r
+               if (direction == DOWN && index < authors.size() - 1) {\r
+                       Collections.swap(authors, index, index + 1);\r
+               }\r
+               authorListViewer.refresh();\r
+       }\r
+\r
+       /**\r
+        * @param b\r
+        */\r
+       private void setRemoveEnabled(boolean enabled) {\r
+               btnRemove.setEnabled(enabled);\r
+       }\r
+\r
+       /**\r
+        * \r
+        */\r
+       private void populateAuthors() {\r
+               authorListViewer.setInput(authors);\r
+       }\r
+\r
+       /**\r
+        * \r
+        */\r
+       private void removeSelectedAuthor() {\r
+               authors.remove(getSelectedAuthor());\r
+               authorListViewer.refresh();\r
+       }\r
+\r
+       /**\r
+        * @return\r
+        */\r
+       private Person getSelectedAuthor() {\r
+               if (authorListViewer.getSelection() == null) {\r
+                       return null;\r
+               }\r
+               return (Person) ((IStructuredSelection) authorListViewer.getSelection()).getFirstElement();\r
+       }\r
+\r
+       /**\r
+        * \r
+        */\r
+       private void addAuthor() {\r
+               Person person = FilteredPersonSelectionDialog.selectPerson(getParentShell(), null);\r
+               if (person != null) {\r
+                       authors.add(person);\r
+                       authorListViewer.refresh();\r
+               }\r
+       }\r
+       \r
+    /* (non-Javadoc)\r
+     * @see org.eclipse.jface.dialogs.Dialog#okPressed()\r
+     */\r
+    @Override\r
+    protected void okPressed() {\r
+       // Remove all members from team\r
+       List<Person> removeAuthors = new ArrayList<Person>();\r
+       removeAuthors.addAll(team.getTeamMembers());\r
+       team.getTeamMembers().removeAll(removeAuthors);\r
+       \r
+       // Add all members\r
+       for (Person person : authors) {\r
+               team.addTeamMember(person);\r
+       }\r
+       super.okPressed();\r
+    }\r
+       \r
+       class AuthorListContentProvider implements IStructuredContentProvider {\r
+\r
+               /* (non-Javadoc)\r
+                * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)\r
+                */\r
+               public Object[] getElements(Object inputElement) {\r
+                       return ((List<?>) inputElement).toArray();\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
+       \r
+       class AuthorListLabelProvider extends LabelProvider implements ITableLabelProvider{\r
+\r
+               /* (non-Javadoc)\r
+                * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)\r
+                */\r
+               public Image getColumnImage(Object element, int columnIndex) {\r
+                       return null;\r
+               }\r
+\r
+               /* (non-Javadoc)\r
+                * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)\r
+                */\r
+               public String getColumnText(Object element, int columnIndex) {\r
+                       Person person = (Person) element;\r
+                       switch (columnIndex) {\r
+                       case 0:\r
+                               return person.getTitleCache();\r
+                       case 1:\r
+                               return person.getNomenclaturalTitle();\r
+                       case 2:\r
+                               return person.getFirstname();\r
+                       case 3:\r
+                               return person.getLastname();\r
+                       }\r
+                       return null;\r
+               }\r
+               \r
+       }\r
+}\r
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListPropertySource.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/authors/TeamAuthorsListPropertySource.java
new file mode 100644 (file)
index 0000000..239612c
--- /dev/null
@@ -0,0 +1,57 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.propertysheet.authors;\r
+\r
+import java.util.Collection;\r
+\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class TeamAuthorsListPropertySource extends CollectionPropertySource {\r
+\r
+       /**\r
+        * @param collection\r
+        */\r
+       public TeamAuthorsListPropertySource(Collection<?> collection) {\r
+               super(collection);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource#getItemDisplayName(java.lang.Object)\r
+        */\r
+       @Override\r
+       protected String getItemDisplayName(Object item) {\r
+               return "";\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource#getPropertyValue(java.lang.Object)\r
+        */\r
+       @Override\r
+       public Object getPropertyValue(Object id) {\r
+               if (id instanceof Person) {\r
+                       return ((Person) id).getTitleCache();\r
+               }\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)\r
+        */\r
+       @Override\r
+       public void setPropertyValue(Object id, Object value) {}\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource#toString()\r
+        */\r
+       @Override\r
+       public String toString() {\r
+               return "";\r
+       }\r
+\r
+}\r
index b3a8f7193e06cc104cb943a20ac60ed198b3fb9a..e475a196cb4c2fcda5be5bf718aee9cb57942d60 100644 (file)
@@ -20,6 +20,7 @@ import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.taxeditor.dialogs.filteredSelection.FilteredAgentSelectionDialog;\r
+import eu.etaxonomy.taxeditor.dialogs.filteredSelection.FilteredTeamOrPersonBaseSelectionDialog;\r
 \r
 /**  \r
  * @author p.ciardelli\r
@@ -52,7 +53,8 @@ public class AuthorshipSearchDescriptor extends PropertyDescriptor {
                         */\r
                        protected Object openDialogBox(\r
                                        Control cellEditorWindow) {\r
-                               AgentBase agent = FilteredAgentSelectionDialog.selectAgent(cellEditorWindow.getShell(), teamOrPerson);\r
+//                             AgentBase agent = FilteredAgentSelectionDialog.selectAgent(cellEditorWindow.getShell(), teamOrPerson);\r
+                               AgentBase agent = FilteredTeamOrPersonBaseSelectionDialog.selectTeamOrPersonBase(cellEditorWindow.getShell(), teamOrPerson);\r
                                if (agent instanceof INomenclaturalAuthor) {\r
                                        return agent;\r
                                } else {\r
index 7120fa917ad9a4c5807f29f6fd63680908e92bb2..cd41a670d632c7d390b404df20f0a279914bfeb8 100644 (file)
@@ -75,18 +75,21 @@ public class NomenclaturalAuthorshipPropertySource implements ICdmBasePropertySo
                displayFields.add(P_ID_EDITABLECACHE);\r
                displayFields.add(P_ID_PROTECT_CACHE);\r
                \r
-               if (NomenclaturalCode.ICZN.equals(name.getNomenclaturalCode())) {\r
-                       displayFields.add(P_ID_PUBLICATIONYEAR);\r
-                       displayFields.add(P_ID_ORIGINAL_PUBLICATIONYEAR);\r
-                       \r
+               if (NomenclaturalCode.ICZN.equals(name.getNomenclaturalCode())) {       \r
                        P_BASAUTHORSHIPCACHE = "Original Authorship";\r
                        P_EXBASAUTHORSHIPCACHE = "Ex-Original Authorship";\r
                }\r
                \r
        displayFields.add(P_ID_AUTHORSHIPCACHE);\r
        displayFields.add(P_ID_EXAUTHORSHIPCACHE);\r
+               if (NomenclaturalCode.ICZN.equals(name.getNomenclaturalCode())) {\r
+                       displayFields.add(P_ID_PUBLICATIONYEAR);\r
+               }\r
        displayFields.add(P_ID_BASAUTHORSHIPCACHE);\r
        displayFields.add(P_ID_EXBASAUTHORSHIPCACHE);\r
+               if (NomenclaturalCode.ICZN.equals(name.getNomenclaturalCode())) {\r
+                       displayFields.add(P_ID_ORIGINAL_PUBLICATIONYEAR);\r
+               }\r
     \r
                \r
                for (String field : displayFields) {\r
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/SingleRefTypePropertySource.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/SingleRefTypePropertySource.java
deleted file mode 100644 (file)
index be9e672..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/**\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.propertysheet.reference;\r
-\r
-import org.eclipse.jface.viewers.ILabelProvider;\r
-import org.eclipse.ui.views.properties.PropertyDescriptor;\r
-\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-\r
-/**\r
- * This subclass is for cases where only one subclass of <code>ReferenceBase</code>\r
- * can be edited in the property source. \r
- * <p>\r
- * For instance, if the user is editing an\r
- * <code>Article</code>, one of its fields would be a \r
- * <code>SingleRefTypePropertySource</code> restricted to a <code>Journal</code>,\r
- * and the reference type drop-down would be replaced by the non-editable \r
- * value "Journal".\r
- * \r
- * @author p.ciardelli\r
- * @created 19.11.2008\r
- * @version 1.0\r
- */\r
-public class SingleRefTypePropertySource extends ReferencePropertySource {\r
-       \r
-       public static final String BOOK = "Book";\r
-       public static final String JOURNAL = "Journal";\r
-\r
-       private String referenceType;\r
-       \r
-       public SingleRefTypePropertySource(ReferenceBase<?> reference, String referenceType) {\r
-               super(reference);\r
-               \r
-               this.referenceType = referenceType;\r
-       }\r
-\r
-       protected PropertyDescriptor createReferenceTypeDescriptor() {\r
-               return new PropertyDescriptor(P_ID_REFERENCETYPE, P_REFERENCETYPE) {\r
-                       public ILabelProvider getLabelProvider() {\r
-                               return super.getLabelProvider();\r
-                       }\r
-               };\r
-       }\r
-       \r
-       public Object getPropertyValue(Object id) {\r
-               \r
-               // Reference Type: show non-editable reference type in property value\r
-               if (id.equals(P_ID_REFERENCETYPE)) {                    \r
-                       return referenceType;\r
-               }\r
-               \r
-               return super.getPropertyValue(id);\r
-       }\r
-}\r