diff options
4 files changed, 53 insertions, 32 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java index 4ea7b029a7..ec025bcf8b 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java @@ -40,7 +40,10 @@ import org.eclipse.jgit.lib.RepositoryListener; import org.eclipse.jgit.transport.SshSessionFactory; import org.eclipse.jsch.core.IJSchService; import org.eclipse.osgi.service.debug.DebugOptions; +import org.eclipse.swt.graphics.Font; import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.ui.statushandlers.StatusManager; +import org.eclipse.ui.themes.ITheme; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.util.tracker.ServiceTracker; @@ -80,30 +83,55 @@ public class Activator extends AbstractUIPlugin { return getDefault().getBundle().getSymbolicName(); } + /** + * Handle an error. The error is logged. If <code>show</code> is + * <code>true</code> the error is shown to the user. + * + * @param message a localized message + * @param throwable + * @param show + */ + public static void handleError(String message, Throwable throwable, + boolean show) { + IStatus status = new Status(IStatus.ERROR, getPluginId(), message, + throwable); + int style = StatusManager.LOG; + if (show) + style |= StatusManager.SHOW; + StatusManager.getManager().handle(status, style); + } + + /** + * Get the theme used by this plugin. + * + * @return our theme. + */ + public static ITheme getTheme() { + return plugin.getWorkbench().getThemeManager().getCurrentTheme(); + } /** - * Instantiate an error status. + * Get a font known to this plugin. * - * @param message - * description of the error - * @param thr - * cause of the error or null - * @return an initialized error status + * @param id + * one of our THEME_* font preference ids (see + * {@link UIPreferences}); + * @return the configured font, borrowed from the registry. */ - public static IStatus error(final String message, final Throwable thr) { - return new Status(IStatus.ERROR, getPluginId(), 0, message, thr); + public static Font getFont(final String id) { + return getTheme().getFontRegistry().get(id); } /** - * Log an error via the Eclipse logging routines. + * Get a font known to this plugin, but with bold style applied over top. * - * @param message - * @param thr - * cause of error + * @param id + * one of our THEME_* font preference ids (see + * {@link UIPreferences}); + * @return the configured font, borrowed from the registry. */ - public static void logError(final String message, final Throwable thr) { - getDefault().getLog().log( - new Status(IStatus.ERROR, getPluginId(), 0, message, thr)); + public static Font getBoldFont(final String id) { + return getTheme().getFontRegistry().getBold(id); } private RCS rcs; @@ -199,7 +227,7 @@ public class Activator extends AbstractUIPlugin { getJobManager().beginRule(rule, monitor); p.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 1)); } catch (CoreException e) { - logError(UIText.Activator_refreshFailed, e); + handleError(UIText.Activator_refreshFailed, e, false); return new Status(IStatus.ERROR, getPluginId(), e.getMessage()); } finally { getJobManager().endRule(rule); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DiscardChangesAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DiscardChangesAction.java index 6d21cdd758..a169a7d57f 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DiscardChangesAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DiscardChangesAction.java @@ -17,6 +17,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.egit.core.project.RepositoryMapping; +import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.UIText; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; @@ -51,15 +52,10 @@ public class DiscardChangesAction extends RepositoryAction{ for (IResource res : allFiles) { try { discardChange(res); - } catch (IOException e1) { - MessageDialog.openError(getShell(), - UIText.DiscardChangesAction_unexpectedErrorTitle, - UIText.DiscardChangesAction_unexpectedErrorMessage); + Activator.handleError(UIText.DiscardChangesAction_unexpectedErrorMessage, e1, true); }catch (RuntimeException e2) { - MessageDialog.openError(getShell(), - UIText.DiscardChangesAction_unexpectedErrorTitle, - UIText.DiscardChangesAction_unexpectedIndexErrorMessage); + Activator.handleError(UIText.DiscardChangesAction_unexpectedIndexErrorMessage, e2, true); } } @@ -79,9 +75,7 @@ public class DiscardChangesAction extends RepositoryAction{ try { res.refreshLocal(0, new NullProgressMonitor()); } catch (CoreException e1) { - MessageDialog.openError(getShell(), - UIText.DiscardChangesAction_refreshErrorTitle, - UIText.DiscardChangesAction_refreshErrorMessage); + Activator.handleError(UIText.DiscardChangesAction_refreshErrorMessage, e1, true); } repository.getIndex().write(); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetAction.java index d29727162a..a6cc1f872a 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetAction.java @@ -16,6 +16,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.egit.core.op.ResetOperation; import org.eclipse.egit.core.op.ResetOperation.ResetType; +import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.UIText; import org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator; import org.eclipse.egit.ui.internal.dialogs.BranchSelectionDialog; @@ -67,9 +68,9 @@ public class ResetAction extends RepositoryAction { } }); } catch (InvocationTargetException e) { - MessageDialog.openError(getShell(),UIText.ResetAction_resetFailed, e.getMessage()); + Activator.handleError(UIText.ResetAction_resetFailed, e, true); } catch (InterruptedException e) { - MessageDialog.openError(getShell(),UIText.ResetAction_resetFailed, e.getMessage()); + Activator.handleError(UIText.ResetAction_resetFailed, e, true); } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Track.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Track.java index fe5bd6258d..68a48e420d 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Track.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Track.java @@ -19,7 +19,6 @@ import org.eclipse.egit.core.op.TrackOperation; import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.UIText; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.operation.IRunnableWithProgress; /** @@ -47,10 +46,9 @@ public class Track extends RepositoryAction { } }); } catch (InvocationTargetException e) { - Activator.logError(UIText.Track_error, e); - MessageDialog.openError(getShell(), UIText.Track_error, UIText.Track_see_log); + Activator.handleError(UIText.Track_error, e, true); } catch (InterruptedException e) { - MessageDialog.openError(getShell(), UIText.Track_error, e.getMessage()); + Activator.handleError(UIText.Track_error, e, true); } } |