/* ==================================================================== | |
Licensed to the Apache Software Foundation (ASF) under one or more | |
contributor license agreements. See the NOTICE file distributed with | |
this work for additional information regarding copyright ownership. | |
The ASF licenses this file to You under the Apache License, Version 2.0 | |
(the "License"); you may not use this file except in compliance with | |
the License. You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
==================================================================== */ | |
package org.apache.poi.hssf.usermodel; | |
import org.apache.poi.ddf.*; | |
import org.apache.poi.hssf.record.*; | |
import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType; | |
/** | |
* | |
*/ | |
public class HSSFCombobox extends HSSFSimpleShape { | |
public HSSFCombobox(EscherContainerRecord spContainer, ObjRecord objRecord) { | |
super(spContainer, objRecord); | |
} | |
public HSSFCombobox(HSSFShape parent, HSSFAnchor anchor) { | |
super(parent, anchor); | |
super.setShapeType(OBJECT_TYPE_COMBO_BOX); | |
CommonObjectDataSubRecord cod = (CommonObjectDataSubRecord) getObjRecord().getSubRecords().get(0); | |
cod.setObjectType(CommonObjectDataSubRecord.OBJECT_TYPE_COMBO_BOX); | |
} | |
@Override | |
protected TextObjectRecord createTextObjRecord() { | |
return null; | |
} | |
@Override | |
protected EscherContainerRecord createSpContainer() { | |
EscherContainerRecord spContainer = new EscherContainerRecord(); | |
EscherSpRecord sp = new EscherSpRecord(); | |
EscherOptRecord opt = new EscherOptRecord(); | |
EscherClientDataRecord clientData = new EscherClientDataRecord(); | |
spContainer.setRecordId(EscherContainerRecord.SP_CONTAINER); | |
spContainer.setOptions((short) 0x000F); | |
sp.setRecordId(EscherSpRecord.RECORD_ID); | |
sp.setOptions((short) ((EscherAggregate.ST_HOSTCONTROL << 4) | 0x2)); | |
sp.setFlags(EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE); | |
opt.setRecordId(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) getAnchor(); | |
userAnchor.setAnchorType(AnchorType.DONT_MOVE_DO_RESIZE); | |
EscherRecord anchor = userAnchor.getEscherAnchor(); | |
clientData.setRecordId(EscherClientDataRecord.RECORD_ID); | |
clientData.setOptions((short) 0x0000); | |
spContainer.addChildRecord(sp); | |
spContainer.addChildRecord(opt); | |
spContainer.addChildRecord(anchor); | |
spContainer.addChildRecord(clientData); | |
return spContainer; | |
} | |
@Override | |
protected ObjRecord createObjRecord() { | |
ObjRecord obj = new ObjRecord(); | |
CommonObjectDataSubRecord c = new CommonObjectDataSubRecord(); | |
c.setObjectType(HSSFSimpleShape.OBJECT_TYPE_COMBO_BOX); | |
c.setLocked(true); | |
c.setPrintable(false); | |
c.setAutofill(true); | |
c.setAutoline(false); | |
FtCblsSubRecord f = new FtCblsSubRecord(); | |
LbsDataSubRecord l = LbsDataSubRecord.newAutoFilterInstance(); | |
EndSubRecord e = new EndSubRecord(); | |
obj.addSubRecord(c); | |
obj.addSubRecord(f); | |
obj.addSubRecord(l); | |
obj.addSubRecord(e); | |
return obj; | |
} | |
@Override | |
public void setShapeType(int shapeType) { | |
throw new IllegalStateException("Shape type can not be changed in "+this.getClass().getSimpleName()); | |
} | |
} |