fanglei
8 years ago
114 changed files with 2011 additions and 3710 deletions
@ -0,0 +1,86 @@
|
||||
apply plugin: "java" |
||||
tasks.withType(JavaCompile){ |
||||
options.encoding = "UTF-8" |
||||
} |
||||
|
||||
def basicDir="../../" |
||||
def libDir="${basicDir}/finereport-lib-stable" |
||||
//获取什么分支名 |
||||
FileTree files =fileTree(dir:"./",include:"build.*.gradle") |
||||
def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) |
||||
def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) |
||||
|
||||
task appletJar<<{ |
||||
|
||||
ant{ |
||||
mkdir(dir:"${libDir}/tmp-${branchName}") |
||||
mkdir(dir:"build/classes/") |
||||
copy(todir:"build/classes/"){ |
||||
fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") |
||||
|
||||
fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") |
||||
|
||||
fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") |
||||
|
||||
fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") |
||||
|
||||
fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") |
||||
|
||||
} |
||||
unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") |
||||
unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") |
||||
jar(jarfile:"build/libs/fr-applet-8.0.jar"){ |
||||
fileset(dir:"build/classes"){ |
||||
exclude(name:"*.*") |
||||
exclude(name:"bin/*.*") |
||||
exclude(name:"classes/**") |
||||
exclude(name:"com/fr/schedule/**") |
||||
exclude(name:"com/fr/cell/**") |
||||
exclude(name:"com/fr/dialog/**") |
||||
exclude(name:"com/fr/view/**") |
||||
exclude(name:"com/fr/web/**") |
||||
exclude(name:"com/fr/fs/**") |
||||
exclude(name:"com/fr/design/**") |
||||
exclude(name:"com/fr/start/**") |
||||
exclude(name:"com/fr/process/**") |
||||
} |
||||
fileset(dir:"${libDir}/tmp-${branchName}"){ |
||||
include(name:"javax/mail/**") |
||||
include(name:"javax/servlet/**") |
||||
include(name:"org/freehep/**") |
||||
include(name:"com/fr/third/JAI/**") |
||||
include(name:"com/fr/third/antlr/**") |
||||
include(name:"com/fr/third/javax/**") |
||||
include(name:"com/sun/xml/**") |
||||
include(name:"javax/xml/**") |
||||
|
||||
} |
||||
fileset(dir:"build/classes"){ |
||||
include(name:"com/fr/web/*.class") |
||||
include(name:"com/fr/web/attr/*.class") |
||||
} |
||||
} |
||||
delete(dir:"${libDir}/tmp-${branchName}") |
||||
def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" |
||||
def keystore="frapplet.store" |
||||
def keycert="fr.cert" |
||||
def keypassword="123456" |
||||
def keyalias="fr" |
||||
|
||||
exec(executable:"${jdk6home}/bin/keytool"){ |
||||
arg(line:"-genkey -dname "CN=FineReport L=NanJing C=China" -keystore ${keystore} -alias ${keyalias} -validity 3650 -storepass ${keypassword}") |
||||
} |
||||
exec(executable:"${jdk6home}/bin/keytool"){ |
||||
arg(line:"-export -keystore ${keystore} -alias ${keyalias} -file ${keycert} -storepass ${keypassword}") |
||||
} |
||||
|
||||
exec(executable:"${jdk6home}/bin/jarsigner"){ |
||||
arg(line:"-keystore ${keystore} -storepass ${keypassword} 'build/libs/fr-applet-8.0.jar' ${keyalias}") |
||||
} |
||||
delete(file:"${keystore}") |
||||
delete(file:"${keycert}") |
||||
delete(dir:"build/classes") |
||||
|
||||
} |
||||
|
||||
} |
@ -1 +1 @@
|
||||
package com.fr.design.actions;
import com.fr.base.BaseUtils;
import com.fr.design.constants.UIConstants;
import com.fr.design.menu.KeySetUtils;
import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.design.roleAuthority.RolesAlreadyEditedPane;
import com.fr.design.designer.TargetComponent;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.*;
/**
* Author : daisy
* Date: 13-8-30
* Time: 上午10:12
*/
public class AllowAuthorityEditAction extends TemplateComponentAction {
public AllowAuthorityEditAction(TargetComponent t) {
super(t);
this.setMenuKeySet(KeySetUtils.ALLOW_AUTHORITY_EDIT);
this.setName(getMenuKeySet().getMenuName());
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/allow_authority_edit.png"));
}
/**
* 撤销
*/
public void prepare4Undo() {
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().iniAuthorityUndoState();
}
/**
* 执行动作
*
* @return 是否执行成功
*/
public boolean executeActionReturnUndoRecordNeeded() {
TargetComponent tc = getEditingComponent();
if (tc == null) {
return false;
}
cleanAuthorityCondition();
//进入时是格式刷则取消格式刷
if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) {
tc.cancelFormat();
}
BaseUtils.setAuthorityEditing(true);
ReportAndFSManagePane.getInstance().refreshDockingView();
RolesAlreadyEditedPane.getInstance().refreshDockingView();
WestRegionContainerPane.getInstance().replaceDownPane(ReportAndFSManagePane.getInstance());
DesignerContext.getDesignerFrame().setCloseMode(UIConstants.CLOSE_OF_AUTHORITY);
DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus());
DesignerContext.getDesignerFrame().needToAddAuhtorityPaint();
EastRegionContainerPane.getInstance().replaceUpPane(tc.getEastUpPane());
DesignerContext.getDesignerFrame().refreshDottedLine();
EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance());
//画虚线
return true;
}
/**
* 进入权限编辑之前将权限编辑界面重置一下工具栏
*/
private void cleanAuthorityCondition() {
java.util.List<JTemplate<?, ?>> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList();
for (int i = 0; i < opendedTemplate.size(); i++) {
opendedTemplate.get(i).cleanAuthorityUndo();
}
}
} |
||||
package com.fr.design.actions;
import com.fr.base.BaseUtils;
import com.fr.design.constants.UIConstants;
import com.fr.design.menu.KeySetUtils;
import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.design.roleAuthority.RolesAlreadyEditedPane;
import com.fr.design.designer.TargetComponent;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.*;
/**
* Author : daisy
* Date: 13-8-30
* Time: 上午10:12
*/
public class AllowAuthorityEditAction extends TemplateComponentAction {
public AllowAuthorityEditAction(TargetComponent t) {
super(t);
this.setMenuKeySet(KeySetUtils.ALLOW_AUTHORITY_EDIT);
this.setName(getMenuKeySet().getMenuName());
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/allow_authority_edit.png"));
}
/**
* 撤销
*/
public void prepare4Undo() {
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().iniAuthorityUndoState();
}
/**
* 执行动作
*
* @return 是否执行成功
*/
public boolean executeActionReturnUndoRecordNeeded() {
TargetComponent tc = getEditingComponent();
if (tc == null) {
return false;
}
cleanAuthorityCondition();
//进入时是格式刷则取消格式刷
if (DesignerContext.getFormatState() != DesignerContext.FORMAT_STATE_NULL) {
tc.cancelFormat();
}
BaseUtils.setAuthorityEditing(true);
ReportAndFSManagePane.getInstance().refreshDockingView();
RolesAlreadyEditedPane.getInstance().refreshDockingView();
WestRegionContainerPane.getInstance().replaceDownPane(ReportAndFSManagePane.getInstance());
DesignerContext.getDesignerFrame().setCloseMode(UIConstants.CLOSE_OF_AUTHORITY);
DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus());
DesignerContext.getDesignerFrame().needToAddAuhtorityPaint();
EastRegionContainerPane.getInstance().replaceUpPane(tc.getEastUpPane());
DesignerContext.getDesignerFrame().refreshDottedLine();
EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance());
EastRegionContainerPane.getInstance().removeParameterPane();
//画虚线
return true;
}
/**
* 进入权限编辑之前将权限编辑界面重置一下工具栏
*/
private void cleanAuthorityCondition() {
java.util.List<JTemplate<?, ?>> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList();
for (int i = 0; i < opendedTemplate.size(); i++) {
opendedTemplate.get(i).cleanAuthorityUndo();
}
}
} |
@ -1,37 +0,0 @@
|
||||
package com.fr.design.event; |
||||
|
||||
import com.fr.design.gui.itree.filetree.TemplateFileTree; |
||||
import com.fr.design.mainframe.dnd.ArrayTransferable; |
||||
import com.fr.design.mainframe.dnd.SerializableTransferable; |
||||
import com.fr.general.web.ParameterConsts; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
import java.awt.dnd.DragGestureEvent; |
||||
import java.awt.dnd.DragGestureListener; |
||||
import java.awt.dnd.DragSource; |
||||
import java.awt.dnd.DragSourceAdapter; |
||||
|
||||
/** |
||||
* Created with IntelliJ IDEA. |
||||
* User: richie |
||||
* Date: 13-11-4 |
||||
* Time: 下午2:17 |
||||
*/ |
||||
public class TemplateTreeDragSource extends DragSourceAdapter implements DragGestureListener { |
||||
private DragSource source; |
||||
|
||||
public TemplateTreeDragSource(JTree tree, int actions) { |
||||
source = new DragSource(); |
||||
source.createDefaultDragGestureRecognizer(tree, actions, this); |
||||
|
||||
} |
||||
public void dragGestureRecognized(DragGestureEvent dge) { |
||||
Component comp = dge.getComponent(); |
||||
if (comp instanceof TemplateFileTree) { |
||||
String selectedPath = ((TemplateFileTree)comp).getSelectedTemplatePath(); |
||||
source.startDrag(dge, DragSource.DefaultLinkDrop, new SerializableTransferable(selectedPath), this); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,49 @@
|
||||
package com.fr.design.extra.exe; |
||||
|
||||
import com.fr.design.extra.LoginWebBridge; |
||||
import com.fr.design.extra.Process; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
|
||||
/** |
||||
* Created by Slpire on 2016/11/7. |
||||
*/ |
||||
public class PluginLoginExecutor implements Executor { |
||||
|
||||
private String result = "[]"; |
||||
|
||||
private String username; |
||||
private String password; |
||||
private UILabel uiLabel; |
||||
|
||||
public PluginLoginExecutor(String username, String password, UILabel uiLabel) { |
||||
this.username = username; |
||||
this.password = password; |
||||
this.uiLabel = uiLabel; |
||||
} |
||||
|
||||
@Override |
||||
public String getTaskFinishMessage() { |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public Command[] getCommands() { |
||||
return new Command[] { |
||||
new Command() { |
||||
@Override |
||||
public String getExecuteMessage() { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public void run(Process<String> process) { |
||||
String loginResult = LoginWebBridge.getHelper().login(username, password, uiLabel); |
||||
if (Integer.valueOf(loginResult) == 0) { |
||||
LoginWebBridge.getHelper().updateMessageCount(); |
||||
} |
||||
result = loginResult; |
||||
} |
||||
} |
||||
}; |
||||
} |
||||
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,13 @@
|
||||
package com.fr.design.gui.chart; |
||||
|
||||
/** |
||||
* Created by daniel on 2016/11/2. |
||||
*/ |
||||
public interface ChartEditPaneProvider { |
||||
|
||||
|
||||
void gotoPane(String... id); |
||||
|
||||
void fire(); |
||||
|
||||
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,13 @@
|
||||
package com.fr.design.chart.series.SeriesCondition.dlp; |
||||
|
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* Created by Mitisky on 16/11/9. |
||||
*/ |
||||
public class FunnelDataLabelPane extends DataLabelPane { |
||||
@Override |
||||
protected Component[] createComponents4ShowCategoryName() { |
||||
return new Component[0]; |
||||
} |
||||
} |
@ -0,0 +1,28 @@
|
||||
package com.fr.design.chart.series.SeriesCondition.impl; |
||||
|
||||
import com.fr.chart.chartattr.FunnelPlot; |
||||
import com.fr.chart.chartattr.Plot; |
||||
import com.fr.design.chart.series.SeriesCondition.ChartConditionPane; |
||||
import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane; |
||||
import com.fr.design.chart.series.SeriesCondition.PiePlotChartConditionPane; |
||||
|
||||
/** |
||||
* Created by Mitisky on 16/11/9. |
||||
*/ |
||||
public class FunnelPlotDataSeriesConditionPane extends DataSeriesConditionPane { |
||||
|
||||
@Override |
||||
protected ChartConditionPane createListConditionPane() { |
||||
return new PiePlotChartConditionPane(); |
||||
} |
||||
|
||||
/** |
||||
* 返回class对象 |
||||
* @return class对象 |
||||
*/ |
||||
@Override |
||||
public Class<? extends Plot> class4Correspond() { |
||||
return FunnelPlot.class; |
||||
} |
||||
|
||||
} |
@ -1,143 +0,0 @@
|
||||
/* |
||||
* Copyright(c) 2001-2011, FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
package com.fr.design.mainframe; |
||||
|
||||
import java.awt.BorderLayout; |
||||
import java.awt.Component; |
||||
|
||||
import javax.swing.BorderFactory; |
||||
import javax.swing.JComponent; |
||||
import javax.swing.JPanel; |
||||
import javax.swing.SwingConstants; |
||||
import javax.swing.event.ChangeEvent; |
||||
import javax.swing.event.ChangeListener; |
||||
|
||||
import com.fr.chart.chartattr.ChartCollection; |
||||
import com.fr.design.constants.UIConstants; |
||||
import com.fr.design.designer.TargetComponent; |
||||
import com.fr.design.gui.ibutton.UIToggleButton; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.itabpane.TitleChangeListener; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.module.DesignModuleFactory; |
||||
import com.fr.general.Inter; |
||||
|
||||
public class ChartAndWidgetPropertyPane extends MiddleChartPropertyPane { |
||||
|
||||
public synchronized static ChartAndWidgetPropertyPane getInstance(BaseFormDesigner formEditor) { |
||||
if(singleton == null) { |
||||
singleton = new ChartAndWidgetPropertyPane(formEditor); |
||||
} |
||||
|
||||
singleton.setWidgetPropertyPane(DesignModuleFactory.getWidgetPropertyPane(formEditor)); |
||||
singleton.setSureProperty(); |
||||
return singleton; |
||||
} |
||||
|
||||
public static ChartAndWidgetPropertyPane getInstance() { |
||||
if(singleton == null) { |
||||
singleton = new ChartAndWidgetPropertyPane(); |
||||
} |
||||
return singleton; |
||||
} |
||||
|
||||
private static ChartAndWidgetPropertyPane singleton; |
||||
|
||||
private BaseWidgetPropertyPane widgetpane = null; |
||||
|
||||
private UIToggleButton hisButton; |
||||
|
||||
public ChartAndWidgetPropertyPane() { |
||||
|
||||
} |
||||
|
||||
public ChartAndWidgetPropertyPane(BaseFormDesigner formEditor) { |
||||
super(); |
||||
this.widgetpane = DesignModuleFactory.getWidgetPropertyPane(formEditor); |
||||
} |
||||
|
||||
public void setWidgetPropertyPane(BaseWidgetPropertyPane pane) { |
||||
this.widgetpane = pane; |
||||
} |
||||
|
||||
@Override |
||||
protected void createMainPane() { |
||||
this.add(chartEditPane, BorderLayout.CENTER); |
||||
} |
||||
|
||||
@Override |
||||
protected void createNameLabel() { |
||||
nameLabel = new UILabel(); |
||||
nameLabel.setHorizontalAlignment(SwingConstants.LEFT); |
||||
nameLabel.setBorder(BorderFactory.createEmptyBorder(-2, 6, 2, 0)); |
||||
} |
||||
|
||||
@Override |
||||
protected JComponent createNorthComponent() { |
||||
JPanel toolPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
|
||||
JPanel hisPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
hisPane.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); |
||||
hisButton = new UIToggleButton(Inter.getLocText(new String[]{"Widget", "Attribute"}), UIConstants.HISTORY_ICON); |
||||
hisButton.setNormalPainted(false); |
||||
hisButton.setBorderPaintedOnlyWhenPressed(true); |
||||
hisPane.add(hisButton, BorderLayout.CENTER); |
||||
|
||||
hisButton.addChangeListener(new ChangeListener() { |
||||
|
||||
@Override |
||||
public void stateChanged(ChangeEvent e) { |
||||
cardChange(); |
||||
} |
||||
}); |
||||
|
||||
toolPane.add(nameLabel, BorderLayout.CENTER); |
||||
toolPane.add(hisPane, BorderLayout.EAST); |
||||
|
||||
titleListener = new TitleChangeListener() { |
||||
|
||||
@Override |
||||
public void fireTitleChange(String addName) { |
||||
if(hisButton.isSelected()) { |
||||
nameLabel.setText(Inter.getLocText(new String[]{"Widget", "Form-Widget_Property_Table"})); |
||||
}else { |
||||
nameLabel.setText(Inter.getLocText("Chart-Property_Table") + '-' + addName); |
||||
} |
||||
} |
||||
}; |
||||
|
||||
return toolPane; |
||||
} |
||||
|
||||
/** |
||||
* 感觉ChartCollection加载图表属性界面. |
||||
* @param collection 收集图表 |
||||
* @param ePane 面板 |
||||
*/ |
||||
public void populateChartPropertyPane(ChartCollection collection, TargetComponent<?> ePane) { |
||||
super.populateChartPropertyPane(collection, ePane); |
||||
//表单中的图表切换界面上得更新
|
||||
resetChartEditPane(); |
||||
} |
||||
|
||||
protected void resetChartEditPane() { |
||||
cardChange(); |
||||
} |
||||
|
||||
private void cardChange() { |
||||
remove(chartEditPane); |
||||
remove((Component)widgetpane); |
||||
if(hisButton.isSelected()) { |
||||
nameLabel.setText(Inter.getLocText(new String[]{"Widget", "Form-Widget_Property_Table"})); |
||||
add((Component)widgetpane, BorderLayout.CENTER); |
||||
} else { |
||||
String tabname = chartEditPane.getSelectedTabName(); |
||||
nameLabel.setText(Inter.getLocText(new String[]{"Utils-The-Chart", "Form-Widget_Property_Table"}) + (tabname != null ? ('-' + chartEditPane.getSelectedTabName()) : "")); |
||||
add(chartEditPane, BorderLayout.CENTER); |
||||
} |
||||
validate(); |
||||
repaint(); |
||||
revalidate(); |
||||
} |
||||
} |
@ -1,134 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.base.chart.BaseChartCollection; |
||||
import com.fr.chart.chartattr.ChartCollection; |
||||
import com.fr.design.designer.TargetComponent; |
||||
import com.fr.design.gui.chart.BaseChartPropertyPane; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.itabpane.TitleChangeListener; |
||||
import com.fr.design.mainframe.chart.ChartDesignEditPane; |
||||
import com.fr.design.mainframe.chart.ChartEditPane; |
||||
import com.fr.general.Inter; |
||||
|
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-15 |
||||
* Time: 下午12:43 |
||||
*/ |
||||
public class ChartDesignerPropertyPane extends BaseChartPropertyPane { |
||||
private static ChartDesignerPropertyPane instance; |
||||
private TargetComponentContainer container = new TargetComponentContainer(); |
||||
private ChartEditPane chartEditPane; |
||||
private UILabel nameLabel; |
||||
private TitleChangeListener titleListener = new TitleChangeListener() { |
||||
|
||||
@Override |
||||
public void fireTitleChange(String addName) { |
||||
nameLabel.setText(Inter.getLocText("Chart-Property_Table") + '-' + addName); |
||||
} |
||||
}; |
||||
|
||||
public synchronized static ChartDesignerPropertyPane getInstance() { |
||||
if (instance == null) { |
||||
instance = new ChartDesignerPropertyPane(); |
||||
} |
||||
instance.setSureProperty(); |
||||
return instance; |
||||
} |
||||
|
||||
public ChartDesignerPropertyPane() { |
||||
this.setLayout(new BorderLayout()); |
||||
this.setBorder(null); |
||||
|
||||
createNameLabel(); |
||||
this.add(nameLabel, BorderLayout.NORTH); |
||||
chartEditPane = ChartDesignEditPane.getInstance(); |
||||
this.add(chartEditPane, BorderLayout.CENTER); |
||||
} |
||||
|
||||
private void createNameLabel() { |
||||
nameLabel = new UILabel() { |
||||
@Override |
||||
public Dimension getPreferredSize() { |
||||
return new Dimension(super.getPreferredSize().width, 18); |
||||
} |
||||
}; |
||||
nameLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 1, 0)); |
||||
nameLabel.setHorizontalAlignment(SwingConstants.CENTER); |
||||
} |
||||
|
||||
@Override |
||||
public void setSureProperty() { |
||||
chartEditPane.setContainer(container); |
||||
chartEditPane.addTitleChangeListener(titleListener); |
||||
String tabname = chartEditPane.getSelectedTabName(); |
||||
nameLabel.setText(Inter.getLocText("Chart-Property_Table") + (tabname != null ? ('-' + chartEditPane.getSelectedTabName()) : "")); |
||||
resetChartEditPane(); |
||||
|
||||
} |
||||
|
||||
protected void resetChartEditPane() { |
||||
remove(chartEditPane); |
||||
add(chartEditPane, BorderLayout.CENTER); |
||||
validate(); |
||||
repaint(); |
||||
revalidate(); |
||||
} |
||||
|
||||
@Override |
||||
public void setSupportCellData(boolean supportCellData){ |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 感觉ChartCollection加载图表属性界面. |
||||
* @param collection 收集图表 |
||||
* @param chartDesigner 图表设计 |
||||
*/ |
||||
public void populateChartPropertyPane(BaseChartCollection collection, TargetComponent<?> chartDesigner) { |
||||
if (collection instanceof ChartCollection) { |
||||
this.container.setEPane(chartDesigner); |
||||
chartEditPane.populate((ChartCollection) collection); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void setWidgetPropertyPane(BaseWidgetPropertyPane pane) { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 刷新 |
||||
*/ |
||||
public void refreshDockingView() { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public String getViewTitle() { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public Icon getViewIcon() { |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 位置 |
||||
* @return 位置 |
||||
*/ |
||||
public Location preferredLocation() { |
||||
return null; |
||||
} |
||||
} |
@ -1,47 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.form.ui.ChartBook; |
||||
|
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-13 |
||||
* Time: 下午2:32 |
||||
*/ |
||||
public class ChartUndoState extends BaseUndoState<JChart> { |
||||
private ChartBook chartBook; |
||||
private Dimension designerSize; |
||||
private double widthValue; |
||||
private double heightValue; |
||||
|
||||
public ChartUndoState(JChart t,ChartArea area) { |
||||
super(t); |
||||
try { |
||||
this.chartBook = (ChartBook) t.getTarget().clone(); |
||||
} catch (CloneNotSupportedException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
this.widthValue =area.getCustomWidth(); |
||||
this.heightValue = area.getCustomHeight(); |
||||
} |
||||
|
||||
|
||||
public ChartBook getChartBook(){ |
||||
return this.chartBook; |
||||
} |
||||
|
||||
/** |
||||
* 应用状态 |
||||
*/ |
||||
public void applyState() { |
||||
this.getApplyTarget().applyUndoState(this); |
||||
|
||||
} |
||||
} |
@ -1,376 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
* 图表类型文件 |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.base.FRContext; |
||||
import com.fr.file.FILEChooserPane; |
||||
import com.fr.file.FILEChooserPane4Chart; |
||||
import com.fr.form.ui.ChartBook; |
||||
import com.fr.design.DesignModelAdapter; |
||||
import com.fr.design.event.TargetModifiedEvent; |
||||
import com.fr.design.event.TargetModifiedListener; |
||||
import com.fr.design.gui.imenu.UIMenuItem; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.mainframe.actions.ExcelExportAction4Chart; |
||||
import com.fr.design.mainframe.actions.PDFExportAction4Chart; |
||||
import com.fr.design.mainframe.actions.PNGExportAction4Chart; |
||||
import com.fr.design.mainframe.form.FormECCompositeProvider; |
||||
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; |
||||
import com.fr.design.menu.ShortCut; |
||||
import com.fr.design.menu.ToolBarDef; |
||||
import com.fr.file.FILE; |
||||
import com.fr.general.Inter; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONException; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
import java.awt.datatransfer.StringSelection; |
||||
|
||||
/** |
||||
* 图表crt文件 |
||||
* <p/> |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-13 |
||||
* Time: 下午2:28 |
||||
*/ |
||||
public class JChart extends JTemplate<ChartBook, ChartUndoState> { |
||||
public static final String XML_TAG = "JChart"; |
||||
private static final String CHART_CARD = "FORM"; |
||||
private static final String ELEMENTCASE_CARD = "ELEMENTCASE"; |
||||
|
||||
private static final String[] CARDNAME = new String[]{CHART_CARD, ELEMENTCASE_CARD}; |
||||
private static final int TOOLBARPANEDIMHEIGHT_FORM = 60; |
||||
//图表设计器
|
||||
ChartDesigner chartDesigner; |
||||
|
||||
//中间编辑区域, carllayout布局
|
||||
private JPanel tabCenterPane; |
||||
private CardLayout cardLayout; |
||||
//当前编辑的组件对象
|
||||
private JComponent editingComponent; |
||||
private FormECCompositeProvider reportComposite; |
||||
|
||||
public JChart() { |
||||
super(new ChartBook(), "Chart"); |
||||
} |
||||
|
||||
public JChart(ChartBook chartFile, FILE file) { |
||||
super(chartFile, file); |
||||
} |
||||
|
||||
@Override |
||||
protected JPanel createCenterPane() { |
||||
tabCenterPane = FRGUIPaneFactory.createCardLayout_S_Pane(); |
||||
JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
centerPane.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 0, new Color(85, 85, 85))); |
||||
chartDesigner = new ChartDesigner(this.getTarget()); |
||||
ChartArea area = new ChartArea(chartDesigner); |
||||
centerPane.add(area, BorderLayout.CENTER); |
||||
tabCenterPane.add(centerPane, CHART_CARD, 0); |
||||
chartDesigner.addTargetModifiedListener(new TargetModifiedListener() { |
||||
public void targetModified(TargetModifiedEvent e) { |
||||
JChart.this.fireTargetModified();// 调用保存*, 调用刷新界面, 刷新工具栏按钮
|
||||
} |
||||
}); |
||||
|
||||
this.add(tabCenterPane, BorderLayout.CENTER); |
||||
return tabCenterPane; |
||||
} |
||||
|
||||
/** |
||||
* 移除选择 |
||||
*/ |
||||
public void removeTemplateSelection() { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 刷新容器 |
||||
*/ |
||||
public void refreshContainer() { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 移除参数面板选择 |
||||
*/ |
||||
public void removeParameterPaneSelection() { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 创建设计模式 |
||||
* |
||||
* @return 返回模式 |
||||
*/ |
||||
protected DesignModelAdapter<ChartBook, ?> createDesignModel() { |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 创建预览得菜单 |
||||
* |
||||
* @return 菜单 |
||||
*/ |
||||
public UIMenuItem[] createMenuItem4Preview() { |
||||
return new UIMenuItem[0]; |
||||
} |
||||
|
||||
/** |
||||
* 创建撤销状态 |
||||
* |
||||
* @return 状态 |
||||
*/ |
||||
protected ChartUndoState createUndoState() { |
||||
return new ChartUndoState(this,chartDesigner.getArea()); |
||||
} |
||||
|
||||
/** |
||||
* 应用撤销状态 |
||||
* |
||||
* @param chartUndoState 撤销状态 |
||||
*/ |
||||
protected void applyUndoState(ChartUndoState chartUndoState) { |
||||
try { |
||||
this.setTarget((ChartBook)chartUndoState.getChartBook().clone()); |
||||
chartDesigner.setTarget(this.getTarget()); |
||||
chartDesigner.populate(); |
||||
}catch (CloneNotSupportedException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 后缀 |
||||
* |
||||
* @return 后缀 |
||||
*/ |
||||
public String suffix() { |
||||
return ".crt"; |
||||
} |
||||
|
||||
/** |
||||
* 复制 |
||||
*/ |
||||
public void copy() { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 黏贴 |
||||
* |
||||
* @return 是否鸟贴成功 |
||||
*/ |
||||
public boolean paste() { |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 是否剪切 |
||||
* |
||||
* @return 剪切成功 |
||||
*/ |
||||
public boolean cut() { |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 创建权限编辑面板 |
||||
* |
||||
* @return 面板 |
||||
*/ |
||||
public AuthorityEditPane createAuthorityEditPane() { |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 工具栏 |
||||
* |
||||
* @return 工具栏 |
||||
*/ |
||||
public ToolBarMenuDockPlus getToolBarMenuDockPlus() { |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 东上面板 |
||||
* |
||||
* @return 面板 |
||||
*/ |
||||
public JPanel getEastUpPane() { |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 东下面板 |
||||
* |
||||
* @return 面板 |
||||
*/ |
||||
public JPanel getEastDownPane() { |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 工具栏菜单 |
||||
* |
||||
* @return 菜单 |
||||
*/ |
||||
public ToolBarDef[] toolbars4Target() { |
||||
return new ToolBarDef[0]; |
||||
} |
||||
|
||||
/** |
||||
* 表单面板 |
||||
* |
||||
* @return 面板 |
||||
*/ |
||||
public JPanel[] toolbarPanes4Form() { |
||||
return new JPanel[0]; |
||||
} |
||||
|
||||
/** |
||||
* 模版菜单 |
||||
* |
||||
* @return 模版菜单 |
||||
*/ |
||||
public ShortCut[] shortcut4TemplateMenu() { |
||||
return new ShortCut[0]; |
||||
} |
||||
|
||||
/** |
||||
* 权限编辑菜单 |
||||
* |
||||
* @return 菜单 |
||||
*/ |
||||
public ShortCut[] shortCuts4Authority() { |
||||
return new ShortCut[0]; |
||||
} |
||||
|
||||
/** |
||||
* 工具条表单 |
||||
* |
||||
* @return 表单 |
||||
*/ |
||||
public JComponent[] toolBarButton4Form() { |
||||
return new JComponent[0]; |
||||
} |
||||
|
||||
/** |
||||
* 权限编辑工具栏,但是图表设计器里面用于正常工具栏不是全县编辑 |
||||
* |
||||
* @return 工具条 |
||||
*/ |
||||
public JComponent toolBar4Authority() { |
||||
return chartDesigner.getChartToolBarPane(); |
||||
} |
||||
|
||||
/** |
||||
* 工具条高度 |
||||
* |
||||
* @return 工具条高度 |
||||
*/ |
||||
public int getToolBarHeight() { |
||||
return 0; |
||||
} |
||||
|
||||
/** |
||||
* 是否是报表 |
||||
* |
||||
* @return 不是 |
||||
*/ |
||||
public boolean isJWorkBook() { |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 是否是图表 |
||||
* |
||||
* @return 是则返回true |
||||
*/ |
||||
public boolean isChartBook() { |
||||
return true; |
||||
} |
||||
|
||||
/** |
||||
* 设置权限编辑模式 |
||||
* |
||||
* @param isUpMode 没有权限编辑 |
||||
*/ |
||||
public void setAuthorityMode(boolean isUpMode) { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 刷新工具区域 |
||||
*/ |
||||
public void refreshToolArea() { |
||||
DesignerContext.getDesignerFrame().resetToolkitByPlus(JChart.this); |
||||
chartDesigner.populate(); |
||||
ChartDesignerPropertyPane.getInstance().populateChartPropertyPane(getTarget().getChartCollection(), chartDesigner); |
||||
EastRegionContainerPane.getInstance().replaceUpPane(ChartDesignerPropertyPane.getInstance()); |
||||
} |
||||
|
||||
/** |
||||
* 导出菜单的子菜单 ,目前用于图表设计器 |
||||
* |
||||
* @return 子菜单 |
||||
*/ |
||||
public ShortCut[] shortcut4ExportMenu() { |
||||
return new ShortCut[]{new PNGExportAction4Chart(this), new ExcelExportAction4Chart(this), new PDFExportAction4Chart(this)}; |
||||
} |
||||
|
||||
public Icon getIcon() { |
||||
return BaseUtils.readIcon("/com/fr/design/images/chart.png"); |
||||
} |
||||
|
||||
public ChartDesigner getChartDesigner(){ |
||||
return chartDesigner; |
||||
} |
||||
|
||||
/** |
||||
* 复制JS代码 |
||||
*/ |
||||
public void copyJS(){ |
||||
JSONObject jsonObject =this.getTarget().createExportConfig(); |
||||
String jsonString = StringUtils.EMPTY; |
||||
if(jsonObject != null){ |
||||
try{ |
||||
if(jsonObject.has("charts")){ |
||||
JSONArray charts = jsonObject.getJSONArray("charts"); |
||||
jsonString = charts.toString(2); |
||||
}else{ |
||||
jsonString = jsonObject.toString(2); |
||||
} |
||||
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Chart-CopyJS_Message"), Inter.getLocText("FR-Chart-Action_Copy")+"JS", JOptionPane.INFORMATION_MESSAGE); |
||||
}catch (JSONException ex){ |
||||
FRContext.getLogger().error(ex.getMessage()); |
||||
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Chart-CopyJS_Failed")+"!", Inter.getLocText("Error"), JOptionPane.ERROR_MESSAGE); |
||||
} |
||||
}else{ |
||||
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Chart-CopyJS_Failed")+"!", Inter.getLocText("Error"), JOptionPane.ERROR_MESSAGE); |
||||
} |
||||
StringSelection stringSelection = new StringSelection(jsonString); |
||||
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null); |
||||
}; |
||||
|
||||
/** |
||||
* 系列风格改动 |
||||
*/ |
||||
public void styleChange(){ |
||||
chartDesigner.clearToolBarStyleChoose(); |
||||
} |
||||
|
||||
protected FILEChooserPane getFILEChooserPane(boolean isShowLoc){ |
||||
return new FILEChooserPane4Chart(true, isShowLoc); |
||||
} |
||||
|
||||
} |
@ -1,132 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe.actions; |
||||
|
||||
import com.fr.base.FRContext; |
||||
import com.fr.design.gui.iprogressbar.FRProgressBar; |
||||
import com.fr.form.ui.ChartBook; |
||||
import com.fr.design.mainframe.DesignerContext; |
||||
import com.fr.design.mainframe.DesignerFrame; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.design.mainframe.exporter.Exporter4Chart; |
||||
import com.fr.file.FILE; |
||||
import com.fr.file.FILEChooserPane; |
||||
import com.fr.file.filter.ChooseFileFilter; |
||||
import com.fr.general.FRLogger; |
||||
import com.fr.general.Inter; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.event.ActionEvent; |
||||
import java.io.FileOutputStream; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-15 |
||||
* Time: 上午9:48 |
||||
*/ |
||||
public abstract class AbstractExportAction4JChart extends JChartAction { |
||||
protected AbstractExportAction4JChart(JChart chart){ |
||||
super(chart); |
||||
} |
||||
|
||||
private FRProgressBar progressbar; |
||||
|
||||
protected ChartBook getChartBook(){ |
||||
return this.getEditingComponent().getTarget(); |
||||
} |
||||
|
||||
/** |
||||
* 执行方法 |
||||
* @param e 事件 |
||||
*/ |
||||
public void actionPerformed(ActionEvent e) { |
||||
JChart chart = this.getEditingComponent(); |
||||
FILE editingFILE = chart.getEditingFILE(); |
||||
DesignerFrame designerFrame = DesignerContext.getDesignerFrame(); |
||||
|
||||
// 弹出参数
|
||||
final java.util.Map parameterMap = new java.util.HashMap(); |
||||
final ChartBook chartBook = getChartBook(); |
||||
|
||||
// Choose a file name....
|
||||
FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(false, true); |
||||
fileChooserPane.setFILEFilter(this.getChooseFileFilter()); |
||||
|
||||
// 打开文件后输出文件名修改,eg:w.cpt.doc / w.svg.doc,去掉中间的后缀名~~ w.doc
|
||||
String filenName = editingFILE.getName(); |
||||
if (filenName.indexOf('.') != -1) { |
||||
filenName = filenName.substring(0, editingFILE.getName().lastIndexOf('.')); |
||||
} |
||||
fileChooserPane.setFileNameTextField(filenName, "." + this.getDefaultExtension()); |
||||
int saveValue = fileChooserPane.showSaveDialog(designerFrame, "." + this.getDefaultExtension()); |
||||
if (saveValue == FILEChooserPane.CANCEL_OPTION || saveValue == FILEChooserPane.JOPTIONPANE_CANCEL_OPTION) { |
||||
fileChooserPane = null; |
||||
return; |
||||
} else if (saveValue == FILEChooserPane.JOPTIONPANE_OK_OPTION || saveValue == FILEChooserPane.OK_OPTION) { |
||||
FILE file = fileChooserPane.getSelectedFILE(); |
||||
try { |
||||
file.mkfile(); |
||||
} catch (Exception e1) { |
||||
FRLogger.getLogger().error("Error In Make New File"); |
||||
} |
||||
fileChooserPane = null; |
||||
FRContext.getLogger().info("\"" + file.getName() + "\"" + Inter.getLocText("Prepare_Export") + "!"); |
||||
|
||||
(progressbar = new FRProgressBar(createExportWork(file, chartBook), designerFrame, |
||||
Inter.getLocText("Exporting"), "", 0, 100)).start(); |
||||
} |
||||
|
||||
} |
||||
|
||||
private SwingWorker createExportWork(FILE file, final ChartBook chartBook) { |
||||
final String filePath = file.getPath(); |
||||
final String fileGetName = file.getName(); |
||||
|
||||
SwingWorker exportWorker = new SwingWorker<Void, Void>() { |
||||
protected Void doInBackground() throws Exception { |
||||
Thread.sleep(100); //bug 10516
|
||||
try { |
||||
final FileOutputStream fileOutputStream = new FileOutputStream(filePath); |
||||
|
||||
this.setProgress(10); |
||||
dealExporter(fileOutputStream,chartBook); |
||||
this.setProgress(80); |
||||
fileOutputStream.close(); |
||||
this.setProgress(100); |
||||
|
||||
FRContext.getLogger().info("\"" + fileGetName + "\"" + Inter.getLocText("Finish_Export") + "!"); |
||||
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), |
||||
Inter.getLocText("Exported_successfully") + "\n" + filePath); |
||||
} catch (Exception exp) { |
||||
this.setProgress(100); |
||||
FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); |
||||
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Export_failed") + "\n" + filePath); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public void done() { |
||||
progressbar.close(); |
||||
} |
||||
}; |
||||
return exportWorker; |
||||
} |
||||
|
||||
private void dealExporter(FileOutputStream fileOutputStream, final ChartBook chartBook) throws Exception { |
||||
final Exporter4Chart exporter = AbstractExportAction4JChart.this.getExporter(); |
||||
exporter.export(fileOutputStream,this.getEditingComponent()); |
||||
} |
||||
|
||||
|
||||
|
||||
protected abstract ChooseFileFilter getChooseFileFilter(); |
||||
|
||||
protected abstract String getDefaultExtension(); |
||||
|
||||
protected abstract Exporter4Chart getExporter(); |
||||
|
||||
} |
@ -1,68 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe.actions; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.base.ExcelUtils; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.design.mainframe.exporter.ExcelExporter4Chart; |
||||
import com.fr.design.mainframe.exporter.Exporter4Chart; |
||||
import com.fr.design.menu.MenuKeySet; |
||||
import com.fr.file.filter.ChooseFileFilter; |
||||
import com.fr.general.Inter; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.event.KeyEvent; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-15 |
||||
* Time: 上午9:52 |
||||
*/ |
||||
public class ExcelExportAction4Chart extends AbstractExportAction4JChart { |
||||
|
||||
private MenuKeySet excel= new MenuKeySet() { |
||||
@Override |
||||
public char getMnemonic() { |
||||
return 'E'; |
||||
} |
||||
|
||||
@Override |
||||
public String getMenuName() { |
||||
return Inter.getLocText("FR-Chart-Format_Excel"); |
||||
} |
||||
|
||||
@Override |
||||
public KeyStroke getKeyStroke() { |
||||
return KeyStroke.getKeyStroke(KeyEvent.VK_E, KeyEvent.CTRL_MASK); |
||||
} |
||||
}; |
||||
|
||||
public ExcelExportAction4Chart(JChart chart) { |
||||
super(chart); |
||||
this.setMenuKeySet(excel); |
||||
this.setName(getMenuKeySet().getMenuKeySetName()); |
||||
this.setMnemonic(getMenuKeySet().getMnemonic()); |
||||
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/excel.png")); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected ChooseFileFilter getChooseFileFilter() { |
||||
return new ChooseFileFilter(new String[]{"xls", "xlsx"}, Inter.getLocText("Export-Excel")); |
||||
} |
||||
|
||||
@Override |
||||
protected String getDefaultExtension() { |
||||
return ExcelUtils.checkThirdJarSupportPOI() ? "xlsx" : "xls"; |
||||
} |
||||
|
||||
@Override |
||||
protected Exporter4Chart getExporter() { |
||||
return new ExcelExporter4Chart(); |
||||
} |
||||
} |
@ -1,21 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe.actions; |
||||
|
||||
import com.fr.design.actions.JTemplateAction; |
||||
import com.fr.design.mainframe.JChart; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-15 |
||||
* Time: 上午9:47 |
||||
*/ |
||||
public abstract class JChartAction extends JTemplateAction<JChart> { |
||||
public JChartAction(JChart jChart) { |
||||
super(jChart); |
||||
} |
||||
} |
@ -1,61 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe.actions; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.design.actions.UpdateAction; |
||||
import com.fr.design.mainframe.DesignerContext; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.design.menu.MenuKeySet; |
||||
import com.fr.general.Inter; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.InputEvent; |
||||
import java.awt.event.KeyEvent; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-13 |
||||
* Time: 下午3:22 |
||||
*/ |
||||
public class NewChartAction extends UpdateAction{ |
||||
|
||||
public NewChartAction(){ |
||||
this.setMenuKeySet(NEW_CHART); |
||||
this.setName(getMenuKeySet().getMenuKeySetName()); |
||||
this.setMnemonic(getMenuKeySet().getMnemonic()); |
||||
this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/newchart_normal.png")); |
||||
this.setAccelerator(getMenuKeySet().getKeyStroke()); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 执行事件 |
||||
* @param e 事件 |
||||
*/ |
||||
public void actionPerformed(ActionEvent e) { |
||||
DesignerContext.getDesignerFrame().addAndActivateJTemplate(new JChart()); |
||||
} |
||||
|
||||
public static final MenuKeySet NEW_CHART = new MenuKeySet() { |
||||
@Override |
||||
public char getMnemonic() { |
||||
return 'F'; |
||||
} |
||||
|
||||
@Override |
||||
public String getMenuName() { |
||||
return Inter.getLocText("M-New_ChartBook"); |
||||
} |
||||
|
||||
@Override |
||||
public KeyStroke getKeyStroke() { |
||||
return KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK); |
||||
} |
||||
}; |
||||
} |
@ -1,65 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe.actions; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.design.mainframe.exporter.Exporter4Chart; |
||||
import com.fr.design.mainframe.exporter.PdfExporter4Chart; |
||||
import com.fr.design.menu.MenuKeySet; |
||||
import com.fr.file.filter.ChooseFileFilter; |
||||
import com.fr.general.Inter; |
||||
|
||||
import javax.swing.*; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-15 |
||||
* Time: 上午10:16 |
||||
*/ |
||||
public class PDFExportAction4Chart extends AbstractExportAction4JChart { |
||||
|
||||
private MenuKeySet pdf = new MenuKeySet() { |
||||
@Override |
||||
public char getMnemonic() { |
||||
return 'P'; |
||||
} |
||||
|
||||
@Override |
||||
public String getMenuName() { |
||||
return Inter.getLocText("FR-Chart-Format_PDF"); |
||||
} |
||||
|
||||
@Override |
||||
public KeyStroke getKeyStroke() { |
||||
return null; |
||||
} |
||||
}; |
||||
|
||||
public PDFExportAction4Chart(JChart chart) { |
||||
super(chart); |
||||
this.setMenuKeySet(pdf); |
||||
this.setName(getMenuKeySet().getMenuKeySetName()); |
||||
this.setMnemonic(getMenuKeySet().getMnemonic()); |
||||
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/pdf.png")); |
||||
} |
||||
|
||||
@Override |
||||
protected ChooseFileFilter getChooseFileFilter() { |
||||
return new ChooseFileFilter(new String[]{"pdf"}, Inter.getLocText("Export-PDF")); |
||||
} |
||||
|
||||
@Override |
||||
protected String getDefaultExtension() { |
||||
return "pdf"; |
||||
} |
||||
|
||||
@Override |
||||
protected Exporter4Chart getExporter() { |
||||
return new PdfExporter4Chart(); |
||||
} |
||||
} |
@ -1,66 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe.actions; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.design.mainframe.exporter.Exporter4Chart; |
||||
import com.fr.design.mainframe.exporter.ImageExporter4Chart; |
||||
import com.fr.design.menu.MenuKeySet; |
||||
import com.fr.file.filter.ChooseFileFilter; |
||||
import com.fr.general.Inter; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.event.KeyEvent; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-15 |
||||
* Time: 上午10:18 |
||||
*/ |
||||
public class PNGExportAction4Chart extends AbstractExportAction4JChart { |
||||
|
||||
private MenuKeySet menuSet = new MenuKeySet() { |
||||
@Override |
||||
public char getMnemonic() { |
||||
return 'M'; |
||||
} |
||||
|
||||
@Override |
||||
public String getMenuName() { |
||||
return Inter.getLocText("FR-Chart-Format_Image"); |
||||
} |
||||
|
||||
@Override |
||||
public KeyStroke getKeyStroke() { |
||||
return KeyStroke.getKeyStroke(KeyEvent.VK_M, KeyEvent.CTRL_MASK); |
||||
} |
||||
}; |
||||
|
||||
public PNGExportAction4Chart(JChart chart) { |
||||
super(chart); |
||||
this.setMenuKeySet(menuSet); |
||||
this.setName(getMenuKeySet().getMenuKeySetName()); |
||||
this.setMnemonic(getMenuKeySet().getMnemonic()); |
||||
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/exportimg.png")); |
||||
} |
||||
|
||||
@Override |
||||
protected ChooseFileFilter getChooseFileFilter() { |
||||
return new ChooseFileFilter(new String[]{"png"}, Inter.getLocText("Image")); |
||||
} |
||||
|
||||
@Override |
||||
protected String getDefaultExtension() { |
||||
return "png"; |
||||
} |
||||
|
||||
@Override |
||||
protected Exporter4Chart getExporter() { |
||||
return new ImageExporter4Chart(); |
||||
} |
||||
} |
@ -1,94 +0,0 @@
|
||||
package com.fr.design.mainframe.exporter; |
||||
|
||||
import com.fr.base.ExcelUtils; |
||||
import com.fr.design.mainframe.ChartDesigner; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.general.FRLogger; |
||||
import com.fr.general.IOUtils; |
||||
import com.fr.stable.CoreGraphHelper; |
||||
import com.fr.third.v2.org.apache.poi.hssf.usermodel.HSSFClientAnchor; |
||||
import com.fr.third.v2.org.apache.poi.hssf.usermodel.HSSFWorkbook; |
||||
import com.fr.third.v2.org.apache.poi.ss.usermodel.ClientAnchor; |
||||
import com.fr.third.v2.org.apache.poi.ss.usermodel.Drawing; |
||||
import com.fr.third.v2.org.apache.poi.ss.usermodel.Sheet; |
||||
import com.fr.third.v2.org.apache.poi.ss.usermodel.Workbook; |
||||
import com.fr.third.v2.org.apache.poi.xssf.usermodel.XSSFClientAnchor; |
||||
import com.fr.third.v2.org.apache.poi.xssf.usermodel.XSSFWorkbook; |
||||
import java.awt.*; |
||||
import java.awt.image.BufferedImage; |
||||
import java.io.ByteArrayOutputStream; |
||||
import java.io.IOException; |
||||
import java.io.OutputStream; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-22 |
||||
* Time: 上午10:47 |
||||
*/ |
||||
public class ExcelExporter4Chart extends ImageExporter4Chart { |
||||
private static final int PICTURE_TYPE_PNG = 6 ; |
||||
private static final int DEFAULT_COLUMN_SPAN = 12; |
||||
private static final int DEFAULT_ROW_SPAN = 26; |
||||
private Workbook workbook; |
||||
private ClientAnchor anchor; |
||||
|
||||
|
||||
|
||||
/** |
||||
* 导出 |
||||
* |
||||
* @param out 输出流 |
||||
* @param chart 图表文件 |
||||
* @throws Exception 异常 |
||||
*/ |
||||
public void export(OutputStream out, JChart chart) throws Exception { |
||||
try { |
||||
ChartDesigner designer = chart.getChartDesigner(); |
||||
int imageWidth = designer.getArea().getCustomWidth(); |
||||
int imageHeight = designer.getArea().getCustomHeight(); |
||||
BufferedImage image = CoreGraphHelper.createBufferedImage(imageWidth, (int) imageHeight, BufferedImage.TYPE_INT_RGB); |
||||
Graphics2D g2d = image.createGraphics(); |
||||
paintGlyph(g2d,imageWidth,imageHeight,designer); |
||||
g2d.dispose(); |
||||
if (checkExcelExportVersion()) { |
||||
workbook = new XSSFWorkbook(); |
||||
}else{ |
||||
workbook = new HSSFWorkbook(); |
||||
} |
||||
Sheet sheet = workbook.createSheet(); |
||||
if(checkExcelExportVersion()){ |
||||
anchor = new XSSFClientAnchor(0,0,0,0,1,1,DEFAULT_COLUMN_SPAN,DEFAULT_ROW_SPAN); |
||||
}else{ |
||||
anchor = new HSSFClientAnchor(0,0,0,0,(short)1,1,(short)DEFAULT_COLUMN_SPAN,DEFAULT_ROW_SPAN); |
||||
} |
||||
Drawing patriarch = sheet.createDrawingPatriarch(); |
||||
patriarch.createPicture(anchor,loadPicture(image)); |
||||
workbook.write(out); |
||||
out.flush(); |
||||
}catch (Exception e){ |
||||
FRLogger.getLogger().error(e.getMessage()); |
||||
} |
||||
} |
||||
|
||||
private boolean checkExcelExportVersion() { |
||||
return ExcelUtils.checkThirdJarSupportPOI(); |
||||
} |
||||
// 加载图片.
|
||||
private int loadPicture(BufferedImage bufferedImage)throws IOException { |
||||
ByteArrayOutputStream bos = null; |
||||
try { |
||||
bos = new ByteArrayOutputStream(); |
||||
IOUtils.writeImage(bufferedImage, "png", bos); |
||||
//引用这个参数是jdk1.5的版本 XSSFWorkbook.PICTURE_TYPE_PNG, 在1.4下无法编译, 所有手动去掉这个参数.
|
||||
return workbook.addPicture(bos.toByteArray(), PICTURE_TYPE_PNG); |
||||
} finally { |
||||
if (bos != null) { |
||||
bos.flush(); |
||||
bos.close(); |
||||
} |
||||
bufferedImage.flush(); |
||||
} |
||||
} |
||||
} |
@ -1,25 +0,0 @@
|
||||
package com.fr.design.mainframe.exporter; |
||||
import com.fr.design.mainframe.JChart; |
||||
|
||||
import java.io.OutputStream; |
||||
|
||||
/** |
||||
* 图表设计器crt文件的导出成其他类型文件的接口 |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-21 |
||||
* Time: 下午7:14 |
||||
*/ |
||||
public interface Exporter4Chart { |
||||
|
||||
/** |
||||
* 将结果crt导出成目标文件 |
||||
* |
||||
* @param out 输出流 |
||||
* @param chart chart文件 |
||||
* @throws Exception 导出失败则抛出此异常 |
||||
*/ |
||||
public void export(OutputStream out, JChart chart) throws Exception; |
||||
|
||||
} |
@ -1,89 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.mainframe.exporter; |
||||
|
||||
import com.fr.base.chart.BaseChartGlyph; |
||||
import com.fr.base.chart.chartdata.BaseTableDefinition; |
||||
import com.fr.base.chart.chartdata.ChartData; |
||||
import com.fr.base.chart.chartdata.TopDefinitionProvider; |
||||
import com.fr.chart.chartattr.Chart; |
||||
import com.fr.chart.chartattr.ChartCollection; |
||||
import com.fr.chart.chartglyph.ChartGlyph; |
||||
import com.fr.data.TableDataSource; |
||||
import com.fr.design.mainframe.ChartDesigner; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.script.Calculator; |
||||
import com.fr.stable.Constants; |
||||
import com.fr.stable.CoreGraphHelper; |
||||
|
||||
import javax.imageio.ImageIO; |
||||
import java.awt.*; |
||||
import java.awt.image.BufferedImage; |
||||
import java.io.OutputStream; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-15 |
||||
* Time: 上午10:04 |
||||
*/ |
||||
public class ImageExporter4Chart implements Exporter4Chart{ |
||||
private int resolution = Constants.DEFAULT_WEBWRITE_AND_SCREEN_RESOLUTION; |
||||
protected Calculator calculator; |
||||
|
||||
|
||||
public ImageExporter4Chart() { |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 导出 |
||||
* |
||||
* @param out 输出流 |
||||
* @param chart 图表文件 |
||||
* @throws Exception 异常 |
||||
*/ |
||||
public void export(OutputStream out, JChart chart) throws Exception { |
||||
ChartDesigner designer = chart.getChartDesigner(); |
||||
int imageWidth = designer.getArea().getCustomWidth(); |
||||
int imageHeight = designer.getArea().getCustomHeight(); |
||||
BufferedImage image = CoreGraphHelper.createBufferedImage(imageWidth, (int) imageHeight, BufferedImage.TYPE_INT_RGB); |
||||
Graphics2D g2d = image.createGraphics(); |
||||
paintGlyph(g2d,imageWidth,imageHeight,designer); |
||||
ImageIO.write(image, "png", out); |
||||
} |
||||
|
||||
protected void paintGlyph(Graphics2D g2d,int imageWidth,int imageHeight,ChartDesigner designer){ |
||||
if (imageWidth == 0 || imageHeight == 0) { |
||||
return; |
||||
} |
||||
this.calculator = Calculator.createCalculator(); |
||||
this.calculator.setAttribute(TableDataSource.class, null); |
||||
g2d.setColor(Color.white); |
||||
g2d.fillRect(0, 0, imageWidth,imageHeight); |
||||
ChartCollection chartCollection = (ChartCollection) designer.getTarget().getChartCollection(); |
||||
Chart editingChart = chartCollection.getSelectedChart(); |
||||
|
||||
TopDefinitionProvider topDefinition = editingChart.getFilterDefinition(); |
||||
ChartData chartData4Glyph = null; |
||||
if (topDefinition instanceof BaseTableDefinition) { |
||||
chartData4Glyph = ((BaseTableDefinition) topDefinition).calcu4ChartData(calculator, editingChart.getDataProcessor()); |
||||
} |
||||
|
||||
if (chartData4Glyph == null) { |
||||
chartData4Glyph = editingChart.defaultChartData(); |
||||
} |
||||
|
||||
BaseChartGlyph chartGlyph = null; |
||||
if (editingChart != null && editingChart.getPlot() != null) { |
||||
chartGlyph = editingChart.createGlyph(chartData4Glyph); |
||||
} |
||||
if (chartGlyph instanceof ChartGlyph) { |
||||
Image glyphImage = ((ChartGlyph) chartGlyph).toImage(imageWidth, imageHeight, resolution); |
||||
g2d.drawImage(glyphImage, 0, 0, null); |
||||
} |
||||
} |
||||
} |
@ -1,382 +0,0 @@
|
||||
package com.fr.design.mainframe.exporter; |
||||
|
||||
import com.fr.base.FRContext; |
||||
import com.fr.design.mainframe.ChartDesigner; |
||||
import com.fr.design.mainframe.JChart; |
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.general.FRLogger; |
||||
import com.fr.stable.OperatingSystem; |
||||
import com.fr.stable.StableUtils; |
||||
import com.fr.third.com.lowagie.text.Document; |
||||
import com.fr.third.com.lowagie.text.ExceptionConverter; |
||||
import com.fr.third.com.lowagie.text.Rectangle; |
||||
import com.fr.third.com.lowagie.text.pdf.*; |
||||
|
||||
import java.awt.*; |
||||
import java.io.ByteArrayOutputStream; |
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
import java.io.OutputStream; |
||||
import java.util.HashMap; |
||||
import java.util.Locale; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-22 |
||||
* Time: 上午10:20 |
||||
*/ |
||||
public class PdfExporter4Chart extends ImageExporter4Chart { |
||||
protected static MyFontMapper fontMapper = null; |
||||
|
||||
|
||||
/** |
||||
* 将结果crt导出成目标文件 |
||||
* |
||||
* @param out 输出流 |
||||
* @param chart chart文件 |
||||
* @throws Exception 导出失败则抛出此异常 |
||||
*/ |
||||
public void export(OutputStream out, JChart chart) throws Exception { |
||||
ChartDesigner designer = chart.getChartDesigner(); |
||||
int imageWidth = designer.getArea().getCustomWidth(); |
||||
int imageHeight = designer.getArea().getCustomHeight(); |
||||
Document document = null; |
||||
PdfWriter writer = null; |
||||
ByteArrayOutputStream bo = new ByteArrayOutputStream(); |
||||
|
||||
if (document == null) { |
||||
document = new Document(new Rectangle(imageWidth, imageHeight)); |
||||
writer = PdfWriter.getInstance(document, bo); |
||||
document.open(); |
||||
} |
||||
//将chart画到PDF上去
|
||||
PdfContentByte cb = writer.getDirectContent(); |
||||
Graphics2D g2d = cb.createGraphics(imageWidth, imageHeight, prepareFontMapper()); |
||||
paintGlyph(g2d, imageWidth, imageHeight, designer); |
||||
g2d.dispose(); |
||||
if (document != null) { |
||||
document.close(); |
||||
} |
||||
|
||||
try { |
||||
out.write(bo.toByteArray()); |
||||
out.flush(); |
||||
out.close(); |
||||
} catch (IOException e) { |
||||
FRLogger.getLogger().error(e.getMessage()); |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
private static void insertDirectory4Linux() { |
||||
/* |
||||
* alex:在222这台Redhat的机器上测试,发现把从windows拷来的simsun.ttc只有放在usr/share/fonts/default/Type1里面才可以用起来 |
||||
* 如果是放在usr/share/fonts目录或是${env}/resources/fonts目录下面,虽然可以读到,但是awtToPdf之后返回出去却依旧无法起作用 |
||||
* 中文字依然挤在一起 |
||||
* |
||||
* 觉得实在很诡异,可能必须放在系统字体的文件夹下面才行吧 |
||||
* |
||||
* PS:这是在用Graphics drawString的时候遇到的问题 |
||||
*/ |
||||
//Linux
|
||||
InsertDirectory(fontMapper, new File("/usr/X11R6/lib/X11/fonts")); |
||||
InsertDirectory(fontMapper, new File("/usr/share/fonts")); |
||||
String path = StableUtils.pathJoin(new String[]{FRContext.getCurrentEnv().getPath(), "fonts"}); |
||||
//再去web-inf/fonts里面找一下, 省去客户四处找jdk安装路径的麻烦
|
||||
InsertDirectory(fontMapper, new File(path)); |
||||
|
||||
//Solaris
|
||||
InsertDirectory(fontMapper, new File("/usr/X/lib/X11/fonts/TrueType")); |
||||
InsertDirectory(fontMapper, new File("/usr/openwin/lib/X11/fonts/TrueType")); |
||||
} |
||||
|
||||
private static void insertDirectory4Windows() { |
||||
String libraryPath = System.getProperty("java.library.path"); |
||||
String[] libraryPathArray = StableUtils.splitString(libraryPath, ";"); |
||||
for (int i = 0; i < libraryPathArray.length; i++) { |
||||
File libraryFile = new File(libraryPathArray[i]); |
||||
InsertDirectory(fontMapper, new File(libraryFile, "Fonts")); |
||||
} |
||||
|
||||
InsertDirectory(fontMapper, new File("C:\\WINNT\\Fonts")); |
||||
InsertDirectory(fontMapper, new File("C:\\WINDOWS\\Fonts")); |
||||
} |
||||
|
||||
//peter:循环所有的目录,遍历所有的FontMapper.
|
||||
protected static void InsertDirectory(MyFontMapper fontMapper, File dir) { |
||||
if (dir == null || !dir.exists() || !dir.isDirectory()) { |
||||
return; |
||||
} |
||||
|
||||
fontMapper.insertDirectory(dir.getAbsolutePath()); |
||||
|
||||
File[] listFiles = dir.listFiles(); |
||||
for (int i = 0; i < listFiles.length; i++) { |
||||
InsertDirectory(fontMapper, listFiles[i]); |
||||
} |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Prepares FontMapper. |
||||
*/ |
||||
protected static MyFontMapper prepareFontMapper() { |
||||
if (fontMapper != null) { |
||||
return fontMapper; |
||||
} |
||||
|
||||
fontMapper = new MyFontMapper(); |
||||
try { |
||||
//然后加载系统Font字体.
|
||||
if (OperatingSystem.isWindows()) { |
||||
insertDirectory4Windows(); |
||||
|
||||
} else { |
||||
insertDirectory4Linux(); |
||||
|
||||
} |
||||
|
||||
String javaHomeProp = System.getProperty("java.home"); |
||||
if (javaHomeProp != null) { |
||||
File javaFontFile = new File(StableUtils.pathJoin(new String[]{ |
||||
javaHomeProp, "lib", "fonts" |
||||
})); |
||||
if (javaFontFile.exists() && javaFontFile.isDirectory()) { |
||||
InsertDirectory(fontMapper, javaFontFile); |
||||
} |
||||
} |
||||
|
||||
if (FRContext.getLocale() == Locale.CHINA || FRContext.getLocale() == Locale.CHINESE) { |
||||
MyFontMapper.defaultFont = BaseFont.createFont(MyFontMapper.CHINESE_SIMPLIFIED_FONT, MyFontMapper.CHINESE_SIMPLIFIED_ENCODING_H, BaseFont.NOT_EMBEDDED); |
||||
} else if (FRContext.getLocale() == Locale.TAIWAN || FRContext.getLocale() == Locale.TRADITIONAL_CHINESE) { |
||||
MyFontMapper.defaultFont = BaseFont.createFont(MyFontMapper.CHINESE_TRADITIONAL_FONT_M_SUNG, MyFontMapper.CHINESE_TRADITIONAL_ENCODING_H, BaseFont.NOT_EMBEDDED); |
||||
} else if (FRContext.getLocale() == Locale.JAPAN || FRContext.getLocale() == Locale.JAPANESE) { |
||||
MyFontMapper.defaultFont = BaseFont.createFont(MyFontMapper.JAPANESE_FONT_GO, MyFontMapper.JAPANESE_ENCODING_H, BaseFont.NOT_EMBEDDED); |
||||
} else if (FRContext.getLocale() == Locale.KOREA || FRContext.getLocale() == Locale.KOREAN) { |
||||
MyFontMapper.defaultFont = BaseFont.createFont(MyFontMapper.KOREAN_FONT_GO_THIC, MyFontMapper.KOREAN_ENCODING_H, BaseFont.NOT_EMBEDDED); |
||||
} else { |
||||
//默认也设置一个吧45422 , 不设置默认字体, linux英文环境导不出来
|
||||
MyFontMapper.defaultFont = BaseFont.createFont(MyFontMapper.CHINESE_SIMPLIFIED_FONT, MyFontMapper.CHINESE_SIMPLIFIED_ENCODING_H, BaseFont.NOT_EMBEDDED); |
||||
} |
||||
} catch (Exception e) { |
||||
FRContext.getLogger().error(e.getMessage(), e); |
||||
} |
||||
|
||||
return fontMapper; |
||||
} |
||||
|
||||
public static class MyFontMapper implements FontMapper { |
||||
|
||||
public static final String CHINESE_SIMPLIFIED_FONT = "STSong-Light"; |
||||
public static final String CHINESE_SIMPLIFIED_ENCODING_H = "UniGB-UCS2-H"; |
||||
public static final String CHINESE_SIMPLIFIED_ENCODING_V = "UniGB-UCS2-V"; |
||||
|
||||
public static final String CHINESE_TRADITIONAL_FONT_M_HEI = "MHei-Medium"; |
||||
public static final String CHINESE_TRADITIONAL_FONT_M_SUNG = "MSung-Light"; |
||||
public static final String CHINESE_TRADITIONAL_ENCODING_H = "UniCNS-UCS2-H"; |
||||
public static final String CHINESE_TRADITIONAL_ENCODING_V = "UniCNS-UCS2-V"; |
||||
|
||||
public static final String JAPANESE_FONT_GO = "HeiseiKakuGo-W5"; |
||||
public static final String JAPANESE_FONT_MIN = "HeiseiMin-W3"; |
||||
public static final String JAPANESE_ENCODING_H = "UniJIS-UCS2-H"; |
||||
public static final String JAPANESE_ENCODING_V = "UniJIS-UCS2-V"; |
||||
public static final String JAPANESE_ENCODING_HW_H = "UniJIS-UCS2-HW-H"; |
||||
public static final String JAPANESE_ENCODING_HW_V = "UniJIS-UCS2-HW-V"; |
||||
|
||||
public static final String KOREAN_FONT_GO_THIC = "HYGoThic-Medium"; |
||||
public static final String KOREAN_FONT_S_MYEONG_JO = "HYSMyeongJo-Medium"; |
||||
public static final String KOREAN_ENCODING_H = "UniKS-UCS2-H"; |
||||
public static final String KOREAN_ENCODING_V = "UniKS-UCS2-V"; |
||||
|
||||
public static BaseFont defaultFont; |
||||
private HashMap mapper; |
||||
|
||||
public static class BaseFontParameters { |
||||
|
||||
public String fontName; |
||||
public String encoding; |
||||
public boolean embedded; |
||||
public boolean cached; |
||||
public byte ttfAfm[]; |
||||
public byte pfb[]; |
||||
|
||||
public BaseFontParameters(String fontName) { |
||||
this.fontName = fontName; |
||||
encoding = BaseFont.IDENTITY_H; |
||||
embedded = true; |
||||
cached = true; |
||||
} |
||||
|
||||
/** |
||||
* toString方法 |
||||
* |
||||
* @return 对象说明 |
||||
*/ |
||||
public String toString() { |
||||
return "{fontName:" + fontName + ",encoding:" + encoding + ",embedded:" + embedded + ",cached:" + cached; |
||||
} |
||||
} |
||||
|
||||
public MyFontMapper() { |
||||
mapper = new HashMap(); |
||||
} |
||||
|
||||
/** |
||||
* 转化字体 |
||||
* |
||||
* @param font awt字体 |
||||
* @return pdf字体 |
||||
*/ |
||||
public BaseFont awtToPdf(Font font) { |
||||
try { |
||||
BaseFontParameters p = getBaseFontParameters(font.getFontName()); |
||||
|
||||
/* |
||||
* alex:不明真相 |
||||
* 经测试,Arial粗体在getFontName返回的是Arial Bold,可以在上面的方法中得到对应的p |
||||
* 所以getFontName是有用的 |
||||
* 但是在linux上测试,宋体在getFontName返回的却是Dialog这种逻辑字体,只有getName才返回SimSun |
||||
* 所以还需要getBaseFontParameters一下 |
||||
*/ |
||||
if (p == null) { |
||||
p = getBaseFontParameters(font.getName()); |
||||
} |
||||
|
||||
if (p != null) { |
||||
return BaseFont.createFont(p.fontName, p.encoding, p.embedded, p.cached, p.ttfAfm, p.pfb); |
||||
} else { |
||||
// FRContext.getLogger().info(Inter.getLocText("Utils-Font_Not_Found") + ":" + font.getFontName());
|
||||
|
||||
// alex:未找到合适的字体,如果有默认字体,用之,没有的话,根据Bold & Italic设置字体
|
||||
if (defaultFont != null) { |
||||
return defaultFont; |
||||
} else { |
||||
String fontKey = BaseFont.COURIER; |
||||
if (font.isBold() && font.isItalic()) { |
||||
fontKey = BaseFont.COURIER_BOLDOBLIQUE; |
||||
} else if (font.isBold()) { |
||||
fontKey = BaseFont.COURIER_BOLD; |
||||
} else if (font.isItalic()) { |
||||
fontKey = BaseFont.COURIER_OBLIQUE; |
||||
} |
||||
|
||||
return BaseFont.createFont(fontKey, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); |
||||
} |
||||
} |
||||
} catch (Exception e) { |
||||
FRContext.getLogger().error(e.getMessage(), e); |
||||
throw new ExceptionConverter(e); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 转化字体 |
||||
* |
||||
* @param font pdf字体 |
||||
* @param size 大小 |
||||
* @return 转化后awt字体 |
||||
*/ |
||||
public Font pdfToAwt(BaseFont font, int size) { |
||||
String[][] names = font.getFullFontName(); |
||||
if (names.length == 1) { |
||||
return new Font(names[0][3], 0, size); |
||||
} |
||||
String name10 = null; |
||||
String name3x = null; |
||||
for (int k = 0; k < names.length; ++k) { |
||||
String[] name = names[k]; |
||||
if (ComparatorUtils.equals(name[0], "1") && ComparatorUtils.equals(name[1], "0")) { |
||||
name10 = name[3]; |
||||
} else if (ComparatorUtils.equals(name[2], "1033")) { |
||||
name3x = name[3]; |
||||
break; |
||||
} |
||||
} |
||||
String finalName = name3x; |
||||
if (finalName == null) { |
||||
finalName = name10; |
||||
} |
||||
if (finalName == null) { |
||||
finalName = names[0][3]; |
||||
} |
||||
return new Font(finalName, 0, size); |
||||
} |
||||
|
||||
private BaseFontParameters getBaseFontParameters(String name) { |
||||
return (BaseFontParameters) mapper.get(name); |
||||
} |
||||
|
||||
protected void insertNames(String names[][], String path) { |
||||
String main = null; |
||||
int k = 0; |
||||
do { |
||||
if (k >= names.length) { |
||||
break; |
||||
} |
||||
String[] name = names[k]; |
||||
if (ComparatorUtils.equals(name[2], "1033")) { |
||||
main = name[3]; |
||||
break; |
||||
} |
||||
k++; |
||||
} while (true); |
||||
if (main == null) { |
||||
main = names[0][3]; |
||||
} |
||||
BaseFontParameters p = new BaseFontParameters(path); |
||||
|
||||
// alex:不一样的名字可能对应同样的BaseFontParameters,比如simsun和宋体都对应同样的p
|
||||
mapper.put(main, p); |
||||
for (k = 0; k < names.length; k++) { |
||||
mapper.put(names[k][3], p); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 插入目录里的字体 |
||||
* |
||||
* @param dir 目录 |
||||
* @return 插入数量 |
||||
*/ |
||||
public int insertDirectory(String dir) { |
||||
File file = new File(dir); |
||||
if (!file.exists() || !file.isDirectory()) { |
||||
return 0; |
||||
} |
||||
|
||||
File[] files = file.listFiles(); |
||||
int count = 0; |
||||
for (int k = 0; k < files.length; k++) { |
||||
file = files[k]; |
||||
String name = file.getPath().toLowerCase(); |
||||
try { |
||||
if (matchPostfix(name)) { |
||||
String[][] names = BaseFont.getFullFontName(file.getPath(), BaseFont.CP1252, null); |
||||
insertNames(names, file.getPath()); |
||||
count++; |
||||
} else if (name.endsWith(".ttc")) { |
||||
String[] ttcs = BaseFont.enumerateTTCNames(file.getPath()); |
||||
for (int j = 0; j < ttcs.length; j++) { |
||||
String nt = String.valueOf(new StringBuffer(file.getPath()).append(',').append(j)); |
||||
String[][] names = BaseFont.getFullFontName(nt, BaseFont.CP1252, null); |
||||
insertNames(names, nt); |
||||
} |
||||
|
||||
count++; |
||||
} |
||||
} catch (Exception exception) { |
||||
FRContext.getLogger().error(exception.getMessage(), exception); |
||||
} |
||||
} |
||||
|
||||
return count; |
||||
} |
||||
|
||||
private boolean matchPostfix(String name) { |
||||
return name.endsWith(".ttf") || name.endsWith(".otf") || name.endsWith(".afm"); |
||||
} |
||||
} |
||||
} |
@ -1 +1 @@
|
||||
package com.fr.design.module;
import com.fr.chart.base.ChartInternationalNameContentBean;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.actions.core.ActionFactory;
import com.fr.design.chart.ChartDialog;
import com.fr.design.chart.gui.ChartComponent;
import com.fr.design.chart.gui.ChartWidgetOption;
import com.fr.design.gui.core.WidgetOption;
import com.fr.design.mainframe.App;
import com.fr.design.mainframe.ChartAndWidgetPropertyPane;
import com.fr.design.mainframe.ChartPropertyPane;
import com.fr.form.ui.ChartEditor;
import com.fr.general.IOUtils;
import com.fr.general.Inter;
import com.fr.stable.bridge.StableFactory;
import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider;
import javax.swing.*;
/**
* Created by IntelliJ IDEA.
* Author : Richer
* Version: 7.0.3
* Date: 13-7-8
* Time: 上午9:13
*/
public class ChartDesignerModule extends DesignModule {
public void start() {
super.start();
dealBeforeRegister();
register();
registerFloatEditor();
}
protected void dealBeforeRegister(){
StableFactory.registerMarkedClass(ExtraChartDesignClassManagerProvider.XML_TAG, ChartTypeInterfaceManager.class);
StableFactory.getStaticMarkedInstanceObjectFromClass(ExtraChartDesignClassManagerProvider.XML_TAG, ExtraChartDesignClassManagerProvider.class);
}
private void register(){
DesignModuleFactory.registerHyperlinkGroupType(new ChartHyperlinkGroup());
DesignModuleFactory.registerChartEditorClass(ChartEditor.class);
DesignModuleFactory.registerChartComponentClass(ChartComponent.class);
DesignModuleFactory.registerChartDialogClass(ChartDialog.class);
DesignModuleFactory.registerChartAndWidgetPropertyPane(ChartAndWidgetPropertyPane.class);
DesignModuleFactory.registerChartPropertyPaneClass(ChartPropertyPane.class);
ActionFactory.registerChartPreStyleAction(new ChartPreStyleAction());
}
protected void registerFloatEditor() {
ActionFactory.registerChartCollection(ChartCollection.class);
}
/**
* 返回设计器能打开的模板类型的一个数组列表
*
* @return 可以打开的模板类型的数组
*/
public App<?>[] apps4TemplateOpener() {
return new App[0];
}
protected WidgetOption[] options4Show() {
ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames();
ChartWidgetOption[] child = new ChartWidgetOption[typeName.length];
for (int i = 0; i < typeName.length; i++) {
String plotID = typeName[i].getPlotID();
Chart[] rowChart = ChartTypeManager.getInstance().getChartTypes(plotID);
if(rowChart == null) {
continue;
}
String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(plotID);
Icon icon = IOUtils.readIcon(iconPath);
child[i] = new ChartWidgetOption(Inter.getLocText(typeName[i].getName()), icon, ChartEditor.class, rowChart[0]);
}
return child;
}
public String getInterNationalName() {
return Inter.getLocText("FR-Chart-Design_ChartModule");
}
} |
||||
package com.fr.design.module;
import com.fr.chart.base.ChartInternationalNameContentBean;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.actions.core.ActionFactory;
import com.fr.design.chart.ChartDialog;
import com.fr.design.chart.gui.ChartComponent;
import com.fr.design.chart.gui.ChartWidgetOption;
import com.fr.design.gui.core.WidgetOption;
import com.fr.design.mainframe.App;
import com.fr.design.mainframe.ChartPropertyPane;
import com.fr.form.ui.ChartEditor;
import com.fr.general.IOUtils;
import com.fr.general.Inter;
import com.fr.stable.bridge.StableFactory;
import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider;
import javax.swing.*;
/**
* Created by IntelliJ IDEA.
* Author : Richer
* Version: 7.0.3
* Date: 13-7-8
* Time: 上午9:13
*/
public class ChartDesignerModule extends DesignModule {
public void start() {
super.start();
dealBeforeRegister();
register();
registerFloatEditor();
}
protected void dealBeforeRegister(){
StableFactory.registerMarkedClass(ExtraChartDesignClassManagerProvider.XML_TAG, ChartTypeInterfaceManager.class);
StableFactory.getStaticMarkedInstanceObjectFromClass(ExtraChartDesignClassManagerProvider.XML_TAG, ExtraChartDesignClassManagerProvider.class);
}
private void register(){
DesignModuleFactory.registerHyperlinkGroupType(new ChartHyperlinkGroup());
DesignModuleFactory.registerChartEditorClass(ChartEditor.class);
DesignModuleFactory.registerChartComponentClass(ChartComponent.class);
DesignModuleFactory.registerChartDialogClass(ChartDialog.class);
DesignModuleFactory.registerChartPropertyPaneClass(ChartPropertyPane.class);
ActionFactory.registerChartPreStyleAction(new ChartPreStyleAction());
}
protected void registerFloatEditor() {
ActionFactory.registerChartCollection(ChartCollection.class);
}
/**
* 返回设计器能打开的模板类型的一个数组列表
*
* @return 可以打开的模板类型的数组
*/
public App<?>[] apps4TemplateOpener() {
return new App[0];
}
protected WidgetOption[] options4Show() {
ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames();
ChartWidgetOption[] child = new ChartWidgetOption[typeName.length];
for (int i = 0; i < typeName.length; i++) {
String plotID = typeName[i].getPlotID();
Chart[] rowChart = ChartTypeManager.getInstance().getChartTypes(plotID);
if(rowChart == null) {
continue;
}
String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(plotID);
Icon icon = IOUtils.readIcon(iconPath);
child[i] = new ChartWidgetOption(Inter.getLocText(typeName[i].getName()), icon, ChartEditor.class, rowChart[0]);
}
return child;
}
public String getInterNationalName() {
return Inter.getLocText("FR-Chart-Design_ChartModule");
}
} |
@ -1,95 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.design.module; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.base.FRContext; |
||||
import com.fr.base.io.XMLEncryptUtils; |
||||
import com.fr.chart.base.ChartInternationalNameContentBean; |
||||
import com.fr.chart.chartattr.Chart; |
||||
import com.fr.chart.charttypes.ChartTypeManager; |
||||
import com.fr.chart.module.ChartModule; |
||||
import com.fr.design.DesignerEnvManager; |
||||
import com.fr.design.chart.gui.ChartWidgetOption; |
||||
import com.fr.design.gui.core.WidgetOption; |
||||
import com.fr.design.mainframe.*; |
||||
import com.fr.file.FILE; |
||||
import com.fr.form.ui.ChartBook; |
||||
import com.fr.form.ui.ChartEditor; |
||||
import com.fr.general.Inter; |
||||
import com.fr.general.ModuleContext; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-13 |
||||
* Time: 下午2:56 |
||||
*/ |
||||
public class ChartStartModule extends ChartDesignerModule { |
||||
|
||||
protected void dealBeforeRegister(){ |
||||
ModuleContext.startModule(ChartModule.class.getName()); |
||||
} |
||||
|
||||
protected void registerFloatEditor() { |
||||
|
||||
} |
||||
|
||||
protected WidgetOption[] options4Show() { |
||||
ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames(); |
||||
ChartWidgetOption[] child = new ChartWidgetOption[typeName.length]; |
||||
for (int i = 0; i < typeName.length; i++) { |
||||
Chart[] rowChart = ChartTypeManager.getInstance().getChartTypes(typeName[i].getPlotID()); |
||||
child[i] = new ChartWidgetOption(Inter.getLocText(typeName[i].getName()), BaseUtils |
||||
.readIcon("com/fr/design/images/form/toolbar/" + typeName[i].getName() + ".png"), |
||||
ChartEditor.class, rowChart[0]); |
||||
} |
||||
return child; |
||||
} |
||||
|
||||
/** |
||||
* 应用打开器 |
||||
* @return 应用 |
||||
*/ |
||||
public App<?>[] apps4TemplateOpener() { |
||||
return new App[]{new AbstractAppProvider<ChartBook>() { |
||||
|
||||
@Override |
||||
public String[] defaultExtentions() { |
||||
return new String[]{"crt"}; |
||||
} |
||||
|
||||
@Override |
||||
public JTemplate<ChartBook, ?> openTemplate(FILE tplFile) { |
||||
return new JChart(asIOFile(tplFile), tplFile); |
||||
} |
||||
|
||||
@Override |
||||
public ChartBook asIOFile(FILE file) { |
||||
if (XMLEncryptUtils.isCptEncoded() && |
||||
!XMLEncryptUtils.checkVaild(DesignerEnvManager.getEnvManager().getEncryptionKey())) { |
||||
if (!new DecodeDialog(file).isPwdRight()) { |
||||
FRContext.getLogger().error(Inter.getLocText("FR-Chart-Password_Error")); |
||||
return new ChartBook(); |
||||
} |
||||
} |
||||
|
||||
|
||||
ChartBook tpl = new ChartBook(); |
||||
//打开通知
|
||||
FRContext.getLogger().info(Inter.getLocText(new String[]{"LOG-Is_Being_Openned", "LOG-Please_Wait"}, |
||||
new String[]{"\"" + file.getName() + "\"" + ",", "..."})); |
||||
try { |
||||
tpl.readStream(file.asInputStream()); |
||||
} catch (Exception exp) { |
||||
FRContext.getLogger().error("Failed to generate frm from " + file, exp); |
||||
return null; |
||||
} |
||||
return tpl; |
||||
} |
||||
}}; |
||||
} |
||||
} |
@ -1,18 +0,0 @@
|
||||
package com.fr.start; |
||||
|
||||
import java.awt.Image; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
|
||||
public class ChartSplashPane extends SplashPane{ |
||||
|
||||
/** |
||||
* 创建启动画面的背景图片 |
||||
* |
||||
* @return 背景图片 |
||||
* |
||||
*/ |
||||
public Image createSplashBackground() { |
||||
return BaseUtils.readImage("/com/fr/design/images/splash4Chart.png"); |
||||
} |
||||
} |
@ -1,406 +0,0 @@
|
||||
/* |
||||
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. |
||||
*/ |
||||
|
||||
package com.fr.start; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.base.FRContext; |
||||
import com.fr.design.DesignerEnvManager; |
||||
import com.fr.design.actions.file.WebPreviewUtils; |
||||
import com.fr.design.actions.help.AboutAction; |
||||
import com.fr.design.constants.UIConstants; |
||||
import com.fr.design.file.HistoryTemplateListPane; |
||||
import com.fr.design.file.MutilTempalteTabPane; |
||||
import com.fr.design.file.NewTemplatePane; |
||||
import com.fr.design.gui.ibutton.UIButton; |
||||
import com.fr.design.gui.itoolbar.UILargeToolbar; |
||||
import com.fr.design.mainframe.*; |
||||
import com.fr.design.mainframe.actions.*; |
||||
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; |
||||
import com.fr.design.menu.*; |
||||
import com.fr.design.module.ChartStartModule; |
||||
import com.fr.general.FRFont; |
||||
import com.fr.general.Inter; |
||||
import com.fr.general.web.ParameterConsts; |
||||
import com.fr.stable.Constants; |
||||
|
||||
import javax.swing.*; |
||||
import javax.swing.border.MatteBorder; |
||||
import java.awt.*; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
import java.awt.event.InputEvent; |
||||
import java.awt.event.KeyEvent; |
||||
import java.util.ArrayList; |
||||
|
||||
/** |
||||
* Created by IntelliJ IDEA. |
||||
* Author : daisy |
||||
* Version: 6.5.6 |
||||
* Date: 14-10-13 |
||||
* Time: 上午11:02 |
||||
*/ |
||||
public class Designer4Chart extends BaseDesigner { |
||||
private static final int TOOLBAR_HEIGHT = 53; |
||||
private static final int TOOLBAR_WIDTH =60+34+7+1+7 ; |
||||
private static final int GAP = 7; |
||||
private static final int EAST_WIDTH = 292; |
||||
private static final int MESSAGEPORT = 51460; |
||||
private UIButton saveButton; |
||||
private UIButton undo; |
||||
private UIButton redo; |
||||
private UIButton run; |
||||
private UIButton copy; |
||||
|
||||
/** |
||||
* 主函数 |
||||
* |
||||
* @param args 入口参数 |
||||
*/ |
||||
public static void main(String[] args) { |
||||
new Designer4Chart(args); |
||||
} |
||||
|
||||
public Designer4Chart(String[] args) { |
||||
super(args); |
||||
} |
||||
|
||||
@Override |
||||
protected String module2Start() { |
||||
EastRegionContainerPane.getInstance().setDownPaneVisible(false); |
||||
EastRegionContainerPane.getInstance().setContainerWidth(EAST_WIDTH); |
||||
return ChartStartModule.class.getName(); |
||||
} |
||||
|
||||
protected void initLanguage() { |
||||
//这两句的位置不能随便调换,因为会影响语言切换的问题
|
||||
FRContext.setLanguage(Constants.LANGUAGE_ENGLISH); |
||||
} |
||||
|
||||
protected void initDefaultFont(){ |
||||
FRContext.getDefaultValues().setFRFont(FRFont.getInstance("Meiryo", Font.PLAIN, 9)); |
||||
} |
||||
|
||||
/** |
||||
* build得路径 |
||||
* @return build得路径 |
||||
*/ |
||||
public String buildPropertiesPath() { |
||||
return "/com/fr/chart/base/build.properties"; |
||||
} |
||||
|
||||
/** |
||||
* 创建文件菜单项 |
||||
* @return 菜单项 |
||||
*/ |
||||
public ShortCut[] createNewFileShortCuts() { |
||||
ArrayList<ShortCut> shortCuts = new ArrayList<ShortCut>(); |
||||
shortCuts.add(new NewChartAction()); |
||||
return shortCuts.toArray(new ShortCut[shortCuts.size()]); |
||||
} |
||||
|
||||
/** |
||||
* 创建新模版 |
||||
* @return 模版 |
||||
*/ |
||||
public JTemplate<?, ?> createNewTemplate() { |
||||
return new JChart(); |
||||
} |
||||
|
||||
protected void resetToolTips(){ |
||||
copy.setToolTipText(Inter.getLocText("FR-Chart-Action_Copy")+"JS"); |
||||
run.setToolTipText(PREVIEW.getMenuKeySetName()); |
||||
} |
||||
|
||||
/** |
||||
* 创建设计器上几个比较大的图标:新建cpt,保存,前进,后退,运行。 |
||||
* |
||||
* @return 返回大图标对应的工具栏 |
||||
*/ |
||||
public UILargeToolbar createLargeToolbar() { |
||||
|
||||
UILargeToolbar largeToolbar = new UILargeToolbar(FlowLayout.LEFT){ |
||||
public Dimension getPreferredSize() { |
||||
return new Dimension(TOOLBAR_WIDTH ,TOOLBAR_HEIGHT); |
||||
} |
||||
}; |
||||
largeToolbar.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 4)); |
||||
largeToolbar.add(new JPanel() { |
||||
public Dimension getPreferredSize() { |
||||
Dimension dim = super.getPreferredSize(); |
||||
dim.width = 1; |
||||
return dim; |
||||
} |
||||
}); |
||||
createRunButton(); |
||||
largeToolbar.add(run); |
||||
largeToolbar.add(new JPanel() { |
||||
public Dimension getPreferredSize() { |
||||
Dimension dim = super.getPreferredSize(); |
||||
dim.width = GAP; |
||||
return dim; |
||||
} |
||||
}); |
||||
largeToolbar.addSeparator(new Dimension(2, 42)); |
||||
largeToolbar.add(new JPanel() { |
||||
public Dimension getPreferredSize() { |
||||
Dimension dim = super.getPreferredSize(); |
||||
dim.width = GAP; |
||||
return dim; |
||||
} |
||||
}); |
||||
createCopyButton(); |
||||
largeToolbar.add(copy); |
||||
largeToolbar.add(new JPanel() { |
||||
public Dimension getPreferredSize() { |
||||
Dimension dim = super.getPreferredSize(); |
||||
dim.width = GAP; |
||||
return dim; |
||||
} |
||||
}); |
||||
largeToolbar.addSeparator(new Dimension(2, 42)); |
||||
|
||||
largeToolbar.setBorder(new MatteBorder(new Insets(0, 0, 1, 0), UIConstants.LINE_COLOR)); |
||||
return largeToolbar; |
||||
} |
||||
|
||||
protected int getStartPort(){ |
||||
return MESSAGEPORT; |
||||
} |
||||
|
||||
protected DesignerFrame createDesignerFrame(){ |
||||
|
||||
return new DesignerFrame4Chart(this); |
||||
} |
||||
|
||||
/** |
||||
* 创建上面一排的工具栏按钮 |
||||
* |
||||
* @return 按钮 |
||||
*/ |
||||
public UIButton[] createUp() { |
||||
return new UIButton[]{createSaveButton(), createUndoButton(), createRedoButton()}; |
||||
} |
||||
|
||||
private UIButton createRunButton() { |
||||
run = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/pageb24.png")) { |
||||
public Dimension getPreferredSize() { |
||||
return new Dimension(34, 43); |
||||
} |
||||
}; |
||||
run.setToolTipText(PREVIEW.getMenuKeySetName()); |
||||
run.set4ChartLargeToolButton(); |
||||
run.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); |
||||
if (jt == null) { |
||||
return; |
||||
} |
||||
onChartPreview(jt); |
||||
} |
||||
}); |
||||
return run; |
||||
} |
||||
|
||||
public static void onChartPreview(JTemplate<?, ?> jt) { |
||||
WebPreviewUtils.actionPerformed(jt, null, ParameterConsts.CHARTLET); |
||||
} |
||||
|
||||
public static final MenuKeySet PREVIEW = new MenuKeySet() { |
||||
@Override |
||||
public char getMnemonic() { |
||||
return 'P'; |
||||
} |
||||
|
||||
@Override |
||||
public String getMenuName() { |
||||
return Inter.getLocText("FR-Chart-Template_Preview"); |
||||
} |
||||
|
||||
@Override |
||||
public KeyStroke getKeyStroke() { |
||||
return KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK); |
||||
} |
||||
}; |
||||
|
||||
|
||||
private UIButton createCopyButton(){ |
||||
copy = new UIButton(BaseUtils.readIcon("com/fr/design/images/copyjs.png")) { |
||||
public Dimension getPreferredSize() { |
||||
return new Dimension(34, 43); |
||||
} |
||||
}; |
||||
copy.setToolTipText(Inter.getLocText("FR-Chart-Action_Copy")+"JS"); |
||||
copy.set4ChartLargeToolButton(); |
||||
copy.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); |
||||
if (jt == null) { |
||||
return; |
||||
} |
||||
DesignerContext.getDesignerFrame().refreshToolbar(); |
||||
|
||||
jt.stopEditing(); |
||||
if (!jt.isSaved() && !jt.saveTemplate2Env()) { |
||||
return; |
||||
} |
||||
//复制代码
|
||||
jt.copyJS(); |
||||
} |
||||
}); |
||||
return copy; |
||||
} |
||||
|
||||
private UIButton createSaveButton() { |
||||
saveButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/save.png")); |
||||
saveButton.setToolTipText(KeySetUtils.SAVE_TEMPLATE.getMenuKeySetName()); |
||||
saveButton.set4ToolbarButton(); |
||||
saveButton.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); |
||||
jt.stopEditing(); |
||||
jt.saveTemplate(); |
||||
jt.requestFocus(); |
||||
} |
||||
}); |
||||
return saveButton; |
||||
} |
||||
|
||||
private UIButton createUndoButton() { |
||||
undo = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/undo.png")); |
||||
undo.setToolTipText(KeySetUtils.UNDO.getMenuKeySetName()); |
||||
undo.set4ToolbarButton(); |
||||
undo.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); |
||||
if (jt != null) { |
||||
jt.undo(); |
||||
} |
||||
} |
||||
}); |
||||
return undo; |
||||
} |
||||
|
||||
private UIButton createRedoButton() { |
||||
redo = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/redo.png")); |
||||
redo.setToolTipText(KeySetUtils.REDO.getMenuKeySetName()); |
||||
redo.set4ToolbarButton(); |
||||
redo.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); |
||||
if (jt != null) { |
||||
jt.redo(); |
||||
} |
||||
} |
||||
}); |
||||
return redo; |
||||
} |
||||
|
||||
/** |
||||
* 重置工具条 |
||||
* @param toolbarComponent 工具栏 |
||||
* @param plus 对象 |
||||
* @return 工具条对象 |
||||
*/ |
||||
public JComponent resetToolBar(JComponent toolbarComponent, ToolBarMenuDockPlus plus) { |
||||
return plus.toolBar4Authority(); |
||||
} |
||||
|
||||
public NewTemplatePane getNewTemplatePane(){ |
||||
return new NewTemplatePane() { |
||||
@Override |
||||
public Icon getNew() { |
||||
return BaseUtils.readIcon("/com/fr/design/images/newchart_normal.png"); |
||||
} |
||||
|
||||
@Override |
||||
public Icon getMouseOverNew() { |
||||
return BaseUtils.readIcon("/com/fr/design/images/newchart_over.png"); |
||||
} |
||||
|
||||
@Override |
||||
public Icon getMousePressNew() { |
||||
return BaseUtils.readIcon("/com/fr/design/images/newchart_press.png"); |
||||
} |
||||
}; |
||||
}; |
||||
|
||||
@Override |
||||
protected void refreshLargeToolbarState() { |
||||
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); |
||||
if (jt == null) { |
||||
return; |
||||
} |
||||
saveButton.setEnabled(!jt.isSaved()); |
||||
MutilTempalteTabPane.getInstance().refreshOpenedTemplate(HistoryTemplateListPane.getInstance().getHistoryList()); |
||||
MutilTempalteTabPane.getInstance().repaint(); |
||||
if (DesignerEnvManager.getEnvManager().isSupportUndo()) { |
||||
undo.setEnabled(jt.canUndo()); |
||||
redo.setEnabled(jt.canRedo()); |
||||
} else { |
||||
undo.setEnabled(false); |
||||
redo.setEnabled(false); |
||||
} |
||||
} |
||||
|
||||
protected SplashPane createSplashPane() { |
||||
return new ChartSplashPane(); |
||||
} |
||||
|
||||
/** |
||||
*更新工具栏 |
||||
*/ |
||||
public void updateToolBarDef() { |
||||
refreshLargeToolbarState(); |
||||
} |
||||
|
||||
protected void addCloseCurrentTemplateAction(MenuDef menuDef) { |
||||
|
||||
} |
||||
|
||||
protected void addPreferenceAction(MenuDef menuDef) { |
||||
|
||||
} |
||||
|
||||
protected void addSwitchExistEnvAction(MenuDef menuDef) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public MenuDef[] createTemplateShortCuts(ToolBarMenuDockPlus plus) { |
||||
MenuDef menuDef = new MenuDef(KeySetUtils.EXPORT_CHART.getMenuKeySetName(), KeySetUtils.EXPORT_CHART.getMnemonic()); |
||||
menuDef.addShortCut(plus.shortcut4ExportMenu()); |
||||
return new MenuDef[] {menuDef}; |
||||
} |
||||
|
||||
/** |
||||
* 创建帮助菜单得菜单项 |
||||
* @return 菜单项 |
||||
*/ |
||||
public ShortCut[] createHelpShortCuts() { |
||||
resetToolTips(); |
||||
return new ShortCut[]{ |
||||
new ChartWebAction(), |
||||
SeparatorDef.DEFAULT, |
||||
new ChartFeedBackAciton(), |
||||
SeparatorDef.DEFAULT, |
||||
new UpdateOnlineAction(), |
||||
new AboutAction() |
||||
}; |
||||
} |
||||
|
||||
protected ShortCut openTemplateAction(){ |
||||
return new OpenChartAction(); |
||||
} |
||||
|
||||
protected String[] startFileSuffix(){ |
||||
return new String[]{".crt"}; |
||||
} |
||||
|
||||
} |
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue