@ -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 ( ) ;