Browse Source

无jira 合并merge

feature/x
hades 3 years ago
parent
commit
444e78abde
  1. 9
      designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java
  2. 6
      designer-base/src/main/java/com/fr/env/detect/bean/DetectorResult.java
  3. 5
      designer-base/src/main/java/com/fr/env/detect/bean/DetectorStatus.java
  4. 2
      designer-base/src/main/java/com/fr/env/detect/impl/JarInconsistentDetector.java
  5. 2
      designer-base/src/main/java/com/fr/env/detect/thowable/ThrowableLogAppender.java
  6. 13
      designer-base/src/main/java/com/fr/env/detect/ui/DetectorErrorDialog.java
  7. 82
      designer-base/src/main/java/com/fr/env/detect/ui/EnvDetectorDialog.java

9
designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java vendored

@ -10,6 +10,7 @@ import com.fr.env.detect.impl.JarInconsistentDetector;
import com.fr.env.detect.impl.JarLackDetector;
import com.fr.env.detect.thowable.ThrowableLogAppender;
import com.fr.env.detect.thowable.ThrowableStore;
import com.fr.log.FineLoggerFactory;
import com.fr.value.NotNullLazyValue;
import org.jetbrains.annotations.NotNull;
@ -86,7 +87,13 @@ public class DetectorBridge {
@NotNull
public DetectorResult detect(DetectorType type) {
return detectorManager.getValue().detect(type);
try {
return detectorManager.getValue().detect(type);
} catch (Exception e) {
FineLoggerFactory.getLogger().error("detect failed", e);
// 返回未知错误信息
return DetectorResult.unknown(type);
}
}
/**

6
designer-base/src/main/java/com/fr/env/detect/bean/DetectorResult.java vendored

@ -31,6 +31,12 @@ public class DetectorResult {
this.log = log;
}
public static DetectorResult unknown(DetectorType type) {
DetectorResult result = new DetectorResult(type);
result.status = DetectorStatus.UNKNOWN;
return result;
}
public static DetectorResult normal(DetectorType type) {
DetectorResult result = new DetectorResult(type);

5
designer-base/src/main/java/com/fr/env/detect/bean/DetectorStatus.java vendored

@ -14,4 +14,9 @@ public enum DetectorStatus {
* 异常
*/
EXCEPTION,
/**
* 未知
*/
UNKNOWN,
}

2
designer-base/src/main/java/com/fr/env/detect/impl/JarInconsistentDetector.java vendored

