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.
139 lines
4.5 KiB
139 lines
4.5 KiB
package com.fanruan.api.design.work; |
|
|
|
import com.fanruan.api.design.DesignKit; |
|
import com.fanruan.api.design.ui.component.UIButton; |
|
import com.fanruan.api.design.ui.component.UITextArea; |
|
import com.fanruan.api.design.ui.container.UIScrollPane; |
|
import com.fanruan.api.design.util.GUICoreKit; |
|
import com.fr.base.FRContext; |
|
import com.fr.design.dialog.BasicPane; |
|
import com.fr.design.gui.itree.filetree.ClassFileTree; |
|
import com.fr.design.gui.itree.filetree.TemplateFileTree; |
|
import com.fr.file.filetree.IOFileNodeFilter; |
|
|
|
import javax.swing.*; |
|
import java.awt.*; |
|
import java.awt.event.ActionEvent; |
|
import java.awt.event.ActionListener; |
|
|
|
/** |
|
* 模板选择视图面板 |
|
*/ |
|
public class ReportletPane extends BasicPane { |
|
|
|
private TemplateFileTree templateReportletTree; |
|
private UIScrollPane templateScrollPane; |
|
private ClassFileTree classReportletTree; |
|
private UIScrollPane classScrollPane; |
|
|
|
private UIButton switchButton; |
|
private CardLayout card; |
|
private JPanel cardPane; |
|
|
|
public ReportletPane() { |
|
this.setLayout(new BorderLayout()); |
|
UITextArea textPane = new UITextArea(); |
|
this.add(textPane, BorderLayout.NORTH); |
|
textPane.setEditable(false); |
|
textPane.setLineWrap(true); |
|
|
|
textPane.setFont(FRContext.getDefaultValues().getFRFont().deriveFont(Font.BOLD, 12)); |
|
textPane.setText(DesignKit.i18nText("Fine-Design_Basic_Schedule_The_Selected_File_Must_Be_End_With_Filter")); |
|
|
|
JPanel centerPane = GUICoreKit.createBorderLayoutPane(); |
|
this.add(centerPane, BorderLayout.CENTER); |
|
|
|
switchButton = new UIButton("switch"); |
|
centerPane.add(GUICoreKit.createBorderLayoutPane(switchButton, BorderLayout.WEST), BorderLayout.NORTH); |
|
switchButton.addActionListener(new ActionListener() { |
|
public void actionPerformed(ActionEvent evt) { |
|
switchCardPane(templateScrollPane.isVisible()); |
|
} |
|
}); |
|
|
|
cardPane = new JPanel(); |
|
centerPane.add(cardPane, BorderLayout.CENTER); |
|
cardPane.setLayout(card = new CardLayout()); |
|
templateReportletTree = new TemplateFileTree(); |
|
IOFileNodeFilter filter = new IOFileNodeFilter(new String[]{".cpt", ".class", ".frm", ".form"}); |
|
templateReportletTree.setFileNodeFilter(filter); |
|
cardPane.add(templateScrollPane = new UIScrollPane(templateReportletTree), "TEMPLATE"); |
|
classReportletTree = new ClassFileTree(); |
|
cardPane.add(classScrollPane = new UIScrollPane(classReportletTree), "CLASS"); |
|
|
|
this.refreshEnv(); |
|
} |
|
|
|
/* |
|
* 切换CardPane |
|
*/ |
|
private void switchCardPane(boolean switch2Class) { |
|
if (switch2Class) { |
|
card.show(cardPane, "CLASS"); |
|
switchButton.setText(DesignKit.i18nText("Fine-Design_Basic_Utils_Switch_To_Template_Reportlet")); |
|
} else { |
|
card.show(cardPane, "TEMPLATE"); |
|
switchButton.setText(DesignKit.i18nText("Fine-Design_Basic_Utils_Switch_To_Class_Reportlet")); |
|
} |
|
} |
|
|
|
/** |
|
* 检查是否符合规范 |
|
* |
|
* @throws Exception 抛错 |
|
*/ |
|
public void checkValid() throws Exception { |
|
String path = this.getSelectedReportletPath(); |
|
if (path == null) { |
|
throw new Exception(DesignKit.i18nText("Fine-Design_Basic_Function_The_Selected_File_Cannot_Be_Null")); |
|
} |
|
} |
|
|
|
|
|
/** |
|
* 刷新Env |
|
*/ |
|
public void refreshEnv() { |
|
this.templateReportletTree.refreshEnv(); |
|
this.classReportletTree.refreshEnv(); |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Reportlet"); |
|
} |
|
|
|
/** |
|
* 返回选中的模板的路径 |
|
* |
|
* @return 模板路径 |
|
*/ |
|
public String getSelectedReportletPath() { |
|
if (templateScrollPane.isVisible()) { |
|
return templateReportletTree.getSelectedTemplatePath(); |
|
} else if (classScrollPane.isVisible()) { |
|
return classReportletTree.getSelectedClassPath(); |
|
} |
|
|
|
return null; |
|
} |
|
|
|
/** |
|
* 根据路径设置视图中被选中的模板 |
|
* |
|
* @param templatePath 模板路径 |
|
*/ |
|
public void setSelectedReportletPath(String templatePath) { |
|
if (templatePath == null) { |
|
return; |
|
} |
|
|
|
if (templatePath.endsWith(".class")) { |
|
switchCardPane(true); |
|
classReportletTree.setSelectedClassPath(templatePath); |
|
} else { |
|
switchCardPane(false); |
|
templateReportletTree.setSelectedTemplatePath(templatePath); |
|
} |
|
} |
|
}
|
|
|