package org.openntf.domino.nsfdata.structs.cd; import java.util.EnumSet; import java.util.Set; import org.openntf.domino.nsfdata.structs.SIG; import org.openntf.domino.nsfdata.structs.WSIG; /** * This CD structure defines simple actions, formulas or LotusScript within a given image map. (editods.h) * * @since Lotus Notes/Domino 5.0 * */ public class CDEVENT extends CDRecord { public static enum Flag { EVENT_HAS_LIBRARIES(0x00000001); private final int value_; private Flag(final int value) { value_ = value; } public int getValue() { return value_; } public static Set<Flag> valuesOf(final int flags) { Set<Flag> result = EnumSet.noneOf(Flag.class); for (Flag flag : values()) { if ((flag.getValue() & flags) > 0) { result.add(flag); } } return result; } } public static enum HTMLEvent { ONCLICK, ONDBLCLICK, ONMOUSEDOWN, ONMOUSEUP, ONMOUSEOVER, ONMOUSEMOVE, ONMOUSEOUT, ONKEYPRESS, ONKEYDOWN, ONKEYUP, ONFOCUS, ONBLUR, ONLOAD, ONUNLOAD, HEADER, ONSUBMIT, ONRESET, ONCHANGE, ONERROR, ONHELP, ONSELECT, /** * This isn't really an event */ LIBRARY } public static enum Action { UNKNOWN, FORMULA, CANNED_ACTION, LOTUS_SCRIPT, JAVASCRIPT } public final WSIG Header = inner(new WSIG()); /** * Use getFlags for access. */ @Deprecated public final Unsigned32 Flags = new Unsigned32(); public final Enum16<HTMLEvent> EventType = new Enum16<HTMLEvent>(HTMLEvent.values()); public final Enum16<Action> ActionType = new Enum16<Action>(Action.values()); public final Unsigned32 ActionLength = new Unsigned32(); public final Unsigned16 SignatureLength = new Unsigned16(); public final Unsigned8[] Reserved = array(new Unsigned8[14]); static { addVariableData("Action", "ActionLength"); addVariableData("Signature", "SignatureLength"); } @Override public SIG getHeader() { return Header; } public Set<Flag> getFlags() { return Flag.valuesOf((int) Flags.get()); } public byte[] getAction() { return (byte[]) getVariableElement("Action"); } public byte[] getEventSignature() { return (byte[]) getVariableElement("Signature"); } @Override public String toString() { // TODO Figure out why getting the variable elements breaks return "[" + getClass().getSimpleName() + "]"; } }