|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|