namespace HH.WMS.Utils.NPOI.HSSF.Model
|
{
|
using System;
|
using System.Collections;
|
using HH.WMS.Utils.NPOI.DDF;
|
using HH.WMS.Utils.NPOI.HSSF.UserModel;
|
using HH.WMS.Utils.NPOI.HSSF.Record;
|
|
|
public class ComboboxShape:AbstractShape
|
{
|
private EscherContainerRecord spContainer;
|
private ObjRecord objRecord;
|
|
/**
|
* Creates the low evel records for a combobox.
|
*
|
* @param hssfShape The highlevel shape.
|
* @param shapeId The shape id to use for this shape.
|
*/
|
public ComboboxShape(HSSFSimpleShape hssfShape, int shapeId)
|
{
|
spContainer = CreateSpContainer(hssfShape, shapeId);
|
objRecord = CreateObjRecord(hssfShape, shapeId);
|
}
|
|
/**
|
* Creates the low level OBJ record for this shape.
|
*/
|
private ObjRecord CreateObjRecord(HSSFSimpleShape shape, int shapeId)
|
{
|
ObjRecord obj = new ObjRecord();
|
CommonObjectDataSubRecord c = new CommonObjectDataSubRecord();
|
c.ObjectType = CommonObjectType.COMBO_BOX;
|
c.ObjectId = shapeId;
|
c.IsLocked = true;
|
c.IsPrintable = false;
|
c.IsAutoFill = true;
|
c.IsAutoline = false;
|
|
FtCblsSubRecord f = new FtCblsSubRecord();
|
|
LbsDataSubRecord l = LbsDataSubRecord.CreateAutoFilterInstance();
|
|
EndSubRecord e = new EndSubRecord();
|
|
obj.AddSubRecord(c);
|
obj.AddSubRecord(f);
|
obj.AddSubRecord(l);
|
obj.AddSubRecord(e);
|
|
return obj;
|
}
|
|
/**
|
* Generates the escher shape records for this shape.
|
*/
|
private EscherContainerRecord CreateSpContainer(HSSFSimpleShape shape, int shapeId)
|
{
|
EscherContainerRecord spContainer = new EscherContainerRecord();
|
EscherSpRecord sp = new EscherSpRecord();
|
EscherOptRecord opt = new EscherOptRecord();
|
EscherClientDataRecord clientData = new EscherClientDataRecord();
|
|
spContainer.RecordId=(EscherContainerRecord.SP_CONTAINER);
|
spContainer.Options=((short)0x000F);
|
sp.RecordId=(EscherSpRecord.RECORD_ID);
|
sp.Options=((short)((EscherAggregate.ST_HOSTCONTROL << 4) | 0x2));
|
|
sp.ShapeId=(shapeId);
|
sp.Flags=(EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE);
|
opt.RecordId=(EscherOptRecord.RECORD_ID);
|
opt.AddEscherProperty(new EscherBoolProperty(EscherProperties.PROTECTION__LOCKAGAINSTGROUPING, 17039620));
|
opt.AddEscherProperty(new EscherBoolProperty(EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 0x00080008));
|
opt.AddEscherProperty(new EscherBoolProperty(EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080000));
|
opt.AddEscherProperty(new EscherSimpleProperty(EscherProperties.GROUPSHAPE__PRINT, 0x00020000));
|
|
HSSFClientAnchor userAnchor = (HSSFClientAnchor)shape.Anchor;
|
userAnchor.AnchorType = 1;
|
EscherRecord anchor = CreateAnchor(userAnchor);
|
clientData.RecordId=(EscherClientDataRecord.RECORD_ID);
|
clientData.Options=((short)0x0000);
|
|
spContainer.AddChildRecord(sp);
|
spContainer.AddChildRecord(opt);
|
spContainer.AddChildRecord(anchor);
|
spContainer.AddChildRecord(clientData);
|
|
return spContainer;
|
}
|
|
public override EscherContainerRecord SpContainer
|
{
|
get
|
{
|
return spContainer;
|
}
|
}
|
|
public override ObjRecord ObjRecord
|
{
|
get
|
{
|
return objRecord;
|
}
|
}
|
}
|
}
|