// $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.
*/
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;
/** Constant <code>ID="eu.etaxonomy.taxeditor.bulkeditor.refer"{trunked}</code> */
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)
*/
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<columnProperties.length;i++) {
+ if(columnProperties[i].equals(property) && tableLabelProvider!=null){
+ return tableLabelProvider.getColumnText(element, i);
+ }
+ }
+ return "";
+ }
+
+ @Override
+ public boolean canModify(Object element, String property) {
+ return true;
+ }
+ });
// viewer.setInput(new ArrayList<CdmBase>());
}
-
+
/**
* Create the columns for the table
* @param viewer
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);
}
table.setHeaderVisible(true);
table.setLinesVisible(true);
+
+ viewer.setCellEditors(editors);
+ viewer.setColumnProperties(titles);
}
/**
* @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<CdmBase> referencingObjects = getReferencingObjects(entityUUID, objectClass);
-
+
updateView(referencingObjects);
-
+
}
}
});
-
+
monitor.done();
-
-
+
+
return Status.OK_STATUS;
}
};
-
+
job.setPriority(Job.DECORATE);
job.schedule();
}
}
//referencedObject =(CdmBase) CdmStore.getService(IIdentifiableEntityService.class).load(referencedObject.getUuid());
Set<CdmBase> setOfReferencingObjects = null;
-
+
if (referencedObject != null){
referencedObjectTitleCache = ((IdentifiableEntity)referencedObject).getTitleCache();
setOfReferencingObjects = CdmStore.getCommonService().getReferencingObjects(referencedObject);
}
if (setOfReferencingObjects != null){
- List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);
-
+ List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);
+
Collections.sort(referencingObjects, new ReferencingClassComparator());
-
+
return referencingObjects;
-
+
}
} catch (Exception e) {
logger.error("Error retrieving referencing objects", e);
}
return null;
}
-
+
class ReferencingClassComparator implements Comparator<CdmBase> {
/* (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);
}
}
}
-
+
/**
- *
+ *
*/
private void updateView(List<CdmBase> referencingObjects) {
if (viewer != null && !viewer.getControl().isDisposed()){
}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)
*/
@Override
public void showViewer(IWorkbenchPart part, IStructuredSelection selection) {
// this.part = part;
-
+
updateReferencingObjects(((IdentifiableEntity) selection.getFirstElement()).getUuid(),selection.getFirstElement().getClass() );
}
-
+
/** {@inheritDoc} */
@Override
public void dispose() {
selectionService.removePostSelectionListener(this);
selectionService.removeSelectionListener(this);
super.dispose();
-
+
}
/* (non-Javadoc)
public void changed(Object object) {
// no editing in this view
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#onComplete()
*/
public boolean onComplete() {
return false;
}
-
+
public void refresh(){
-
+
selectionService.removePostSelectionListener(this);
selectionService.removeSelectionListener(this);
selectionService.addPostSelectionListener(this);
selectionService.addSelectionListener(this);
-
+
}