Browse Source

Merge pull request #1087 in DESIGN/design from ~HUGH.C/design:feature/10.0 to feature/10.0

* commit '0b4c7d51fd699c65b76a5a54da5222dd40dc3852':
  REPORT-20329 sonar问题修复
  REPORT-20981 去掉import *
  REPORT-20981 模板版本管理减少磁盘占用
research/11.0
Hugh.C 5 years ago
parent
commit
43de526ad5
  1. 290
      designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java
  2. 2
      designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java
  3. 3
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java
  4. 3
      designer-chart/src/main/java/com/fr/van/chart/multilayer/VanChartMultiPiePlotPane.java
  5. 3
      designer-chart/src/main/java/com/fr/van/chart/multilayer/data/MultiPiePlotReportDataContentPane.java
  6. 3
      designer-chart/src/main/java/com/fr/van/chart/multilayer/data/MultiPiePlotTableDataContentPane.java
  7. 3
      designer-chart/src/main/java/com/fr/van/chart/pie/VanChartPiePlotPane.java
  8. 3
      designer-chart/src/main/java/com/fr/van/chart/radar/VanChartRadarPlotPane.java
  9. 3
      designer-chart/src/main/java/com/fr/van/chart/range/component/LegendGradientBar.java
  10. 3
      designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterPlotPane.java
  11. 3
      designer-chart/src/main/java/com/fr/van/chart/structure/desinger/type/VanChartStructureTypePane.java
  12. 3
      designer-chart/src/main/java/com/fr/van/chart/treemap/VanChartTreeMapPlotPane.java
  13. 3
      designer-form/src/main/java/com/fr/design/designer/beans/AdapterBus.java
  14. 28
      designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java
  15. 7
      designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java
  16. 7
      designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java

290
designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java

