From d37eb206f4955799ef037bbe4a72c1c9960d573d Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Wed, 8 Jul 2015 20:31:02 +0200 Subject: [PATCH] Make cell text in ReferencingObjectsView selectable --- .../ReferencingObjectsView.java | 134 +++++++++++------- 1 file changed, 82 insertions(+), 52 deletions(-) diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java index 1b4438a96..ee3cd44ef 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java @@ -1,9 +1,9 @@ // $Id$ /** * Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ @@ -22,44 +22,38 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; - import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Table; -import org.eclipse.ui.INullSelectionListener; -import org.eclipse.ui.ISelectionListener; - import org.eclipse.ui.IWorkbenchPart; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.service.IAgentService; -import eu.etaxonomy.cdm.api.service.ICommonService; import eu.etaxonomy.cdm.api.service.IGroupService; - import eu.etaxonomy.cdm.api.service.INameService; import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.api.service.IReferenceService; import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.api.service.IUserService; - import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.Group; - import eu.etaxonomy.cdm.model.common.IdentifiableEntity; import eu.etaxonomy.cdm.model.common.User; import eu.etaxonomy.cdm.model.name.NonViralName; -import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.taxon.TaxonBase; - import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor; import eu.etaxonomy.taxeditor.model.DescriptionHelper; import eu.etaxonomy.taxeditor.model.LineSelection; @@ -79,12 +73,12 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ /** Constant ID="eu.etaxonomy.taxeditor.bulkeditor.refer"{trunked} */ public static final String ID = "eu.etaxonomy.taxeditor.bulkeditor.view.referencingobjects"; - + private TableViewer viewer; private String referencedObjectTitleCache; - private ConversationHolder conversation; - + private ConversationHolder conversation; + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite) */ @@ -98,9 +92,37 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ createColumns(viewer); viewer.setContentProvider(new ReferencingObjectsContentProvider()); viewer.setLabelProvider(new ReferencingObjectsLabelProvider()); + viewer.setCellModifier(new ICellModifier() { + + @Override + public void modify(Object element, String property, Object value) { + // TODO Auto-generated method stub + + } + + @Override + public Object getValue(Object element, String property) { + ITableLabelProvider tableLabelProvider = null; + if(viewer.getLabelProvider() instanceof ITableLabelProvider){ + tableLabelProvider = (ITableLabelProvider) viewer.getLabelProvider(); + } + Object[] columnProperties = viewer.getColumnProperties(); + for (int i=0;i()); } - + /** * Create the columns for the table * @param viewer @@ -110,8 +132,11 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ String[] titles = {"Class", "Description", "UUID", "Object ID" }; int[] bounds = { 100, 200, 100, 70}; + CellEditor[] editors = new CellEditor[titles.length]; + for (int i = 0; i < titles.length; i++) { TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE); + editors[i] = new TextCellEditor(table); column.getColumn().setText(titles[i]); column.getColumn().setWidth(bounds[i]); column.getColumn().setResizable(true); @@ -119,6 +144,9 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ } table.setHeaderVisible(true); table.setLinesVisible(true); + + viewer.setCellEditors(editors); + viewer.setColumnProperties(titles); } /** @@ -127,38 +155,38 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ * @param entity a {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity} object. */ public void updateReferencingObjects(final UUID entityUUID, final Class objectClass) { - + final Display display = Display.getCurrent(); - + Job job = new Job("Update Referencing Objects") { - + @Override protected IStatus run(IProgressMonitor monitor) { monitor.beginTask("Calculating referencing objects", 10); - + monitor.worked(3); - + display.asyncExec(new Runnable() { - + @Override public void run() { if (entityUUID != null){ - + List referencingObjects = getReferencingObjects(entityUUID, objectClass); - + updateView(referencingObjects); - + } } }); - + monitor.done(); - - + + return Status.OK_STATUS; } }; - + job.setPriority(Job.DECORATE); job.schedule(); } @@ -183,31 +211,32 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ } //referencedObject =(CdmBase) CdmStore.getService(IIdentifiableEntityService.class).load(referencedObject.getUuid()); Set setOfReferencingObjects = null; - + if (referencedObject != null){ referencedObjectTitleCache = ((IdentifiableEntity)referencedObject).getTitleCache(); setOfReferencingObjects = CdmStore.getCommonService().getReferencingObjects(referencedObject); } if (setOfReferencingObjects != null){ - List referencingObjects = new ArrayList(setOfReferencingObjects); - + List referencingObjects = new ArrayList(setOfReferencingObjects); + Collections.sort(referencingObjects, new ReferencingClassComparator()); - + return referencingObjects; - + } } catch (Exception e) { logger.error("Error retrieving referencing objects", e); } return null; } - + class ReferencingClassComparator implements Comparator { /* (non-Javadoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ - public int compare(CdmBase o1, CdmBase o2) { + @Override + public int compare(CdmBase o1, CdmBase o2) { String string1 = o1.getClass().getSimpleName(); String string2 = o2.getClass().getSimpleName(); int classCompare = string1.compareToIgnoreCase(string2); @@ -220,9 +249,9 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ } } } - + /** - * + * */ private void updateView(List referencingObjects) { if (viewer != null && !viewer.getControl().isDisposed()){ @@ -237,34 +266,35 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ }catch(Exception e){ setContentDescription("Some Problems occured."); } - + } } /** {@inheritDoc} */ - public void selectionChanged(IWorkbenchPart part, ISelection selection) { + @Override + public void selectionChanged(IWorkbenchPart part, ISelection selection) { if(! (part instanceof BulkEditor)){ setContentDescription(""); showEmptyPage(); return; } - + if(! (selection instanceof LineSelection)){ return; } LineSelection lineSelection = (LineSelection) selection; - + if(lineSelection.size() != 1){ return; } - + if(! (lineSelection.getFirstElement() instanceof IdentifiableEntity)){ return; } - + showViewer(part, lineSelection); } - + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#showViewer(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ @@ -272,10 +302,10 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ @Override public void showViewer(IWorkbenchPart part, IStructuredSelection selection) { // this.part = part; - + updateReferencingObjects(((IdentifiableEntity) selection.getFirstElement()).getUuid(),selection.getFirstElement().getClass() ); } - + /** {@inheritDoc} */ @Override public void dispose() { @@ -283,7 +313,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ selectionService.removePostSelectionListener(this); selectionService.removeSelectionListener(this); super.dispose(); - + } /* (non-Javadoc) @@ -303,7 +333,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ public void changed(Object object) { // no editing in this view } - + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#onComplete() */ @@ -312,14 +342,14 @@ public class ReferencingObjectsView extends AbstractCdmViewPart{ public boolean onComplete() { return false; } - + public void refresh(){ - + selectionService.removePostSelectionListener(this); selectionService.removeSelectionListener(this); selectionService.addPostSelectionListener(this); selectionService.addSelectionListener(this); - + } -- 2.34.1