// **********************************************************************
//
// <copyright>
//
// BBN Technologies
// 10 Moulton Street
// Cambridge, MA 02138
// (617) 873-8000
//
// Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/OMAction.java,v $
// $RCSfile: OMAction.java,v $
// $Revision: 1.7 $
// $Date: 2005/08/09 20:01:45 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.omGraphics;
import com.bbn.openmap.util.Debug;
/**
* The OMAction class provides a way to describe one or more actions
* that should be performed on an OMGraphic. Each digit of the
* internal integer represents an action, and the action masks are
* defined in OMGraphicsConstances. The class holds the action value,
* and can respond to queries to check if certain masks are set, or
* can also set certain masks on the internal value. There are also
* static methods provided as a convenience.
*/
public class OMAction implements OMGraphicConstants {
/**
* The internal value of the action, representing 0 or more
* actions to be performed on a graphic, depending on the bits
* set.
*/
protected int value;
/**
* Create an OMAction that represents no action (No bits are set).
*/
public OMAction() {
this.value = 0;
}
/**
* Create an OMAction with the provided actions.
*/
public OMAction(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
/**
* Set a particular mask bit in the internal value.
* @param mask an OMGraphicConstant mask constant.
* @return the changed integer value.
*/
public int setMask(int mask) {
value = OMAction.setMask(value, mask);
return value;
}
/**
* Unset a particular mask bit in the internal value.
* @param mask an OMGraphicConstant mask constant.
* @return the changed integer value.
*/
public int unsetMask(int mask) {
value = unsetMask(value, mask);
return value;
}
/**
* Return whether a mask value is set in the internal value.
* @param mask an OMGraphicConstant mask constant.
* @return whether the value bit is set on the internal value.
*/
public boolean isMask(int mask) {
return isMask(value, mask);
}
/**
* Set a particular mask bit in the provided integer.
* @param value the integer to set the value(bit) on.
* @param mask an OMGraphicConstant mask constant.
* @return the changed integer value.
*/
public static int setMask(int value, int mask) {
return (value | mask);
}
/**
* Unset a particular mask bit in the provided integer.
* @param value the integer to unset the value(bit) on.
* @param mask an OMGraphicConstant mask constant.
* @return the changed integer value.
*/
public static int unsetMask(int value, int mask) {
return (value & ~mask);
}
/**
* Check to see if a mask bit is set in an integer.
* @param value the integer to check for the value(bit) on.
* @param mask an OMGraphicConstant mask constant.
* @return whether the value bit is set.
*/
public static boolean isMask(int value, int mask) {
// Used to be == 0, but this way it returns true if all of the
// mask bits are set.
if ((value & mask) < mask) {
return false;
}
return true;
}
/**
* Provide a String that describes what the Action is all about.
*/
public String toString() {
StringBuffer sb = new StringBuffer("OMAction (").append(value).append(") [ ");
if (value == 0) {
sb.append("add ");
} else {
if (isMask(RAISE_TO_TOP_GRAPHIC_MASK)) sb.append("raise_to_top ");
if (isMask(LOWER_TO_BOTTOM_GRAPHIC_MASK)) sb.append("lower_to_bottom ");
if (isMask(DELETE_GRAPHIC_MASK)) sb.append("delete ");
if (isMask(SELECT_GRAPHIC_MASK)) sb.append("select ");
if (isMask(DESELECT_GRAPHIC_MASK)) sb.append("deselect ");
if (isMask(DESELECTALL_GRAPHIC_MASK)) sb.append("deselect_all ");
if (isMask(ADD_GRAPHIC_MASK)) sb.append("add ");
if (isMask(UPDATE_GRAPHIC_MASK)) sb.append("update ");
if (isMask(RAISE_GRAPHIC_MASK)) sb.append("raise ");
if (isMask(LOWER_GRAPHIC_MASK)) sb.append("lower ");
if (isMask(SORT_GRAPHICS_MASK)) sb.append("sort ");
}
sb.append("]");
return sb.toString();
}
public final static void main(String[] argv) {
OMAction action = new OMAction();
Debug.init();
Debug.output("Setting add mask...");
action.setMask(ADD_GRAPHIC_MASK);
if (action.isMask(ADD_GRAPHIC_MASK)) {
Debug.output("ADD mask set.");
} else {
Debug.output("ADD mask *NOT* set");
}
}
}