@ -1,6 +1,6 @@
package com.fr.design.actions.file; package com.fr.design.actions.file;
import com.fr.base.BaseUtils; import com.fr.cluster.engine.base.FineClusterConfig;
import com.fr.config.Configuration; import com.fr.config.Configuration;
import com.fr.config.ServerPreferenceConfig; import com.fr.config.ServerPreferenceConfig;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
@ -18,12 +18,14 @@ import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIDictionaryComboBox; import com.fr.design.gui.icombobox.UIDictionaryComboBox;
import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.ActionLabel;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.iprogressbar.UIProgressBarUI;
import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.layout.VerticalFlowLayout;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.vcs.VcsConfigManager; import com.fr.design.mainframe.vcs.VcsConfigManager;
import com.fr.design.mainframe.vcs.common.VcsHelper; import com.fr.design.mainframe.vcs.common.VcsHelper;
@ -36,22 +38,39 @@ import com.fr.general.IOUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.general.log.Log4jConfig; import com.fr.general.log.Log4jConfig;
import com.fr.locale.InterProviderFactory; import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.Constants;
import com.fr.stable.StringUtils;
import com.fr.third.apache.log4j.Level; import com.fr.third.apache.log4j.Level;
import com.fr.transaction.Configurations; import com.fr.transaction.Configurations;
import com.fr.transaction.Worker; import com.fr.transaction.Worker;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.vcs.VcsOperator;
import com.fr.workspace.server.vcs.git.config.GcConfig;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.BoxLayout;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JDialog;
import javax.swing.Timer;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.Dialog;
import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Font; import java.awt.Font;
import java.awt.FlowLayout;
import java.awt.Window; import java.awt.Window;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -59,9 +78,15 @@ import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.io.File; import java.io.File;
import java.text.DecimalFormat;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
/** /**
* 选项对话框 * 选项对话框
@ -148,8 +173,19 @@ public class PreferencePane extends BasicPane {
private UICheckBox saveCommitCheckBox; private UICheckBox saveCommitCheckBox;
private UICheckBox useIntervalCheckBox; private UICheckBox useIntervalCheckBox;
private IntegerEditor saveIntervalEditor; private IntegerEditor saveIntervalEditor;
private UICheckBox gcEnableCheckBox;
private UIButton gcButton;
private UILabel remindVcsLabel; private UILabel remindVcsLabel;
private JDialog gcDialog;
private UILabel gcMessage = new UILabel();
private JPanel gcDialogDownPane = new JPanel();
private JPanel gcProgressBarPanel = new JPanel();
private JProgressBar gcProgressBar;
private Timer gcProgressTimer;
private UIButton gcOkButton = new UIButton(Toolkit.i18nText("Fine-Design_Report_OK"));
private UIButton gcCancelButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Cancel"));
public PreferencePane() { public PreferencePane() {
@ -230,6 +266,10 @@ public class PreferencePane extends BasicPane {
saveCommitCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Vcs_No_Delete")); saveCommitCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Vcs_No_Delete"));
saveIntervalEditor = new IntegerEditor(60); saveIntervalEditor = new IntegerEditor(60);
useIntervalCheckBox = new UICheckBox(); useIntervalCheckBox = new UICheckBox();
//gc面板
JPanel gcControlPane = createGcControlPane();
JPanel enableVcsPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); JPanel enableVcsPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout());
enableVcsPanel.add(vcsEnableCheckBox); enableVcsPanel.add(vcsEnableCheckBox);
enableVcsPanel.add(remindVcsLabel); enableVcsPanel.add(remindVcsLabel);
@ -262,6 +302,36 @@ public class PreferencePane extends BasicPane {
vcsPane.add(enableVcsPanel); vcsPane.add(enableVcsPanel);
vcsPane.add(intervalPanel); vcsPane.add(intervalPanel);
vcsPane.add(saveCommitCheckBox); vcsPane.add(saveCommitCheckBox);
vcsPane.add(gcControlPane);
}
/**
* 模创建板版本gc 配置操作面板
*
* @return 面板
*/
private JPanel createGcControlPane() {
//gc面板
JPanel gcControlPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
JPanel gcButtonPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 40, 0));
gcEnableCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Vcs_Storage_Optimization"));
gcButton = initGcButton();
gcButtonPane.add(gcButton);
gcControlPane.add(gcEnableCheckBox);
gcControlPane.add(gcButtonPane);
gcButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
tryGc();
}
});
//集群下禁用
if (FineClusterConfig.getInstance().isCluster()) {
gcEnableCheckBox.setEnabled(false);
gcButton.setEnabled(false);
}
return gcControlPane;
} }
private void createFunctionPane(JPanel generalPane) { private void createFunctionPane(JPanel generalPane) {
@ -629,6 +699,7 @@ public class PreferencePane extends BasicPane {
saveIntervalEditor.setValue(vcsConfigManager.getSaveInterval()); saveIntervalEditor.setValue(vcsConfigManager.getSaveInterval());
saveCommitCheckBox.setSelected(vcsConfigManager.isSaveCommit()); saveCommitCheckBox.setSelected(vcsConfigManager.isSaveCommit());
useIntervalCheckBox.setSelected(vcsConfigManager.isUseInterval()); useIntervalCheckBox.setSelected(vcsConfigManager.isUseInterval());
gcEnableCheckBox.setSelected(GcConfig.getInstance().isGcEnable());
supportCellEditorDefCheckBox.setSelected(designerEnvManager.isSupportCellEditorDef()); supportCellEditorDefCheckBox.setSelected(designerEnvManager.isSupportCellEditorDef());
@ -726,6 +797,18 @@ public class PreferencePane extends BasicPane {
vcsConfigManager.setVcsEnable(this.vcsEnableCheckBox.isSelected()); vcsConfigManager.setVcsEnable(this.vcsEnableCheckBox.isSelected());
vcsConfigManager.setSaveCommit(this.saveCommitCheckBox.isSelected()); vcsConfigManager.setSaveCommit(this.saveCommitCheckBox.isSelected());
vcsConfigManager.setUseInterval(this.useIntervalCheckBox.isSelected()); vcsConfigManager.setUseInterval(this.useIntervalCheckBox.isSelected());
Configurations.update(new Worker() {
@Override
public void run() {
GcConfig.getInstance().setGcEnable(gcEnableCheckBox.isSelected());
}
@Override
public Class<? extends Configuration>[] targets() {
return new Class[]{GcConfig.class};
}
});
if (this.autoPushUpdateCheckBox != null) { if (this.autoPushUpdateCheckBox != null) {
designerEnvManager.setAutoPushUpdateEnabled(this.autoPushUpdateCheckBox.isSelected()); designerEnvManager.setAutoPushUpdateEnabled(this.autoPushUpdateCheckBox.isSelected());
} }
@ -762,7 +845,6 @@ public class PreferencePane extends BasicPane {
} }
// 如果语言设置改变了,则显示重启对话框 // 如果语言设置改变了,则显示重启对话框
public void showRestartDialog() { public void showRestartDialog() {
if (!languageChanged) { if (!languageChanged) {
@ -797,4 +879,208 @@ public class PreferencePane extends BasicPane {
public BasicDialog showWindow(Window window, DialogActionListener l) { public BasicDialog showWindow(Window window, DialogActionListener l) {
return showWindowWithCustomSize(window, l, new Dimension(BasicDialog.DEFAULT.width, this.getPreferredSize().height + OFFSET_HEIGHT)); return showWindowWithCustomSize(window, l, new Dimension(BasicDialog.DEFAULT.width, this.getPreferredSize().height + OFFSET_HEIGHT));
} }
private void tryGc() {
//停止gc线程时使用
final String uuid = String.valueOf(UUID.randomUUID());
final SwingWorker<Boolean, Void> worker = new SwingWorker<Boolean, Void>() {
private long size = 0;
@Override
protected Boolean doInBackground() {
size = WorkContext.getCurrent().get(VcsOperator.class).immediatelyGc(uuid);
return true;
}
@Override
protected void done() {
try {
get();
} catch (InterruptedException | ExecutionException e) {
FineLoggerFactory.getLogger().error(e, e.getMessage());
}
stopGcProgressTimer();
gcMessage.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Reduce_File_Size") + fileSizeConvert(size));
if (null != gcProgressBar) {
gcProgressBarPanel.remove(gcProgressBar);
}
if (null != gcDialog) {
gcDialog.setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Joption_News"));
}
gcDialogDownPane.remove(gcCancelButton);
gcDialogDownPane.revalidate();
gcDialogDownPane.repaint();
gcDialogDownPane.add(gcOkButton);
}
};
worker.execute();
initGcDialog();
gcOkButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
gcDialog.dispose();
}
});
gcCancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stopGcProgressTimer();
//中断gc 线程
if (StringUtils.isNotEmpty(uuid)) {
WorkContext.getCurrent().get(VcsOperator.class).cancelImmediatelyGc(uuid);
}
gcDialog.dispose();
worker.cancel(true);
}
});
gcDialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
stopGcProgressTimer();
worker.cancel(true);
}
});
gcDialog.setVisible(true);
gcDialog.dispose();
}
/**
* 初始化 gc 对话框
*/
private void initGcDialog() {
gcDialog = new JDialog((Dialog) SwingUtilities.getWindowAncestor(PreferencePane.this), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Clean_Progress") + "...", true);
gcDialog.setSize(new Dimension(340, 140));
JPanel jp = new JPanel();
//中上
JPanel gcUpPane = new JPanel();
gcUpPane.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
gcUpPane.add(new UILabel(UIManager.getIcon("OptionPane.informationIcon")));
gcProgressBarPanel = createProgressBarPane();
gcUpPane.add(gcProgressBarPanel);
//中下
gcDialogDownPane = new JPanel();
gcDialogDownPane.setLayout(new FlowLayout(FlowLayout.CENTER, 6, 0));
gcDialogDownPane.add(gcCancelButton);
jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
jp.add(gcUpPane);
jp.add(gcDialogDownPane);
gcDialog.add(jp);
gcDialog.setResizable(false);
gcDialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(PreferencePane.this));
}
/**
* gc 进度条面板
*
* @return
*/
private JPanel createProgressBarPane() {
JPanel jp = new JPanel();
VerticalFlowLayout layout = new VerticalFlowLayout();
layout.setAlignLeft(true);
jp.setLayout(layout);
//提示
gcMessage = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Vcs_Cleaning"));
// 创建一个进度条
gcProgressBar = createGcProgressBar(0, 30, 240, 15, Color.GREEN);
gcProgressTimer = createGcProgressTimer(500, gcProgressBar);
gcProgressTimer.start();
jp.add(gcMessage);
jp.add(gcProgressBar);
return jp;
}
/**
* 创建 gc 进度条
*
* @param min 最小值
* @param max 最大值
* @param width 宽度
* @param height 高度
* @param color 填充的图片颜色
* @return
*/
private JProgressBar createGcProgressBar(int min, int max, int width, int height, Color color) {
// 创建一个进度条
JProgressBar progressBar = new JProgressBar(min, max);
UIProgressBarUI progressBarUI = new UIProgressBarUI();
progressBar.setUI(progressBarUI);
//颜色(进度条里的小方块)
progressBar.setForeground(color);
progressBar.setOpaque(false);
progressBar.setPreferredSize(new Dimension(width, height));
return progressBar;
}
/**
* @param delay 每隔 delay 毫秒更新进度
* @param progressBar 要更新的进度条
* @return
*/
private Timer createGcProgressTimer(int delay, final JProgressBar progressBar) {
if (null == progressBar) {
return null;
}
// 模拟延时操作进度, 每隔 delay / 1000 秒更新进度
Timer timer = new Timer(delay, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int currentProgress = progressBar.getValue() + 1;
if (currentProgress > progressBar.getMaximum()) {
currentProgress = progressBar.getMinimum();
}
progressBar.setValue(currentProgress);
}
});
return timer;
}
/**
* 停止进度条模拟计时器
*/
private void stopGcProgressTimer() {
if (null == gcProgressTimer) {
return;
}
gcProgressTimer.stop();
}
/**
* 将字节转换成 KB or MB or GB 保留两位小数
*
* @param size
* @return
*/
private String fileSizeConvert(long size) {
DecimalFormat df = new DecimalFormat("0.00");
double n = 1024d;
if (size > Math.pow(n, 3)) {
return df.format(size / Math.pow(n, 3)) + "GB";
}
if (size > Math.pow(n, 2)) {
return df.format(size / Math.pow(n, 2)) + "MB";
}
return new StringBuilder().append(df.format(size / n)).append("KB").toString();
}
/**
* 立即清理的Button
*
* @return
*/
private UIButton initGcButton() {
UIButton gcButton = new UIButton(Toolkit.i18nText("Fine-Design_Vcs_Clean"));
gcButton.setPreferredSize(new Dimension(100, 15));
gcButton.setRoundBorder(true, Constants.LEFT);
return gcButton;
}
} }

