-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.taxeditor.editor;\r
-\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.ListenerList;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.core.runtime.jobs.Job;\r
-import org.eclipse.jface.util.SafeRunnable;\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.ISelectionChangedListener;\r
-import org.eclipse.jface.viewers.ISelectionProvider;\r
-import org.eclipse.jface.viewers.SelectionChangedEvent;\r
-import org.eclipse.jface.viewers.StructuredSelection;\r
-import org.eclipse.swt.widgets.Display;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @author n.hoffmann\r
- * @created 16.05.2008\r
- * @version 1.0\r
- */\r
-public class SimpleSelectionProvider implements ISelectionProvider {\r
-\r
- private ListenerList selectionChangedListeners = new ListenerList();\r
- private ISelection selection;\r
- private Job job;\r
- \r
- /*\r
- * (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)\r
- */\r
- public void addSelectionChangedListener(\r
- ISelectionChangedListener listener) {\r
- selectionChangedListeners.add(listener);\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection()\r
- */\r
- public ISelection getSelection() {\r
- if (selection != null)\r
- return selection;\r
- // TODO we have to return an empty selection to avoid NPE\r
- // I don't really understand why this was not the case before\r
- return new StructuredSelection();\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)\r
- */\r
- public void removeSelectionChangedListener(\r
- ISelectionChangedListener listener) {\r
- selectionChangedListeners.remove(listener);\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)\r
- */\r
- public void setSelection(ISelection selection) {\r
- this.selection = selection;\r
- \r
- // cancel previous selection setting\r
- if(job != null){\r
- job.cancel();\r
- job = null;\r
- }\r
- \r
- if(job == null){\r
- final SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(this, selection);\r
- final Display display = Display.getCurrent();\r
- job = new Job("Setting Selection"){\r
- \r
- @Override\r
- protected IStatus run(IProgressMonitor monitor) {\r
- monitor.beginTask("Setting Selection", 10);\r
- \r
- if(!monitor.isCanceled()){\r
- display.asyncExec(new Runnable() {\r
- \r
- public void run() {\r
- fireSelectionChanged(selectionChangedEvent);\r
- }\r
- });\r
- }\r
- \r
- return Status.OK_STATUS;\r
- }\r
- \r
- };\r
- \r
- job.setPriority(Job.DECORATE);\r
- job.schedule();\r
- }\r
- \r
- }\r
-\r
- private void fireSelectionChanged(final SelectionChangedEvent event) {\r
- \r
- Object[] listeners = selectionChangedListeners.getListeners();\r
- for (int i = 0; i < listeners.length; ++i) {\r
- final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];\r
- SafeRunnable.run(new SafeRunnable() {\r
- public void run() {\r
- l.selectionChanged(event);\r
- }\r
- });\r
- }\r
- }\r
-}\r
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.taxeditor.editor;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.util.SafeRunnable;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * <p>SimpleSelectionProvider class.</p>
+ *
+ * @author p.ciardelli
+ * @author n.hoffmann
+ * @created 16.05.2008
+ * @version 1.0
+ */
+public class SimpleSelectionProvider implements ISelectionProvider {
+
+ private ListenerList selectionChangedListeners = new ListenerList();
+ private ISelection selection;
+ private Job job;
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+ */
+ /** {@inheritDoc} */
+ public void addSelectionChangedListener(
+ ISelectionChangedListener listener) {
+ selectionChangedListeners.add(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection()
+ */
+ /**
+ * <p>Getter for the field <code>selection</code>.</p>
+ *
+ * @return a {@link org.eclipse.jface.viewers.ISelection} object.
+ */
+ public ISelection getSelection() {
+ if (selection != null)
+ return selection;
+ // TODO we have to return an empty selection to avoid NPE
+ // I don't really understand why this was not the case before
+ return new StructuredSelection();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
+ */
+ /** {@inheritDoc} */
+ public void removeSelectionChangedListener(
+ ISelectionChangedListener listener) {
+ selectionChangedListeners.remove(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)
+ */
+ /** {@inheritDoc} */
+ public void setSelection(ISelection selection) {
+ this.selection = selection;
+
+ // cancel previous selection setting
+ if(job != null){
+ job.cancel();
+ job = null;
+ }
+
+ if(job == null){
+ final SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(this, selection);
+ final Display display = Display.getCurrent();
+ job = new Job("Setting Selection"){
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask("Setting Selection", 10);
+
+ if(!monitor.isCanceled()){
+ display.asyncExec(new Runnable() {
+
+ public void run() {
+ fireSelectionChanged(selectionChangedEvent);
+ }
+ });
+ }
+
+ return Status.OK_STATUS;
+ }
+
+ };
+
+ job.setPriority(Job.DECORATE);
+ job.schedule();
+ }
+
+ }
+
+ private void fireSelectionChanged(final SelectionChangedEvent event) {
+
+ Object[] listeners = selectionChangedListeners.getListeners();
+ for (int i = 0; i < listeners.length; ++i) {
+ final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
+ SafeRunnable.run(new SafeRunnable() {
+ public void run() {
+ l.selectionChanged(event);
+ }
+ });
+ }
+ }
+}