blob: d6a134aaa28b12d3ea1af6d3b9e817b8a0666b2a [file] [log] [blame]
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.motorolamobility.studio.android.db.core;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
public class CanRefreshStatus extends MultiStatus
{
/**
* Status type severity (bit mask, value 16) indicating that a user interaction will be needed.
* in this case a Yes/no dialog must be displayed using this status messages as dialog message.
* @see #getSeverity()
* @see #matches(int)
*/
public static final int ASK_USER = 0x10;
/**
* Status type severity (bit mask, value 16) indicating that a user interaction will be needed.
* in this case a Yes/no/cancel dialog must be displayed using this status messages as dialog message.
* Yes/No response will be sent to refresh, cancel will cancel the refresh
* @see #getSeverity()
* @see #matches(int)
*/
public static final int CANCELABLE = 0x20;
/**
* Builds a new {@link CanRefreshStatus} instance
* @param pluginId the plug-in id.
* @param severity the severity code.
* @param newChildren new Status's children. (can't be null)
* @param message The new status message.
* @param exception The {@link Throwable} that caused the error, if any. (Can be null).
*/
public CanRefreshStatus(int severity, String pluginId, IStatus[] newChildren, String message,
Throwable exception)
{
super(pluginId, OK, newChildren, message, exception);
setSeverity(severity);
}
/**
* Builds a new {@link CanRefreshStatus} instance
* @param pluginId the plug-in id.
* @param severity the severity code.
* @param message The new status message.
* @param exception The {@link Throwable} that caused the error, if any. (Can be null).
*/
public CanRefreshStatus(int severity, String pluginId, String message, Throwable exception)
{
super(pluginId, OK, message, exception);
setSeverity(severity);
}
/**
* Builds a new {@link CanRefreshStatus} instance
* @param pluginId the plug-in id.
* @param severity the severity code.
* @param newChildren new Status's children. (can't be null)
* @param message The new status message.
*/
public CanRefreshStatus(int severity, String pluginId, IStatus[] newChildren, String message)
{
super(pluginId, OK, newChildren, message, null);
setSeverity(severity);
}
/**
* Builds a new {@link CanRefreshStatus} instance
* @param pluginId the plug-in id.
* @param severity the severity code.
* @param message The new status message.
*/
public CanRefreshStatus(int severity, String pluginId, String message)
{
super(pluginId, OK, message, null);
setSeverity(severity);
}
/**
* Sets the severity.
*
* @param severity the severity; one of <code>OK</code>, <code>ERROR</code>,
* <code>INFO</code>, <code>WARNING</code>, or <code>CANCEL</code>
*/
@Override
protected void setSeverity(int severity)
{
Assert.isLegal((severity == OK) || (severity == ERROR) || (severity == WARNING)
|| (severity == INFO) || (severity == CANCEL) || (severity == ASK_USER)
|| (severity == (ASK_USER | CANCELABLE)));
if ((severity & ASK_USER) != 0)
{
super.setSeverity(WARNING);
}
setCode(severity);
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.Status#matches(int)
*/
@Override
public boolean matches(int severityMask)
{
if ((severityMask & ASK_USER) != 0)
{
return (getCode() & severityMask) == severityMask;
}
return super.matches(severityMask);
}
}