【仅供内部供应商使用,不提供对外解答和培训】
...
| Code Block | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
package com.fr.form.ui;
import com.fr.data.core.DataCoreXmlUtils;
import com.fr.form.event.Listener;
import com.fr.general.data.Condition;
import com.fr.js.JavaScript;
import com.fr.js.JavaScriptImpl;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.script.Calculator;
import com.fr.stable.core.NodeVisitor;
import com.fr.stable.web.Repository;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
/*
* TODO ToolBar上面的所有Widget是有共同的默认方法(afterload)的, 任何类型的Widget也是默认的实现方法的
* 故,希望多重继承,看了Think in java,觉得也许可以把ToolBar变成一个外部类,Email, Next那些作为ToolBar的内部类,也许可行
*/
public abstract class ToolBarButton extends Button {
// richer:权限控制,仅使用PrivilegeCondition
protected Condition condition;
public ToolBarButton(String text) {
super(text);
this.setEnabled(true);
}
public ToolBarButton(String text, String iconName) {
super(text, iconName);
// alex:工具栏按钮默认为disabled
this.setEnabled(true);
}
public String widgetName() {
return getClass().getSimpleName();
}
public Condition getCondition() {
return this.condition;
}
public void setCondition(Condition condition) {
this.condition = condition;
}
public Listener[] createListeners(Repository repo) {
return new Listener[]{
new Listener(AFTERINIT, initAction(repo)),
new Listener(EVENT_CLICK, clickScript(repo)),
new Listener(
WebContentUtils.getContentPanel(repo), WebContentUtils.EVENT_STARTLOAD, new JavaScriptImpl(
getDisableAction()
)
), new Listener(
WebContentUtils.getContentPanel(repo), WebContentUtils.EVENT_AFTERLOAD, new JavaScriptImpl(
onContentPanelAfterLoad(repo)
)
)
};
}
/**
* 返回按钮点击事件脚本
* @param repo Repository 请求资料对象
* @return 点击事件脚本
* 这个函数不推荐再使用,推荐直接使用clickScript方法
*/
@Deprecated
protected abstract JavaScriptImpl clickAction(Repository repo);
protected JavaScript clickScript(Repository repo){
return clickAction(repo);
}
protected JavaScript initAction(Repository repo) {
return new JavaScriptImpl("this.disable();");
}
/*
* 对应于ContentPanel.afterload事件
*/
protected String onContentPanelAfterLoad(Repository repo) {
return getEnableAction();
}
@Override
public JSONObject createJSONConfig(Repository repo, Calculator c, NodeVisitor nodeVisitor) throws JSONException {
JSONObject jo = super.createJSONConfig(repo, c, nodeVisitor);
jo.put("widgetName", widgetName());
return jo;
}
public void readXML(XMLableReader reader) {
super.readXML(reader);
if (reader.isChildNode()) {
if (Condition.XML_TAG.equals(reader.getTagName())) {
ToolBarButton.this.condition = DataCoreXmlUtils.readCondition(reader);
}
}
}
public void writeXML(XMLPrintWriter writer) {
super.writeXML(writer);
if (condition != null) {
DataCoreXmlUtils.writeXMLCondition(writer, condition);
}
}
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof ToolBarButton)) {
return false;
}
return super.equals(obj);
}
}
|
产品线 | 版本 | 支持情况 | 备注 |
|---|---|---|---|
| FR | 8.0 | 支持 | |
| FR | 9.0 | 支持 | |
| FR | 10.0 | 支持 | |
| BI | 3.6 | 支持 | 不支持仪表板 |
| BI | 4.0 | 支持 | 不支持仪表板 |
| BI | 5.1 | 支持 | 不支持仪表板 |
| BI | 5.1.2 | 支持 | 不支持仪表板 |
| BI | 5.1.3 | 支持 | 不支持仪表板 |
| Code Block | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
<extra-designer>
<ToolbarItemProvider class="your class name"/>
</extra-designer> |
...
demo地址:demo-toolbar-item-provider
免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。
...