001: /*******************************************************************************
002: * Copyright (c) 2003, 2005 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.commands;
011:
012: import org.eclipse.core.expressions.Expression;
013: import org.eclipse.ui.ISources;
014: import org.eclipse.ui.internal.util.Util;
015:
016: /**
017: * <p>
018: * An instance of this interface represents a priority for use with instances of
019: * <code>HandlerSubmission</code>.
020: * </p>
021: * <p>
022: * The order of precedence (from highest to lowest) is as follows. Submissions
023: * with higher priority will be preferred over those with lower priority.
024: * </p>
025: * <ol>
026: * <li>MEDIUM</li>
027: * <li>LOW</li>
028: * <li>LEGACY</li>
029: * </ol>
030: * </p>
031: * <p>
032: * This class is not intended to be extended by clients.
033: * </p>
034: *
035: * @since 3.0
036: * @see HandlerSubmission
037: * @see org.eclipse.ui.ISources
038: * @see org.eclipse.ui.handlers.IHandlerService#activateHandler(String,
039: * IHandler, Expression)
040: * @deprecated This concept is now captured in the <code>ISources</code>
041: * integer constants.
042: *
043: */
044: public final class Priority implements Comparable {
045:
046: /**
047: * An instance representing 'legacy' priority.
048: */
049: public final static Priority LEGACY = new Priority(
050: ISources.LEGACY_LEGACY);
051:
052: /**
053: * An instance representing 'low' priority.
054: */
055: public final static Priority LOW = new Priority(ISources.LEGACY_LOW);
056:
057: /**
058: * An instance representing 'medium' priority.
059: */
060: public final static Priority MEDIUM = new Priority(
061: ISources.LEGACY_MEDIUM);
062:
063: /**
064: * The string representation of this priority. This is computed once
065: * (lazily). Before it is computed, this value is <code>null</code>.
066: */
067: private transient String string = null;
068:
069: /**
070: * The priority value for this instance. A lesser integer is considered to
071: * have a higher priority.
072: */
073: private int value;
074:
075: /**
076: * Constructs a new instance of <code>Priority</code> using a value. This
077: * constructor should only be used internally. Priority instances should be
078: * retrieved from the static members defined above.
079: *
080: * @param value
081: * The priority value; a lesser integer is consider to have a
082: * higher priority value.
083: */
084: private Priority(int value) {
085: this .value = value;
086: }
087:
088: /**
089: * @see Comparable#compareTo(java.lang.Object)
090: */
091: public int compareTo(Object object) {
092: Priority castedObject = (Priority) object;
093: int compareTo = Util.compare(value, castedObject.value);
094: return compareTo;
095: }
096:
097: /**
098: * The value for this priority. The lesser the value, the higher priority
099: * this represents.
100: *
101: * @return The integer priority value.
102: */
103: int getValue() {
104: return value;
105: }
106:
107: /**
108: * @see Object#toString()
109: */
110: public String toString() {
111: if (string == null) {
112: final StringBuffer stringBuffer = new StringBuffer();
113: stringBuffer.append("[value="); //$NON-NLS-1$
114: stringBuffer.append(value);
115: stringBuffer.append(']');
116: string = stringBuffer.toString();
117: }
118:
119: return string;
120: }
121: }
|