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

145 lines
4.0 KiB

package com.fr.design.mainframe;
import java.awt.CardLayout;
import javax.swing.JComponent;
import com.fr.base.BaseUtils;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.event.TargetModifiedEvent;
import com.fr.design.event.TargetModifiedListener;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.poly.PolyDesigner;
import com.fr.report.poly.PolyWorkSheet;
import com.fr.report.report.TemplateReport;
import com.fr.report.worksheet.WorkSheet;
/**
* 中间的整个报表编辑区域
*
* @editor zhou
* @since 2012-3-27下午12:12:11
*/
public class ReportComponentCardPane extends JComponent implements TargetModifiedListener {
protected ReportComponent editingComponet;
private CardLayout cl;
private WorkSheetDesigner sheetDezi;
private PolyDesigner polyDezi;
public ReportComponentCardPane() {
this.setLayout(cl = new CardLayout());
}
public void requestGrifFocus() {
if (sheetDezi != null) {
sheetDezi.requestFocus();
}
}
public PolyDesigner getPolyDezi(){
return this.polyDezi;
}
protected void stopEditing() {
if (editingComponet != null) {
editingComponet.stopEditing();
}
}
protected boolean cut() {
if (editingComponet != null) {
return editingComponet.cut();
}
return false;
}
protected void copy() {
if (editingComponet != null) {
editingComponet.copy();
}
}
protected boolean paste() {
if (editingComponet != null) {
return editingComponet.paste();
}
return false;
}
// TODO ALEX_SEP 期望与TargetComponent那边合并,或者减少与JWorkBook之间的层次
private java.util.List<TargetModifiedListener> targetModifiedList = new java.util.ArrayList<TargetModifiedListener>();
/**
* 添加 TargetModifiedListener
*
* @param l TargetModifiedListener
*/
public void addTargetModifiedListener(TargetModifiedListener l) {
targetModifiedList.add(l);
}
/**
* Invoked when the target of the listener has changed the rpt content.
*
* @param e
*/
@Override
public void targetModified(TargetModifiedEvent e) {
for (TargetModifiedListener l : targetModifiedList) {
l.targetModified(e);
}
}
protected void showJWorkSheet(WorkSheet sheet) {
if (sheetDezi == null) {
sheetDezi = new WorkSheetDesigner(sheet);
this.add(sheetDezi, "WS");
sheetDezi.addTargetModifiedListener(this);
} else {
sheetDezi.setTarget(sheet);
}
cl.show(this, "WS");
editingComponet = sheetDezi;
}
protected void showPoly(PolyWorkSheet sheet) {
if (polyDezi == null) {
polyDezi = new PolyDesigner(sheet);
this.add(polyDezi, "PL");
polyDezi.addTargetModifiedListener(this);
} else {
polyDezi.setTarget(sheet);
}
cl.show(this, "PL");
editingComponet = polyDezi;
}
protected void populate(TemplateReport tpl) {
if (tpl instanceof WorkSheet) {
showJWorkSheet((WorkSheet) tpl);
} else if (tpl instanceof PolyWorkSheet) {
showPoly((PolyWorkSheet) tpl);
}
if (DesignerMode.isAuthorityEditing()) {
JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName();
editingTemplate.setSheetCovered(tpl.getWorkSheetPrivilegeControl().checkInvisible(selectedRoles));
}
}
protected TemplateReport update() {
if (polyDezi != null && polyDezi.isVisible()) {
return polyDezi.getTarget();
} else if (sheetDezi != null && sheetDezi.isVisible()) {
return sheetDezi.getTarget();
}
return null;
}
}