Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 116308 Details for
Bug 220557
[StatusHandling] Handling of jobs statuses needs polishing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Fix proposition (still under testing)
20081028.txt (text/plain), 22.40 KB, created by
Krzysztof Daniel
on 2008-10-28 11:45:25 EDT
(
hide
)
Description:
Fix proposition (still under testing)
Filename:
MIME Type:
Creator:
Krzysztof Daniel
Created:
2008-10-28 11:45:25 EDT
Size:
22.40 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.workbench >Index: Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java,v >retrieving revision 1.9 >diff -u -r1.9 AbstractStatusHandler.java >--- Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java 15 May 2007 12:38:58 -0000 1.9 >+++ Eclipse UI/org/eclipse/ui/statushandlers/AbstractStatusHandler.java 28 Oct 2008 15:44:17 -0000 >@@ -46,6 +46,13 @@ > * </p> > * > * <p> >+ * If handler does not process all {@link StatusAdapter}s immediately, it is >+ * recommended to provide a way of forcing it to do so by overriding >+ * {@link #handleDeferred()} method. It is also handler responsibility to notify >+ * {@link StatusManager} when deferred statuses arrive or are handled. >+ * </p> >+ * >+ * <p> > * A status handler has the id and a set of parameters. The handler can use them > * during handling. If the handler is added as an extension, both are set during > * initialization of the handler using elements and attributes of >@@ -53,6 +60,8 @@ > * </p> > * > * @since 3.3 >+ * @see StatusManager#deferredStatusAdapterPassed(StatusAdapter) >+ * @see StatusManager#deferredStatusAdaptersHandled() > */ > public abstract class AbstractStatusHandler { > >@@ -136,4 +145,14 @@ > public void setId(String id) { > this.id = id; > } >+ >+ /** >+ * Status handler may not handle all statuses immediately. This method is an >+ * explicit request to handle all pending statuses. >+ * >+ * @since 3.5 >+ */ >+ public void handleDeferred() { >+ // does nothing by default >+ } > } >Index: Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java,v >retrieving revision 1.20 >diff -u -r1.20 WorkbenchStatusDialogManager.java >--- Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java 21 Oct 2008 16:36:14 -0000 1.20 >+++ Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchStatusDialogManager.java 28 Oct 2008 15:44:18 -0000 >@@ -1218,6 +1218,9 @@ > } > refresh(); > refreshDialogSize(); >+ StatusManager.getManager().deferredStatusAdaptersHandled(); >+ } else { >+ StatusManager.getManager().deferredStatusAdapterPassed(statusAdapter); > } > > } else { >@@ -1228,6 +1231,7 @@ > Boolean.FALSE); > } > openStatusDialog(modal, statusAdapter); >+ StatusManager.getManager().deferredStatusAdaptersHandled(); > } > } > >@@ -2279,6 +2283,26 @@ > } > > /** >+ * This method forces the dialog to be shown if there are any statuses to >+ * handle. >+ */ >+ void handleDeferred() { >+ if (getStatusAdapters().size() > 0) { >+ setSelectedStatusAdapter((StatusAdapter) getStatusAdapters() >+ .toArray()[0]); >+ if (dialog == null) { >+ dialog = new InternalDialog(getParentShell(), >+ WorkbenchStatusDialogManager.this, shouldBeModal()); >+ dialog.open(); >+ dialog.getShell().addDisposeListener(disposeListener); >+ } >+ refresh(); >+ refreshDialogSize(); >+ StatusManager.getManager().deferredStatusAdaptersHandled(); >+ } >+ } >+ >+ /** > * Gets the shell of the managed dialog. > * > * @since 3.5 >Index: Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java,v >retrieving revision 1.25 >diff -u -r1.25 WorkbenchErrorHandler.java >--- Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java 21 Oct 2008 16:36:15 -0000 1.25 >+++ Eclipse UI/org/eclipse/ui/statushandlers/WorkbenchErrorHandler.java 28 Oct 2008 15:44:17 -0000 >@@ -27,6 +27,13 @@ > */ > public class WorkbenchErrorHandler extends AbstractStatusHandler { > >+ /* (non-Javadoc) >+ * @see org.eclipse.ui.statushandlers.AbstractStatusHandler#handleDeffered() >+ */ >+ public void handleDeferred() { >+ getStatusDialogManager().handleDeferred(); >+ } >+ > private WorkbenchStatusDialogManager statusDialogManager; > > /** >Index: Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java,v >retrieving revision 1.26 >diff -u -r1.26 StatusManager.java >--- Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java 22 Sep 2008 10:03:50 -0000 1.26 >+++ Eclipse UI/org/eclipse/ui/statushandlers/StatusManager.java 28 Oct 2008 15:44:17 -0000 >@@ -17,6 +17,7 @@ > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.ILogListener; > import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.ListenerList; > import org.eclipse.core.runtime.Platform; > import org.eclipse.core.runtime.Status; > import org.eclipse.jface.dialogs.Dialog; >@@ -25,10 +26,7 @@ > import org.eclipse.ui.internal.WorkbenchErrorHandlerProxy; > import org.eclipse.ui.internal.WorkbenchPlugin; > import org.eclipse.ui.internal.misc.StatusUtil; >-import org.eclipse.ui.internal.progress.FinishedJobs; >-import org.eclipse.ui.internal.progress.StatusAdapterHelper; > import org.eclipse.ui.internal.statushandlers.StatusHandlerRegistry; >-import org.eclipse.ui.progress.IProgressConstants; > > /** > * <p> >@@ -113,7 +111,9 @@ > private AbstractStatusHandler workbenchHandler; > > private List loggedStatuses = new ArrayList(); >- >+ >+ private ListenerList listeners = new ListenerList(ListenerList.IDENTITY); >+ > /** > * Returns StatusManager singleton instance. > * >@@ -187,17 +187,6 @@ > StatusHandlerRegistry.getDefault() > .getDefaultHandlerDescriptor().getStatusHandler() > .handle(statusAdapter, style); >- // if statuses are shown, all finished jobs with error will >- // be removed, >- // we should remove it from the status manager, when error >- // icon >- // will be part of handlers not ProgressAnimationItem >- if (((style & StatusManager.SHOW) == StatusManager.SHOW || (style & StatusManager.BLOCK) == StatusManager.BLOCK) >- && statusAdapter >- .getProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY) != Boolean.TRUE) { >- FinishedJobs.getInstance().removeErrorJobs(); >- StatusAdapterHelper.getInstance().clear(); >- } > return; > } catch (CoreException ex) { > logError("Errors during the default handler creating", ex); //$NON-NLS-1$ >@@ -207,15 +196,6 @@ > // delegates the problem to workbench handler > getWorkbenchHandler().handle(statusAdapter, style); > >- // if statuses are shown, all finished jobs with error will be >- // removed, >- // we should remove it from the status manager, when error icon >- // will be part of handlers not ProgressAnimationItem >- if (((style & StatusManager.SHOW) == StatusManager.SHOW || (style & StatusManager.BLOCK) == StatusManager.BLOCK) >- && statusAdapter >- .getProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY) != Boolean.TRUE) { >- FinishedJobs.getInstance().removeErrorJobs(); >- } > } catch (Throwable ex) { > // The used status handler failed > logError(statusAdapter.getStatus()); >@@ -305,6 +285,105 @@ > addLoggedStatus(status); > WorkbenchPlugin.log(status); > } >+ >+ /** >+ * This method adds the listener to the current status handler. The listener >+ * will be notified about deferred status arrival and handling. >+ * >+ * @param deferredStatusHandlerListener >+ * A listener to be added. >+ * @since 3.5 >+ */ >+ public void addStatusHandlerListener( >+ IDeferredStatusHandlerListener deferredStatusHandlerListener) { >+ listeners.add(deferredStatusHandlerListener); >+ } >+ >+ /** >+ * This methods remove the listener from current status handler. >+ * >+ * @param deferredStatusHandlerListener >+ * A listener to be removed. >+ * >+ * @since 3.5 >+ * @see AbstractStatusHandler >+ */ >+ public void removeStatusHandlerListener( >+ IDeferredStatusHandlerListener deferredStatusHandlerListener) { >+ listeners.remove(deferredStatusHandlerListener); >+ } >+ >+ /** >+ * If some {@link StatusAdapter}s were passed with flag indicating deferred >+ * handling, they should be handled after this method call. >+ * >+ * @since 3.5 >+ */ >+ public void handleDeferredStatusAdapters(){ >+ try { >+ if (!PlatformUI.isWorkbenchRunning()) { >+ return; >+ } >+ >+ // tries to handle the problem with default (product) handler >+ if (StatusHandlerRegistry.getDefault() >+ .getDefaultHandlerDescriptor() != null) { >+ try { >+ StatusHandlerRegistry.getDefault() >+ .getDefaultHandlerDescriptor().getStatusHandler() >+ .handleDeferred(); >+ return; >+ } catch (CoreException ex) { >+ logError("Errors during the default handler creating", ex); //$NON-NLS-1$ >+ } >+ } >+ >+ // delegates the problem to workbench handler >+ getWorkbenchHandler().handleDeferred(); >+ >+ } catch (Throwable ex) { >+ // The used status handler failed >+ logError("Error occurred during status handling", ex); //$NON-NLS-1$ >+ } >+ } >+ >+ /** >+ * A method that should be called by handler when deferred status is passed >+ * to status handling and will not be handled immediately. >+ * >+ * @param statusAdapter >+ * A deferred Status. >+ * @since 3.5 >+ * @see AbstractStatusHandler >+ */ >+ public void deferredStatusAdapterPassed( >+ StatusAdapter statusAdapter) { >+ Object[] l = listeners.getListeners(); >+ for (int i = 0; i < l.length; i++) { >+ if (l[i] instanceof IDeferredStatusHandlerListener) { >+ ((IDeferredStatusHandlerListener) l[i]) >+ .deferredStatusAdapterPassed(statusAdapter); >+ } >+ } >+ } >+ >+ /** >+ * A method that should be called by handler when it handled deferred >+ * statuses. It could happen because of another status or on explicite user >+ * request. >+ * >+ * @since 3.5 >+ * @see AbstractStatusHandler >+ */ >+ public void deferredStatusAdaptersHandled() { >+ Object[] l = listeners.getListeners(); >+ for (int i = 0; i < l.length; i++) { >+ if (l[i] instanceof IDeferredStatusHandlerListener) { >+ ((IDeferredStatusHandlerListener) l[i]) >+ .deferredStatusAdaptersHandled(); >+ } >+ } >+ } > > /** > * This log listener handles statuses added to a plug-in's log. If our own >Index: Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java,v >retrieving revision 1.8 >diff -u -r1.8 WorkbenchErrorHandlerProxy.java >--- Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java 16 Mar 2007 18:00:31 -0000 1.8 >+++ Eclipse UI/org/eclipse/ui/internal/WorkbenchErrorHandlerProxy.java 28 Oct 2008 15:44:16 -0000 >@@ -26,6 +26,14 @@ > */ > public class WorkbenchErrorHandlerProxy extends AbstractStatusHandler { > >+ /* (non-Javadoc) >+ * @see org.eclipse.ui.statushandlers.AbstractStatusHandler#handleDeffered() >+ */ >+ public void handleDeferred() { >+ Workbench.getInstance().getAdvisor().getWorkbenchErrorHandler() >+ .handleDeferred(); >+ } >+ > /* > * (non-Javadoc) > * >Index: Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java,v >retrieving revision 1.139 >diff -u -r1.139 ProgressManager.java >--- Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java 29 Apr 2008 07:09:16 -0000 1.139 >+++ Eclipse UI/org/eclipse/ui/internal/progress/ProgressManager.java 28 Oct 2008 15:44:17 -0000 >@@ -442,10 +442,14 @@ > .setProperty( > IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY, > Boolean.TRUE); >- StatusAdapterHelper.getInstance().putStatusAdapter( >- info, statusAdapter); > } > >+ // if we are going to report deferred status, we should not >+ // display job in the ProgressView because we want to avoid >+ // inconsistency (reported statuses cannot be pulled back, >+ // but the user is able to delete job info from >+ // ProgressView). >+ FinishedJobs.getInstance().remove(info); > StatusManager.getManager().handle(statusAdapter, > StatusManager.SHOW); > } >Index: Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java,v >retrieving revision 1.12 >diff -u -r1.12 ProgressMessages.java >--- Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java 3 Oct 2008 21:29:31 -0000 1.12 >+++ Eclipse UI/org/eclipse/ui/internal/progress/ProgressMessages.java 28 Oct 2008 15:44:17 -0000 >@@ -48,6 +48,8 @@ > public static String ProgressAnimationItem_tasks; > public static String ProgressAnimationItem_ok; > public static String ProgressAnimationItem_error; >+ >+ public static String ProgressAnimationItem_issues; > public static String SubTaskInfo_UndefinedTaskName; > public static String DeferredTreeContentManager_ClearJob; > public static String ProgressContentProvider_UpdateProgressJob; >Index: Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java,v >retrieving revision 1.55 >diff -u -r1.55 ProgressAnimationItem.java >--- Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java 1 Oct 2008 15:36:11 -0000 1.55 >+++ Eclipse UI/org/eclipse/ui/internal/progress/ProgressAnimationItem.java 28 Oct 2008 15:44:17 -0000 >@@ -10,6 +10,9 @@ > *******************************************************************************/ > package org.eclipse.ui.internal.progress; > >+import java.util.ArrayList; >+import java.util.List; >+ > import org.eclipse.core.runtime.IStatus; > import org.eclipse.core.runtime.jobs.Job; > import org.eclipse.jface.action.IAction; >@@ -38,6 +41,7 @@ > import org.eclipse.ui.PlatformUI; > import org.eclipse.ui.internal.WorkbenchImages; > import org.eclipse.ui.progress.IProgressConstants; >+import org.eclipse.ui.statushandlers.IDeferredStatusHandlerListener; > import org.eclipse.ui.statushandlers.StatusAdapter; > import org.eclipse.ui.statushandlers.StatusManager; > >@@ -65,6 +69,8 @@ > > // ProgressBar flags > private int flags; >+ >+ private final List deferredStatuses = new ArrayList(); > > /** > * Create an instance of the receiver in the supplied region. >@@ -85,10 +91,33 @@ > doAction(); > } > }; >+ // monitor if any deferred statuses was reported or handled and let the >+ // user know about it >+ StatusManager.getManager().addStatusHandlerListener( >+ new IDeferredStatusHandlerListener() { >+ >+ public void deferredStatusAdapterPassed( >+ StatusAdapter statusAdapter) { >+ deferredStatuses.add(statusAdapter); >+ refresh(); >+ } >+ >+ public void deferredStatusAdaptersHandled() { >+ deferredStatuses.clear(); >+ FinishedJobs.getInstance().removeErrorJobs(); >+ refresh(); >+ } >+ >+ }); >+ > } > > void doAction() { > >+ if(deferredStatuses.size() > 0 ){ >+ StatusManager.getManager().handleDeferredStatusAdapters(); >+ return; >+ } > JobTreeElement[] jobTreeElements = FinishedJobs.getInstance() > .getKeptElements(); > // search from end (youngest) >@@ -98,25 +127,6 @@ > Job job = ji.getJob(); > if (job != null) { > >- IStatus status = job.getResult(); >- if (status != null && status.getSeverity() == IStatus.ERROR) { >- StatusAdapter statusAdapter = StatusAdapterHelper >- .getInstance().getStatusAdapter(ji); >- >- if (statusAdapter == null) >- statusAdapter = new StatusAdapter(status); >- >- StatusManager.getManager().handle(statusAdapter, >- StatusManager.SHOW); >- >- JobTreeElement topElement = (JobTreeElement) ji >- .getParent(); >- if (topElement == null) { >- topElement = ji; >- } >- FinishedJobs.getInstance().remove(topElement); >- } >- > IAction action = null; > Object property = job > .getProperty(IProgressConstants.ACTION_PROPERTY); >@@ -159,6 +169,12 @@ > if (toolbar == null || toolbar.isDisposed()) { > return; > } >+ >+ if (deferredStatuses.size() > 0) { >+ initButton(errorImage, >+ ProgressMessages.ProgressAnimationItem_issues); >+ return; >+ } > > JobTreeElement[] jobTreeElements = FinishedJobs.getInstance() > .getKeptElements(); >Index: Eclipse UI/org/eclipse/ui/internal/progress/messages.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties,v >retrieving revision 1.88 >diff -u -r1.88 messages.properties >--- Eclipse UI/org/eclipse/ui/internal/progress/messages.properties 3 Oct 2008 21:29:31 -0000 1.88 >+++ Eclipse UI/org/eclipse/ui/internal/progress/messages.properties 28 Oct 2008 15:44:17 -0000 >@@ -42,6 +42,7 @@ > ProgressAnimationItem_tasks=Shows background operations in Progress view > ProgressAnimationItem_ok=Operation ''{0}'' returned result; press button for details > ProgressAnimationItem_error=Operation ''{0}'' finished with errors; press button for details >+ProgressAnimationItem_issues=Some issues require your attention. > SubTaskInfo_UndefinedTaskName=Undefined > DeferredTreeContentManager_ClearJob=Clear > ProgressContentProvider_UpdateProgressJob=Update Progress >Index: Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java >diff -N Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java >--- Eclipse UI/org/eclipse/ui/internal/progress/StatusAdapterHelper.java 17 May 2007 12:24:34 -0000 1.2 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,76 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2007 IBM Corporation and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * IBM Corporation - initial API and implementation >- ******************************************************************************/ >- >-package org.eclipse.ui.internal.progress; >- >-import java.util.HashMap; >- >-import org.eclipse.ui.progress.IProgressConstants; >-import org.eclipse.ui.statushandlers.StatusAdapter; >- >-/** >- * StatusAdapterHelper is a class for caching {@link StatusAdapter} instances to make sure >- * they are not created twice within the progress service. >- * @since 3.3 >- */ >-public class StatusAdapterHelper { >- private static StatusAdapterHelper instance; >- >- private HashMap map; >- >- private StatusAdapterHelper() { >- } >- >- /** >- * Return the singleton. >- * @return StatusAdapterHelper >- */ >- public static StatusAdapterHelper getInstance() { >- if (instance == null) { >- instance = new StatusAdapterHelper(); >- } >- return instance; >- } >- >- /** >- * Set the {@link StatusAdapter} for the {@link JobInfo} >- * @param info >- * @param statusAdapter >- */ >- public void putStatusAdapter(JobInfo info, StatusAdapter statusAdapter) { >- if (map == null) { >- map = new HashMap(); >- } >- map.put(info, statusAdapter); >- } >- >- /** >- * Return the adapter for this info. >- * @param info >- * @return >- */ >- public StatusAdapter getStatusAdapter(JobInfo info) { >- if (map == null) { >- return null; >- } >- StatusAdapter statusAdapter = (StatusAdapter) map.remove(info); >- statusAdapter.setProperty( >- IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY, >- Boolean.FALSE); >- return statusAdapter; >- } >- >- public void clear() { >- if (map != null) { >- map.clear(); >- } >- } >-} >Index: Eclipse UI/org/eclipse/ui/statushandlers/IDeferredStatusHandlerListener.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/statushandlers/IDeferredStatusHandlerListener.java >diff -N Eclipse UI/org/eclipse/ui/statushandlers/IDeferredStatusHandlerListener.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/statushandlers/IDeferredStatusHandlerListener.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,45 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.statushandlers; >+ >+/** >+ * <p> >+ * This interface allows for listening when new deferred status arrived or when >+ * it was handled. >+ * </p> >+ * >+ * <p> >+ * Some handlers does not process all statuses immediately, and we may want to >+ * notify the user about pending statues. >+ * </p> >+ * >+ * @since 3.5 >+ */ >+public interface IDeferredStatusHandlerListener { >+ >+ /** >+ * This method is called when deferred Statuses has been handled (f.e. a >+ * dialog was displayed to the user). >+ */ >+ public abstract void deferredStatusAdaptersHandled(); >+ >+ /** >+ * This method is called when deferred Status arrived to the handler. We can >+ * notify the user about error in a non-disturbing way. >+ * >+ * @param statusAdapter >+ * A status adapter that was not handled immediately. >+ */ >+ public abstract void deferredStatusAdapterPassed( >+ StatusAdapter statusAdapter); >+ >+} >\ No newline at end of file
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 220557
:
90858
|
90859
|
92423
|
92424
|
92939
|
116308
|
122403
|
122404
|
122659