package eu.etaxonomy.taxeditor.editor;
+import java.util.HashSet;
import java.util.Set;
+import java.util.UUID;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ui.IEditorInput;
public void contextStart(IMemento memento, IProgressMonitor monitor) {
restoreEditors(memento, monitor);
}
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextRefresh(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void contextRefresh(IProgressMonitor monitor) {
+ refreshEditors(monitor);
+ }
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
subProgressMonitor.done();
}
+ /**
+ * @param monitor
+ */
+ private void refreshEditors(IProgressMonitor monitor) {
+ IProgressMonitor subProgressMonitor = EditorUtil.getSubProgressMonitor(monitor, 1);
+
+ Set<IEditorPart> openEditors = EditorUtil.getOpenEditors();
+
+
+ subProgressMonitor.beginTask("Refreshing Editors", openEditors.size() * 2);
+
+ Set<UUID> uuids = new HashSet<UUID>();
+
+ for(IEditorPart editor : openEditors){
+ if(editor instanceof MultiPageTaxonEditor){
+ try {
+ uuids.add(((TaxonEditorInput) editor.getEditorInput()).getTaxonNode().getUuid());
+
+// ((MultiPageTaxonEditor) editor).close(false);
+ EditorUtil.close((MultiPageTaxonEditor)editor);
+ subProgressMonitor.worked(1);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ for(UUID uuid : uuids){
+ try {
+ EditorUtil.openTaxonNode(uuid);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ subProgressMonitor.worked(1);
+ }
+
+ subProgressMonitor.done();
+ }
+
/**
* Saves the UUIDs
*
* @return a boolean.
*/
public boolean isRedrawing();
+
}
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.commands.operations.UndoContext;
*
* @return a {@link java.util.List} object.
*/
- public List<IEditorPart> getPages(){
- ArrayList<IEditorPart> editors = new ArrayList<IEditorPart>();
+ public List<IMultiPageTaxonEditorPage> getPages(){
+ ArrayList<IMultiPageTaxonEditorPage> editors = new ArrayList<IMultiPageTaxonEditorPage>();
for(int i = 0; i < this.getPageCount(); i++){
- editors.add(this.getEditor(i));
+
+ editors.add((IMultiPageTaxonEditorPage) this.getEditor(i));
}
return editors;
}
* @return a boolean.
*/
public boolean onComplete() {
- // TODO Auto-generated method stub
return false;
}
+
+ /**
+ * Reloads the data for this
+ */
+ public void reload() {
+ if(isDirty()){
+ EditorUtil.warningDialog("Editor has unsaved data", getClass(), "This editor can not be " +
+ "refreshed because it contains unsaved data. Refreshing " +
+ "this editor would discard the changes. Please save this editor, " +
+ "close and reopen it manually in order to get the latest content");
+ }else{
+ TaxonEditorInput input = (TaxonEditorInput) getEditorInput();
+
+ UUID uuid = input.getTaxonNode().getUuid();
+
+ conversation.clear();
+
+ try {
+ TaxonEditorInput newInput = TaxonEditorInput.NewInstance(uuid);
+ setInput(newInput);
+ for(IMultiPageTaxonEditorPage editorPart : getPages()){
+ editorPart.redraw();
+ }
+ } catch (Exception e) {
+ EditorUtil.errorDialog("Error refreshing editor", getClass(), "Could not refresh this editor", e);
+ }
+ }
+ }
}
/** {@inheritDoc} */
public void setInput(IEditorInput input){
- this.setInputWithNotify(input);
+ this.setInputWithNotify(input);
}
/*
public boolean redraw(boolean focus) {
createNameComposites();
-
+
if(focus){
setFocus();
}
* @return a boolean.
*/
public boolean isActive(){
-
-
IWorkbenchPart activePart = EditorUtil.getActivePart();
return editor.equals(activePart);
}
// getSelectedObject().colorSelected(AbstractGroupedContainer.SELECTED_NO_FOCUS);
}
}
-
}
}
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextRefresh(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void contextRefresh(IProgressMonitor monitor) {
+ TaxonNavigator navigator = NavigationUtil.getNavigator(true);
+ if(navigator != null){
+ navigator.refresh();
+ }
+ }
+
/**
* {@inheritDoc}
*
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
import eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator;
import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
+import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
monitor.worked(10);
- display.asyncExec(new Runnable() {
-
- @Override
- public void run() {
- // terminate any open transactions
- IWorkbenchPart activePart = StoreUtil.getActivePage().getActivePart();
-
- if(activePart instanceof IConversationEnabled){
- IConversationEnabled conversationEnabled = (IConversationEnabled) activePart;
- conversationEnabled.getConversationHolder().commit(false);
- }
- }
- });
+// display.asyncExec(new Runnable() {
+//
+// @Override
+// public void run() {
+// // terminate any open transactions
+// IWorkbenchPart activePart = StoreUtil.getActivePage().getActivePart();
+//
+// if(activePart instanceof IConversationEnabled){
+// IConversationEnabled conversationEnabled = (IConversationEnabled) activePart;
+// conversationEnabled.getConversationHolder().commit(false);
+// }
+// }
+// });
monitor.worked(10);
CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<IImportConfigurator>();
"Please check error log for details.", e);
}
+ monitor.worked(10);
+ monitor.done();
+
display.asyncExec(new Runnable() {
@Override
public void run() {
- // restarting transaction and committing it to trigger change listener
- // TODO verify correct behaviour
- IWorkbenchPart activePart = StoreUtil.getActivePage().getActivePart();
+// // restarting transaction and committing it to trigger change listener
+// // TODO verify correct behaviour
+// IWorkbenchPart activePart = StoreUtil.getActivePage().getActivePart();
+//
+// if(activePart instanceof IConversationEnabled){
+// IConversationEnabled conversationEnabled = (IConversationEnabled) activePart;
+//
+// conversationEnabled.getConversationHolder().startTransaction();
+// conversationEnabled.getConversationHolder().commit();
+// }
- if(activePart instanceof IConversationEnabled){
- IConversationEnabled conversationEnabled = (IConversationEnabled) activePart;
-
- conversationEnabled.getConversationHolder().startTransaction();
- conversationEnabled.getConversationHolder().commit();
- }
-
+ CdmStore.getContextManager().notifyContextRefresh();
}
});
- monitor.worked(10);
return Status.OK_STATUS;
}
*/
/** {@inheritDoc} */
public void init(IWorkbench workbench, IStructuredSelection selection) {
+ super.init(workbench, selection);
configurator = CdmStore.getImportManager().AbcdConfigurator();
}
package eu.etaxonomy.taxeditor.io.wizard;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardContainer;
import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
import eu.etaxonomy.cdm.io.common.IImportConfigurator;
import eu.etaxonomy.cdm.io.common.IIoConfigurator;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
* <p>Abstract AbstractImportWizard class.</p>
private GenericConfiguratorWizardPage pageConfiguration;
private NomenclaturalCodeWizardPage pageNomenclaturalCode;
+
+ private IWorkbench workbench;
+
+ private IStructuredSelection selection;
/* (non-Javadoc)
pageNomenclaturalCode = new NomenclaturalCodeWizardPage((IImportConfigurator)getConfigurator());
this.addPage(pageNomenclaturalCode);
+
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#setContainer(org.eclipse.jface.wizard.IWizardContainer)
+ */
+ @Override
+ public void setContainer(IWizardContainer wizardContainer) {
+ super.setContainer(wizardContainer);
+ checkForUnsavedEditors();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ @Override
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.setWorkbench(workbench);
+ this.setSelection(selection);
+ }
+
+ protected void checkForUnsavedEditors(){
+ IWorkbenchPage activePage = getWorkbench().getActiveWorkbenchWindow().getActivePage();
+
+ if(activePage != null){
+ for (IEditorReference reference : activePage.getEditorReferences()) {
+ IEditorPart editor = reference.getEditor(false);
+ if(editor.isDirty()){
+
+ MessageDialog.open(MessageDialog.WARNING, getShell(), "Unsaved editors", "Please save all open editors before executing " +
+ "an import operation. The import operation will be cancelled", SWT.NONE);
+
+ performCancel();
+ if(getContainer() instanceof WizardDialog){
+ ((WizardDialog)getContainer()).close();
+ }
+
+ }
+ }
+ }
}
/**
* @return a CONFIG object.
*/
public abstract CONFIG getConfigurator();
+
+ /**
+ * @param selection the selection to set
+ */
+ public void setSelection(IStructuredSelection selection) {
+ this.selection = selection;
+ }
+
+ /**
+ * @return the selection
+ */
+ public IStructuredSelection getSelection() {
+ return selection;
+ }
+
+ /**
+ * @param workbench the workbench to set
+ */
+ public void setWorkbench(IWorkbench workbench) {
+ this.workbench = workbench;
+ }
+
+ /**
+ * @return the workbench
+ */
+ public IWorkbench getWorkbench() {
+ return workbench;
+ }
}
*/
/** {@inheritDoc} */
public void init(IWorkbench workbench, IStructuredSelection selection) {
+ super.init(workbench, selection);
configurator = CdmStore.getImportManager().BerlinModelConfigurator();
}
*/
/** {@inheritDoc} */
public void init(IWorkbench workbench, IStructuredSelection selection) {
+ super.init(workbench, selection);
configurator = CdmStore.getImportManager().EndnoteConfigurator();
}
*/
/** {@inheritDoc} */
public void init(IWorkbench workbench, IStructuredSelection selection) {
+ super.init(workbench, selection);
configurator = CdmStore.getImportManager().NormalExplicitConfigurator();
}
*/
/** {@inheritDoc} */
public void init(IWorkbench workbench, IStructuredSelection selection) {
+ super.init(workbench, selection);
configurator = CdmStore.getImportManager().JaxbConfigurator();
}
*/
/** {@inheritDoc} */
public void init(IWorkbench workbench, IStructuredSelection selection) {
+ super.init(workbench, selection);
configurator = CdmStore.getImportManager().SddConfigurator();
}
}
*/
/** {@inheritDoc} */
public void init(IWorkbench workbench, IStructuredSelection selection) {
+ super.init(workbench, selection);
configurator = CdmStore.getImportManager().TcsConfigurator();
}
@Override
public void contextStart(IMemento memento, IProgressMonitor monitor) {
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.IContextListener#contextRefresh(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void contextRefresh(IProgressMonitor monitor) {
+
}
/* (non-Javadoc)
*/
public abstract void contextStart(IMemento memento, IProgressMonitor monitor);
+ public abstract void contextRefresh(IProgressMonitor monitor);
+
/**
* <p>workbenchShutdown</p>
*
}
}
+
+ /**
+ *
+ */
+ public void notifyContextRefresh() {
+ StoreUtil.info("Notifying context listeners, that the context needs to be refreshed.");
+ ProgressMonitorDialog dialog = new ProgressMonitorDialog(StoreUtil.getShell());
+
+ try {
+ dialog.run(false, false, new IRunnableWithProgress() {
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void run(IProgressMonitor monitor)
+ throws InvocationTargetException, InterruptedException {
+ monitor.beginTask("Refreshing context", contextListeners.size());
+
+ for(final Object listener : contextListeners.getListeners()){
+ ((IContextListener) listener).contextRefresh(monitor);
+ monitor.worked(1);
+ }
+ monitor.done();
+ }
+ });
+ } catch (InvocationTargetException e) {
+ StoreUtil.error(getClass(), e);
+ } catch (InterruptedException e) {
+ StoreUtil.error(getClass(), e);
+ }
+ }
+
/**
* <p>notifyContextAboutToStop</p>
*
path = path.append("editor_state_" + CdmStore.getDataSource().getName() + ".xml");
return path.toFile();
}
+
}