+++ /dev/null
-package eu.etaxonomy.taxeditor.view.propertysheetsupport;\r
-\r
-import java.util.HashSet;\r
-import java.util.Set;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.core.databinding.beans.BeansObservables;\r
-import org.eclipse.core.databinding.observable.list.WritableList;\r
-import org.eclipse.core.databinding.observable.map.IObservableMap;\r
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
-import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;\r
-import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.source.SourceViewer;\r
-import org.eclipse.jface.viewers.TableViewer;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.CCombo;\r
-import org.eclipse.swt.events.MouseAdapter;\r
-import org.eclipse.swt.events.MouseEvent;\r
-import org.eclipse.swt.layout.FillLayout;\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.Dialog;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.List;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableColumn;\r
-\r
-import eu.etaxonomy.cdm.model.common.Annotation;\r
-import eu.etaxonomy.cdm.model.name.NameRelationship;\r
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
-\r
-public class NameRelationsDialog extends Dialog {\r
- private List relationList;\r
- private Table table;\r
- private static final Logger logger = Logger\r
- .getLogger(NameRelationsDialog.class);\r
- protected Object result;\r
- protected Shell shell;\r
- \r
- private WritableList list = new WritableList();\r
-\r
- /**\r
- * Create the dialog\r
- * @param parent\r
- * @param style\r
- */\r
- public NameRelationsDialog(Shell parent, int style) {\r
- super(parent, style);\r
- }\r
-\r
- /**\r
- * Create the dialog\r
- * @param parent\r
- */\r
- public NameRelationsDialog(Shell parent) {\r
- this(parent, SWT.NONE);\r
- }\r
-\r
- public NameRelationsDialog(Shell parent, Set<NameRelationship> nameRelationships) {\r
- this(parent, SWT.NONE);\r
- for (NameRelationship nameRelationship : nameRelationships) {\r
- list.add(nameRelationship);\r
- }\r
- }\r
-\r
- /**\r
- * Open the dialog\r
- * @return the result\r
- */\r
- public Object open() {\r
- createContents();\r
- shell.open();\r
- shell.layout();\r
- Display display = getParent().getDisplay();\r
- while (!shell.isDisposed()) {\r
- if (!display.readAndDispatch())\r
- display.sleep();\r
- }\r
- return result;\r
- }\r
-\r
- /**\r
- * Create contents of the dialog\r
- */\r
- protected void createContents() {\r
- shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);\r
- shell.setLayout(new FillLayout());\r
- shell.setSize(500, 375);\r
- shell.setText("Name Relations");\r
- \r
- final Composite composite = new Composite(shell, SWT.NONE);\r
- final GridLayout gridLayout = new GridLayout();\r
- gridLayout.numColumns = 2;\r
- composite.setLayout(gridLayout);\r
- for (NameRelationshipType relationType : TaxEditorPlugin.getDefault().getNameRelationshipTypeVocabulary()) {\r
- combo.add(relationType.getLabel());\r
- }\r
- new Label(composite, SWT.NONE);\r
-\r
-// sourceViewer = new Text(composite, SWT.BORDER);\r
-\r
- final Button btnAdd = new Button(composite, SWT.NONE);\r
- final GridData gd_btnAdd = new GridData(SWT.RIGHT, SWT.CENTER, false, false);\r
- btnAdd.setLayoutData(gd_btnAdd);\r
- btnAdd.setText("Add ...");\r
- btnAdd.addMouseListener(new MouseAdapter() {\r
- @Override\r
- public void mouseDown(MouseEvent e) {\r
-// NameRelationship annotation = NameRelationship.NewInstance(sourceViewer.getTextWidget().getText(), null);\r
-// list.add(annotation);\r
-// sourceViewer.getTextWidget().setText("");\r
- }\r
- });\r
-\r
- final TableViewer tableViewer = new TableViewer(composite, SWT.BORDER);\r
- table = tableViewer.getTable();\r
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));\r
- table.setLinesVisible(true);\r
- table.setHeaderVisible(true);\r
- \r
- new TableColumn(table, SWT.NONE).setWidth(190);\r
- new TableColumn(table, SWT.NONE).setWidth(100);\r
- new TableColumn(table, SWT.NONE).setWidth(190);\r
-\r
- ObservableListContentProvider providerList = new ObservableListContentProvider();\r
- tableViewer.setContentProvider(providerList);\r
- \r
- IObservableMap[] providerMaps = BeansObservables.observeMaps(\r
- providerList.getKnownElements(), NameRelationship.class, new String[]{"fromName", "toName", "type"});\r
- tableViewer.setLabelProvider(new ObservableMapLabelProvider(providerMaps) {\r
- public String getColumnText(Object element, int columnIndex) {\r
- NameRelationship nameRelationship = (NameRelationship) element;\r
- String returnString = null;\r
- switch (columnIndex) {\r
- case 0 :\r
- String fromName = nameRelationship.getFromName().getTitleCache();\r
- returnString = fromName;\r
- break;\r
- case 1 :\r
- String relationshipType = nameRelationship.getType().getLabel();\r
- returnString = " is " + relationshipType + " of ";\r
- break;\r
- case 2 :\r
- String toName = nameRelationship.getToName().getTitleCache();\r
- returnString = toName;\r
- } \r
- return returnString;\r
- }\r
- });\r
- tableViewer.setInput(list);\r
-\r
- final Button cancelButton = new Button(composite, SWT.NONE);\r
- cancelButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
- cancelButton.setText("Cancel");\r
- cancelButton.addMouseListener(new MouseAdapter() {\r
- @Override\r
- public void mouseUp(MouseEvent e) {\r
- shell.dispose();\r
- }\r
- });\r
- \r
- final Button okButton = new Button(composite, SWT.NONE);\r
- final GridData gd_okButton = new GridData();\r
- okButton.setLayoutData(gd_okButton);\r
- okButton.setText("OK");\r
- okButton.addMouseListener(new MouseAdapter() {\r
- @Override\r
- public void mouseUp(MouseEvent e) {\r
- result = new HashSet(list);\r
- shell.dispose();\r
- }\r
- });\r
- }\r
-}
\ No newline at end of file