|
|
|
package com.fr.env;
|
|
|
|
|
|
|
|
import com.fr.design.RestartHelper;
|
|
|
|
import com.fr.design.dialog.link.MessageWithLink;
|
|
|
|
import com.fr.design.gui.ibutton.UIButton;
|
|
|
|
import com.fr.design.gui.ilable.UILabel;
|
|
|
|
import com.fr.design.gui.itextarea.UITextArea;
|
|
|
|
import com.fr.design.i18n.Toolkit;
|
|
|
|
import com.fr.design.layout.FRGUIPaneFactory;
|
|
|
|
import com.fr.design.mainframe.DesignerContext;
|
|
|
|
import com.fr.design.utils.gui.GUICoreUtils;
|
|
|
|
import com.fr.general.CloudCenter;
|
|
|
|
import com.fr.general.ComparatorUtils;
|
|
|
|
import com.fr.general.GeneralContext;
|
|
|
|
import com.fr.general.IOUtils;
|
|
|
|
import com.fr.json.JSONArray;
|
|
|
|
import com.fr.json.JSONObject;
|
|
|
|
import com.fr.stable.StringUtils;
|
|
|
|
import java.awt.BorderLayout;
|
|
|
|
import java.awt.Dimension;
|
|
|
|
import java.awt.event.MouseAdapter;
|
|
|
|
import java.awt.event.MouseEvent;
|
|
|
|
import java.awt.event.MouseListener;
|
|
|
|
import java.awt.event.WindowAdapter;
|
|
|
|
import java.awt.event.WindowEvent;
|
|
|
|
import java.util.Locale;
|
|
|
|
import javax.swing.BorderFactory;
|
|
|
|
import javax.swing.Icon;
|
|
|
|
import javax.swing.JDialog;
|
|
|
|
import javax.swing.JFrame;
|
|
|
|
import javax.swing.JLabel;
|
|
|
|
import javax.swing.JPanel;
|
|
|
|
import javax.swing.JScrollPane;
|
|
|
|
import javax.swing.UIManager;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author pengda
|
|
|
|
* @version 10.0
|
|
|
|
* Created on 2021-06-02
|
|
|
|
*/
|
|
|
|
public class SyncFailedPluginsDialog extends JDialog {
|
|
|
|
private UILabel detailsLabel;
|
|
|
|
private JScrollPane scrollPane;
|
|
|
|
private UITextArea detailsTextArea;
|
|
|
|
private JFrame frame = DesignerContext.getDesignerFrame();
|
|
|
|
private RestartHelper restartHelper = new RestartHelper();
|
|
|
|
private UIButton restartButton;
|
|
|
|
private boolean show = false;
|
|
|
|
public SyncFailedPluginsDialog(JFrame parent, JSONArray syncFailedPlugins) {
|
|
|
|
super(parent, true);
|
|
|
|
JPanel body = FRGUIPaneFactory.createBorderLayout_L_Pane();
|
|
|
|
|
|
|
|
JPanel northPane = FRGUIPaneFactory.createBorderLayout_L_Pane();
|
|
|
|
northPane.setBorder(BorderFactory.createEmptyBorder(0,0,5,0));
|
|
|
|
JPanel imagePanel = new JPanel();
|
|
|
|
Icon icon = IOUtils.readIcon("com/fr/design/icon/versioncheck/warning.png");
|
|
|
|
JLabel imageLabel = new JLabel();
|
|
|
|
imageLabel.setIcon(icon);
|
|
|
|
imagePanel.add(imageLabel);
|
|
|
|
imagePanel.setPreferredSize(new Dimension(20, 20));
|
|
|
|
|
|
|
|
JPanel messagePane = FRGUIPaneFactory.createBorderLayout_S_Pane();
|
|
|
|
MessageWithLink messageWithLink = new MessageWithLink(Toolkit.i18nText("Fine-Design_Basic_Sync_Plugin_Fail_Suggestion"),Toolkit.i18nText("Fine-Design_Basic_Sync_Deal_Immediately"),
|
|
|
|
CloudCenter.getInstance().acquireUrlByKind("help.installplugins", "https://help.fanruan.com/finereport/doc-view-2198.html"));
|
|
|
|
messageWithLink.setPreferredSize(new Dimension(316, 20));
|
|
|
|
|
|
|
|
messagePane.add(messageWithLink);
|
|
|
|
messagePane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 0));
|
|
|
|
|
|
|
|
northPane.add(imageLabel, BorderLayout.WEST);
|
|
|
|
northPane.add(messagePane, BorderLayout.CENTER);
|
|
|
|
|
|
|
|
JPanel centerPanel = FRGUIPaneFactory.createBorderLayout_S_Pane();
|
|
|
|
detailsLabel = new UILabel(Toolkit.i18nText("Fine_Designer_Look_Detail"));
|
|
|
|
detailsLabel.setIcon(UIManager.getIcon("OptionPane.narrow.down"));
|
|
|
|
detailsLabel.addMouseListener(detailsLabelClickListener);
|
|
|
|
JPanel detailsTitlePanel = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane();
|
|
|
|
detailsTitlePanel.add(detailsLabel);
|
|
|
|
detailsTitlePanel.setBorder(BorderFactory.createEmptyBorder(0,0,5,0));
|
|
|
|
|
|
|
|
detailsTextArea = new UITextArea();
|
|
|
|
detailsTextArea.setEditable(false);
|
|
|
|
showSyncFailedPluginsInfo(syncFailedPlugins);
|
|
|
|
scrollPane = new JScrollPane(detailsTextArea);
|
|
|
|
centerPanel.add(detailsTitlePanel,BorderLayout.NORTH);
|
|
|
|
centerPanel.add(scrollPane,BorderLayout.CENTER);
|
|
|
|
|
|
|
|
JPanel southPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane();
|
|
|
|
restartButton = new UIButton(Toolkit.i18nText("Fine-Design_Updater_Restart_Designer"));
|
|
|
|
restartButton.addMouseListener(restartButtonClickListener);
|
|
|
|
southPane.add(restartButton);
|
|
|
|
|
|
|
|
body.add(northPane,BorderLayout.NORTH);
|
|
|
|
body.add(centerPanel,BorderLayout.CENTER);
|
|
|
|
body.add(southPane,BorderLayout.SOUTH);
|
|
|
|
|
|
|
|
this.setTitle(Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"));
|
|
|
|
this.setResizable(false);
|
|
|
|
this.add(body, BorderLayout.CENTER);
|
|
|
|
this.setSize(new Dimension(GeneralContext.getLocale().equals(Locale.US) ? 400 : 380, 225));
|
|
|
|
this.addWindowListener(new WindowAdapter() {
|
|
|
|
@Override
|
|
|
|
public void windowClosing(WindowEvent e) {
|
|
|
|
hideDialog();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
GUICoreUtils.centerWindow(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void showSyncFailedPluginsInfo(JSONArray syncFailedPlugins){
|
|
|
|
if(null == syncFailedPlugins){
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
StringBuilder detailsText = new StringBuilder(StringUtils.EMPTY);
|
|
|
|
for (int i = 0; i < syncFailedPlugins.size(); i++) {
|
|
|
|
JSONObject plugin = syncFailedPlugins.getJSONObject(i);
|
|
|
|
detailsText.append(plugin.getString("name")).append(",").append(Toolkit.i18nText("Fine-Design_Basic_Sync_Server_Version")).append(plugin.getString("version")).append("\n");
|
|
|
|
}
|
|
|
|
detailsTextArea.setText(detailsText.toString());
|
|
|
|
if(!ComparatorUtils.equals(detailsTextArea.getText(),StringUtils.EMPTY)){
|
|
|
|
show = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void showDialog(){
|
|
|
|
if(show){
|
|
|
|
this.setVisible(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private MouseListener detailsLabelClickListener = new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
if(scrollPane.isVisible()){
|
|
|
|
scrollPane.setVisible(false);
|
|
|
|
detailsLabel.setIcon(UIManager.getIcon("OptionPane.narrow.right"));
|
|
|
|
}else{
|
|
|
|
scrollPane.setVisible(true);
|
|
|
|
detailsLabel.setIcon(UIManager.getIcon("OptionPane.narrow.down"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
public boolean restartClicked(){
|
|
|
|
return !restartButton.isEnabled();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void hideDialog(){
|
|
|
|
this.dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
private MouseListener restartButtonClickListener = new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
hideDialog();
|
|
|
|
restartButton.setEnabled(false);
|
|
|
|
restartHelper.restartForUpdate(frame);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|