Browse Source

下载图表资源文件

master
fr_shine 7 years ago
parent
commit
11b894e9c9
  1. 8
      designer_base/src/com/fr/design/file/HistoryTemplateListPane.java
  2. 210
      designer_base/src/com/fr/design/gui/chart/DownLoadOnLineSourcesHelper.java
  3. BIN
      designer_base/src/com/fr/design/gui/chart/background.png
  4. 1
      designer_base/src/com/fr/design/locale/designer.properties
  5. 1
      designer_base/src/com/fr/design/locale/designer_en_US.properties
  6. 1
      designer_base/src/com/fr/design/locale/designer_ja_JP.properties
  7. 1
      designer_base/src/com/fr/design/locale/designer_ko_KR.properties
  8. 1
      designer_base/src/com/fr/design/locale/designer_zh_CN.properties
  9. 1
      designer_base/src/com/fr/design/locale/designer_zh_TW.properties
  10. 6
      designer_chart/src/com/fr/design/chart/gui/ChartComponent.java

8
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.constants.UIConstants;
import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.datapane.TableDataTreePane; 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.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ilist.UIList; import com.fr.design.gui.ilist.UIList;
@ -232,6 +233,13 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C
getCurrentEditingTemplate().repaint(); 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 { private class HistoryListCellRender extends DefaultListCellRenderer {

210
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<SiteInfo> 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;
}
}
}

BIN
designer_base/src/com/fr/design/gui/chart/background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

1
designer_base/src/com/fr/design/locale/designer.properties

@ -2127,3 +2127,4 @@ FS-Designer_DS_Filter_Specify_Tip=Specify_Tip
FR-Designer_Mobile-Height-Percent=Max Percent FR-Designer_Mobile-Height-Percent=Max Percent
FR-Designer_Mobile-Height-Limit=Height Limit FR-Designer_Mobile-Height-Limit=Height Limit
FR-Designer-AlphaFine_NO_Result=no search result FR-Designer-AlphaFine_NO_Result=no search result
FR-Designer-Download_Online_Sources=

1
designer_base/src/com/fr/design/locale/designer_en_US.properties

@ -2123,3 +2123,4 @@ FS-Designer_DS_Filter_Odd_Tip=Odd_Tip
FS-Designer_DS_Filter_Even_Tip=Even_Tip FS-Designer_DS_Filter_Even_Tip=Even_Tip
FS-Designer_DS_Filter_Specify_Tip=Specify_Tip FS-Designer_DS_Filter_Specify_Tip=Specify_Tip
FR-Designer-AlphaFine_NO_Result=no search result FR-Designer-AlphaFine_NO_Result=no search result
FR-Designer-Download_Online_Sources=

1
designer_base/src/com/fr/design/locale/designer_ja_JP.properties

@ -2121,3 +2121,4 @@ FS-Designer_DS_Filter_Even_Tip=
FS-Designer_DS_Filter_Specify_Tip= FS-Designer_DS_Filter_Specify_Tip=
FR-Designer_Mobile-Height-Percent= FR-Designer_Mobile-Height-Percent=
FR-Designer_Mobile-Height-Limit= FR-Designer_Mobile-Height-Limit=
FR-Designer-Download_Online_Sources=

1
designer_base/src/com/fr/design/locale/designer_ko_KR.properties

@ -2122,3 +2122,4 @@ FS-Designer_DS_Filter_Even_Tip=
FS-Designer_DS_Filter_Specify_Tip= FS-Designer_DS_Filter_Specify_Tip=
FR-Designer_Mobile-Height-Percent= FR-Designer_Mobile-Height-Percent=
FR-Designer_Mobile-Height-Limit= FR-Designer_Mobile-Height-Limit=
FR-Designer-Download_Online_Sources=

1
designer_base/src/com/fr/design/locale/designer_zh_CN.properties

@ -2134,3 +2134,4 @@ FS-Designer_DS_Filter_Odd_Tip=\u63D0\u793A\uFF1A\u5E8F\u53F7\u4ECE1\u5F00\u59CB\
FS-Designer_DS_Filter_Even_Tip=\u63D0\u793A\uFF1A\u5E8F\u53F7\u4ECE1\u5F00\u59CB\uFF0C\u9009\u62E9\u4E86\u5076\u6570\u96C6(2,4,6...) FS-Designer_DS_Filter_Even_Tip=\u63D0\u793A\uFF1A\u5E8F\u53F7\u4ECE1\u5F00\u59CB\uFF0C\u9009\u62E9\u4E86\u5076\u6570\u96C6(2,4,6...)
FS-Designer_DS_Filter_Specify_Tip=\u63D0\u793A\uFF1A\u683C\u5F0F\u4E3A1,2-3,5,8\uFF0C\u5E8F\u53F7\u4ECE1\u5F00\u59CB\uFF0C\u5185\u503C\u53C2\u6570$_count_\u8868\u793A\u603B\u4E2A\u6570 FS-Designer_DS_Filter_Specify_Tip=\u63D0\u793A\uFF1A\u683C\u5F0F\u4E3A1,2-3,5,8\uFF0C\u5E8F\u53F7\u4ECE1\u5F00\u59CB\uFF0C\u5185\u503C\u53C2\u6570$_count_\u8868\u793A\u603B\u4E2A\u6570
FR-Designer-AlphaFine_NO_Result=\u65E0\u641C\u7D22\u7ED3\u679C FR-Designer-AlphaFine_NO_Result=\u65E0\u641C\u7D22\u7ED3\u679C
FR-Designer-Download_Online_Sources=\u56FE\u8868\u9700\u8981\u4E0B\u8F7D\u6700\u65B0\u7684\u8D44\u6E90\u6587\u4EF6\uFF0C\u662F\u5426\u5B89\u88C5\uFF1F

1
designer_base/src/com/fr/design/locale/designer_zh_TW.properties

@ -2126,3 +2126,4 @@ FS-Designer_DS_Filter_Even_Tip=\u63D0\u793A\uFF1A\u5E8F\u865F\u5F9E1\u958B\u59CB
FS-Designer_DS_Filter_Specify_Tip=\u63D0\u793A\uFF1A\u683C\u5F0F\u70BA1,2-3,5,8\uFF0C\u5E8F\u865F\u5F9E1\u958B\u59CB\uFF0C\u5185\u7F6E\u53C3\u6578$_count_\u8868\u793A\u7E02\u500B\u6578 FS-Designer_DS_Filter_Specify_Tip=\u63D0\u793A\uFF1A\u683C\u5F0F\u70BA1,2-3,5,8\uFF0C\u5E8F\u865F\u5F9E1\u958B\u59CB\uFF0C\u5185\u7F6E\u53C3\u6578$_count_\u8868\u793A\u7E02\u500B\u6578
M-New_FormBook=\u65B0\u589E\u6C7A\u7B56\u5831\u8868 M-New_FormBook=\u65B0\u589E\u6C7A\u7B56\u5831\u8868
FR-Designer-AlphaFine_NO_Result=\u7121\u641C\u7D22\u7D50\u679C FR-Designer-AlphaFine_NO_Result=\u7121\u641C\u7D22\u7D50\u679C
FR-Designer-Download_Online_Sources=

6
designer_chart/src/com/fr/design/chart/gui/ChartComponent.java

@ -331,4 +331,10 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene
public void callback() { public void callback() {
this.repaint(); this.repaint();
} }
@Override
public void downLoadSources() {
HistoryTemplateListPane.getInstance().downLoadSources();
}
} }
Loading…
Cancel
Save