-// $Id$
/**
* Copyright (C) 2007 EDIT
* European Distributed Institute of Taxonomy
package eu.etaxonomy.taxeditor.bulkeditor;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.commands.operations.UndoContext;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IViewPart;
import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
-import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView;
+import eu.etaxonomy.taxeditor.bulkeditor.input.OccurrenceEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
- * <p>
- * BulkEditor class.
- * </p>
- *
* @author p.ciardelli
* @created 07.07.2009
* @version 1.0
private boolean isDirty;
- /**
- * <p>Constructor for BulkEditor.</p>
- */
+ private IUndoContext undoContext;
+
public BulkEditor() {
super(CdmStore.createConversation());
+ undoContext = new UndoContext();
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.editors.text.TextEditor#initializeEditor()
- */
/** {@inheritDoc} */
@Override
protected void initializeEditor() {
setSourceViewerConfiguration(new BulkEditorViewerConfiguration(lineDisplayStrategy));
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.bulkeditor.ListEditor#createSourceViewer(org.eclipse.swt.widgets.Composite, org.eclipse.jface.text.source.IVerticalRuler, int)
- */
/** {@inheritDoc} */
@Override
protected ISourceViewer createSourceViewer(Composite parent,
return viewer;
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.bulkeditor.AnnotatedLineEditor#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
- */
/** {@inheritDoc} */
@Override
public void init(IEditorSite site, IEditorInput input)
if (!(input instanceof AbstractBulkEditorInput)) {
throw new PartInitException("Invalid Input: Must be BulkEditorInput");
}
-
+ else{
+ AbstractBulkEditorInput<?> bulkEditorInput = (AbstractBulkEditorInput<?>)input;
+ if(bulkEditorInput.getEntityUuid()!=null){
+ bulkEditorInput.performSearch(new BulkEditorQuery(bulkEditorInput.getEntityUuid().toString(), null));
+ }
+ }
super.init(site, input);
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createPartControl(org.eclipse.swt.widgets.Composite)
- */
/** {@inheritDoc} */
@Override
public void createPartControl(Composite parent) {
}
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.editors.text.TextEditor#dispose()
- */
/** {@inheritDoc} */
@Override
public void dispose() {
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#isEditable()
- */
/** {@inheritDoc} */
@Override
public boolean isEditable() {
return false;
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor#setFocus()
- */
/** {@inheritDoc} */
@Override
public void setFocus() {
conversation.bind();
- searchBar.setFocus();
// TODO find a better place to put this - this dialog should be shown after initial contents of
// Editor are displayed
displayWarningDialog();
isInitialFocus = false;
}
+ super.setFocus();
+ searchBar.setFocus();
}
/**
- *
+ * @return the searchBar
*/
+ public BulkEditorSearch getSearchBar() {
+ return searchBar;
+ }
+
private void displayWarningDialog() {
IPreferenceStore prefs = PreferencesUtil.getPreferenceStore();
- if (!prefs.getBoolean(PreferencesUtil.HIDE_BULKEDITOR_INFO)) {
+ if (!prefs.getBoolean(IPreferenceKeys.HIDE_BULKEDITOR_INFO)) {
String msg = "The Bulk Editor allows you to edit objects used to reference other objects, such as names, references, and authors.\n\n" +
"Any changes you make to an object in the Bulk Editor will be displayed wherever the object is used.\n\n" +
"For instance, a reference may be displayed with both a name and a descriptive element. If the reference name is changed here, the display of both the name and the descriptive element will be affected.";
MessageDialogWithToggle dialog = MessageDialogWithToggle.openOkCancelConfirm
(getSite().getShell(), "Bulk Editor", msg, "Do not show this message again",
- false, null, PreferencesUtil.HIDE_BULKEDITOR_INFO);
+ false, null, IPreferenceKeys.HIDE_BULKEDITOR_INFO);
if (dialog.getReturnCode() == Window.OK) {
- prefs.setValue(PreferencesUtil.HIDE_BULKEDITOR_INFO, dialog.getToggleState());
+ prefs.setValue(IPreferenceKeys.HIDE_BULKEDITOR_INFO, dialog.getToggleState());
}
}
}
- /**
- * @param control
- */
private void addToggleMergeCandidateListener(Control control) {
control.addMouseListener(new MouseAdapter() {
@Override
});
}
- /**
- * <p>toggleMergeCandidateAnnotation</p>
- *
- * @param line a int.
- */
public void toggleMergeCandidateAnnotation(int line) {
IDocument document = getSourceViewer().getDocument();
}
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor#isDirty()
- */
@Override
public boolean isDirty() {
if(isDirty){
isDirty = true;
firePropertyChange(PROP_DIRTY);
}
-
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor#doSave(org.eclipse.core.runtime.IProgressMonitor)
- */
- @Override
+
+
+ @Override
public void doSave(IProgressMonitor progressMonitor) {
isDirty = false;
-
+
super.doSave(progressMonitor);
selectFirstItem();
-
+
getSourceViewer().getTextWidget().setFocus();
}
// firePropertyChange(PROP_DIRTY);
}
- /* (non-Javadoc)
- * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
- */
/** {@inheritDoc} */
public void performSearch(BulkEditorQuery query) {
if (query != null) {
// TODO check if dirty, prompt save
if (isDirty()) {
- boolean proceed = MessageDialog.openQuestion(getEditorSite().getShell(),
- "Save changes", "You have made changes that must be saved before this query can be executed. Would you like to proceed?");
- if (proceed) {
+ String[] labels = {"Save (and Search)", "Don't save (and Search)","Cancel"};
+ MessageDialog dialog =new MessageDialog(getEditorSite().getShell(), "Save changes", null, "You have made changes that must be saved before this query can be executed. Would you like to proceed?", MessageDialog.QUESTION,labels, 0);
+ int result = dialog.open();
+ //MessageDialog.openQuestion(getEditorSite().getShell(),
+ //"Save changes", "You have made changes that must be saved before this query can be executed. Would you like to proceed?");
+ if (result == 0) {
doSave(null);
- } else {
+ } else if (result == 2){
return;
}
}
+ //conversation.clear();
+ //conversation.commit(true);
+ getEditorInput().dispose();
+ getEditorInput().bind();
getEditorInput().performSearch(query);
-
+
refresh();
selectFirstItem();
getSelectionProvider().setSelection(selection);
}
- /**
- *
- */
public void refresh() {
if(getDocumentProvider().getAnnotationModel(getEditorInput()) != null){
((AnnotationModel) getDocumentProvider().getAnnotationModel(getEditorInput())).removeAllAnnotations();
menu.remove(ITextEditorActionConstants.SHIFT_LEFT);
menu.remove(ITextEditorActionConstants.CONTEXT_PREFERENCES);
}
+
+ @Override
+ public boolean canAttachMedia() {
+ return (getEditorInput() instanceof TaxonEditorInput || getEditorInput() instanceof OccurrenceEditorInput) ?true:false;
+ }
+
+ public IUndoContext getUndoContext() {
+ return undoContext;
+ }
+
+
}