diff --git a/designer-form/src/main/java/com/fr/design/actions/FormParallelAction.java b/designer-form/src/main/java/com/fr/design/actions/FormECParallelCalAction.java similarity index 80% rename from designer-form/src/main/java/com/fr/design/actions/FormParallelAction.java rename to designer-form/src/main/java/com/fr/design/actions/FormECParallelCalAction.java index 914823af9..48f8cc2c6 100644 --- a/designer-form/src/main/java/com/fr/design/actions/FormParallelAction.java +++ b/designer-form/src/main/java/com/fr/design/actions/FormECParallelCalAction.java @@ -6,9 +6,9 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JForm; import com.fr.design.menu.MenuKeySet; -import com.fr.design.widget.ui.designer.FormParallelSettingPane; +import com.fr.design.widget.ui.designer.FormECParallelCalSettingPane; import com.fr.form.main.Form; -import com.fr.form.main.parallel.FormParallelAttr; +import com.fr.form.main.parallel.FormECParallelCalAttr; import javax.swing.KeyStroke; import java.awt.Dimension; @@ -19,7 +19,7 @@ import java.awt.event.ActionEvent; * @version 10.0 * Created on 2022/03/18 */ -public class FormParallelAction extends JTemplateAction { +public class FormECParallelCalAction extends JTemplateAction { private static final MenuKeySet FORM_PARALLEL_SETTING = new MenuKeySet() { @Override @@ -46,7 +46,7 @@ public class FormParallelAction extends JTemplateAction { this.setSmallIcon("com/fr/design/form/images/parallel.png"); } - public FormParallelAction(JForm jForm) { + public FormECParallelCalAction(JForm jForm) { super(jForm); initMenuStyle(); } @@ -61,9 +61,9 @@ public class FormParallelAction extends JTemplateAction { } private void showParallelSettingDialog(JForm jf) { - FormParallelSettingPane attrPane = new FormParallelSettingPane(); + FormECParallelCalSettingPane attrPane = new FormECParallelCalSettingPane(); Form form = jf.getTarget(); - FormParallelAttr parallelAttr = form.getParallelAttr(); + FormECParallelCalAttr parallelAttr = form.getParallelAttr(); attrPane.populateBean(parallelAttr); UIDialog dialog = attrPane.showWindowWithCustomSize(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override @@ -74,7 +74,7 @@ public class FormParallelAction extends JTemplateAction { dialog.setVisible(true); } - private void fireEditingOk(JForm jForm, Form form, FormParallelAttr parallelAttr){ + private void fireEditingOk(JForm jForm, Form form, FormECParallelCalAttr parallelAttr){ form.setParallelAttr(parallelAttr); jForm.fireTargetModified(); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index 0848244db..493a7fa74 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -15,7 +15,7 @@ import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.FormMobileAttrAction; -import com.fr.design.actions.FormParallelAction; +import com.fr.design.actions.FormECParallelCalAction; import com.fr.design.actions.TemplateParameterAction; import com.fr.design.actions.core.WorkBookSupportable; import com.fr.design.actions.file.export.EmbeddedFormExportExportAction; @@ -589,9 +589,9 @@ public class JForm extends JTemplate implements BaseJForm { + private static final String[] CHOOSE_ITEM = new String[] { + Toolkit.i18nText("Fine-Design_Report_I_Want_To_Set_Single"), + Toolkit.i18nText("Fine-Design_Form_Using_Server_Report_View_Settings") + }; + protected static final int SINGLE_SET = 0; + protected static final int SERVER_SET = 1; + //并行设置范围的下拉框(服务器设置还是模板设置) + UIComboBox parallelSettingScope; + //并行计算开关 + UICheckBox parallelSwitch; + + public FormECParallelCalSettingPane(){ + initPane(); + } + + private void initPane(){ + JPanel calSettingOutPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Designer_Form_Block_Parallel_Calculate")); + calSettingOutPane.setPreferredSize(new Dimension(550,110)); + calSettingOutPane.add(getCalSettingPane()); + this.add(calSettingOutPane); + } + + private JPanel getCalSettingPane() { + JPanel calSettingPane = new JPanel(); + calSettingPane.setLayout(new BorderLayout()); + UILabel belowSetLabel = new UILabel(Toolkit.i18nText("Fine-Designer_Setting_Mode")); + belowSetLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); + JPanel parallelSettingScopePane = GUICoreUtils.createFlowPane(new Component[] { + belowSetLabel, getParallelSettingScope()}, FlowLayout.LEFT, 0, 0); + calSettingPane.add(parallelSettingScopePane, BorderLayout.NORTH); + calSettingPane.add(getSwitchPane(Toolkit.i18nText("Fine-Designer_Enable_Form_Block_Parallel_Calculate")), BorderLayout.CENTER); + return calSettingPane; + } + + @Override + protected String title4PopupWindow() { + return Toolkit.i18nText("Fine-Designer_Form_Block_Parallel_Calculate"); + } + + private UIComboBox getParallelSettingScope() { + if (this.parallelSettingScope == null){ + parallelSettingScope = new UIComboBox(CHOOSE_ITEM); + parallelSettingScope.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + if (isUsingServerSettings()) { + populateServerSettings(); + parallelSwitch.setEnabled(false); + } else { + parallelSwitch.setEnabled(true); + } + } + } + }); + } + return this.parallelSettingScope; + } + + private JPanel getSwitchPane(String tip){ + JPanel innerPane = new JPanel(); + innerPane.setLayout(new BorderLayout()); + innerPane.setPreferredSize(new Dimension(500, 30)); + innerPane.setBorder(BorderFactory.createEmptyBorder(10, 70, 5, 10)); + innerPane.add(getParallelSwitch(tip)); + return innerPane; + } + + private UICheckBox getParallelSwitch(String tip){ + if (parallelSwitch == null){ + parallelSwitch = new UICheckBox(tip); + } + return parallelSwitch; + } + + private boolean isUsingServerSettings(){ + return parallelSettingScope.getSelectedIndex() == SERVER_SET; + } + + @Override + public void populateBean(FormECParallelCalAttr formParallelAttr){ + if (formParallelAttr == null){ + formParallelAttr = FormECParallelCalAttr.getDefaultParallelAttr(); + } + parallelSettingScope.setSelectedIndex(formParallelAttr.isUseServerSetting() ? SERVER_SET : SINGLE_SET); + if (formParallelAttr.isUseServerSetting()){ + populateServerSettings(); + } else { + populateSingleTemplateSetting(formParallelAttr); + } + } + + private void populateServerSettings(){ + parallelSwitch.setSelected(FormParallelCalConfig.getInstance().isParallelCal()); + } + + private void populateSingleTemplateSetting(FormECParallelCalAttr parallelAttr){ + parallelSwitch.setSelected(parallelAttr.isParallelCal()); + } + + public FormECParallelCalAttr updateBean(){ + return new FormECParallelCalAttr(isUsingServerSettings(), parallelSwitch.isSelected()); + } +}