Browse Source

KERNEL-10650:改变并行计算设置面板风格,跟设计器风格保持一致

feature/x
Fly.Li 2 years ago
parent
commit
d419f39316
  1. 102
      designer-form/src/main/java/com/fr/design/widget/ui/designer/FormParallelSettingPane.java

102
designer-form/src/main/java/com/fr/design/widget/ui/designer/FormParallelSettingPane.java

@ -2,6 +2,7 @@ package com.fr.design.widget.ui.designer;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
@ -9,22 +10,16 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.form.main.parallel.FormParallelAttr; import com.fr.form.main.parallel.FormParallelAttr;
import com.fr.form.main.parallel.ParallelAttrMark; import com.fr.form.main.parallel.ParallelAttrMark;
import com.fr.general.IOUtils;
import com.fr.report.core.config.FormParallelCalConfig; import com.fr.report.core.config.FormParallelCalConfig;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.FlowLayout; import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/** /**
* @author fly.li * @author fly.li
@ -66,83 +61,69 @@ public class FormParallelSettingPane extends BasicBeanPane<FormParallelAttr> {
} }
static class ParallelSettingPane extends BasicPane { static class ParallelSettingPane extends BasicPane {
private static final String[] CHOOSEITEM = new String[] { private static final String[] CHOOSE_ITEM = new String[] {
Toolkit.i18nText("Fine-Design_Report_I_Want_To_Set_Single"), Toolkit.i18nText("Fine-Design_Report_I_Want_To_Set_Single"),
Toolkit.i18nText("Fine-Design_Form_Using_Server_Report_View_Settings") Toolkit.i18nText("Fine-Design_Form_Using_Server_Report_View_Settings")
}; };
protected static final int SINGLE_SET = 0; protected static final int SINGLE_SET = 0;
protected static final int SERVER_SET = 1; protected static final int SERVER_SET = 1;
//提示文字标签 //并行设置范围的下拉框(服务器设置还是模板设置)
UIComboBox combox; UIComboBox parallelSettingScope;
//并行计算开关 //并行计算开关
ParallelSwitchLabel parallelSwitchLabel; UICheckBox parallelSwitch;
public ParallelSettingPane(){ public ParallelSettingPane(){
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
JPanel comboxPane = new JPanel();
comboxPane.setLayout(new BorderLayout());
comboxPane.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
UILabel belowSetLabel = new UILabel(Toolkit.i18nText("Fine-Designer_Setting_Mode")); UILabel belowSetLabel = new UILabel(Toolkit.i18nText("Fine-Designer_Setting_Mode"));
belowSetLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); belowSetLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20));
JPanel buttonPane = GUICoreUtils.createFlowPane(new Component[] { JPanel parallelSettingScopePane = GUICoreUtils.createFlowPane(new Component[] {
belowSetLabel, getCombox()}, FlowLayout.LEFT, 0, 0); belowSetLabel, getParallelSettingScope()}, FlowLayout.LEFT, 0, 0);
this.add(buttonPane, BorderLayout.NORTH); this.add(parallelSettingScopePane, BorderLayout.NORTH);
this.add(getSwitchPane(Toolkit.i18nText("Fine-Designer_Enable_Form_Block_Parallel_Calculate")), BorderLayout.CENTER); this.add(getSwitchPane(Toolkit.i18nText("Fine-Designer_Enable_Form_Block_Parallel_Calculate")), BorderLayout.CENTER);
} }
private UIComboBox getCombox() { private UIComboBox getParallelSettingScope() {
if (combox == null){ if (parallelSettingScope == null){
combox = new UIComboBox(CHOOSEITEM); parallelSettingScope = new UIComboBox(CHOOSE_ITEM);
combox.setFont(new Font(null, 0, 11)); parallelSettingScope.addItemListener(new ItemListener() {
combox.addItemListener(new ItemListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) { if (e.getStateChange() == ItemEvent.SELECTED) {
if (combox.getSelectedIndex() == SERVER_SET) { if (isUsingServerSettings()) {
populateServerSettings(); populateServerSettings();
parallelSwitch.setEnabled(false);
} else {
parallelSwitch.setEnabled(true);
} }
} }
} }
}); });
} }
return combox; return parallelSettingScope;
} }
private JPanel getSwitchPane(String tip){ private JPanel getSwitchPane(String tip){
JPanel innerPane = new JPanel(); JPanel innerPane = new JPanel();
innerPane.setLayout(new BorderLayout()); innerPane.setLayout(new BorderLayout());
innerPane.setPreferredSize(new Dimension(500, 30)); innerPane.setPreferredSize(new Dimension(500, 30));
innerPane.setBorder(BorderFactory.createEmptyBorder(5, 70, 5, 10)); innerPane.setBorder(BorderFactory.createEmptyBorder(10, 70, 5, 10));
JLabel label = new JLabel(tip); innerPane.add(getSwitchBox(tip));
label.setFont(new Font(null, 0, 12));
innerPane.add(label, BorderLayout.WEST);
innerPane.add(getSwitchLabel(), BorderLayout.EAST);
return innerPane; return innerPane;
} }
private JLabel getSwitchLabel(){ private UICheckBox getSwitchBox(String tip){
if (parallelSwitchLabel == null){ if (parallelSwitch == null){
parallelSwitchLabel = new ParallelSwitchLabel(); parallelSwitch = new UICheckBox(tip);
combox.setSelectedIndex(SERVER_SET);
parallelSwitchLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (!isUsingServerSettings()){
parallelSwitchLabel.changeSwitchState();
}
}
});
} }
return parallelSwitchLabel; return parallelSwitch;
} }
private boolean isUsingServerSettings(){ private boolean isUsingServerSettings(){
return combox.getSelectedIndex() == SERVER_SET; return parallelSettingScope.getSelectedIndex() == SERVER_SET;
} }
public void populateBean(ParallelAttrMark parallelAttrMark){ public void populateBean(ParallelAttrMark parallelAttrMark){
combox.setSelectedIndex(parallelAttrMark.isUseServerSetting() ? SERVER_SET : SINGLE_SET); parallelSettingScope.setSelectedIndex(parallelAttrMark.isUseServerSetting() ? SERVER_SET : SINGLE_SET);
if (parallelAttrMark.isUseServerSetting()){ if (parallelAttrMark.isUseServerSetting()){
populateServerSettings(); populateServerSettings();
} else { } else {
@ -151,15 +132,15 @@ public class FormParallelSettingPane extends BasicBeanPane<FormParallelAttr> {
} }
private void populateServerSettings(){ private void populateServerSettings(){
parallelSwitchLabel.setSwitchState(FormParallelCalConfig.getInstance().isParallelCal()); parallelSwitch.setSelected(FormParallelCalConfig.getInstance().isParallelCal());
} }
private void populateSingleTemplateSetting(ParallelAttrMark parallelAttrMark){ private void populateSingleTemplateSetting(ParallelAttrMark parallelAttrMark){
parallelSwitchLabel.setSwitchState(parallelAttrMark.isEnableParallel()); parallelSwitch.setSelected(parallelAttrMark.isEnableParallel());
} }
public ParallelAttrMark updateBean(){ public ParallelAttrMark updateBean(){
return new ParallelAttrMark(isUsingServerSettings(), parallelSwitchLabel.isParallel()); return new ParallelAttrMark(isUsingServerSettings(), parallelSwitch.isSelected());
} }
@Override @Override
@ -167,31 +148,4 @@ public class FormParallelSettingPane extends BasicBeanPane<FormParallelAttr> {
return ""; return "";
} }
} }
/**
* 一个并行开关Label
* */
private static class ParallelSwitchLabel extends JLabel{
boolean parallel;
private final static Icon openIcon = IOUtils.readIcon("com/fr/design/form/images/open.png");
private final static Icon closeIcon = IOUtils.readIcon("com/fr/design/form/images/close.png");
//设置计算状态,parallel状态和图标一起变化
public void setSwitchState(boolean parallel){
this.parallel = parallel;
if (parallel){
this.setIcon(openIcon);
}else {
this.setIcon(closeIcon);
}
}
public void changeSwitchState(){
parallel = !parallel;
setSwitchState(parallel);
}
public boolean isParallel() {
return parallel;
}
}
} }

Loading…
Cancel
Save