From 418c676bd1cd7c2724c8bd7e554c479a930271f2 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Fri, 18 Aug 2017 15:14:49 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=89=93=E5=8C=85=E7=B1=BB=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=20=E9=87=8D=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/chart/custom/CustomPlotDesignerPaneFactory.java | 5 ++--- .../com/fr/plugin/chart/custom/VanChartCustomPlotPane.java | 3 +-- .../chart/custom/component/ChartImageCheckOutPane.java | 6 +++--- .../custom/component/VanChartCustomPlotSelectPane.java | 4 ++-- .../other/VanChartCustomPlotConditionAttrTabPane.java | 3 ++- .../custom/other/VanChartCustomPlotHyperlinkTabPane.java | 3 ++- .../chart/custom/style/VanChartCustomAxisAreaPane.java | 2 +- .../chart/custom/style/VanChartCustomAxisTabPane.java | 3 ++- .../chart/custom/style/VanChartCustomPlotLabelTabPane.java | 5 +++-- .../chart/custom/style/VanChartCustomPlotSeriesTabPane.java | 3 ++- .../custom/style/VanChartCustomPlotTooltipTabPane.java | 3 ++- 11 files changed, 22 insertions(+), 18 deletions(-) diff --git a/designer_chart/src/com/fr/plugin/chart/custom/CustomPlotDesignerPaneFactory.java b/designer_chart/src/com/fr/plugin/chart/custom/CustomPlotDesignerPaneFactory.java index b4f4138a4c..341149b4e4 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/CustomPlotDesignerPaneFactory.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/CustomPlotDesignerPaneFactory.java @@ -10,17 +10,16 @@ import com.fr.plugin.chart.PiePlot4VanChart; import com.fr.plugin.chart.attr.plot.VanChartAxisPlot; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.bubble.VanChartBubblePlot; -import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.bubble.data.VanChartBubblePlotTableDataContentPane; import com.fr.plugin.chart.custom.component.CustomPlotLocationPane; import com.fr.plugin.chart.custom.type.CustomPlotType; -import com.fr.plugin.chart.bubble.data.VanChartBubblePlotTableDataContentPane; -import com.fr.plugin.chart.scatter.data.VanChartScatterPlotTableDataContentPane; import com.fr.plugin.chart.designer.style.VanChartStylePane; import com.fr.plugin.chart.designer.style.axis.VanChartAxisPane; import com.fr.plugin.chart.designer.style.axis.gauge.VanChartGaugeAxisPane; import com.fr.plugin.chart.gauge.VanChartGaugePlot; import com.fr.plugin.chart.radar.VanChartRadarPlot; import com.fr.plugin.chart.scatter.VanChartScatterPlot; +import com.fr.plugin.chart.scatter.data.VanChartScatterPlotTableDataContentPane; import java.lang.reflect.Constructor; import java.util.HashMap; diff --git a/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java b/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java index 94be28fd21..7391640a60 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java @@ -11,12 +11,11 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.base.VanChartAttrLine; +import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.custom.component.VanChartCustomPlotSelectPane; import com.fr.plugin.chart.custom.type.CustomPlotType; import com.fr.plugin.chart.custom.type.CustomStyle; -import com.fr.plugin.chart.custom.CustomPlotFactory; import com.fr.plugin.chart.designer.type.AbstractVanChartTypePane; import com.fr.plugin.chart.vanchart.VanChart; diff --git a/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java b/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java index fc36decc9d..d9515ac688 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java @@ -4,7 +4,7 @@ import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; -import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; import com.fr.plugin.chart.custom.type.CustomPlotType; import javax.swing.*; @@ -42,7 +42,7 @@ public class ChartImageCheckOutPane extends BasicPane implements UIObserver { this.checkBox = new JCheckBox(); this.checkBox.setSelected(isSelected); //设置提示 - this.checkBox.setToolTipText(CustomPlotFactory.getTooltipText(this.customPlotType)); + this.checkBox.setToolTipText(CustomPlotGlyphFactory.getTooltipText(this.customPlotType)); //背景 checkBox.setIcon(new ImageIcon(getClass().getResource(getIconPath(customPlotType,isSelected)))); @@ -50,7 +50,7 @@ public class ChartImageCheckOutPane extends BasicPane implements UIObserver { } private String getIconPath(CustomPlotType customPlotType, boolean isSelected) { - return isSelected ? CustomPlotFactory.getTypeIconPath(customPlotType)[0] : CustomPlotFactory.getTypeIconPath(customPlotType)[1]; + return isSelected ? CustomPlotGlyphFactory.getTypeIconPath(customPlotType)[0] : CustomPlotGlyphFactory.getTypeIconPath(customPlotType)[1]; } diff --git a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartCustomPlotSelectPane.java b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartCustomPlotSelectPane.java index 02761a1952..30024e2cdb 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartCustomPlotSelectPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartCustomPlotSelectPane.java @@ -8,11 +8,11 @@ import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.attr.plot.VanChartRectanglePlot; +import com.fr.plugin.chart.custom.CustomPlotDesignerPaneFactory; +import com.fr.plugin.chart.custom.CustomPlotFactory; import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.type.CustomPlotType; import com.fr.plugin.chart.custom.type.CustomStyle; -import com.fr.plugin.chart.custom.CustomPlotDesignerPaneFactory; -import com.fr.plugin.chart.custom.CustomPlotFactory; import javax.swing.*; import java.awt.*; diff --git a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java index 18285dfd16..2e6e2c945c 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java @@ -3,6 +3,7 @@ package com.fr.plugin.chart.custom.other; import com.fr.design.dialog.BasicPane; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.component.VanChartCustomPlotTabPane; import com.fr.plugin.chart.custom.type.CustomPlotType; @@ -31,7 +32,7 @@ public class VanChartCustomPlotConditionAttrTabPane extends VanChartCustomPlotTa VanChartPlot vanChartPlot = customPlotList.get(j); CustomPlotType plotType = CustomPlotFactory.getCustomType(vanChartPlot); - NameArray[i] = CustomPlotFactory.getTitle(plotType); + NameArray[i] = CustomPlotGlyphFactory.getTitle(plotType); centerPane.add(pane, NameArray[i]); }else { //如果不支持,则i不动 diff --git a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java index 073a845207..1a86793b0b 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java @@ -3,6 +3,7 @@ package com.fr.plugin.chart.custom.other; import com.fr.design.dialog.BasicPane; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.component.VanChartCustomPlotTabPane; import com.fr.plugin.chart.custom.component.VanChartHyperLinkPane; @@ -29,7 +30,7 @@ public class VanChartCustomPlotHyperlinkTabPane extends VanChartCustomPlotTabPan //获取点的tooltip作为标题 VanChartPlot vanChartPlot = customPlotList.get(i); CustomPlotType plotType = CustomPlotFactory.getCustomType(vanChartPlot); - String name = CustomPlotFactory.getTitle(plotType); + String name = CustomPlotGlyphFactory.getTitle(plotType); NameArray[i] = name.length() > 3 ? name.substring(0, 3) : name; centerPane.add(pane, NameArray[i]); } diff --git a/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisAreaPane.java b/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisAreaPane.java index 64554aa539..916452aabe 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisAreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisAreaPane.java @@ -2,9 +2,9 @@ package com.fr.plugin.chart.custom.style; import com.fr.chart.chartattr.Plot; import com.fr.plugin.chart.attr.plot.VanChartPlot; -import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.CustomPlotDesignerPaneFactory; import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.designer.style.background.VanChartAxisAreaPane; import java.util.List; diff --git a/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java b/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java index 8fc7a774c1..dc205b5394 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java @@ -6,6 +6,7 @@ import com.fr.plugin.chart.attr.plot.VanChartAxisPlot; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.custom.CustomPlotDesignerPaneFactory; import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.component.VanChartCustomPlotAxisPane; import com.fr.plugin.chart.custom.component.VanChartCustomPlotTabPane; @@ -72,7 +73,7 @@ public class VanChartCustomAxisTabPane extends VanChartCustomPlotTabPane Date: Fri, 18 Aug 2017 15:27:02 +0800 Subject: [PATCH 2/5] update --- .../chart/custom/component/ChartImageCheckOutPane.java | 6 +++--- .../other/VanChartCustomPlotConditionAttrTabPane.java | 3 +-- .../custom/other/VanChartCustomPlotHyperlinkTabPane.java | 3 +-- .../chart/custom/style/VanChartCustomAxisTabPane.java | 3 +-- .../chart/custom/style/VanChartCustomPlotLabelTabPane.java | 3 +-- .../chart/custom/style/VanChartCustomPlotSeriesTabPane.java | 3 +-- .../custom/style/VanChartCustomPlotTooltipTabPane.java | 3 +-- 7 files changed, 9 insertions(+), 15 deletions(-) diff --git a/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java b/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java index d9515ac688..fc36decc9d 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/component/ChartImageCheckOutPane.java @@ -4,7 +4,7 @@ import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; -import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; +import com.fr.plugin.chart.custom.CustomPlotFactory; import com.fr.plugin.chart.custom.type.CustomPlotType; import javax.swing.*; @@ -42,7 +42,7 @@ public class ChartImageCheckOutPane extends BasicPane implements UIObserver { this.checkBox = new JCheckBox(); this.checkBox.setSelected(isSelected); //设置提示 - this.checkBox.setToolTipText(CustomPlotGlyphFactory.getTooltipText(this.customPlotType)); + this.checkBox.setToolTipText(CustomPlotFactory.getTooltipText(this.customPlotType)); //背景 checkBox.setIcon(new ImageIcon(getClass().getResource(getIconPath(customPlotType,isSelected)))); @@ -50,7 +50,7 @@ public class ChartImageCheckOutPane extends BasicPane implements UIObserver { } private String getIconPath(CustomPlotType customPlotType, boolean isSelected) { - return isSelected ? CustomPlotGlyphFactory.getTypeIconPath(customPlotType)[0] : CustomPlotGlyphFactory.getTypeIconPath(customPlotType)[1]; + return isSelected ? CustomPlotFactory.getTypeIconPath(customPlotType)[0] : CustomPlotFactory.getTypeIconPath(customPlotType)[1]; } diff --git a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java index 2e6e2c945c..18285dfd16 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotConditionAttrTabPane.java @@ -3,7 +3,6 @@ package com.fr.plugin.chart.custom.other; import com.fr.design.dialog.BasicPane; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.custom.CustomPlotFactory; -import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.component.VanChartCustomPlotTabPane; import com.fr.plugin.chart.custom.type.CustomPlotType; @@ -32,7 +31,7 @@ public class VanChartCustomPlotConditionAttrTabPane extends VanChartCustomPlotTa VanChartPlot vanChartPlot = customPlotList.get(j); CustomPlotType plotType = CustomPlotFactory.getCustomType(vanChartPlot); - NameArray[i] = CustomPlotGlyphFactory.getTitle(plotType); + NameArray[i] = CustomPlotFactory.getTitle(plotType); centerPane.add(pane, NameArray[i]); }else { //如果不支持,则i不动 diff --git a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java index 1a86793b0b..073a845207 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/other/VanChartCustomPlotHyperlinkTabPane.java @@ -3,7 +3,6 @@ package com.fr.plugin.chart.custom.other; import com.fr.design.dialog.BasicPane; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.custom.CustomPlotFactory; -import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.component.VanChartCustomPlotTabPane; import com.fr.plugin.chart.custom.component.VanChartHyperLinkPane; @@ -30,7 +29,7 @@ public class VanChartCustomPlotHyperlinkTabPane extends VanChartCustomPlotTabPan //获取点的tooltip作为标题 VanChartPlot vanChartPlot = customPlotList.get(i); CustomPlotType plotType = CustomPlotFactory.getCustomType(vanChartPlot); - String name = CustomPlotGlyphFactory.getTitle(plotType); + String name = CustomPlotFactory.getTitle(plotType); NameArray[i] = name.length() > 3 ? name.substring(0, 3) : name; centerPane.add(pane, NameArray[i]); } diff --git a/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java b/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java index dc205b5394..8fc7a774c1 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/style/VanChartCustomAxisTabPane.java @@ -6,7 +6,6 @@ import com.fr.plugin.chart.attr.plot.VanChartAxisPlot; import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.custom.CustomPlotDesignerPaneFactory; import com.fr.plugin.chart.custom.CustomPlotFactory; -import com.fr.plugin.chart.custom.CustomPlotGlyphFactory; import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.custom.component.VanChartCustomPlotAxisPane; import com.fr.plugin.chart.custom.component.VanChartCustomPlotTabPane; @@ -73,7 +72,7 @@ public class VanChartCustomAxisTabPane extends VanChartCustomPlotTabPane Date: Tue, 22 Aug 2017 20:46:42 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/file/HistoryTemplateListPane.java | 8 + .../chart/DownLoadOnLineSourcesHelper.java | 210 ++++++++++++++++++ .../com/fr/design/gui/chart/background.png | Bin 0 -> 107927 bytes .../com/fr/design/locale/designer.properties | 3 +- .../design/locale/designer_en_US.properties | 3 +- .../design/locale/designer_ja_JP.properties | 1 + .../design/locale/designer_ko_KR.properties | 3 +- .../design/locale/designer_zh_CN.properties | 3 +- .../design/locale/designer_zh_TW.properties | 1 + .../fr/design/chart/gui/ChartComponent.java | 6 + 10 files changed, 234 insertions(+), 4 deletions(-) create mode 100644 designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java create mode 100644 designer_base/src/com/fr/design/gui/chart/background.png diff --git a/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java b/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java index cb0e43712c..7e941378fc 100644 --- a/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java +++ b/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java @@ -8,6 +8,7 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; +import com.fr.design.gui.chart.DownLoadOnLineSourcesHelper; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilist.UIList; @@ -232,6 +233,13 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C getCurrentEditingTemplate().repaint(); } + @Override + public void downLoadSources() { + DownLoadOnLineSourcesHelper pane = new DownLoadOnLineSourcesHelper(); + pane.addSiteInfo("map.json", "/assets/map", 3.8); + pane.addSiteInfo("plugin.phantomjs", "/assist/phantomjs", 96.1); + pane.installOnline(); + } private class HistoryListCellRender extends DefaultListCellRenderer { diff --git a/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java b/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java new file mode 100644 index 0000000000..56054c9305 --- /dev/null +++ b/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java @@ -0,0 +1,210 @@ +package com.fr.design.gui.chart; + +import com.fr.base.FRContext; +import com.fr.design.RestartHelper; +import com.fr.design.extra.PluginConstants; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; +import com.fr.stable.StableUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by shine on 2017/8/21. + */ +public class DownLoadOnLineSourcesHelper { + // 定义加载窗口大小 + private static final int LOAD_WIDTH = 455; + private static final int INCIDENT_HEIGHT = 15; + private static final int LOAD_HEIGHT = 295; + + //进度显示界面 + private JDialog dialog; + //进度条 + private JProgressBar progressbar; + + private List list = new ArrayList<>(); + //安装结果 + private boolean result = true; + //链接服务器的客户端 + private HttpClient httpClient; + + //总共字节数 + private double totalBytes = 0; + + public void addSiteInfo(String siteKind, String localDir, double megaBits) { + if (new File(FRContext.getCurrentEnv().getPath() + localDir).exists()) { + //本地有这个资源,不下载 + return; + } + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(siteKind)); + if (httpClient.getResponseCode() != HttpURLConnection.HTTP_OK) { + //服务器连不上,不下载 + return; + } + totalBytes += megaBits * 1024 * 1024; + list.add(new SiteInfo(siteKind, localDir)); + } + + public void installOnline() { + + int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Download_Online_Sources"), null, JOptionPane.YES_NO_OPTION); + + if (choose == JOptionPane.OK_OPTION) { + initDialog(); + + dialog.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + //取消下载 + result = false; + exitDialog(); + } + + public void windowOpened(WindowEvent e) { + downloadAndInstallPluginDependenceFile(); + exitDialog(); + } + + }); + + dialog.setVisible(true); + } + } + + /** + * 下载和安装不分开是因为,本地如果只安装好了一个依赖,下次就不需要重复下载了 + * 如果下载依赖后不安装,则后面的插件会把前面的插件覆盖,故而下载好了一个安装一个 + * + * @return + * @throws Exception + */ + private void downloadAndInstallPluginDependenceFile() { + try { + double currentBytesRead = 0; + + for (int i = 0; i < list.size(); i++) { + SiteInfo dependenceUnit = list.get(i); + + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.siteKind)); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream reader = httpClient.getResponseStream(); + String temp = StableUtils.pathJoin(PluginConstants.DOWNLOAD_PATH, PluginConstants.TEMP_FILE); + File file = new File(temp); + StableUtils.makesureFileExist(file); + FileOutputStream writer = new FileOutputStream(temp); + byte[] buffer = new byte[PluginConstants.BYTES_NUM]; + int bytesRead; + while ((bytesRead = reader.read(buffer)) > 0 && result) { + writer.write(buffer, 0, bytesRead); + buffer = new byte[PluginConstants.BYTES_NUM]; + + currentBytesRead += bytesRead; + setProgress(currentBytesRead); + } + reader.close(); + writer.flush(); + writer.close(); + + + if (result) { + //安装文件 + IOUtils.unZipFilesGBK(temp, FRContext.getCurrentEnv().getPath() + dependenceUnit.localDir); + } + } else { + result = false; + } + } + } catch (Exception e) { + result = false; + } + } + + + private void initDialog() { + + // 创建标签,并在标签上放置一张图片 + BufferedImage image = IOUtils.readImage("/com/fr/design/gui/chart/background.png"); + ImageIcon imageIcon = new ImageIcon(image); + UILabel label = new UILabel(imageIcon); + label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT); + + progressbar = new JProgressBar(); + // 显示当前进度值信息 + progressbar.setStringPainted(true); + // 设置进度条边框不显示 + progressbar.setBorderPainted(false); + // 设置进度条的前景色 + progressbar.setForeground(new Color(0x38aef5)); + // 设置进度条的背景色 + progressbar.setBackground(new Color(188, 190, 194)); + progressbar.setBounds(0, LOAD_HEIGHT, LOAD_WIDTH, INCIDENT_HEIGHT); + progressbar.setMinimum(0); + progressbar.setMaximum((int) totalBytes); + setProgress(0); + + dialog = new JDialog(); + dialog.setTitle(Inter.getLocText("FR-Designer-Dependence_Install_Online")); + + JPanel contentPane = new JPanel(new BorderLayout()); + contentPane.add(label, BorderLayout.CENTER); + contentPane.add(progressbar, BorderLayout.SOUTH); + dialog.getContentPane().add(contentPane); + + + dialog.setModal(true); + dialog.setResizable(true); + dialog.setSize(LOAD_WIDTH, LOAD_HEIGHT + INCIDENT_HEIGHT); + dialog.setResizable(false); + GUICoreUtils.centerWindow(dialog); + + dialog.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + } + + private void setProgress(double current) { + progressbar.setValue((int) current); + progressbar.setString(current/totalBytes * 100 + "%"); + progressbar.paintImmediately(new Rectangle(0, 0, LOAD_WIDTH, INCIDENT_HEIGHT * 2)); + } + + + private void exitDialog() { + dialog.dispose(); + + if (result) { + int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer_Work_After_Restart_Designer"), null, JOptionPane.YES_NO_OPTION); + + if (choose == JOptionPane.OK_OPTION) { + RestartHelper.restart(); + } + } else { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Failed")); + } + } + + private class SiteInfo { + String siteKind; + String localDir; + + SiteInfo(String siteKind, String localDir) { + this.siteKind = siteKind; + this.localDir = localDir; + } + } + +} + + diff --git a/designer_base/src/com/fr/design/gui/chart/background.png b/designer_base/src/com/fr/design/gui/chart/background.png new file mode 100644 index 0000000000000000000000000000000000000000..45bf328e3333701813afd76b1d6efa7bd41f60ee GIT binary patch literal 107927 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

WfA@8Op?D@gtX|Iyh?nh?mm)j5w(}Fy2`Y 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

    K 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 mSa1rKaC?m&R_x&QkFh*+?YBY@`P>$x)R5_+ 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 Date: Wed, 23 Aug 2017 10:03:58 +0800 Subject: [PATCH 4/5] update --- .../fr/design/gui/chart/DownLoadOnLineSourcesHelper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java b/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java index 56054c9305..1039fa2666 100644 --- a/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java +++ b/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java @@ -97,9 +97,9 @@ public class DownLoadOnLineSourcesHelper { double currentBytesRead = 0; for (int i = 0; i < list.size(); i++) { - SiteInfo dependenceUnit = list.get(i); + SiteInfo siteInfo = list.get(i); - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.siteKind)); + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(siteInfo.siteKind)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream reader = httpClient.getResponseStream(); String temp = StableUtils.pathJoin(PluginConstants.DOWNLOAD_PATH, PluginConstants.TEMP_FILE); @@ -122,7 +122,7 @@ public class DownLoadOnLineSourcesHelper { if (result) { //安装文件 - IOUtils.unZipFilesGBK(temp, FRContext.getCurrentEnv().getPath() + dependenceUnit.localDir); + IOUtils.unZipFilesGBK(temp, FRContext.getCurrentEnv().getPath() + siteInfo.localDir); } } else { result = false; From 1313aab564eb9c1f2182ffb4a3accab6036191a4 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Wed, 23 Aug 2017 10:12:44 +0800 Subject: [PATCH 5/5] update --- .../design/file/HistoryTemplateListPane.java | 4 +- .../chart/DownLoadOnLineSourcesHelper.java | 18 +++++- .../chart/custom/VanChartCustomPlotPane.java | 56 +++++++++---------- 3 files changed, 46 insertions(+), 32 deletions(-) diff --git a/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java b/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java index 7e941378fc..50eb2a46f3 100644 --- a/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java +++ b/designer_base/src/com/fr/design/file/HistoryTemplateListPane.java @@ -236,8 +236,8 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C @Override public void downLoadSources() { DownLoadOnLineSourcesHelper pane = new DownLoadOnLineSourcesHelper(); - pane.addSiteInfo("map.json", "/assets/map", 3.8); - pane.addSiteInfo("plugin.phantomjs", "/assist/phantomjs", 96.1); + pane.addMapJSONSiteInfo(); + pane.addPhantomSiteInfo(); pane.installOnline(); } diff --git a/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java b/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java index 1039fa2666..a8baa25939 100644 --- a/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java +++ b/designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java @@ -31,6 +31,7 @@ public class DownLoadOnLineSourcesHelper { private static final int LOAD_WIDTH = 455; private static final int INCIDENT_HEIGHT = 15; private static final int LOAD_HEIGHT = 295; + private static final int PERCENT = 100; //进度显示界面 private JDialog dialog; @@ -46,6 +47,19 @@ public class DownLoadOnLineSourcesHelper { //总共字节数 private double totalBytes = 0; + + private static final double PHANTOM_MB = 96.1 * 1024 * 1024; + + public void addPhantomSiteInfo() { + this.addSiteInfo("plugin.phantomjs", "/assist/phantomjs", PHANTOM_MB); + } + + private static final double MAP_JSON_MB = 3.8 * 1024 * 1024; + + public void addMapJSONSiteInfo() { + this.addSiteInfo("map.json", "/assets/map", MAP_JSON_MB); + } + public void addSiteInfo(String siteKind, String localDir, double megaBits) { if (new File(FRContext.getCurrentEnv().getPath() + localDir).exists()) { //本地有这个资源,不下载 @@ -56,7 +70,7 @@ public class DownLoadOnLineSourcesHelper { //服务器连不上,不下载 return; } - totalBytes += megaBits * 1024 * 1024; + totalBytes += megaBits; list.add(new SiteInfo(siteKind, localDir)); } @@ -176,7 +190,7 @@ public class DownLoadOnLineSourcesHelper { private void setProgress(double current) { progressbar.setValue((int) current); - progressbar.setString(current/totalBytes * 100 + "%"); + progressbar.setString(current / totalBytes * PERCENT + "%"); progressbar.paintImmediately(new Rectangle(0, 0, LOAD_WIDTH, INCIDENT_HEIGHT * 2)); } diff --git a/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java b/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java index 7391640a60..843bbfc166 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java @@ -44,7 +44,7 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { //自定义和自动版面的容器,cardLayOut布局 private JPanel contentPane; - protected Component[][] getPaneComponents(JPanel typePane){ + protected Component[][] getPaneComponents(JPanel typePane) { initContent(); @@ -71,14 +71,14 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { double[] columnSize = {p, f}; double[] rowSize = {p, p}; - customPane = TableLayoutHelper.createTableLayoutPane(components, rowSize , columnSize); + customPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - contentPane = new JPanel(new CardLayout()){ + contentPane = new JPanel(new CardLayout()) { @Override public Dimension getPreferredSize() { - if(isCustom){ + if (isCustom) { return customPane.getPreferredSize(); - } else{ + } else { return new Dimension(autoPane.getWidth(), 0); } } @@ -97,7 +97,6 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { } - @Override protected String[] getTypeIconPath() { return new String[]{"/com/fr/plugin/chart/custom/images/column_line.png", @@ -142,22 +141,22 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { } Chart[] customChart = CustomIndependentVanChart.CustomVanChartTypes; - for(int i = 0, len = customChart.length; i < len; i++){ - if(typeDemo.get(i).isPressing){ - if (i == customChart.length-1){ + for (int i = 0, len = customChart.length; i < len; i++) { + if (typeDemo.get(i).isPressing) { + if (i == customChart.length - 1) { isCustom = true; //先重置自定义组合面板,如果不重置,无法获取选择顺序 - if (lastState == customChart.length-1 && samePlot) { + if (lastState == customChart.length - 1 && samePlot) { //更新数据配置,刪除已经不在的图表数据 dealCustomDefinition(chart); customSelectPane.updateBean(chart); - }else if (samePlot){//如果是同一个图表切换过来,则重置面板 + } else if (samePlot) {//如果是同一个图表切换过来,则重置面板 customSelectPane.populateBean(chart); } } - }else { + } else { isCustom = false; } } @@ -169,20 +168,20 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { private void dealCustomDefinition(Chart chart) { CustomDefinition definition = (CustomDefinition) chart.getFilterDefinition(); - if (definition == null){ + if (definition == null) { return; } Map definitionMap = definition.getDefinitionProviderMap(); - if (definitionMap == null){ + if (definitionMap == null) { return; } Map newDefinitionMap = new HashMap(); VanChartCustomPlot customPlot = (VanChartCustomPlot) chart.getPlot(); - for (int i = 0; i < customPlot.getCustomPlotList().size(); i++){ + for (int i = 0; i < customPlot.getCustomPlotList().size(); i++) { CustomPlotType plotType = CustomPlotFactory.getCustomType(customPlot.getCustomPlotList().get(i)); TopDefinitionProvider definitionProvider = definitionMap.get(plotType); @@ -194,16 +193,17 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { /** * 不同图表切換,重置chart屬性 + * * @param chart * @param newPlot */ @Override - protected void resetChartAttr(Chart chart, Plot newPlot){ + protected void resetChartAttr(Chart chart, Plot newPlot) { super.resetChartAttr(chart, newPlot); //切换图表清空数据配置 chart.setFilterDefinition(null); //设置默认不排序 - VanChartTools tools = ((VanChart)chart).getVanChartTools(); + VanChartTools tools = ((VanChart) chart).getVanChartTools(); if (tools != null) { tools.setSort(false); } @@ -213,19 +213,19 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { * 更新界面内容 */ public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { + for (ChartImagePane imagePane : typeDemo) { imagePane.isPressing = false; } //获取上次选中的图标 - VanChartCustomPlot customPlot = (VanChartCustomPlot)chart.getPlot(); + VanChartCustomPlot customPlot = (VanChartCustomPlot) chart.getPlot(); lastTypeIndex = customPlot.getCustomStyle().ordinal(); typeDemo.get(lastTypeIndex).isPressing = true; isCustom = customPlot.getCustomStyle() == CustomStyle.CUSTOM; //自定义选择时,更新自定义面板 - if (isCustom){ + if (isCustom) { customSelectPane.populateBean(chart); } @@ -245,17 +245,17 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { return VanChartCustomPlot.VAN_CHART_CUSTOM_PLOT_ID; } - protected Plot getSelectedClonedPlot(){ + protected Plot getSelectedClonedPlot() { VanChartCustomPlot newPlot = null; Chart[] customChart = CustomIndependentVanChart.CustomVanChartTypes; - for(int i = 0, len = customChart.length; i < len; i++){ - if(typeDemo.get(i).isPressing){ - newPlot = (VanChartCustomPlot)customChart[i].getPlot(); + for (int i = 0, len = customChart.length; i < len; i++) { + if (typeDemo.get(i).isPressing) { + newPlot = (VanChartCustomPlot) customChart[i].getPlot(); } } Plot cloned = null; try { - cloned = (Plot)newPlot.clone(); + cloned = (Plot) newPlot.clone(); } catch (CloneNotSupportedException e) { FRLogger.getLogger().error("Error In ScatterChart"); } @@ -270,7 +270,7 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { /** *删除配置的条件属性 */ - protected void cloneOldConditionCollection(Plot oldPlot, Plot newPlot) throws CloneNotSupportedException{ + protected void cloneOldConditionCollection(Plot oldPlot, Plot newPlot) throws CloneNotSupportedException { cloneOldDefaultAttrConditionCollection(oldPlot, newPlot); } @@ -278,7 +278,7 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { /** * 删除线型配置 */ - protected void cloneOldDefaultAttrConditionCollection(Plot oldPlot, Plot newPlot) throws CloneNotSupportedException{ + protected void cloneOldDefaultAttrConditionCollection(Plot oldPlot, Plot newPlot) throws CloneNotSupportedException { if (oldPlot.getConditionCollection() != null) { ConditionCollection newCondition = new ConditionCollection(); newCondition.setDefaultAttr((ConditionAttr) oldPlot.getConditionCollection().getDefaultAttr().clone()); @@ -287,7 +287,7 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { //删除线型设置 ConditionAttr attrList = newCondition.getDefaultAttr(); DataSeriesCondition attr = attrList.getExisted(VanChartAttrLine.class); - if (attr != null){ + if (attr != null) { attrList.remove(VanChartAttrLine.class); } }