-// $Id$
/**
* Copyright (C) 2007 EDIT
* European Distributed Institute of Taxonomy
package eu.etaxonomy.taxeditor.editor.view.concept;
+import java.util.Map.Entry;
+
import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPart;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
+import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.model.LineSelection;
import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
/**
* @author n.hoffmann
* @created Jan 24, 2011
* @version 1.0
*/
-public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails{
+public class ConceptViewPart extends AbstractCdmEditorViewPart
+implements IPartContentHasDetails, IPartContentHasSupplementalData{
- public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept";
+ public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept"; //$NON-NLS-1$
- private ListViewer viewer;
+ private ConceptRelationViewer viewer;
- /* (non-Javadoc)
- * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
@Override
- protected void internal_selectionChanged(IWorkbenchPart part, ISelection selection) {
+ protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
+ if(part == this){
+ return;
+ }
if(AbstractUtility.getActiveEditor() == null){
showEmptyPage();
return;
}
-
- if(part instanceof BulkEditor){
- showEmptyPage();
+
+ if (part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart) {
+ // do not show empty page as these views are also used to edit the
+ // description selected in this view
+ return;
+ }
+ else if(part instanceof BulkEditor && selection instanceof LineSelection){
+ if(((LineSelection) selection).getFirstElement() instanceof Taxon){
+ showViewer(part, (LineSelection) selection);
+ }
+ else{
+ showEmptyPage();
+ }
return;
}
-
- if(part instanceof AbstractGraphKeyEditor){
+ else if(part instanceof AbstractGraphKeyEditor){
showEmptyPage();
return;
}
-
- if(part instanceof MultiPageTaxonEditor){
+ else if(part instanceof MultiPageTaxonEditor){
if(! part.equals(this.part)){
IEditorInput input = ((IEditorPart) part).getEditorInput();
showViewer(part, new StructuredSelection(input));
}
- showViewer();
+ }
+ else {
+ showEmptyPage();
}
}
+
+ @Override
+ protected String createPartTitle(Object selectedObject) {
+ if(selectedObject instanceof TaxonEditorInput){
+ return super.createPartTitle(((TaxonEditorInput) selectedObject).getTaxon());
+ }
+ return super.createPartTitle(selectedObject);
+ }
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#onComplete()
- */
@Override
public boolean onComplete() {
return true;
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getViewer()
- */
@Override
public Viewer getViewer() {
return viewer;
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite)
- */
@Override
public void createViewer(Composite parent) {
- viewer = new ListViewer(parent);
+ viewer = new ConceptRelationViewer(parent);
viewer.setContentProvider(new ConceptContentProvider());
viewer.setLabelProvider(new ConceptLabelProvider());
- viewer.setSorter(new ConceptViewerSorter());
+ viewer.setSorter(new ViewerSorter());
getSite().setSelectionProvider(viewer);
createMenu();
-
- createToolbar();
}
private void createMenu(){
control.setMenu(menu);
}
- private void createToolbar() {
- IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
-// toolBarManager.add();
-// toolBarManager.add();
- }
-
-
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.editor.view.AbstractCdmEditorViewPart#changed(java.lang.Object)
- */
@Override
public void changed(Object object) {
getViewer().refresh();
super.changed(object);
}
+
+ private class ConceptRelationViewer extends ListViewer {
+
+ public ConceptRelationViewer(Composite parent) {
+ super(parent);
+ }
+
+ @Override
+ public ISelection getSelection() {
+ ISelection selection = super.getSelection();
+ if(selection instanceof IStructuredSelection && !selection.isEmpty()){
+ Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+ TaxonRelationship taxonRelationship = ((Entry<TaxonRelationship, Taxon>)firstElement).getKey();
+ return new StructuredSelection(taxonRelationship);
+
+ }
+ return selection;
+ }
+
+ @Override
+ public void setSelection(ISelection selection) {
+ super.setSelection(selection);
+ }
+
+ }
+
+ @Override
+ protected String getViewName() {
+ return Messages.ConceptViewPart_VIEWER_NAME;
+ }
+
}