@ -136,7 +136,7 @@ public class JarInconsistentDetector extends AbstractExceptionDetector {
return DetectorResult.exception(type(),
new ExceptionTips(new Message.Simple(tipsMessage)),
new ExceptionSolution(new Message.Link(Toolkit.i18nText(type().getSolutionLocale()), DetectorConstants.JAR_HELP_LINK), null),
ExceptionLog.create(type().getLogLocale() + message));
ExceptionLog.create(Toolkit.i18nText(type().getLogLocale()) + message));
}
private Map<String, String> groupBy(List<BuildInfo> localInfos) {

2
designer-base/src/main/java/com/fr/env/detect/thowable/ThrowableLogAppender.java vendored

@ -60,6 +60,8 @@ public class ThrowableLogAppender extends AbstractAppender {
public void enable() {
// 初始化一下,别出问题
logHandler.getHandler().start();
FRLogger.getLogger().addExtendLogAppender(logHandler);
}

13
designer-base/src/main/java/com/fr/env/detect/ui/DetectorErrorDialog.java vendored

@ -7,6 +7,7 @@ import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.ColorUtils;
import com.fr.design.utils.DesignUtils;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.env.detect.base.DetectorUtil;
import com.fr.env.detect.bean.DetectorResult;
@ -14,7 +15,6 @@ import com.fr.env.detect.bean.ExceptionSolution;
import com.fr.env.detect.bean.ExceptionTips;
import com.fr.env.detect.bean.Message;
import com.fr.exit.DesignerExiter;
import com.fr.general.FRFont;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
@ -39,13 +39,17 @@ import java.util.List;
* created by Harrison on 2022/05/29
**/
public class DetectorErrorDialog extends JDialog implements ActionListener {
public static final float FONT_BOLD_HEIGHT = 16f;
private UIButton okButton;
private UIButton restartButton;
public DetectorErrorDialog(Frame parent, List<DetectorResult> results) {
super(parent, true);
// 可能是还没初始化 UI 的时候出现的问题,初始化一下 UI
DesignUtils.initLookAndFeel();
JPanel northPane = FRGUIPaneFactory.createBorderLayout_L_Pane();
JPanel headerPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
@ -57,8 +61,9 @@ public class DetectorErrorDialog extends JDialog implements ActionListener {
JPanel messagePane = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true);
{
UILabel boldHeader = new UILabel(Toolkit.i18nText("Fine-Design_Error_Start_Apology_Message"));
Font font = FRFont.getInstance(boldHeader.getFont().getFontName(), Font.PLAIN, 16);
boldHeader.setFont(font);
Font font = boldHeader.getFont();
Font boldFont = font.deriveFont(FONT_BOLD_HEIGHT);
boldHeader.setFont(boldFont);
messagePane.add(boldHeader);
UILabel description = new UILabel(Toolkit.i18nText("Fine-Design_Send_Report_To_Us"));

82
designer-base/src/main/java/com/fr/env/detect/ui/EnvDetectorDialog.java vendored

@ -21,6 +21,7 @@ import com.fr.env.detect.base.EnvDetectorConfig;
import com.fr.env.detect.bean.DetectorResult;
import com.fr.env.detect.bean.DetectorStatus;
import com.fr.env.detect.bean.DetectorType;
import com.fr.log.FineLoggerFactory;
import org.jetbrains.annotations.NotNull;
import javax.swing.BorderFactory;
@ -55,6 +56,7 @@ public class EnvDetectorDialog extends JDialog {
private static final int TIMEOUT = 1000;
private static final Color SUCCESS_COLOR = new Color(22, 193, 83);
private static final Color DETAIL_FONT_COLOR = new Color(65, 155, 249);
private final JPanel body;
@ -177,7 +179,7 @@ public class EnvDetectorDialog extends JDialog {
}
// 执行前
buttonStatus = buttonStatus.next();
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refreshHeaderPanel);
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refreshHeader);
detectWorker = new SwingWorker<Void, Void>() {
@Override
@ -192,7 +194,7 @@ public class EnvDetectorDialog extends JDialog {
}
// 刷新一下面板-开始执行啦
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refresh);
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refreshBody);
EnvDetectorItem item = items.get(i);
DetectorType type = item.getType();
@ -208,7 +210,7 @@ public class EnvDetectorDialog extends JDialog {
// 只有还在运行中,才会真正的刷新面板
if (buttonStatus.isExecuting()) {
// 在刷新一下面板
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refresh);
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refreshBody);
currentDetectIndex++;
}
@ -218,11 +220,16 @@ public class EnvDetectorDialog extends JDialog {
@Override
protected void done() {
if (buttonStatus.isExecuting()) {
// 执行结束
buttonStatus = EnvDetectorButtonStatus.A_NEW;
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refreshHeaderPanel);
try {
this.get();
if (buttonStatus.isExecuting()) {
// 执行结束
buttonStatus = EnvDetectorButtonStatus.A_NEW;
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refreshHeader);
}
} catch (Exception e) {
FineLoggerFactory.getLogger().error("detect failed", e);
}
}
};
@ -236,7 +243,7 @@ public class EnvDetectorDialog extends JDialog {
e.setResult(null);
}
// 刷新一下面板-开始执行啦
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refresh);
UIUtil.invokeLaterIfNeeded(EnvDetectorDialog.this::refreshBody);
}
private void stopDetecting(UIButton detectButton) {
@ -251,7 +258,7 @@ public class EnvDetectorDialog extends JDialog {
// 刷新按钮
detectButton.setText(buttonStatus.getDesc());
// 刷新面板
refresh();
refreshBody();
});
}
@ -265,7 +272,7 @@ public class EnvDetectorDialog extends JDialog {
this.resultSummaryPane.setLayout(new BorderLayout(5, 0));
Boolean success = model.getResults()
.map((e) -> {
if (e.getStatus() == DetectorStatus.NORMAL) {
if (e != null && e.getStatus() == DetectorStatus.NORMAL) {
return Boolean.TRUE;
}
return Boolean.FALSE;
@ -360,31 +367,34 @@ public class EnvDetectorDialog extends JDialog {
infoPanel.add(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Exception")), BorderLayout.CENTER);
}
statusPanel.add(infoPanel, BorderLayout.WEST);
JPanel detailPanel = FRGUIPaneFactory.createBorderLayout_S_Pane();
{
detailPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0));
UILabel detailLabel = new UILabel(Toolkit.i18nText("Fine_Designer_Look_Detail"));
detailLabel.setForeground(new Color(65, 155, 249));
detailLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
NotificationDialogProperties properties = new NotificationDialogProperties((Frame) EnvDetectorDialog.this.getOwner(), Toolkit.i18nText("Fine-Design_Basic_Detect_Notification_Title"));
Stream<DetectorResult> results = model.getResults();
List<NotificationModel> notificationModels = results
.filter(Objects::nonNull)
.filter((e) -> e.getStatus() == DetectorStatus.EXCEPTION)
.map(DetectorUtil::convert2Notification)
.collect(Collectors.toList());
NotificationDialog dialog = new NotificationDialog(properties, notificationModels);
dialog.open();
}
});
detailPanel.add(detailLabel, BorderLayout.CENTER);
// 如果结果是检测出的异常,则出现详细信息。
if (result.getStatus() == DetectorStatus.EXCEPTION) {
JPanel detailPanel = FRGUIPaneFactory.createBorderLayout_S_Pane();
{
detailPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0));
UILabel detailLabel = new UILabel(Toolkit.i18nText("Fine_Designer_Look_Detail"));
detailLabel.setForeground(DETAIL_FONT_COLOR);
detailLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
NotificationDialogProperties properties = new NotificationDialogProperties((Frame) EnvDetectorDialog.this.getOwner(), Toolkit.i18nText("Fine-Design_Basic_Detect_Notification_Title"));
Stream<DetectorResult> results = model.getResults();
List<NotificationModel> notificationModels = results
.filter(Objects::nonNull)
.filter((e) -> e.getStatus() == DetectorStatus.EXCEPTION)
.map(DetectorUtil::convert2Notification)
.collect(Collectors.toList());
NotificationDialog dialog = new NotificationDialog(properties, notificationModels);
dialog.open();
}
});
detailPanel.add(detailLabel, BorderLayout.CENTER);
}
statusPanel.add(detailPanel, BorderLayout.CENTER);
}
statusPanel.add(detailPanel, BorderLayout.CENTER);
}
return statusPanel;
}
@ -434,14 +444,14 @@ public class EnvDetectorDialog extends JDialog {
return tailPanel;
}
private void refreshHeaderPanel() {
private void refreshHeader() {
updateHeaderPanel();
pack();
repaint();
}
private void refresh() {
private void refreshBody() {
updateTable(this.tablePanel);
pack();

Loading…
Cancel
Save