Browse Source

Pull request #2306: REPORT-39338 【回归】内置服务器启动进度条会先展示上次的进度再初始化

Merge in DESIGN/design from ~YVAN/design:release/10.0 to release/10.0

* commit '9e42bed9aa88cf0f440bffa6b6d4848d8430bad0':
  考虑到progressDialog目前只在FineEmbedServerMonitor中使用,所以将原本维护在DesignerFrame中的progressDialog放到FineEmbedServerMonitor中,而DesignerFrame原本的成员变量和相应初始化删除,一些相关方法先做成空实现,然后标记为废弃,这些方法具体实现和使用都放到FineEmbedServerMonitor中
  REPORT-39338 【回归】内置服务器启动进度条会先展示上次的进度再初始化 1. 更新修改方案:确定了一直维护同一个进度条dialog没有特殊意义之后,选择在每一次关闭服务器或者服务器启动完成后dialog废弃掉,然后在每一次需要打开对话框的时候,新建一个
  添加修改
  REPORT-39338 【回归】内置服务器启动进度条会先展示上次的进度再初始化 1. bug原因:,每次内置服务器启动使用的进度条弹窗都是同一个,只是在可见与不可见状态之间切换,而在启动成功之后,没有清空上次进度,所以会先显示上次进度 2. 修改方案:为进度条的value置0,并刷新UI
feature/big-screen
Yvan 4 years ago
parent
commit
aebaecce97
  1. 24
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java
  2. 21
      designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java

24
designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java

@ -257,8 +257,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
}
};
private ProgressDialog progressDialog;
public DesignerFrame(ToolBarMenuDock ad) {
setName(DESIGNER_FRAME_NAME);
@ -338,7 +336,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
this.setDropTarget(new DropTarget(this, DnDConstants.ACTION_MOVE, new FileDropTargetListener(), true));
closeMode = UIConstants.CLOSE_OF_AUTHORITY;
initMenuPane();
this.progressDialog = new ProgressDialog(this);
}
public void resizeFrame() {
@ -1264,23 +1261,15 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
}
}
@Deprecated
public ProgressDialog getProgressDialog() {
return progressDialog;
}
public void showProgressDialog() {
progressDialog.setVisible(true);
return new ProgressDialog(this);
}
/**
* 隐藏进度框
*/
public void hideProgressDialog() {
@Deprecated
public void openProgressDialog() {
progressDialog.setVisible(false);
}
/**
@ -1288,17 +1277,17 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
*
* @param progress 进度值
*/
@Deprecated
public void updateProgress(int progress) {
progressDialog.setProgressValue(progress);
}
/**
* 释放进度框
*/
@Deprecated
public void disposeProgressDialog() {
progressDialog.dispose();
}
/**
@ -1309,4 +1298,5 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
public boolean isDesignerOpened() {
return designerOpened;
}
}

21
designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java

@ -32,7 +32,7 @@ public class FineEmbedServerMonitor {
*/
private static final int STEP_HEARTBEAT = 40;
private static volatile FineEmbedServerMonitor monitor;
private static ProgressDialog progressBar = DesignerContext.getDesignerFrame().getProgressDialog();
private static ProgressDialog progressDialog = new ProgressDialog(DesignerContext.getDesignerFrame());
//由于默认值的字体不支持韩文,所以要对韩文单独生成字体
private FRFont font = null;
private static final int FONT_RGB = 333334;
@ -47,7 +47,7 @@ public class FineEmbedServerMonitor {
@Override
public void on(Event event, Null aNull) {
getInstance().reset();
DesignerContext.getDesignerFrame().hideProgressDialog();
progressDialog.dispose();
}
});
}
@ -64,7 +64,7 @@ public class FineEmbedServerMonitor {
}
public int getProgress() {
if (progress == progressBar.getProgressMaximum()) {
if (progress == progressDialog.getProgressMaximum()) {
return progress;
} else {
progress += STEP;
@ -73,7 +73,7 @@ public class FineEmbedServerMonitor {
}
public void setComplete() {
this.progress = progressBar.getProgressMaximum();
this.progress = progressDialog.getProgressMaximum();
}
public void reset() {
@ -81,7 +81,7 @@ public class FineEmbedServerMonitor {
}
public boolean isComplete() {
return this.progress >= progressBar.getProgressMaximum();
return this.progress >= progressDialog.getProgressMaximum();
}
public void monitor() {
@ -92,11 +92,12 @@ public class FineEmbedServerMonitor {
public void run() {
if (isComplete()) {
scheduler.shutdown();
DesignerContext.getDesignerFrame().hideProgressDialog();
progressDialog.dispose();
return;
}
if (!DesignerContext.getDesignerFrame().getProgressDialog().isVisible()) {
DesignerContext.getDesignerFrame().showProgressDialog();
if (!progressDialog.isVisible()) {
progressDialog = new ProgressDialog(DesignerContext.getDesignerFrame());
progressDialog.setVisible(true);
//如果为韩文则改变字体
LocaleCenter.buildAction(new LocaleAction() {
@Override
@ -105,9 +106,9 @@ public class FineEmbedServerMonitor {
}
}, SupportLocaleImpl.SUPPORT_KOREA);
String text = Toolkit.i18nText("Fine-Design_Basic_Loading_Embed_Server");
DesignerContext.getDesignerFrame().getProgressDialog().updateLoadingText(text, font);
progressDialog.updateLoadingText(text, font);
}
DesignerContext.getDesignerFrame().updateProgress(getProgress());
progressDialog.setProgressValue(getProgress());
}
}, 0, STEP_HEARTBEAT, TimeUnit.MILLISECONDS);

Loading…
Cancel
Save