2
designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java

@ -20,6 +20,7 @@ import com.fr.stable.project.ProjectConstants;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.server.vcs.VcsOperator; import com.fr.workspace.server.vcs.VcsOperator;
import com.fr.workspace.server.vcs.filesystem.VcsFileSystem; import com.fr.workspace.server.vcs.filesystem.VcsFileSystem;
import com.fr.workspace.server.vcs.git.config.GcConfig;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
@ -146,6 +147,7 @@ public class VcsHelper implements JTemplateActionListener {
if (needDeleteVersion(oldEntity)) { if (needDeleteVersion(oldEntity)) {
operator.deleteVersion(oldEntity.getFilename(), oldEntity.getVersion()); operator.deleteVersion(oldEntity.getFilename(), oldEntity.getVersion());
} }
operator.gc(true);
} }
}).start(); }).start();

3
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java

@ -146,6 +146,9 @@ public class VanChartMapPlotPane extends AbstractVanChartTypePane {
} }
} }
Plot cloned = null; Plot cloned = null;
if (null == newPlot) {
return cloned;
}
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {

3
designer-chart/src/main/java/com/fr/van/chart/multilayer/VanChartMultiPiePlotPane.java

@ -49,6 +49,9 @@ public class VanChartMultiPiePlotPane extends AbstractVanChartTypePane {
} }
Plot cloned = null; Plot cloned = null;
if (null == newPlot) {
return cloned;
}
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {

3
designer-chart/src/main/java/com/fr/van/chart/multilayer/data/MultiPiePlotReportDataContentPane.java

@ -14,6 +14,7 @@ import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane;
import com.fr.plugin.chart.multilayer.data.MultiPieReportDataDefinition; import com.fr.plugin.chart.multilayer.data.MultiPieReportDataDefinition;
import com.fr.stable.AssistUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -81,7 +82,7 @@ public class MultiPiePlotReportDataContentPane extends AbstractReportDataContent
@Override @Override
public void setTextFieldValue(double value) { public void setTextFieldValue(double value) {
//如果为0,则没有改变值 //如果为0,则没有改变值
if (value == 0){ if (AssistUtils.equals(0, value)) {
return; return;
} }
super.setTextFieldValue(value); super.setTextFieldValue(value);

3
designer-chart/src/main/java/com/fr/van/chart/multilayer/data/MultiPiePlotTableDataContentPane.java

@ -18,6 +18,7 @@ import com.fr.general.ComparatorUtils;
import com.fr.plugin.chart.multilayer.data.MultiPieValueDefinition; import com.fr.plugin.chart.multilayer.data.MultiPieValueDefinition;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.AssistUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.TableLayout4VanChartHelper;
@ -170,7 +171,7 @@ public class MultiPiePlotTableDataContentPane extends AbstractTableDataContentPa
@Override @Override
public void setTextFieldValue(double value) { public void setTextFieldValue(double value) {
//如果为0,则没有改变值 //如果为0,则没有改变值
if (value == 0){ if (AssistUtils.equals(0, value)) {
return; return;
} }
super.setTextFieldValue(value); super.setTextFieldValue(value);

3
designer-chart/src/main/java/com/fr/van/chart/pie/VanChartPiePlotPane.java

@ -62,6 +62,9 @@ public class VanChartPiePlotPane extends AbstractVanChartTypePane {
} }
Plot cloned = null; Plot cloned = null;
if (null == newPlot) {
return cloned;
}
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {

3
designer-chart/src/main/java/com/fr/van/chart/radar/VanChartRadarPlotPane.java

@ -59,6 +59,9 @@ public class VanChartRadarPlotPane extends AbstractVanChartTypePane {
} }
Plot cloned = null; Plot cloned = null;
if (null == newPlot) {
return cloned;
}
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {

3
designer-chart/src/main/java/com/fr/van/chart/range/component/LegendGradientBar.java

@ -13,6 +13,7 @@ import com.fr.design.style.color.ColorSelectDialog;
import com.fr.design.style.color.ColorSelectable; import com.fr.design.style.color.ColorSelectable;
import com.fr.plugin.chart.range.GradualIntervalConfig; import com.fr.plugin.chart.range.GradualIntervalConfig;
import com.fr.plugin.chart.range.glyph.GradualColorDist; import com.fr.plugin.chart.range.glyph.GradualColorDist;
import com.fr.stable.AssistUtils;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
@ -224,7 +225,7 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI
//防止位置重复,设置偏移 //防止位置重复,设置偏移
private int setOffset(int x, int index, int offset) { private int setOffset(int x, int index, int offset) {
for (int i = 0; i < selectColorPointBtnList.size(); i++){ for (int i = 0; i < selectColorPointBtnList.size(); i++){
if (i != index && x == selectColorPointBtnList.get(i).getX()){ if (i != index && AssistUtils.equals(x, selectColorPointBtnList.get(i).getX())) {
if (x >= (min+max)/2) { if (x >= (min+max)/2) {
x -= offset; x -= offset;
x = setOffset(x, index, offset+OFFSETSTEP); x = setOffset(x, index, offset+OFFSETSTEP);

3
designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterPlotPane.java

@ -61,6 +61,9 @@ public class VanChartScatterPlotPane extends AbstractVanChartTypePane {
} }
} }
Plot cloned = null; Plot cloned = null;
if (null == newPlot) {
return cloned;
}
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {

3
designer-chart/src/main/java/com/fr/van/chart/structure/desinger/type/VanChartStructureTypePane.java

@ -57,6 +57,9 @@ public class VanChartStructureTypePane extends AbstractVanChartTypePane {
} }
Plot cloned = null; Plot cloned = null;
if (null == newPlot) {
return cloned;
}
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {

3
designer-chart/src/main/java/com/fr/van/chart/treemap/VanChartTreeMapPlotPane.java

@ -45,6 +45,9 @@ public class VanChartTreeMapPlotPane extends VanChartMultiPiePlotPane {
} }
Plot cloned = null; Plot cloned = null;
if (null == newPlot) {
return cloned;
}
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {

3
designer-form/src/main/java/com/fr/design/designer/beans/AdapterBus.java

@ -41,6 +41,9 @@ public class AdapterBus {
*/ */
public static ComponentAdapter getComponentAdapter(FormDesigner designer, JComponent creator) { public static ComponentAdapter getComponentAdapter(FormDesigner designer, JComponent creator) {
JComponent jcomponent = getJComponent(creator); JComponent jcomponent = getJComponent(creator);
if (null == jcomponent) {
return null;
}
ComponentAdapter adapter = (ComponentAdapter) jcomponent.getClientProperty("component.adapter"); ComponentAdapter adapter = (ComponentAdapter) jcomponent.getClientProperty("component.adapter");
if (adapter == null) { if (adapter == null) {
adapter = new CompositeComponentAdapter(designer, creator); adapter = new CompositeComponentAdapter(designer, creator);

28
designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java

@ -176,16 +176,21 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
* @return 控件. * @return 控件.
*/ */
public JComponent createToolPane(final BaseJForm jform, final FormDesigner formDesigner) { public JComponent createToolPane(final BaseJForm jform, final FormDesigner formDesigner) {
getDesignerEditorTarget().addStopEditingListener(new PropertyChangeAdapter() { MiddleChartComponent middleChartComponent = getDesignerEditorTarget();
public void propertyChange() { if (null != middleChartComponent) {
JComponent pane = jform.getEditingPane(); middleChartComponent.addStopEditingListener(new PropertyChangeAdapter() {
if (pane instanceof BaseChartPropertyPane) { public void propertyChange() {
((BaseChartPropertyPane) pane).setSupportCellData(true); JComponent pane = jform.getEditingPane();
((BaseChartPropertyPane) pane).populateChartPropertyPane(getDesignerEditorTarget().update(), formDesigner); if (pane instanceof BaseChartPropertyPane) {
((BaseChartPropertyPane) pane).setSupportCellData(true);
MiddleChartComponent middleChartComponent = getDesignerEditorTarget();
if (null != middleChartComponent) {
((BaseChartPropertyPane) pane).populateChartPropertyPane(middleChartComponent.update(), formDesigner);
}
}
} }
} });
}); }
if (isEditing){ if (isEditing){
final BaseChartPropertyPane propertyPane = DesignModuleFactory.getChartPropertyPane(); final BaseChartPropertyPane propertyPane = DesignModuleFactory.getChartPropertyPane();
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
@ -193,7 +198,10 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
public void run() { public void run() {
if (getDesignerEditor().getEditorTarget() != null) { if (getDesignerEditor().getEditorTarget() != null) {
propertyPane.setSupportCellData(true); propertyPane.setSupportCellData(true);
propertyPane.populateChartPropertyPane(getDesignerEditorTarget().update(), formDesigner); MiddleChartComponent middleChartComponent = getDesignerEditorTarget();
if (null != middleChartComponent) {
propertyPane.populateChartPropertyPane(middleChartComponent.update(), formDesigner);
}
} }
} }
}); });

7
designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java

@ -31,6 +31,7 @@ import com.fr.general.FRScreen;
import com.fr.general.IOUtils; import com.fr.general.IOUtils;
import com.fr.share.ShareConstants; import com.fr.share.ShareConstants;
import com.fr.stable.AssistUtils;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import javax.swing.Icon; import javax.swing.Icon;
@ -108,7 +109,7 @@ public class XWAbsoluteLayout extends XLayoutContainer {
Toolkit toolkit = Toolkit.getDefaultToolkit(); Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension scrnsize = toolkit.getScreenSize(); Dimension scrnsize = toolkit.getScreenSize();
double screenValue = FRScreen.getByDimension(scrnsize).getValue(); double screenValue = FRScreen.getByDimension(scrnsize).getValue();
if (screenValue != FormArea.DEFAULT_SLIDER) { if (!AssistUtils.equals(screenValue, FormArea.DEFAULT_SLIDER)) {
this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER);
} }
} }
@ -167,7 +168,7 @@ public class XWAbsoluteLayout extends XLayoutContainer {
* 界面容器大小不是默认的时处理控件的BoundsWidget且避免出现空隙 * 界面容器大小不是默认的时处理控件的BoundsWidget且避免出现空隙
*/ */
private Rectangle dealWidgetBound(Rectangle rec) { private Rectangle dealWidgetBound(Rectangle rec) {
if (containerPercent == 1.0) { if (AssistUtils.equals(1.0, containerPercent)) {
return rec; return rec;
} }
rec.x = (int) (rec.x / containerPercent); rec.x = (int) (rec.x / containerPercent);
@ -244,7 +245,7 @@ public class XWAbsoluteLayout extends XLayoutContainer {
@Override @Override
public void updateChildBound(int minHeight) { public void updateChildBound(int minHeight) {
double prevContainerPercent = FRScreen.getByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER; double prevContainerPercent = FRScreen.getByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER;
if (toData().getCompState() == 0 && prevContainerPercent != containerPercent) { if (toData().getCompState() == 0 && !AssistUtils.equals(containerPercent, prevContainerPercent)) {
for (int i = 0; i < this.getComponentCount(); i++) { for (int i = 0; i < this.getComponentCount(); i++) {
XCreator creator = getXCreator(i); XCreator creator = getXCreator(i);
Rectangle rec = new Rectangle(creator.getBounds()); Rectangle rec = new Rectangle(creator.getBounds());

7
designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java

@ -21,6 +21,7 @@ import com.fr.form.ui.container.WLayout;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
import com.fr.general.FRScreen; import com.fr.general.FRScreen;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.AssistUtils;
import edu.emory.mathcs.backport.java.util.Arrays; import edu.emory.mathcs.backport.java.util.Arrays;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
@ -72,7 +73,7 @@ public class XWFitLayout extends XLayoutContainer {
Toolkit toolkit = Toolkit.getDefaultToolkit(); Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension scrnsize = toolkit.getScreenSize(); Dimension scrnsize = toolkit.getScreenSize();
double screenValue = FRScreen.getByDimension(scrnsize).getValue(); double screenValue = FRScreen.getByDimension(scrnsize).getValue();
if(screenValue != FormArea.DEFAULT_SLIDER){ if (!AssistUtils.equals(FormArea.DEFAULT_SLIDER, screenValue)) {
this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER);
} }
} }
@ -717,7 +718,7 @@ public class XWFitLayout extends XLayoutContainer {
* 界面容器大小不是默认的时处理控件的BoundsWidget且避免出现空隙 * 界面容器大小不是默认的时处理控件的BoundsWidget且避免出现空隙
*/ */
private Rectangle dealWidgetBound(Rectangle rec) { private Rectangle dealWidgetBound(Rectangle rec) {
if (containerPercent == 1.0) { if (AssistUtils.equals(1.0, containerPercent)) {
return rec; return rec;
} }
rec.x = (int) (rec.x/containerPercent); rec.x = (int) (rec.x/containerPercent);
@ -731,7 +732,7 @@ public class XWFitLayout extends XLayoutContainer {
* 界面容器大小不是默认的时恢复组件实际大小 * 界面容器大小不是默认的时恢复组件实际大小
*/ */
private Rectangle dealWgtBound(Rectangle rec) { private Rectangle dealWgtBound(Rectangle rec) {
if (containerPercent == 1.0) { if (AssistUtils.equals(1.0, containerPercent)) {
return rec; return rec;
} }
rec.x = (int) (rec.x * containerPercent); rec.x = (int) (rec.x * containerPercent);

Loading…
Cancel
Save