You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.6 KiB
166 lines
5.6 KiB
package com.fr.design.mainframe; |
|
|
|
import com.fr.base.Parameter; |
|
import com.fr.base.TableData; |
|
import com.fr.base.param.ParameterSource; |
|
import com.fr.data.TableDataSource; |
|
import com.fr.design.DesignModelAdapter; |
|
import com.fr.design.file.HistoryTemplateListPane; |
|
import com.fr.form.main.Form; |
|
import com.fr.form.main.WidgetGatherAdapter; |
|
import com.fr.form.ui.BaseChartEditor; |
|
import com.fr.form.ui.ElementCaseEditor; |
|
import com.fr.form.ui.Widget; |
|
import com.fr.script.Calculator; |
|
import com.fr.stable.EmbParaFilter; |
|
import com.fr.stable.ParameterProvider; |
|
import com.fr.stable.js.WidgetName; |
|
import com.fr.util.ParameterApplyHelper; |
|
|
|
import java.util.ArrayList; |
|
import java.util.HashMap; |
|
import java.util.List; |
|
import java.util.Map; |
|
|
|
public class FormModelAdapter extends DesignModelAdapter<Form, BaseJForm<Form>> { |
|
|
|
public FormModelAdapter(BaseJForm<Form> jForm) { |
|
super(jForm); |
|
} |
|
|
|
public FormModelAdapter(BaseJForm<Form> jTemplate, Parameter[] parameters) { |
|
super(jTemplate, parameters); |
|
} |
|
|
|
/** |
|
* 环境改变. |
|
*/ |
|
public void envChanged() { |
|
WidgetToolBarPane.refresh(); |
|
jTemplate.refreshAllNameWidgets(); |
|
|
|
} |
|
|
|
/** |
|
* 参数改变. |
|
*/ |
|
public void parameterChanged() { |
|
// 更新缓存的参数 |
|
updateCachedParameter(); |
|
//实时更新参数 |
|
jTemplate.populateParameter(); |
|
} |
|
|
|
@Override |
|
public void tableDataParametersChanged(String oldName, String tdName, TableData tableData) { |
|
Map<String, ParameterProvider> map = new HashMap<>(); |
|
addGlobalParameters(map); |
|
updateTableDataParameters(oldName, tdName, tableData, map, parameterProvider -> !EmbParaFilter.isFRLayerTypePara(parameterProvider)); |
|
ParameterApplyHelper.addPara2Map(map, this.getBook().getTemplateParameters(), null, ParameterSource.DEFAULT_SOURCE); |
|
parameters = map.values().toArray(new Parameter[0]); |
|
jTemplate.populateParameter(); |
|
} |
|
|
|
/** |
|
* 控件配置改变. |
|
*/ |
|
public void widgetConfigChanged() { |
|
WidgetToolBarPane.refresh(); |
|
jTemplate.refreshAllNameWidgets(); |
|
} |
|
|
|
/** |
|
* 重命名TableData后的一些操作 |
|
* |
|
* @param oldName 旧名字 |
|
* @param newName 新名字. |
|
* @return 返回是否名字一样. |
|
*/ |
|
public boolean renameTableData(String oldName, String newName) { |
|
if (super.renameTableData(oldName, newName)) { |
|
jTemplate.refreshSelectedWidget(); |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
@Override |
|
public List<WidgetName> getWidgetsName() { |
|
final List<WidgetName> list = new ArrayList<WidgetName>(); |
|
Form.traversalFormWidget(this.getBook().getContainer(), new WidgetGatherAdapter() { |
|
|
|
@Override |
|
public void dealWith(Widget widget) { |
|
if (widgetAccepted(widget)) { |
|
list.add(new WidgetName(widget.getWidgetName())); |
|
} |
|
} |
|
@Override |
|
public boolean dealWithAllCards() { |
|
return true; |
|
} |
|
}); |
|
return list; |
|
} |
|
|
|
/** |
|
* 获取可以被超链的对象,表单主体中的所有控件 |
|
*/ |
|
public Widget[] getLinkableWidgets() { |
|
final ArrayList<Widget> linkAbleList = new ArrayList<Widget>(); |
|
final JForm currentJForm = ((JForm) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); |
|
Form.traversalWidget(currentJForm.getRootLayout(), new WidgetGatherAdapter() { |
|
|
|
@Override |
|
public boolean dealWithAllCards() { |
|
return true; |
|
} |
|
|
|
public void dealWith(Widget widget) { |
|
boolean isSupportAsHypelink = widget.acceptType(ElementCaseEditor.class) || widget.acceptType(BaseChartEditor.class); |
|
//可以超链的对象不包含本身; 目前只有图表和报表块可以 |
|
// bug66182 删了条件:!ComparatorUtils.equals(editingECName, widget.getWidgetName()) 让当前表单对象可以选到自己 |
|
if (isSupportAsHypelink) { |
|
linkAbleList.add(widget); |
|
} |
|
} |
|
}, Widget.class); |
|
|
|
return linkAbleList.toArray(new Widget[linkAbleList.size()]); |
|
} |
|
|
|
|
|
@Override |
|
protected Parameter[] getLatestTemplateParameters() { |
|
Parameter[] rpa = this.getBook().getTemplateParameters(); |
|
return rpa == null ? new Parameter[0] : rpa; |
|
} |
|
|
|
@Override |
|
protected Parameter[] getLatestTableDataParameters() { |
|
TableDataSource source = this.getBook(); |
|
Calculator c = Calculator.createCalculator(); |
|
c.setAttribute(TableDataSource.KEY, source); |
|
java.util.List<ParameterProvider> list = new java.util.ArrayList<ParameterProvider>(); |
|
java.util.Iterator<String> nameIt = this.getBook().getTableDataNameIterator(); |
|
while (nameIt.hasNext()) { |
|
TableData td = source.getTableData(nameIt.next()); |
|
if (td.getParameters(c) != null) { |
|
list.addAll(java.util.Arrays.asList(td.getParameters(c))); |
|
} |
|
} |
|
return list.toArray(new Parameter[list.size()]); |
|
} |
|
|
|
@Override |
|
protected Parameter[] getLatestParameters() { |
|
Map<String, ParameterProvider> map = new HashMap<>(); |
|
addGlobalParameters(map); |
|
|
|
addTableDataParameters(map, parameterProvider -> !EmbParaFilter.isFRLayerTypePara(parameterProvider)); |
|
|
|
ParameterApplyHelper.addPara2Map(map, this.getBook().getTemplateParameters(), null, ParameterSource.DEFAULT_SOURCE); |
|
|
|
return map.values().toArray(new Parameter[0]); |
|
} |
|
}
|
|
|