forked from fanruan/design
Browse Source
* commit '54983e915cdf228c4ee8cd7b4d6ff0e4fa769b98': REPORT-11612 全局水印=>视觉优化;修复禁用面板后仍然可点击的bug REPORT-11612 全局水印=>功能实现 REPORT-11612 全局水印=>基础面板重构research/10.0
plough
6 years ago
16 changed files with 216 additions and 87 deletions
@ -0,0 +1,93 @@
|
||||
package com.fr.design.dialog; |
||||
|
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
|
||||
import javax.swing.BorderFactory; |
||||
import javax.swing.JPanel; |
||||
import java.awt.BorderLayout; |
||||
import java.awt.Component; |
||||
import java.awt.FlowLayout; |
||||
import java.awt.event.ItemEvent; |
||||
import java.awt.event.ItemListener; |
||||
|
||||
/** |
||||
* 封装了"为该模版单独设置、采用服务器设置"选项功能的设置面板 |
||||
* Created by plough on 2018/11/7. |
||||
*/ |
||||
public abstract class AbstractTemplateServerSettingPane extends BasicPane { |
||||
private static final String[] CHOOSEITEM = new String[] { |
||||
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_I_Want_To_Set_Single"), |
||||
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Using_Server_Report_View_Settings") |
||||
}; |
||||
|
||||
protected static final int SINGLE_SET = 0; |
||||
protected static final int SERVER_SET = 1; |
||||
|
||||
protected UIComboBox chooseComboBox; |
||||
protected JPanel buttonPane; |
||||
private JPanel contentPane; |
||||
|
||||
protected AbstractTemplateServerSettingPane() { |
||||
initComponents(); |
||||
} |
||||
|
||||
private void initComponents() { |
||||
chooseComboBox = new UIComboBox(CHOOSEITEM); |
||||
chooseComboBox.addItemListener(itemListener); |
||||
UILabel belowSetLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Blow_Set")); |
||||
belowSetLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); |
||||
buttonPane = GUICoreUtils.createFlowPane(new Component[] { |
||||
belowSetLabel, chooseComboBox}, FlowLayout.LEFT, 0, 0); |
||||
buttonPane.setBorder(BorderFactory.createEmptyBorder(10, 20, 0, 0)); |
||||
|
||||
this.setLayout(new BorderLayout()); |
||||
this.add(buttonPane, BorderLayout.NORTH); |
||||
this.contentPane = getContentPane(); |
||||
this.add(contentPane, BorderLayout.CENTER); |
||||
} |
||||
|
||||
/** |
||||
* 包含设置项的主面板 |
||||
*/ |
||||
protected abstract JPanel getContentPane(); |
||||
|
||||
private ItemListener itemListener = new ItemListener() { |
||||
@Override |
||||
public void itemStateChanged(ItemEvent e) { |
||||
if (e.getStateChange() == ItemEvent.SELECTED) { |
||||
if (isUsingServerSettings()) { |
||||
populateServerSettings(); |
||||
setSettingPaneEnabled(false); |
||||
} else { |
||||
setSettingPaneEnabled(true); |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
|
||||
private void setSettingPaneEnabled(boolean enabled) { |
||||
// GUICoreUtils.setEnabled 会遍历所有 Component。所以要先设置外层,如果是生效的,再设置内层
|
||||
GUICoreUtils.setEnabled(contentPane, enabled); |
||||
if (enabled) { |
||||
checkContentPaneEnabled(); |
||||
} |
||||
} |
||||
|
||||
protected boolean isUsingServerSettings() { |
||||
return chooseComboBox.getSelectedIndex() == SERVER_SET; |
||||
} |
||||
|
||||
/** |
||||
* 整个配置面板设置为可用后,可能还需要检测面板中部分区域的可用性 |
||||
*/ |
||||
protected void checkContentPaneEnabled() { |
||||
// do nothing
|
||||
} |
||||
|
||||
/** |
||||
* 读取服务器配置并 populate 到主面板中 |
||||
*/ |
||||
protected abstract void populateServerSettings(); |
||||
} |
@ -0,0 +1,62 @@
|
||||
package com.fr.design.report; |
||||
|
||||
import com.fr.base.iofile.attr.WatermarkAttr; |
||||
import com.fr.design.dialog.AbstractTemplateServerSettingPane; |
||||
import com.fr.report.core.ReportUtils; |
||||
|
||||
import javax.swing.BorderFactory; |
||||
import javax.swing.JPanel; |
||||
|
||||
/** |
||||
* Created by plough on 2018/11/7. |
||||
*/ |
||||
public class WatermarkSettingPane extends AbstractTemplateServerSettingPane { |
||||
private WatermarkPane watermarkPane; |
||||
|
||||
public WatermarkSettingPane() { |
||||
super(); |
||||
initComponents(); |
||||
} |
||||
|
||||
private void initComponents() { |
||||
buttonPane.setBorder(BorderFactory.createEmptyBorder(10, 8, 0, 0)); |
||||
} |
||||
|
||||
@Override |
||||
protected JPanel getContentPane() { |
||||
if (watermarkPane == null) { |
||||
watermarkPane = new WatermarkPane(); |
||||
} |
||||
return watermarkPane; |
||||
} |
||||
|
||||
@Override |
||||
protected void populateServerSettings() { |
||||
WatermarkAttr watermarkAttr = ReportUtils.getWatermarkAttrFromServerConfig(); |
||||
watermarkPane.populate(watermarkAttr); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_WaterMark"); |
||||
} |
||||
|
||||
public void populate(WatermarkAttr watermark) { |
||||
if (!watermark.isValid()) { |
||||
chooseComboBox.setSelectedIndex(SERVER_SET); |
||||
populateServerSettings(); |
||||
return; |
||||
} |
||||
chooseComboBox.setSelectedIndex(SINGLE_SET); |
||||
watermarkPane.populate(watermark); |
||||
} |
||||
|
||||
|
||||
public WatermarkAttr update() { |
||||
WatermarkAttr watermark = watermarkPane.update(); |
||||
if (isUsingServerSettings()) { |
||||
watermark.setValid(false); |
||||
} |
||||
return watermark; |
||||
} |
||||
} |
Loading…
Reference in new issue