package org.openntf.domino.nsfdata.structs.cd;
import java.util.EnumSet;
import java.util.Set;
import org.openntf.domino.nsfdata.structs.BSIG;
import org.openntf.domino.nsfdata.structs.COLOR_VALUE;
import org.openntf.domino.nsfdata.structs.SIG;
/**
* This defines the structure of the document information field in a form note. A document information field is an item with name $INFO
* (ITEM_NAME_DOCUMENT) and data type TYPE_COMPOSITE. The document information field defines attributes of documents created with that form.
* (editods.h)
*
*/
public class CDDOCUMENT extends CDRecord {
public static enum FormFlag1 {
REFERENCE(0x0001), MAIL(0x0002), NOTEREF(0x0004), NOTEREF_MAIN(0x0008), RECALC(0x0010), BOILERPLATE(0x0020), FGCOLOR(0x0040),
SPARESOK(0x0080), ACTIVATE_OBJECT_COMP(0x0100), ACTIVATE_OBJECT_EDIT(0x0200), ACTIVATE_OBJECT_READ(0x0400),
SHOW_WINDOW_COMPOSE(0x0800), SHOW_WINDOW_EDIT(0x1000), SHOW_WINDOW_READ(0x2000), UPDATE_RESPONSE(0x4000), UPDATE_PARENT(0x8000);
private final short value_;
private FormFlag1(final int value) {
value_ = (short) value;
}
public short getValue() {
return value_;
}
public static Set<FormFlag1> valuesOf(final short flags) {
Set<FormFlag1> result = EnumSet.noneOf(FormFlag1.class);
for (FormFlag1 flag : values()) {
if ((flag.getValue() & flags) > 0) {
result.add(flag);
}
}
return result;
}
}
public final BSIG Header = inner(new BSIG());
/**
* Use getPaperColor for access.
*/
@Deprecated
public final Unsigned16 PaperColor = new Unsigned16();
/**
* Use getFormFlags for access.
*/
@Deprecated
public final Unsigned16 FormFlags = new Unsigned16();
/**
* Use getNotePrivileges for access.
*/
@Deprecated
public final Unsigned16 NotePrivileges = new Unsigned16();
/**
* Use getFormFlags2 for access.
*/
@Deprecated
public final Unsigned16 FormFlags2 = new Unsigned16();
public final Unsigned16 InherFieldNameLength = new Unsigned16();
/**
* Use getPaperColorExt for access.
*/
@Deprecated
public final Unsigned16 PaperColorExt = new Unsigned16();
public final COLOR_VALUE PaperColorValue = inner(new COLOR_VALUE());
/**
* Use getFormFlags3 for access.
*/
@Deprecated
public final Unsigned16 FormFlags3 = new Unsigned16();
public final Unsigned16[] Spare = array(new Unsigned16[1]);
static {
addVariableString("InherFieldName", "InherFieldNameLength");
addVariableString("FieldName", "getFieldNameLength");
}
@Override
public SIG getHeader() {
return Header;
}
/**
* @return Color of the paper being used
*/
public short getPaperColor() {
// TODO make an enum
return (short) PaperColor.get();
}
public Set<FormFlag1> getFormFlags() {
return FormFlag1.valuesOf((short) FormFlags.get());
}
/**
* @return Privs for notes created when using form
*/
public short getNotePrivileges() {
// TODO make an enum
return (short) NotePrivileges.get();
}
/**
* @return more Form Flags
*/
public short getFormFlags2() {
// TODO make an enum
return (short) FormFlags2.get();
}
/**
* @return Palette Color of the paper being used. Index into 240 color table.
* @since Lotus Notes 4.0
*/
public short getPaperColorExt() {
// TODO make an enum
return (short) PaperColorExt.get();
}
public short getFormFlags3() {
// TODO make an enum
return (short) FormFlags3.get();
}
public String getInheritFieldName() {
// In builds prior to 100 (somewhere in R3), data past NotePrivileges was junk,
// so don't try to get variable data
if (getFormFlags().contains(FormFlag1.SPARESOK)) {
return (String) getVariableElement("InherFieldName");
} else {
return "";
}
}
public int getFieldNameLength() {
return (int) (Header.getRecordLength() - size() - InherFieldNameLength.get());
}
/**
* @return string indicating which field to append version number to
*/
public String getFieldName() {
return (String) getVariableElement("FieldName");
}
@Override
public String toString() {
return "[" + getClass().getSimpleName() + ": PaperColor=" + PaperColor.get() + ", FormFlags=" + getFormFlags()
+ ", NotePrivileges=" + getNotePrivileges() + ", FormFlags2=" + getFormFlags2() + ", InheritFieldName="
+ getInheritFieldName() + ", PaperColorExt=" + getPaperColorExt() + ", PaperColorValue=" + PaperColorValue
+ ", FormFlags3=" + getFormFlags3() + "]";
}
}