*/
public static SelectionListenerWithASTManager getDefault() {
if (fgDefault == null) {
- fgDefault= new SelectionListenerWithASTManager();
+ fgDefault = new SelectionListenerWithASTManager();
}
return fgDefault;
}
-
private final static class PartListenerGroup {
private ITextEditor fPart;
- private ISelectionChangedListener fSelectionListener, fPostSelectionListener;
+
+ private ISelectionChangedListener fSelectionListener,
+ fPostSelectionListener;
+
private Job fCurrentJob;
+
private ListenerList fAstListeners;
+
/**
- * Lock to avoid having more than one calculateAndInform job in parallel.
- * Only jobs may synchronize on this as otherwise deadlocks are possible.
+ * Lock to avoid having more than one calculateAndInform job in
+ * parallel. Only jobs may synchronize on this as otherwise deadlocks
+ * are possible.
*/
- private final Object fJobLock= new Object();
+ private final Object fJobLock = new Object();
public PartListenerGroup(ITextEditor part) {
- fPart= part;
- fCurrentJob= null;
- fAstListeners= new ListenerList();
+ fPart = part;
+ fCurrentJob = null;
+ fAstListeners = new ListenerList();
- fSelectionListener= new ISelectionChangedListener() {
+ fSelectionListener = new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
- ISelection selection= event.getSelection();
+ ISelection selection = event.getSelection();
if (selection instanceof ITextSelection) {
fireSelectionChanged((ITextSelection) selection);
}
}
};
- fPostSelectionListener= new ISelectionChangedListener() {
+ fPostSelectionListener = new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
- ISelection selection= event.getSelection();
+ ISelection selection = event.getSelection();
if (selection instanceof ITextSelection) {
firePostSelectionChanged((ITextSelection) selection);
}
public void install(ISelectionListenerWithAST listener) {
if (isEmpty()) {
- ISelectionProvider selectionProvider= fPart.getSelectionProvider();
+ ISelectionProvider selectionProvider = fPart
+ .getSelectionProvider();
if (selectionProvider instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) selectionProvider).addPostSelectionChangedListener(fPostSelectionListener);
- selectionProvider.addSelectionChangedListener(fSelectionListener);
+ ((IPostSelectionProvider) selectionProvider)
+ .addPostSelectionChangedListener(fPostSelectionListener);
+ selectionProvider
+ .addSelectionChangedListener(fSelectionListener);
}
}
fAstListeners.add(listener);
public void uninstall(ISelectionListenerWithAST listener) {
fAstListeners.remove(listener);
if (isEmpty()) {
- ISelectionProvider selectionProvider= fPart.getSelectionProvider();
+ ISelectionProvider selectionProvider = fPart
+ .getSelectionProvider();
if (selectionProvider instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) selectionProvider).removePostSelectionChangedListener(fPostSelectionListener);
- selectionProvider.removeSelectionChangedListener(fSelectionListener);
+ ((IPostSelectionProvider) selectionProvider)
+ .removePostSelectionChangedListener(fPostSelectionListener);
+ selectionProvider
+ .removeSelectionChangedListener(fSelectionListener);
}
}
}
if (fCurrentJob != null) {
fCurrentJob.cancel();
}
- final IJavaElement input= getJavaElement();
+ final IJavaElement input = getJavaElement();
if (input == null) {
return;
}
- fCurrentJob= new Job("SelectionListenerWithASTManager Job") {//JavaUIMessages.SelectionListenerWithASTManager_job_title) {
+ fCurrentJob = new Job("SelectionListenerWithASTManager Job") {// JavaUIMessages.SelectionListenerWithASTManager_job_title)
+ // {
public IStatus run(IProgressMonitor monitor) {
if (monitor == null) {
- monitor= new NullProgressMonitor();
+ monitor = new NullProgressMonitor();
}
synchronized (fJobLock) {
return calculateASTandInform(input, selection, monitor);
}
private IJavaElement getJavaElement() {
- IEditorInput editorInput= fPart.getEditorInput();
+ IEditorInput editorInput = fPart.getEditorInput();
if (editorInput != null)
- return (IJavaElement)editorInput.getAdapter(IJavaElement.class);
+ return (IJavaElement) editorInput
+ .getAdapter(IJavaElement.class);
return null;
}
- protected IStatus calculateASTandInform(IJavaElement input, ITextSelection selection, IProgressMonitor monitor) {
+ protected IStatus calculateASTandInform(IJavaElement input,
+ ITextSelection selection, IProgressMonitor monitor) {
if (monitor.isCanceled()) {
return Status.CANCEL_STATUS;
}
// create AST
try {
-// CompilationUnit astRoot= PHPeclipsePlugin.getDefault().getASTProvider().getAST(input, ASTProvider.WAIT_ACTIVE_ONLY, monitor);
+ // CompilationUnit astRoot=
+ // PHPeclipsePlugin.getDefault().getASTProvider().getAST(input,
+ // ASTProvider.WAIT_ACTIVE_ONLY, monitor);
-// if (astRoot != null && !monitor.isCanceled()) {
- Object[] listeners;
- synchronized (PartListenerGroup.this) {
- listeners= fAstListeners.getListeners();
- }
- for (int i= 0; i < listeners.length; i++) {
- ((ISelectionListenerWithAST) listeners[i]).selectionChanged(fPart, selection);//, astRoot);
- if (monitor.isCanceled()) {
- return Status.CANCEL_STATUS;
- }
+ // if (astRoot != null && !monitor.isCanceled()) {
+ Object[] listeners;
+ synchronized (PartListenerGroup.this) {
+ listeners = fAstListeners.getListeners();
+ }
+ for (int i = 0; i < listeners.length; i++) {
+ ((ISelectionListenerWithAST) listeners[i])
+ .selectionChanged(fPart, selection);// , astRoot);
+ if (monitor.isCanceled()) {
+ return Status.CANCEL_STATUS;
}
- return Status.OK_STATUS;
-// }
+ }
+ return Status.OK_STATUS;
+ // }
} catch (OperationCanceledException e) {
// thrown when cancelling the AST creation
}
}
}
-
private Map fListenerGroups;
private SelectionListenerWithASTManager() {
- fListenerGroups= new HashMap();
+ fListenerGroups = new HashMap();
}
/**
* Registers a selection listener for the given editor part.
- * @param part The editor part to listen to.
- * @param listener The listener to register.
+ *
+ * @param part
+ * The editor part to listen to.
+ * @param listener
+ * The listener to register.
*/
public void addListener(ITextEditor part, ISelectionListenerWithAST listener) {
synchronized (this) {
- PartListenerGroup partListener= (PartListenerGroup) fListenerGroups.get(part);
+ PartListenerGroup partListener = (PartListenerGroup) fListenerGroups
+ .get(part);
if (partListener == null) {
- partListener= new PartListenerGroup(part);
+ partListener = new PartListenerGroup(part);
fListenerGroups.put(part, partListener);
}
partListener.install(listener);
/**
* Unregisters a selection listener.
- * @param part The editor part the listener was registered.
- * @param listener The listener to unregister.
+ *
+ * @param part
+ * The editor part the listener was registered.
+ * @param listener
+ * The listener to unregister.
*/
- public void removeListener(ITextEditor part, ISelectionListenerWithAST listener) {
+ public void removeListener(ITextEditor part,
+ ISelectionListenerWithAST listener) {
synchronized (this) {
- PartListenerGroup partListener= (PartListenerGroup) fListenerGroups.get(part);
+ PartListenerGroup partListener = (PartListenerGroup) fListenerGroups
+ .get(part);
if (partListener != null) {
partListener.uninstall(listener);
if (partListener.isEmpty()) {
}
/**
- * Forces a selection changed event that is sent to all listeners registered to the given editor
- * part. The event is sent from a background thread: this method call can return before the listeners
- * are informed.
- * @param part The editor part that has a changed selection
- * @param selection The new text selection
+ * Forces a selection changed event that is sent to all listeners registered
+ * to the given editor part. The event is sent from a background thread:
+ * this method call can return before the listeners are informed.
+ *
+ * @param part
+ * The editor part that has a changed selection
+ * @param selection
+ * The new text selection
*/
public void forceSelectionChange(ITextEditor part, ITextSelection selection) {
synchronized (this) {
- PartListenerGroup partListener= (PartListenerGroup) fListenerGroups.get(part);
+ PartListenerGroup partListener = (PartListenerGroup) fListenerGroups
+ .get(part);
if (partListener != null) {
partListener.firePostSelectionChanged(selection);
}
}
- }}
+ }
+}