
# 用户场景
1. 现有附件已经支持了`预览` `下载` `重命名` `删除`功能,可以覆盖大部分用户使用场景,对于不能覆盖的使用场景,目前提供了支持开发者配置自定义附件按钮
2. 正常情况下,不考虑单据运行客户端,`预览` `下载` `重命名` `删除`会根据控件的锁定态和编辑态来显示和隐藏。编辑态四种都会显示,锁定态只有`预览` `下载`显示,不支持插件控制这四种系统按钮的隐藏。考虑到二开人员需要自己控制系统按钮的隐藏,因此本次支持了插件控制机制。
# 功能介绍
1. 通过插件方法`addAttachOperaBtn`添加“自定义”按钮,“自定义”按钮的显示和隐藏不会受锁定态和编辑态的影响。
2. 通过插件,在加载附件数据时增加`visble`属性,控制`预览` `下载` `重命名` `删除`这四种权限的隐藏,`visble`的值默认可以设置为`1111`,第一位为`预览`权限,第二位为`下载`权限,第三位为`重命名`权限,第四位为`删除`权限,`1`代表显示,`0`代表隐藏。
# 适用版本
金蝶云苍穹BOS_V5.0.001及以上
# 视觉展示
**图1 附件面板设置自定义按钮**

**图2 附件面板设置编辑态删除权限隐藏**

# 插件示例
## 插件控制附件新增自定义按钮
```java
public class TestPluginAttachment extends AbstractBillPlugIn implements AttachmentOperaClickListener {
private static final String KEY_BUTTON = "buttonap";
private static final String KEY_ATTACHMENTPENAL = "attachmentpanel";
@Override
public void registerListener(EventObject e) {
this.addClickListeners(KEY_BUTTON);
AttachmentPanel panel = this.getControl(KEY_ATTACHMENTPENAL);
panel.addOperaClickListener(this);;
}
@Override
public void click(EventObject evt) {
Control ctl = (Control) evt.getSource();
if (KEY_BUTTON.equals(ctl.getKey())) {
AttachmentPanel panel = this.getControl(KEY_ATTACHMENTPENAL);
List<AttachBtnOption> btns = new ArrayList<AttachBtnOption>();
btns.add(new AttachBtnOption("attoption_1", new LocaleString("分享")));
btns.add(new AttachBtnOption("attoption_2", new LocaleString("打印")));
panel.addAttachOperaBtn(btns );
}
}
@Override
public void attachmentOperaClick(AttachmentOperaClickEvent e) {
AttachmentPanel panel = (AttachmentPanel) e.getSource();
Map<String, String> attinfo = (Map<String, String>) e.getAt