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
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
--- /dev/null
+/**\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
--- /dev/null
+/**\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
--- /dev/null
+/**\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
--- /dev/null
+/**\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
--- /dev/null
+/**\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
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
*/\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
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
+++ /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.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