package org.openntf.domino.nsfdata.structs;
import java.util.EnumSet;
import java.util.Set;
/**
* This structure describes the format of one column in a view. This structure is one of the components of a $VIEWFORMAT item in a view
* note. A $VIEWFORMAT item contains one view column format descriptor per column. (viewfmt.h)
*
* @since forever
*
*/
public class VIEW_COLUMN_FORMAT extends AbstractStruct {
public static enum FormatSignature {
SIGNATURE((short) 0x4356), SIGNATURE2((short) 0x4357), SIGNATURE3((short) 0x4358), SIGNATURE4((short) 0x4359),
SIGNATURE5((short) 0x4360), SIGNATURE6((short) 0x4361);
private final short value_;
private FormatSignature(final short value) {
value_ = value;
}
public short getValue() {
return value_;
}
public static FormatSignature valueOf(final short value) {
for (FormatSignature sig : values()) {
if (sig.getValue() == value) {
return sig;
}
}
throw new IllegalArgumentException("No " + FormatSignature.class.getSimpleName() + " found for value " + value);
}
}
public static enum Flag1 {
Sort(0x0001), SortCategorize(0x0002), SortDescending(0x0004), Hidden(0x0008), Response(0x0010), HideDetail(0x0020), Icon(0x0040),
NoResize(0x0080), ResortAscending(0x0100), ResortDescending(0x0200), Twistie(0x0400), ResortToView(0x0800), SecondResort(0x1000),
SecondResortDescending(0x2000), CaseInsensitiveSort(0x4000), AccentInsensitiveSort(0x8000);
private final short value_;
private Flag1(final short value) {
value_ = value;
}
private Flag1(final int value) {
value_ = (short) value;
}
public short getValue() {
return value_;
}
public static Set<Flag1> valuesOf(final short flags) {
Set<Flag1> result = EnumSet.noneOf(Flag1.class);
for (Flag1 flag : values()) {
if ((flag.getValue() & flags) > 0) {
result.add(flag);
}
}
return result;
}
}
public static enum Flag2 {
DisplayAlignment(0x0003), SubtotalCode(0x003c), HeaderAlignment(0x00c0), SortPermute(0x0100), SecondResortUniqueSort(0x0200),
SecondResortCategorized(0x0400), SecondResortPermute(0x0800), SecondResortPermutePair(0x1000), ShowValuesAsLinks(0x2000),
DisplayReadingOrder(0x4000), HeaderReadingOrder(0x8000);
private final short value_;
private Flag2(final short value) {
value_ = value;
}
private Flag2(final int value) {
value_ = (short) value;
}
public short getValue() {
return value_;
}
public static Set<Flag2> valuesOf(final short flags) {
Set<Flag2> result = EnumSet.noneOf(Flag2.class);
for (Flag2 flag : values()) {
if ((flag.getValue() & flags) > 0) {
result.add(flag);
}
}
return result;
}
}
public static enum DataType {
NUMBER, TIMEDATE, TEXT
}
/**
* Use getSignature() for access
*/
@Deprecated
public final Unsigned16 Signature = new Unsigned16();
/**
* Use getFlags1() for access
*/
@Deprecated
public final Unsigned16 Flags1 = new Unsigned16();
public final Unsigned16 ItemNameSize = new Unsigned16();
public final Unsigned16 TitleSize = new Unsigned16();
public final Unsigned16 FormulaSize = new Unsigned16();
public final Unsigned16 ConstantValueSize = new Unsigned16();
public final Unsigned16 DisplayWidth = new Unsigned16();
public final FONTID FontID = inner(new FONTID());
/**
* Use getFlags2() for access
*/
@Deprecated
public final Unsigned16 Flags2 = new Unsigned16();
public final NFMT NumberFormat = inner(new NFMT());
public final TFMT TimeFormat = inner(new TFMT());
// TODO FORMROUT.NSF contained 16424
public final Unsigned16 FormatDataType = new Unsigned16();
// public final Enum16<DataType> FormatDataType = new Enum16<DataType>(DataType.values());
// TODO match to LDDELIM_xxx
public final Unsigned16 ListSep = new Unsigned16();
public FormatSignature getSignature() {
return FormatSignature.valueOf((short) Signature.get());
}
public Set<Flag1> getFlags1() {
return Flag1.valuesOf((short) Flags1.get());
}
public Set<Flag2> getFlags2() {
return Flag2.valuesOf((short) Flags2.get());
}
@Override
public String toString() {
return "[" + getClass().getSimpleName() + ": Signature=" + getSignature() + ", Flags1=" + getFlags1() + ", ItemNameSize="
+ ItemNameSize.get() + ", TitleSize=" + TitleSize.get() + ", FormulaSize=" + FormulaSize.get() + ", ConstantValueSize="
+ ConstantValueSize.get() + ", DisplayWidth=" + DisplayWidth.get() + ", FontID=" + FontID + ", Flags2=" + getFlags2()
+ ", NumberFormat=" + NumberFormat + ", TimeFormat=" + TimeFormat + ", FormatDataType=" + FormatDataType.get()
+ ", ListSep=" + ListSep.get() + "]";
}
}