forked from fanruan/design
Browse Source
* commit '66766b87e10a6fcb968bf94d0cdef1ccefcd3cd5': (244 commits) ct ct ct 无JIRA任务 组件共享支持远程安装删除 无JIRA任务 用了非法的依赖关系,先写死再整理 无JIRA任务 组件共享远程切换同步到release rt populate之前init面板让组件没有listener。typepane先和stylepane逻辑统一,dev里面我不init面板,只是把所有listener remove掉,这样比较合理 rt rt rt rt rt rt rt rt rt rt rt rt ...master
172 changed files with 5421 additions and 4261 deletions
@ -0,0 +1,85 @@
|
||||
apply plugin: "java" |
||||
tasks.withType(JavaCompile){ |
||||
options.encoding = "UTF-8" |
||||
} |
||||
def basicDir="../../" |
||||
def libDir="${basicDir}/finereport-lib-stable/master" |
||||
//获取什么分支名 |
||||
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") |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,85 @@
|
||||
apply plugin: "java" |
||||
tasks.withType(JavaCompile){ |
||||
options.encoding = "UTF-8" |
||||
} |
||||
def basicDir="../../" |
||||
def libDir="${basicDir}/finereport-lib-stable/master" |
||||
//获取什么分支名 |
||||
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}/${branchName}/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") |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,70 @@
|
||||
|
||||
apply plugin: 'java' |
||||
tasks.withType(JavaCompile){ |
||||
options.encoding = 'UTF-8' |
||||
} |
||||
//指定构建的jdk版本 |
||||
sourceCompatibility=1.7 |
||||
//指定生成jar包版本 |
||||
version='8.0' |
||||
//生成jar包重命名 |
||||
jar{ |
||||
baseName='fr-designer-core' |
||||
} |
||||
|
||||
|
||||
def srcDir="." |
||||
|
||||
//指定源码路径 |
||||
sourceSets{ |
||||
main{ |
||||
java{ |
||||
srcDirs=["${srcDir}/src"] |
||||
} |
||||
} |
||||
} |
||||
//获取什么分支名 |
||||
FileTree files =fileTree(dir:'./',include:'build.*.gradle') |
||||
def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) |
||||
buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) |
||||
def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) |
||||
|
||||
//声明外部依赖 |
||||
dependencies{ |
||||
|
||||
compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') |
||||
compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") |
||||
|
||||
testCompile 'junit:junit:4.12' |
||||
} |
||||
//复制非.java文件到classes文件夹下参与打包 |
||||
task copyFile(type:Copy,dependsOn:compileJava){ |
||||
copy{ |
||||
from ("${srcDir}/src"){ |
||||
exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' |
||||
} |
||||
into 'build/classes/main' |
||||
} |
||||
|
||||
} |
||||
|
||||
|
||||
//压缩项目中的js文件 |
||||
task compressJS{ |
||||
ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ |
||||
classpath { |
||||
fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') |
||||
} |
||||
} |
||||
ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ |
||||
fileset (dir:"${srcDir}/src"){ |
||||
include (name:'**/*.js') |
||||
include (name:'**/*.css') |
||||
} |
||||
|
||||
} |
||||
} |
||||
jar.dependsOn compressJS |
||||
|
||||
|
||||
|
@ -0,0 +1,70 @@
|
||||
|
||||
apply plugin: 'java' |
||||
tasks.withType(JavaCompile){ |
||||
options.encoding = 'UTF-8' |
||||
} |
||||
//指定构建的jdk版本 |
||||
sourceCompatibility=1.8 |
||||
//指定生成jar包版本 |
||||
version='8.0' |
||||
//生成jar包重命名 |
||||
jar{ |
||||
baseName='fr-designer-core' |
||||
} |
||||
|
||||
|
||||
def srcDir="." |
||||
|
||||
//指定源码路径 |
||||
sourceSets{ |
||||
main{ |
||||
java{ |
||||
srcDirs=["${srcDir}/src"] |
||||
} |
||||
} |
||||
} |
||||
//获取什么分支名 |
||||
FileTree files =fileTree(dir:'./',include:'build.*.gradle') |
||||
def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) |
||||
buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) |
||||
def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) |
||||
|
||||
//声明外部依赖 |
||||
dependencies{ |
||||
|
||||
compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') |
||||
compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") |
||||
|
||||
testCompile 'junit:junit:4.12' |
||||
} |
||||
//复制非.java文件到classes文件夹下参与打包 |
||||
task copyFile(type:Copy,dependsOn:compileJava){ |
||||
copy{ |
||||
from ("${srcDir}/src"){ |
||||
exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' |
||||
} |
||||
into 'build/classes/main' |
||||
} |
||||
|
||||
} |
||||
|
||||
|
||||
//压缩项目中的js文件 |
||||
task compressJS{ |
||||
ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ |
||||
classpath { |
||||
fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') |
||||
} |
||||
} |
||||
ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ |
||||
fileset (dir:"${srcDir}/src"){ |
||||
include (name:'**/*.js') |
||||
include (name:'**/*.css') |
||||
} |
||||
|
||||
} |
||||
} |
||||
jar.dependsOn compressJS |
||||
|
||||
|
||||
|
@ -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
@ -1,34 +1,31 @@
|
||||
package com.fr.design.fun; |
||||
|
||||
import com.fr.stable.fun.ReportFitAttrProvider; |
||||
import com.fr.stable.fun.mark.Immutable; |
||||
|
||||
import java.beans.PropertyDescriptor; |
||||
|
||||
/** |
||||
* Created by zhouping on 2015/9/10. |
||||
*/ |
||||
public interface FormElementCaseEditorProcessor extends Immutable { |
||||
|
||||
String MARK_STRING = "PropertyEditor"; |
||||
|
||||
int CURRENT_LEVEL = 1; |
||||
|
||||
|
||||
/** |
||||
* 生成属性表 |
||||
* @param temp 传入当前操作的class |
||||
* @param reportFitAttr 传入的自适应属性 |
||||
* @return 返回属性表 |
||||
*/ |
||||
PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, ReportFitAttrProvider reportFitAttr); |
||||
|
||||
/** |
||||
* 返回pc自适应属性值 |
||||
* @param fitAttrProvider 传入的自适应属性 |
||||
* @return 返回pc自适应属性值 |
||||
*/ |
||||
int getFitStateInPC(ReportFitAttrProvider fitAttrProvider); |
||||
|
||||
|
||||
} |
||||
package com.fr.design.fun; |
||||
|
||||
import com.fr.stable.fun.ReportFitAttrProvider; |
||||
import com.fr.stable.fun.mark.Immutable; |
||||
|
||||
import java.beans.PropertyDescriptor; |
||||
|
||||
/** |
||||
* Created by Slpire on 2016/10/28. |
||||
*/ |
||||
public interface FormElementCaseEditorProcessor extends Immutable { |
||||
String MARK_STRING = "PropertyEditor"; |
||||
|
||||
int CURRENT_LEVEL = 1; |
||||
|
||||
|
||||
/** |
||||
* 生成属性表 |
||||
* @param temp 传入当前操作的class |
||||
* @param reportFitAttr 传入的自适应属性 |
||||
* @return 返回属性表 |
||||
*/ |
||||
PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, ReportFitAttrProvider reportFitAttr); |
||||
|
||||
/** |
||||
* 返回pc自适应属性值 |
||||
* @param fitAttrProvider 传入的自适应属性 |
||||
* @return 返回pc自适应属性值 |
||||
*/ |
||||
int getFitStateInPC(ReportFitAttrProvider fitAttrProvider); |
||||
} |
||||
|
@ -0,0 +1,35 @@
|
||||
package com.fr.design.fun; |
||||
|
||||
import com.fr.form.FormProvider; |
||||
import com.fr.form.ui.ElementCaseEditorProvider; |
||||
import com.fr.stable.fun.ReportFitAttrProvider; |
||||
import com.fr.stable.fun.mark.Mutable; |
||||
|
||||
import java.beans.PropertyDescriptor; |
||||
|
||||
/** |
||||
* Created by zhouping on 2015/9/10. |
||||
*/ |
||||
public interface FormElementCaseEditorProvider extends Mutable { |
||||
|
||||
String MARK_STRING = "PropertyEditor"; |
||||
|
||||
int CURRENT_LEVEL = 1; |
||||
|
||||
PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, FormProvider formProvider, ElementCaseEditorProvider editor); |
||||
|
||||
/** |
||||
* 生成属性表 |
||||
* @param temp 传入当前操作的class |
||||
* @param reportFitAttr 传入的自适应属性 |
||||
* @return 返回属性表 |
||||
*/ |
||||
PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, ReportFitAttrProvider reportFitAttr); |
||||
|
||||
/** |
||||
* 返回pc自适应属性值 |
||||
* @param fitAttrProvider 传入的自适应属性 |
||||
* @return 返回pc自适应属性值 |
||||
*/ |
||||
int getFitStateInPC(ReportFitAttrProvider fitAttrProvider); |
||||
} |
@ -1,44 +1,44 @@
|
||||
package com.fr.design.fun.impl; |
||||
|
||||
import com.fr.design.fun.FormElementCaseEditorProcessor; |
||||
import com.fr.stable.fun.ReportFitAttrProvider; |
||||
import com.fr.stable.fun.mark.API; |
||||
|
||||
import java.beans.PropertyDescriptor; |
||||
|
||||
/** |
||||
* Created by zhouping on 2015/9/10. |
||||
*/ |
||||
@API(level = FormElementCaseEditorProcessor.CURRENT_LEVEL) |
||||
public abstract class AbstractFormElementCaseEditorProcessor implements FormElementCaseEditorProcessor { |
||||
|
||||
public int currentAPILevel() { |
||||
return CURRENT_LEVEL; |
||||
} |
||||
|
||||
public int layerIndex() { |
||||
return DEFAULT_LAYER_INDEX; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 生成属性表 |
||||
* @param temp 传入当前操作的class |
||||
* @param reportFitAttr 传入的自适应属性 |
||||
* @return 返回属性表 |
||||
*/ |
||||
@Override |
||||
public PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, ReportFitAttrProvider reportFitAttr) { |
||||
return new PropertyDescriptor[0]; |
||||
} |
||||
|
||||
/** |
||||
* 返回pc自适应属性值 |
||||
* @param fitAttrProvider 传入的自适应属性 |
||||
* @return 返回pc自适应属性值 |
||||
*/ |
||||
@Override |
||||
public int getFitStateInPC(ReportFitAttrProvider fitAttrProvider) { |
||||
return 0; |
||||
} |
||||
package com.fr.design.fun.impl; |
||||
|
||||
import com.fr.design.fun.FormElementCaseEditorProcessor; |
||||
import com.fr.stable.fun.ReportFitAttrProvider; |
||||
import com.fr.stable.fun.mark.API; |
||||
|
||||
import java.beans.PropertyDescriptor; |
||||
|
||||
/** |
||||
* Created by zhouping on 2015/9/10. |
||||
*/ |
||||
@API(level = FormElementCaseEditorProcessor.CURRENT_LEVEL) |
||||
public abstract class AbstractFormElementCaseEditorProcessor implements FormElementCaseEditorProcessor { |
||||
|
||||
public int currentAPILevel() { |
||||
return CURRENT_LEVEL; |
||||
} |
||||
|
||||
public int layerIndex() { |
||||
return DEFAULT_LAYER_INDEX; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 生成属性表 |
||||
* @param temp 传入当前操作的class |
||||
* @param reportFitAttr 传入的自适应属性 |
||||
* @return 返回属性表 |
||||
*/ |
||||
@Override |
||||
public PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, ReportFitAttrProvider reportFitAttr) { |
||||
return new PropertyDescriptor[0]; |
||||
} |
||||
|
||||
/** |
||||
* 返回pc自适应属性值 |
||||
* @param fitAttrProvider 传入的自适应属性 |
||||
* @return 返回pc自适应属性值 |
||||
*/ |
||||
@Override |
||||
public int getFitStateInPC(ReportFitAttrProvider fitAttrProvider) { |
||||
return 0; |
||||
} |
||||
} |
@ -0,0 +1,51 @@
|
||||
package com.fr.design.fun.impl; |
||||
|
||||
import com.fr.design.fun.FormElementCaseEditorProvider; |
||||
import com.fr.form.FormProvider; |
||||
import com.fr.form.ui.ElementCaseEditorProvider; |
||||
import com.fr.stable.fun.ReportFitAttrProvider; |
||||
import com.fr.stable.fun.mark.API; |
||||
|
||||
import java.beans.PropertyDescriptor; |
||||
|
||||
/** |
||||
* Created by zhouping on 2015/9/10. |
||||
*/ |
||||
@API(level = FormElementCaseEditorProvider.CURRENT_LEVEL) |
||||
public abstract class AbstractFormElementCaseEditorProvider implements FormElementCaseEditorProvider { |
||||
|
||||
public int currentAPILevel() { |
||||
return CURRENT_LEVEL; |
||||
} |
||||
|
||||
@Override |
||||
public String mark4Provider() { |
||||
return this.getClass().getName(); |
||||
} |
||||
|
||||
@Override |
||||
public PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, FormProvider reportAttr, ElementCaseEditorProvider editor) { |
||||
return new PropertyDescriptor[0]; |
||||
} |
||||
|
||||
/** |
||||
* 生成属性表 |
||||
* @param temp 传入当前操作的class |
||||
* @param reportFitAttr 传入的自适应属性 |
||||
* @return 返回属性表 |
||||
*/ |
||||
@Override |
||||
public PropertyDescriptor[] createPropertyDescriptor(Class<?> temp, ReportFitAttrProvider reportFitAttr) { |
||||
return new PropertyDescriptor[0]; |
||||
} |
||||
|
||||
/** |
||||
* 返回pc自适应属性值 |
||||
* @param fitAttrProvider 传入的自适应属性 |
||||
* @return 返回pc自适应属性值 |
||||
*/ |
||||
@Override |
||||
public int getFitStateInPC(ReportFitAttrProvider fitAttrProvider) { |
||||
return 0; |
||||
} |
||||
} |
@ -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(); |
||||
|
||||
} |
@ -1 +1 @@
|
||||
package com.fr.design.icon;
/**
* Created by IntelliJ IDEA.
* Author : Richer
* Version: 6.5.6
* Date: 12-12-18
* Time: 上午9:42
* 用于保存所有图标路径的类
*/
public class IconPathConstants {
private IconPathConstants() {
}
public static final String ADD_POPMENU_ICON_PATH = "/com/fr/design/images/control/addPopup.png";
public static final String DS_ICON_PATH = "/com/fr/design/images/data/datasource.png";
public static final String CLASS_TD_ICON_PATH = "/com/fr/design/images/data/source/classTableData.png";
public static final String EMB_TD_ICON_PATH = "/com/fr/design/images/data/dataTable.png";
public static final String DS_RELATION_TD_ICON_PATH = "/com/fr/design/images/data/multi.png";
public static final String FILE_TD_ICON_PATH = "/com/fr/design/images/data/file.png";
public static final String DS_TREE_TD_ICON_PATH = "/com/fr/design/images/data/tree.png";
public static final String DS_QUERY_ICON_PATH = "/com/fr/design/images/data/database.png";
public static final String PREVIEW_ICON_PATH = "/com/fr/design/images/m_file/preview.png";
public static final String TD_EDIT_ICON_PATH = "/com/fr/design/images/control/edit.png";
public static final String TD_REMOVE_ICON_PATH = "/com/fr/base/images/cell/control/remove.png";
public static final String TD_CONNECTION_ICON_PATH = "/com/fr/design/images/m_web/connection.png";
public static final String SP_SHOW_ICON_PATH = "/com/fr/design/images/data/store_procedure.png";
public static final String STD_SHOW_ICON_PATH = "/com/fr/design/images/data/dock/serverdatabase.png";
public static final String XMLA_ICON_PATH = "/com/fr/design/images/data/cube.png";
public static final String FORBID_ICON_PATH ="/com/fr/web/images/form/forbid.png";
} |
||||
package com.fr.design.icon;
/**
* Created by IntelliJ IDEA.
* Author : Richer
* Version: 6.5.6
* Date: 12-12-18
* Time: 上午9:42
* 用于保存所有图标路径的类
*/
public class IconPathConstants {
private IconPathConstants() {
}
public static final String ADD_POPMENU_ICON_PATH = "/com/fr/design/images/control/addPopup.png";
public static final String DS_ICON_PATH = "/com/fr/design/images/data/datasource.png";
public static final String CLASS_TD_ICON_PATH = "/com/fr/design/images/data/source/classTableData.png";
public static final String EMB_TD_ICON_PATH = "/com/fr/design/images/data/dataTable.png";
public static final String DS_RELATION_TD_ICON_PATH = "/com/fr/design/images/data/multi.png";
public static final String FILE_TD_ICON_PATH = "/com/fr/design/images/data/file.png";
public static final String DS_TREE_TD_ICON_PATH = "/com/fr/design/images/data/tree.png";
public static final String DS_QUERY_ICON_PATH = "/com/fr/design/images/data/database.png";
public static final String PREVIEW_ICON_PATH = "/com/fr/design/images/m_file/preview.png";
public static final String TD_EDIT_ICON_PATH = "/com/fr/design/images/control/edit.png";
public static final String TD_EL_SHARE_HELP_ICON_PATH = "/com/fr/design/images/control/help_open.png";
public static final String TD_EL_SHARE_CLOSE_ICON_PATH = "/com/fr/design/images/control/help_close.png";
public static final String TD_REMOVE_ICON_PATH = "/com/fr/base/images/cell/control/remove.png";
public static final String TD_CONNECTION_ICON_PATH = "/com/fr/design/images/m_web/connection.png";
public static final String SP_SHOW_ICON_PATH = "/com/fr/design/images/data/store_procedure.png";
public static final String STD_SHOW_ICON_PATH = "/com/fr/design/images/data/dock/serverdatabase.png";
public static final String XMLA_ICON_PATH = "/com/fr/design/images/data/cube.png";
public static final String FORBID_ICON_PATH ="/com/fr/web/images/form/forbid.png";
} |
After Width: | Height: | Size: 404 B |
After Width: | Height: | Size: 801 B |
After Width: | Height: | Size: 895 B |
@ -0,0 +1,3 @@
|
||||
表单名字 |
||||
假如访问:http://localhost:8080/WebReport/ReportServer?formlet=Form1.frm, |
||||
formName就是Form1.frm |
@ -0,0 +1,3 @@
|
||||
form name |
||||
http://localhost:8080/WebReport/ReportServer?formlet=Form1.frm£¬ |
||||
formName is Form1.frm |
@ -0,0 +1,13 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
/** |
||||
* Coder: zack |
||||
* Date: 2016/11/3 |
||||
* Time: 10:43 |
||||
*/ |
||||
public interface HelpDialogHandler { |
||||
/** |
||||
* 销毁 |
||||
*/ |
||||
void destroyHelpDialog(); |
||||
} |
@ -0,0 +1,38 @@
|
||||
package com.fr.design.mainframe; |
||||
|
||||
/** |
||||
* 帮助信息的面板由于需要滚动条所以采用了很挫的dialog做,dialog很多情况下不能主动关闭,这边控制一下 |
||||
* Coder: zack |
||||
* Date: 2016/11/2 |
||||
* Time: 16:34 |
||||
*/ |
||||
public class HelpDialogManager { |
||||
private static HelpDialogManager THIS; |
||||
private HelpDialogHandler handler; |
||||
|
||||
private HelpDialogManager() { |
||||
|
||||
} |
||||
|
||||
public HelpDialogHandler getPane() { |
||||
return handler; |
||||
} |
||||
|
||||
public void setPane(HelpDialogHandler dialog) { |
||||
if (dialog == this.handler) { |
||||
return; |
||||
} |
||||
//只允许一个dialog存在
|
||||
if (this.handler != null) { |
||||
handler.destroyHelpDialog(); |
||||
} |
||||
this.handler = dialog; |
||||
} |
||||
|
||||
public static HelpDialogManager getInstance() { |
||||
if (THIS == null) { |
||||
THIS = new HelpDialogManager(); |
||||
} |
||||
return THIS; |
||||
} |
||||
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,66 @@
|
||||
|
||||
apply plugin: 'java' |
||||
tasks.withType(JavaCompile){ |
||||
options.encoding = 'UTF-8' |
||||
} |
||||
//指定构建的jdk版本 |
||||
sourceCompatibility=1.7 |
||||
//指定生成jar包的版本 |
||||
version='8.0' |
||||
|
||||
def srcDir="." |
||||
|
||||
//对生成的jar包进行重命名 |
||||
|
||||
jar{ |
||||
baseName='fr-designer-chart' |
||||
} |
||||
|
||||
sourceSets{ |
||||
main{ |
||||
java{ |
||||
srcDirs=["${srcDir}/src"] |
||||
} |
||||
} |
||||
} |
||||
FileTree files =fileTree(dir:'./',include:'build.*.gradle') |
||||
def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) |
||||
buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) |
||||
def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) |
||||
|
||||
//指定外部依赖 |
||||
dependencies{ |
||||
compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') |
||||
compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") |
||||
|
||||
testCompile 'junit:junit:4.12' |
||||
} |
||||
//将非.java 文件复制到classes文件夹下参与打包 |
||||
task copyFile(type:Copy,dependsOn:compileJava){ |
||||
copy{ |
||||
from ("${srcDir}/src"){ |
||||
exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' |
||||
|
||||
} |
||||
into 'build/classes/main' |
||||
} |
||||
|
||||
} |
||||
|
||||
//压缩项目中的js文件 |
||||
task compressJS{ |
||||
ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ |
||||
classpath { |
||||
fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') |
||||
} |
||||
} |
||||
ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ |
||||
fileset (dir:"${srcDir}/src"){ |
||||
include (name:'**/*.js') |
||||
include (name:'**/*.css') |
||||
} |
||||
|
||||
} |
||||
} |
||||
jar.dependsOn compressJS |
||||
|
@ -0,0 +1,66 @@
|
||||
|
||||
apply plugin: 'java' |
||||
tasks.withType(JavaCompile){ |
||||
options.encoding = 'UTF-8' |
||||
} |
||||
//指定构建的jdk版本 |
||||
sourceCompatibility=1.8 |
||||
//指定生成jar包的版本 |
||||
version='8.0' |
||||
|
||||
def srcDir="." |
||||
|
||||
//对生成的jar包进行重命名 |
||||
|
||||
jar{ |
||||
baseName='fr-designer-chart' |
||||
} |
||||
|
||||
sourceSets{ |
||||
main{ |
||||
java{ |
||||
srcDirs=["${srcDir}/src"] |
||||
} |
||||
} |
||||
} |
||||
FileTree files =fileTree(dir:'./',include:'build.*.gradle') |
||||
def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) |
||||
buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) |
||||
def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) |
||||
|
||||
//指定外部依赖 |
||||
dependencies{ |
||||
compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') |
||||
compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") |
||||
|
||||
testCompile 'junit:junit:4.12' |
||||
} |
||||
//将非.java 文件复制到classes文件夹下参与打包 |
||||
task copyFile(type:Copy,dependsOn:compileJava){ |
||||
copy{ |
||||
from ("${srcDir}/src"){ |
||||
exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' |
||||
|
||||
} |
||||
into 'build/classes/main' |
||||
} |
||||
|
||||
} |
||||
|
||||
//压缩项目中的js文件 |
||||
task compressJS{ |
||||
ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ |
||||
classpath { |
||||
fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') |
||||
} |
||||
} |
||||
ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ |
||||
fileset (dir:"${srcDir}/src"){ |
||||
include (name:'**/*.js') |
||||
include (name:'**/*.css') |
||||
} |
||||
|
||||
} |
||||
} |
||||
jar.dependsOn compressJS |
||||
|
@ -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); |
||||
} |
||||
}; |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue