blob: 4eaa3b7766dd8af216cb192842c19c764339113c [file] [log] [blame]
/*******************************************************************************
* 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.wst.validation;
import org.eclipse.core.resources.IMarker;
import org.eclipse.wst.validation.internal.ValMessages;
/**
* Associate a message severity with a message category.
* <p>
* <b>Provisional API:</b> This class/interface is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
* @noextend
* @author karasiuk
*
*/
public class MessageSeveritySetting {
public enum Severity {
Error(ValMessages.SevError, IMarker.SEVERITY_ERROR),
Warning(ValMessages.SevWarning, IMarker.SEVERITY_WARNING),
Ignore(ValMessages.SevIgnore, IMarker.SEVERITY_INFO);
private String _severityLabel;
private Severity(String label, int markerSeverity){
_severityLabel = label;
_markerSeverity = markerSeverity;
}
private int _markerSeverity;
@Override
public String toString() {
return _severityLabel;
}
/**
* Answer the associated IMarker severity.
*/
public int getMarkerSeverity() {
return _markerSeverity;
}
}
private String _id;
private String _label;
private Severity _default;
private Severity _current;
/**
* Create an association between a label and a message severity.
*
* @param id
* An id that is used to identify this particular setting. This must be
* unique within the scope of this particular validator.
*
* @param label
* An end user string, that can describe either an individual message
* or a message category.
*
* @param defaultSeverity
* The default severity for this label. If the end user doesn't change
* anything this is what the severity will be.
*/
public MessageSeveritySetting(String id, String label, Severity defaultSeverity){
_id = id;
_label = label;
_default = defaultSeverity;
}
@Override
public int hashCode() {
int h = 0;
if (_current != null)h += _current.getMarkerSeverity()*1000;
if (_id != null)h += _id.hashCode();
return h;
}
public String getLabel() {
return _label;
}
/** Answer the default severity as defined by the validator owner. */
public Severity getDefault() {
return _default;
}
/**
* Answer the current severity for the message. The end user may have changed this through a
* preference dialog.
*/
public Severity getCurrent() {
if (_current != null)return _current;
return _default;
}
/**
* The id that the validator owner assigned to the message.
*/
public String getId() {
return _id;
}
/**
* Set the current message severity.
*
* @param severity
* @return true if the setting changed
*/
public boolean setCurrent(Severity severity) {
if (_current == severity)return false;
_current = severity;
return true;
}
@Override
public String toString() {
return _id + " " + getCurrent().toString(); //$NON-NLS-1$
}
/**
* Answer a copy of this object.
*/
public MessageSeveritySetting copy() {
MessageSeveritySetting ms = new MessageSeveritySetting(_id, _label, _default);
ms._current = _current;
return ms;
}
}