import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.preference.Resources;
-import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
-import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @created 30.04.2014
* @version 1.0
*/
-public class ChecklistEditor extends EditorPart implements ISelectionListener, IPartContentHasFactualData,
- IConversationEnabled, IContextListener, IPartContentHasDetails, IDirtyMarkable, ICdmEntitySessionEnabled {
+public class ChecklistEditor extends EditorPart implements ISelectionListener, IPartContentHasFactualData, IConversationEnabled,
+ IContextListener, IPartContentHasDetails, IDirtyMarkable{//, ICdmEntitySessionEnabled {
private static final Logger logger = Logger.getLogger(ChecklistEditor.class);
/**
*/
private static final String CHECKLIST_EDITOR_MEMENTO_KEY = "checklistEditor";
+
+
+
private class ChecklistJob extends Job {
private List<TaxonNode> taxonNodes;
super(title);
this.taxonNodes = listTaxonNodes;
+
}
/*
private Label statusLabel;
- private final ICdmEntitySession cdmEntitySession;
+ // private final ICdmEntitySession cdmEntitySession;
+
+ private ChecklistLabelProvider labelProvider;
private SortedSet<DefinedTermBase> terms = null;
private ToolItem toolItem;
* </p>
*/
public ChecklistEditor() {
- cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
+ //cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
+
}
/** {@inheritDoc} */
taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
selectionService = getSite().getWorkbenchWindow().getSelectionService();
selectionService.addSelectionListener(this);
+ viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+ labelProvider = new ChecklistLabelProvider(this.viewer);
+ terms = labelProvider.getNamedAreas();
+ if (terms == null){
+ MessagingUtils.informationDialog("No Areas to display", "Please choose the areas you want to display. "
+ + "Therefore go to the preferences, choose the Checklist Editor and choose the areas in the Distribution Selection Wizard.");
+ this.dispose();
+ return;
+ }
filter = new ChecklistEditorFilter();
- ChecklistLabelProvider labelProvider = new ChecklistLabelProvider();
- terms = (SortedSet<DefinedTermBase>) labelProvider.getTermsOrderedByLabels(labelProvider.getNamedAreas(),
- CdmStore.getDefaultLanguage());
createTopComposite(parent);
loadDataInput();
}
final Text searchText = createSearchBar(parent);
createToolbar(parent);
- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+
getSite().setSelectionProvider(viewer);
final ModifyListener modifyListener = new ChecklistModifyListener(viewer, filter, searchText);
createTable();
viewer.setContentProvider(new ChecklistContentProvider());
- viewer.setLabelProvider(new ChecklistLabelProvider(viewer));
+ viewer.setLabelProvider(this.labelProvider);
comparator = new ChecklistEditorComparator();
viewer.setComparator(comparator);
private void createToolbarItems() {
dropListener = new ChecklistDropdownSelectionListener(toolItem, this, terms);
+
for (DefinedTermBase<DefinedTermBase> term : terms) {
if(term!=null){
dropListener.add(term);
private void createTable() {
Table table = viewer.getTable();//new Table(parent, viewer.getTable().getStyle());
List<String> titles = new ArrayList<String>();
- Collections.addAll(titles, "Taxon", "Author", "Rank");
List<Integer> bounds = new ArrayList<Integer>();
- Collections.addAll(bounds, 300, 200, 200);
+ if (PreferencesUtil.isShowRankInChecklistEditor()){
+ Collections.addAll(titles, "Taxon", "Rank");
+ Collections.addAll(bounds, 300, 200);
+ } else{
+ Collections.addAll(titles, "Taxon");
+ Collections.addAll(bounds, 300);
+ }
+
+
Map<Integer, Boolean> restoreValuesForColumnWidth = restoreValuesForColumnWidth(titles, bounds);
createInitalDistributionColumns(table, titles, bounds, restoreValuesForColumnWidth);
table.setSortDirection(SWT.DOWN);
* @param restoreValuesForColumnWidth
*/
private void createInitalDistributionColumns(Table table,
- List<String> titles, List<Integer> bounds,
- Map<Integer, Boolean> restoreValuesForColumnWidth) {
+ List<String> titles, List<Integer> bounds, Map<Integer, Boolean> restoreValuesForColumnWidth) {
for (int columnIndex = 0; columnIndex < titles.size(); columnIndex++) {
TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
column.getColumn().setText(titles.get(columnIndex));
column.getColumn().setResizable(true);
column.getColumn().setMoveable(true);
column.getColumn().addSelectionListener(getSelectionAdapter(column.getColumn(), columnIndex));
- if (columnIndex == 1) {
+ if (columnIndex == 0) {
table.setSortColumn(column.getColumn());
}
- if (columnIndex == 2) {
+ if (columnIndex == 1 && PreferencesUtil.isShowRankInChecklistEditor()) {
/** uncommented it for now because no rank editing is wanted **/
// column.setEditingSupport(new RankEditingSupport(viewer, this));
}
- if (columnIndex >= 3) {
+ if ((columnIndex == 1 && !PreferencesUtil.isShowRankInChecklistEditor()) || columnIndex >= 2 ) {
//read PrefrenceStore to setWidth according to last saved state
if(restoreValuesForColumnWidth.get(columnIndex)){
- column.getColumn().setWidth(100);
+ column.getColumn().setWidth(50);
}else{
- column.getColumn().setWidth(0);
+ column.getColumn().setWidth(50);
}
column.setEditingSupport(new DistributionEditingSupport(viewer, this, columnIndex));
}
List<Integer> bounds) {
Map<Integer, Boolean> restoreColumnWidth = new HashMap<Integer, Boolean>();
if (terms != null) {
- int columnIndex = 4;
+ int columnIndex;
+ if (PreferencesUtil.isShowRankInChecklistEditor()){
+ columnIndex = 2;
+ } else{
+ columnIndex = 1;
+ }
for (DefinedTermBase<DefinedTermBase> term : terms) {
if(term != null){
restoreColumnWidth.put(columnIndex, PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString()));
- titles.add(term.getTitleCache());
+ if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
+ if (term.getIdInVocabulary() != null){
+ titles.add(term.getIdInVocabulary());
+ } else{
+ titles.add(term.getTitleCache());
+ }
+ }else{
+ titles.add(term.getTitleCache());
+ }
bounds.add(200);
columnIndex++;
}
TaxonNode taxonNode = checklistEditorInput.getTaxonNode();
if (classification != null && taxonNode == null) {
countNodes = taxonNodeService.countAllNodesForClassification(classification);
- statusLabel.setText("Anzahl der Elemente: " + (countNodes != null ? countNodes : "uknown"));
+ statusLabel.setText("Anzahl der Elemente: " + (countNodes != null ? countNodes : "unknown"));
// This should not kill the view nor the editor if something goes
// wrong
// TODO: don't load the whole taxonNode Object but rather a small
/** {@inheritDoc} */
@Override
public void dispose() {
- cdmEntitySession.dispose();
+ this.checklistEditorInput.dispose();
+
+ conversation.unregisterForDataStoreChanges(this);
+ conversation.close();
super.dispose();
}
/** {@inheritDoc} */
@Override
public void setFocus() {
- cdmEntitySession.bind();
+
viewer.getControl().setFocus();
}
Table table = viewer.getTable();
table.setRedraw(false);
SortedSet<DefinedTermBase> oldTerms = terms;
- ChecklistLabelProvider labelProvider = new ChecklistLabelProvider();
- terms = (SortedSet<DefinedTermBase>) labelProvider.getTermsOrderedByLabels(labelProvider.getNamedAreas(), CdmStore.getDefaultLanguage());
- SortedSet<DefinedTermBase> newTerms = terms;
+
+// if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
+//
+// } else{
+// terms = (SortedSet<DefinedTermBase>) labelProvider.getTermsOrderedByLabels(labelProvider.getNamedAreas(), CdmStore.getDefaultLanguage());
+// }
+ SortedSet<DefinedTermBase> newTerms = labelProvider.getNamedAreas();
toolItem.removeSelectionListener(dropListener);
hideDistributionColumns(oldTerms);
createToolbarItems();
addTableViewerColumn(term.getTitleCache(), 200, count);
acitivateNewColumnInDropDownMenu(term);
}
- viewer.setLabelProvider(new ChecklistLabelProvider(viewer));
+ viewer.setLabelProvider(labelProvider);
getService().schedule(new ChecklistJob("loading Taxa", selectedTaxonNodes), Job.LONG);
table.setRedraw(true);
viewer.refresh();
public void doSave(IProgressMonitor monitor) {
try {
monitor.beginTask("Saving Editor", 1);
- getConversationHolder().bind();
- getConversationHolder().commit(true);
+ if (!conversation.isBound()) {
+ conversation.bind();
+ }
+ CdmStore.getService(ITaxonNodeService.class).merge(selectedTaxonNodes, true);
+ //this.checklistEditorInput.merge();
+ conversation.commit(true);
setDirty(false);
monitor.worked(1);
} finally {
if (input instanceof ChecklistEditorInput) {
checklistEditorInput = (ChecklistEditorInput) input;
setPartName(getPartName() + ": " + checklistEditorInput.getName());
- conversation = ((ChecklistEditorInput) input).getConversationHolder();
+ conversation = checklistEditorInput.getConversation();
+ conversation.registerForDataStoreChanges(this);
}
simpleSelectionProvider = new SimpleSelectionProvider();
getSite().setSelectionProvider(simpleSelectionProvider);
+
}
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update
- * (eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
- */
- @Override
- public void update(CdmDataChangeMap changeEvents) {
- }
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder
- * ()
- */
- @Override
- public ConversationHolder getConversationHolder() {
- return conversation;
- }
+
/*
* (non-Javadoc)
private static final List<String> NODE_INIT_STRATEGY = Arrays.asList(new String[] { "descriptions",
"descriptions.*", "description.state", "feature", "feature.*", "childNodes", "childNodes.taxon",
"childNodes.taxon.name", "taxonNodes", "taxonNodes.*", "taxonNodes.taxon.*", "taxon.*",
- "taxon.descriptions", "taxon.sec", "taxon.name.*", "taxon.synonymRelations", "terms", "name.*",
- "name.rank.representations", "name.status.type.representations", "sources.$", "stateData.$" });
+ "taxon.descriptions", "taxon.sec", "taxon.name.*", "terms", "name.*",
+ "name.rank.representations", "name.status.type.representations", "stateData.$" });
/*
* (non-Javadoc)
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
*/
- @Override
- public ICdmEntitySession getCdmEntitySession() {
- // TODO Auto-generated method stub
- return null;
+
+
+// /* (non-Javadoc)
+// * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
+// */
+// @Override
+// public <T extends CdmBase> Collection<T> getRootEntities() {
+// // TODO Auto-generated method stub
+// return null;
+// }
+//
+// /* (non-Javadoc)
+// * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
+// */
+// @Override
+// public Map<Object, List<String>> getPropertyPathsMap() {
+// // TODO Auto-generated method stub
+// return null;
+// }
+
+ /**
+ * @return the labelProvider
+ */
+ public ChecklistLabelProvider getLabelProvider() {
+ return labelProvider;
}
/* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
+ * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
*/
@Override
- public <T extends CdmBase> Collection<T> getRootEntities() {
+ public void update(CdmDataChangeMap arg0) {
// TODO Auto-generated method stub
- return null;
+
}
/* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
+ * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
*/
@Override
- public Map<Object, List<String>> getPropertyPathsMap() {
- // TODO Auto-generated method stub
- return null;
+ public ConversationHolder getConversationHolder() {
+
+ return conversation;
}
}