帆软报表设计器源代码。
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.
 
 
 
 

125 lines
3.9 KiB

package com.fr.design.webattr;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import com.fr.design.gui.ilable.UILabel;
import javax.swing.JPanel;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.gui.frpane.EditingStringListPane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.dialog.BasicPane;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.file.filter.ChooseFileFilter;
import com.fr.stable.CoreConstants;
import com.fr.stable.StringUtils;
import com.fr.web.attr.ReportWebAttr;
public class WebCssPane extends BasicPane {
private UITextField localText;
UIButton chooseFile;
private EditingStringListPane centerPane;
public WebCssPane() {
this.setLayout(new BorderLayout(0, 20));
this.setBorder(BorderFactory.createEmptyBorder(10, 5, 0, 0));
JPanel outnorth = new JPanel(new BorderLayout(0, 5));
JPanel northPane = new JPanel(new FlowLayout(FlowLayout.LEFT,8,0));
localText = new UITextField();
localText.setPreferredSize(new Dimension(450, 20));
localText.setEditable(false);
chooseFile = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Selection"));
chooseFile.setPreferredSize(new Dimension(75, 23));
chooseFile.addActionListener(chooseFileListener);
northPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Disk_File") + ":"), FlowLayout.LEFT);
northPane.add(localText, FlowLayout.CENTER);
northPane.add(chooseFile, FlowLayout.RIGHT);
outnorth.add(northPane,BorderLayout.NORTH);
UILabel infor = new UILabel(com.fr.design.i18n.Toolkit.i18nText("CSS_warning"));
infor.setForeground(new Color(207, 42, 39));
outnorth.add(infor,BorderLayout.CENTER);
this.add(outnorth, BorderLayout.NORTH);
centerPane = new EditingStringListPane() {
@Override
protected void selectedChanged(String selected) {
localText.setText(selected);
checkEnableState();
}
@Override
protected String getAddOrEditString() {
return localText.getText();
}
};
this.add(centerPane, BorderLayout.CENTER);
}
private ActionListener chooseFileListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FILEChooserPane fileChooser = FILEChooserPane.getInstance(false, false, true,
new ChooseFileFilter("css", "css" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_File")));
if (fileChooser.showOpenDialog(DesignerContext.getDesignerFrame()) == FILEChooserPane.OK_OPTION) {
final FILE file = fileChooser.getSelectedFILE();
if (file == null) {// 选择的文件不能是 null
return;
}
String fileName = file.getName();
String fileType = fileName.substring(fileName.lastIndexOf(CoreConstants.DOT) + 1);
if (!"css".equalsIgnoreCase(fileType)) {
return;
}
localText.setText(file.getPath());
centerPane.setAddEnabled(true);
}
fileChooser.removeFILEFilter(new ChooseFileFilter("js"));
}
};
@Override
protected String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("ReportServerP-Import_Css");
}
public void populate(ReportWebAttr reportWebAttr) {
if (reportWebAttr == null) {
centerPane.populateBean(new ArrayList<String>());
return;
}
List<String> list = new ArrayList<String>();
for (int i = 0; i < reportWebAttr.getCSSImportCount(); i++) {
if (StringUtils.isNotBlank(reportWebAttr.getCSSImport(i))) {
list.add(reportWebAttr.getCSSImport(i));
}
}
centerPane.populateBean(list);
}
public void update(ReportWebAttr reportWebAttr) {
List<String> valueList = centerPane.updateBean();
reportWebAttr.clearCSSImportList();
for (int i = 0; i < valueList.size(); i++) {
String a = valueList.get(i);
reportWebAttr.addCSSImport(a);
}
}
}