Browse Source

Merge branch 'release/10.0' of http://cloud.finedevelop.com:2015/scm/~hades/design into release/10.0

bugfix/10.0
Hades 5 years ago
parent
commit
3b14961c20
  1. 15
      designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java
  2. 14
      designer-base/src/main/java/com/fr/design/utils/gui/UIComponentUtils.java
  3. 93
      designer-base/src/main/java/com/fr/file/AbstractFILE.java
  4. 2
      designer-base/src/main/java/com/fr/file/FileFILE.java
  5. 102
      designer-base/src/main/java/com/fr/file/RenameExportFILE.java
  6. 34
      designer-base/src/main/java/com/fr/file/StashedFILE.java
  7. 55
      designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartReportDataPane.java
  8. 44
      designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java
  9. 14
      designer-chart/src/main/java/com/fr/van/chart/designer/style/HeatMapRangeLegendPane.java
  10. 18
      designer-chart/src/main/java/com/fr/van/chart/range/component/GradualIntervalConfigPane.java

15
designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java

@ -1,7 +1,7 @@
package com.fr.design.actions.file.export;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.actions.JTemplateAction;
import com.fr.design.base.mode.DesignModeContext;
import com.fr.design.gui.iprogressbar.FRProgressBar;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext;
@ -9,6 +9,7 @@ import com.fr.design.mainframe.JTemplate;
import com.fr.exception.RemoteDesignPermissionDeniedException;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.file.RenameExportFILE;
import com.fr.file.filter.ChooseFileFilter;
import com.fr.io.exporter.DesignExportType;
import com.fr.io.exporter.ExporterKey;
@ -92,12 +93,17 @@ public abstract class AbstractExportAction<E extends JTemplate<?, ?>> extends JT
int saveValue = fileChooserPane.showSaveDialog(DesignerContext.getDesignerFrame(), "." + this.getDefaultExtension());
if (saveValue == FILEChooserPane.JOPTIONPANE_OK_OPTION || saveValue == FILEChooserPane.OK_OPTION) {
FILE target = fileChooserPane.getSelectedFILE();
//rename 方式导出
target = RenameExportFILE.create(target);
try {
target.mkfile();
} catch (Exception exp) {
FineLoggerFactory.getLogger().error("Error In Make New File", exp);
}
FineLoggerFactory.getLogger().info("\"" + target.getName() + "\"" + Toolkit.i18nText("Fine-Design_Report_Prepare_Export") + "!");
FineLoggerFactory.getLogger().info(
"\"" + RenameExportFILE.recoverFileName(target.getName()) + "\"" +
Toolkit.i18nText("Fine-Design_Report_Prepare_Export") + "!"
);
progressbar = new FRProgressBar(
createExportWork(getSource(), target, para),
@ -124,7 +130,7 @@ public abstract class AbstractExportAction<E extends JTemplate<?, ?>> extends JT
private boolean processNotSaved() {
//当前编辑的模板
E e = getEditingComponent();
if (!e.isALLSaved() && !DesignerMode.isVcsMode()) {
if (!e.isALLSaved() && !DesignModeContext.isVcsMode()) {
e.stopEditing();
int returnVal = JOptionPane.showConfirmDialog(
DesignerContext.getDesignerFrame(),
@ -149,7 +155,7 @@ public abstract class AbstractExportAction<E extends JTemplate<?, ?>> extends JT
private SwingWorker createExportWork(final FILE source, final FILE target, final Map<String, Object> parameterMap) {
final String path = source.getPath();
final String name = target.getName();
final String name = RenameExportFILE.recoverFileName(target.getName());
return new SwingWorker<Void, Void>() {
@ -162,7 +168,6 @@ public abstract class AbstractExportAction<E extends JTemplate<?, ?>> extends JT
dealExporter(outputStream, path, parameterMap);
this.setProgress(80);
outputStream.flush();
outputStream.close();
this.setProgress(100);
FineLoggerFactory.getLogger().info("\"" + name + "\"" + Toolkit.i18nText("Fine-Design_Report_Finish_Export") + "!");

14
designer-base/src/main/java/com/fr/design/utils/gui/UIComponentUtils.java

@ -2,6 +2,8 @@ package com.fr.design.utils.gui;
import com.fr.design.gui.core.UITextComponent;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext;
import com.fr.stable.StringUtils;
import javax.swing.JComponent;
@ -9,6 +11,7 @@ import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.util.Locale;
/**
* 包含 UI 组件相关的工具方法
@ -45,15 +48,18 @@ public class UIComponentUtils {
}
private static void insertPrefixToText(UITextComponent comp, String prefix) {
if (comp == null) {
if (comp == null || ComparatorUtils.equals(Locale.CHINA, GeneralContext.getLocale())) {
// 最初是为了解决日文国际化显示不全,而增加的换行功能。中文不需要换行。
// windows 下,字体为宋体时,对于 JLabel、JCheckBox、JButton 等控件,使用<html>换行后,文字会下移,可能导致文字下半部分被截断。
// 因此中文直接返回,不加换行逻辑。
return;
}
String text = comp.getText();
if (StringUtils.isEmpty(comp.getText()) || text.startsWith(HTML_TAG)) {
String text = comp.getText();
if (StringUtils.isEmpty(text) || text.startsWith(HTML_TAG)) {
return;
}
comp.setText(prefix + comp.getText());
comp.setText(prefix + text);
}
/**

93
designer-base/src/main/java/com/fr/file/AbstractFILE.java

@ -0,0 +1,93 @@
package com.fr.file;
import javax.swing.Icon;
import java.io.InputStream;
import java.io.OutputStream;
public abstract class AbstractFILE implements FILE {
@Override
public String prefix() {
throw new UnsupportedOperationException();
}
@Override
public boolean isDirectory() {
throw new UnsupportedOperationException();
}
@Override
public String getName() {
throw new UnsupportedOperationException();
}
@Override
public Icon getIcon() {
throw new UnsupportedOperationException();
}
@Override
public String getPath() {
throw new UnsupportedOperationException();
}
@Override
public void setPath(String path) {
throw new UnsupportedOperationException();
}
@Override
public FILE getParent() {
throw new UnsupportedOperationException();
}
@Override
public FILE[] listFiles() {
throw new UnsupportedOperationException();
}
@Override
public boolean createFolder(String name) {
throw new UnsupportedOperationException();
}
@Override
public boolean mkfile() throws Exception {
throw new UnsupportedOperationException();
}
@Override
public boolean exists() {
throw new UnsupportedOperationException();
}
@Override
public void closeTemplate() throws Exception {
throw new UnsupportedOperationException();
}
@Override
public InputStream asInputStream() throws Exception {
throw new UnsupportedOperationException();
}
@Override
public OutputStream asOutputStream() throws Exception {
throw new UnsupportedOperationException();
}
@Override
public String getEnvFullName() {
throw new UnsupportedOperationException();
}
@Override
public boolean isMemFile() {
throw new UnsupportedOperationException();
}
@Override
public boolean isEnvFile() {
throw new UnsupportedOperationException();
}
}

2
designer-base/src/main/java/com/fr/file/FileFILE.java

@ -201,7 +201,7 @@ public class FileFILE implements FILE {
OutputStream out;
try {
StableUtils.makesureFileExist(file);
out = new FileOutputStream(file, true);
out = new FileOutputStream(file, false);
} catch (Exception e) {
throw SessionLocalManager.createLogPackedException(e);
}

102
designer-base/src/main/java/com/fr/file/RenameExportFILE.java

@ -0,0 +1,102 @@
package com.fr.file;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.third.org.apache.commons.io.FileUtils;
import com.fr.web.session.SessionLocalManager;
import javax.swing.Icon;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class RenameExportFILE extends AbstractFILE {
private static final String EXPORT_SUFFIX = ".FRExportTmp";
private FILE file;
private RenameExportFILE(FILE file) {
this.file = new FileFILE(new File(file.getPath() + EXPORT_SUFFIX));
}
public static RenameExportFILE create(FILE file) {
return new RenameExportFILE(file);
}
public static String recoverFileName(String fileName) {
if (StringUtils.isEmpty(fileName) || !fileName.endsWith(EXPORT_SUFFIX)) {
return fileName;
}
return fileName.substring(0, fileName.lastIndexOf(EXPORT_SUFFIX));
}
@Override
public String prefix() {
return file.prefix();
}
@Override
public boolean isDirectory() {
return false;
}
@Override
public String getName() {
return file.getName();
}
@Override
public Icon getIcon() {
return null;
}
@Override
public String getPath() {
return file.getPath();
}
@Override
public FILE getParent() {
return file.getParent();
}
@Override
public boolean mkfile() throws Exception {
return file.mkfile();
}
@Override
public boolean exists() {
return file.exists();
}
@Override
public OutputStream asOutputStream() throws Exception {
final File localeFile = new File(file.getPath());
OutputStream out;
try {
StableUtils.makesureFileExist(localeFile);
out = new FileOutputStream(localeFile, false) {
@Override
public void close() throws IOException {
super.close();
String path = file.getPath();
if (localeFile.exists()) {
FileUtils.copyFile(localeFile, new File(recoverFileName(path)));
if (localeFile.getPath().endsWith(EXPORT_SUFFIX)) {
FileUtils.forceDelete(localeFile);
}
}
}
};
} catch (Exception e) {
throw SessionLocalManager.createLogPackedException(e);
}
return out;
}
}

34
designer-base/src/main/java/com/fr/file/StashedFILE.java

@ -1,15 +1,13 @@
package com.fr.file;
import javax.swing.Icon;
import javax.transaction.NotSupportedException;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 切换环境用于暂存的文件类型
*/
public class StashedFILE implements FILE {
public class StashedFILE extends AbstractFILE {
private FILE file;
private byte[] content;
@ -44,31 +42,6 @@ public class StashedFILE implements FILE {
return file.getPath();
}
@Override
public void setPath(String path) {
throw new UnsupportedOperationException();
}
@Override
public FILE getParent() {
throw new UnsupportedOperationException();
}
@Override
public FILE[] listFiles() {
throw new UnsupportedOperationException();
}
@Override
public boolean createFolder(String name) {
throw new UnsupportedOperationException();
}
@Override
public boolean mkfile() throws Exception {
throw new UnsupportedOperationException();
}
@Override
public boolean exists() {
return false;
@ -84,11 +57,6 @@ public class StashedFILE implements FILE {
return new ByteArrayInputStream(content);
}
@Override
public OutputStream asOutputStream() throws Exception {
throw new NotSupportedException();
}
@Override
public String getEnvFullName() {
return file.getEnvFullName();

55
designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartReportDataPane.java

@ -12,8 +12,8 @@ import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPa
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.awt.Component;
import java.awt.BorderLayout;
import java.awt.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -92,38 +92,53 @@ public abstract class AbstractExtendedChartReportDataPane<T extends AbstractData
if (chart.getFilterDefinition() instanceof ExtendedReportDataSet) {
ExtendedReportDataSet dataSet = (ExtendedReportDataSet) chart.getFilterDefinition();
AbstractDataConfig dataConfig = dataSet.getDataConfig();
if (dataConfig != null) {
populate((T) dataConfig);
populateDataSet(dataSet);
}
}
public void populateDataSet(DataSet dataSet) {
if (dataSet == null) {
return;
}
AbstractDataConfig dataConfig = dataSet.getDataConfig();
if (dataConfig != null) {
populate((T) dataConfig);
if (hasCustomFieldPane() && dataConfig.getCustomFields().size() == 2) {
populateField(seriesPane, dataConfig.getCustomFields().get(0));
populateField(valuePane, dataConfig.getCustomFields().get(1));
}
if (hasCustomFieldPane() && dataConfig.getCustomFields().size() == 2) {
populateField(seriesPane, dataConfig.getCustomFields().get(0));
populateField(valuePane, dataConfig.getCustomFields().get(1));
}
}
}
public ExtendedReportDataSet updateDataSet() {
ExtendedReportDataSet dataSet = new ExtendedReportDataSet();
AbstractDataConfig dataConfig = update();
dataSet.setDataConfig(dataConfig);
List<ExtendedField> fieldList = new ArrayList<ExtendedField>();
if (hasCustomFieldPane()) {
fieldList.add(new ExtendedField(seriesPane.updateBean()));
fieldList.add(new ExtendedField(valuePane.updateBean()));
}
dataConfig.setCustomFields(fieldList);
return dataSet;
}
@Override
public void updateBean(ChartCollection ob) {
if (ob != null) {
Chart chart = ob.getSelectedChart();
if (chart != null) {
ExtendedReportDataSet dataSet = new ExtendedReportDataSet();
AbstractDataConfig dataConfig = update();
dataSet.setDataConfig(dataConfig);
List<ExtendedField> fieldList = new ArrayList<ExtendedField>();
if (hasCustomFieldPane()) {
fieldList.add(new ExtendedField(seriesPane.updateBean()));
fieldList.add(new ExtendedField(valuePane.updateBean()));
}
dataConfig.setCustomFields(fieldList);
chart.setFilterDefinition(dataSet);
chart.setFilterDefinition(updateDataSet());
}
}
}

44
designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java

@ -93,17 +93,40 @@ public abstract class AbstractExtendedChartTableDataPane<T extends AbstractDataC
if (chart.getFilterDefinition() instanceof ExtendedTableDataSet) {
ExtendedTableDataSet dataSet = (ExtendedTableDataSet) chart.getFilterDefinition();
AbstractDataConfig dataConfig = dataSet.getDataConfig();
if (dataConfig != null) {
populate((T) dataConfig);
populateDataSet(dataSet);
if (customFieldComboBoxPane != null) {
customFieldComboBoxPane.populateBean(dataConfig);
}
}
}
public void populateDataSet(DataSet dataSet) {
if (dataSet == null) {
return;
}
AbstractDataConfig dataConfig = dataSet.getDataConfig();
if (dataConfig != null) {
populate((T) dataConfig);
if (customFieldComboBoxPane != null) {
customFieldComboBoxPane.populateBean(dataConfig);
}
}
}
public ExtendedTableDataSet updateDataSet() {
ExtendedTableDataSet dataSet = new ExtendedTableDataSet();
dataSet.setDataConfig(update());
if (customFieldComboBoxPane != null) {
customFieldComboBoxPane.updateBean(dataSet.getDataConfig());
}
return dataSet;
}
@ -113,14 +136,7 @@ public abstract class AbstractExtendedChartTableDataPane<T extends AbstractDataC
Chart chart = ob.getSelectedChart();
if (chart != null) {
ExtendedTableDataSet dataSet = new ExtendedTableDataSet();
dataSet.setDataConfig(update());
if (customFieldComboBoxPane != null) {
customFieldComboBoxPane.updateBean(dataSet.getDataConfig());
}
chart.setFilterDefinition(dataSet);
chart.setFilterDefinition(updateDataSet());
}
}
}

14
designer-chart/src/main/java/com/fr/van/chart/designer/style/HeatMapRangeLegendPane.java

@ -1,12 +1,16 @@
package com.fr.van.chart.designer.style;
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.mainframe.chart.gui.ColorSelectBoxWithOutTransparent;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.style.axis.component.MinMaxValuePaneWithOutTick;
import com.fr.van.chart.range.component.GradualIntervalConfigPane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.LegendGradientBar;
import com.fr.van.chart.range.component.SectionIntervalConfigPaneWithOutNum;
import com.fr.van.chart.range.component.SectionLegendPane;
@ -46,8 +50,12 @@ public class HeatMapRangeLegendPane extends VanChartRangeLegendPane {
protected GradualIntervalConfigPane createGradualIntervalConfigPane() {
return new GradualIntervalConfigPane(){
@Override
protected Component[][] getPaneComponents() {
return super.getPaneComponentsWithOutTheme();
protected Component[][] getPaneComponents(MinMaxValuePaneWithOutTick minMaxValuePane, ColorSelectBoxWithOutTransparent colorSelectBox, UINumberDragPane numberDragPane, LegendGradientBar legendGradientBar) {
return new Component[][]{
new Component[]{minMaxValuePane, null},
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Value_Divided_Stage")), numberDragPane},
new Component[]{null, legendGradientBar}
};
}
};
}

18
designer-chart/src/main/java/com/fr/van/chart/range/component/GradualIntervalConfigPane.java

@ -4,7 +4,6 @@ import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.mainframe.chart.gui.ColorSelectBoxWithOutTransparent;
import com.fr.plugin.chart.range.GradualIntervalConfig;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.axis.component.MinMaxValuePaneWithOutTick;
@ -23,7 +22,7 @@ public class GradualIntervalConfigPane extends JPanel{
//主题颜色
private ColorSelectBoxWithOutTransparent colorSelectBox;
//划分阶段
UINumberDragPane numberDragPane;
private UINumberDragPane numberDragPane;
//渐变色编辑器
private LegendGradientBar legendGradientBar;
@ -58,7 +57,7 @@ public class GradualIntervalConfigPane extends JPanel{
double[] col = new double[]{f, e};
double[] row = new double[]{p, p, p, p};
Component[][] components = getPaneComponents();
Component[][] components = getPaneComponents(minMaxValuePane, colorSelectBox, numberDragPane, legendGradientBar);
//控件承载面板
JPanel contentPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components,row,col);
@ -70,7 +69,10 @@ public class GradualIntervalConfigPane extends JPanel{
return new LegendGradientBar();
}
protected Component[][] getPaneComponents(){
protected Component[][] getPaneComponents(MinMaxValuePaneWithOutTick minMaxValuePane,
ColorSelectBoxWithOutTransparent colorSelectBox,
UINumberDragPane numberDragPane,
LegendGradientBar legendGradientBar) {
return new Component[][]{
new Component[]{minMaxValuePane, null},
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Subject_Color")), colorSelectBox},
@ -79,14 +81,6 @@ public class GradualIntervalConfigPane extends JPanel{
};
}
protected Component[][] getPaneComponentsWithOutTheme(){
return new Component[][]{
new Component[]{minMaxValuePane, null},
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Value_Divided_Stage")), numberDragPane},
new Component[]{null, legendGradientBar},
};
}
public void populate(GradualIntervalConfig intervalConfig){
minMaxValuePane.populate(intervalConfig.getMinAndMaxValue());

Loading…
Cancel
Save