plough
6 years ago
8 changed files with 441 additions and 30 deletions
@ -0,0 +1,127 @@ |
|||||||
|
package com.fr.design.onlineupdate.push; |
||||||
|
|
||||||
|
import com.fr.design.dialog.UIDialog; |
||||||
|
import com.fr.design.ui.ModernUIPane; |
||||||
|
import com.fr.design.utils.gui.GUICoreUtils; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Dimension; |
||||||
|
import java.awt.Frame; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by plough on 2019/4/10. |
||||||
|
*/ |
||||||
|
class DesignerPushUpdateDialog extends UIDialog { |
||||||
|
public static final Dimension DEFAULT = new Dimension(640, 320); |
||||||
|
|
||||||
|
private ModernUIPane<Model> jsPane; |
||||||
|
|
||||||
|
private DesignerPushUpdateDialog(Frame parent) { |
||||||
|
super(parent); |
||||||
|
setModal(true); |
||||||
|
initComponents(); |
||||||
|
} |
||||||
|
|
||||||
|
static void createAndShow(Frame parent, DesignerUpdateInfo updateInfo) { |
||||||
|
DesignerPushUpdateDialog dialog = new DesignerPushUpdateDialog(parent); |
||||||
|
dialog.populate(updateInfo); |
||||||
|
dialog.showDialog(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initComponents() { |
||||||
|
JPanel contentPane = (JPanel) getContentPane(); |
||||||
|
contentPane.setLayout(new BorderLayout()); |
||||||
|
|
||||||
|
jsPane = new ModernUIPane.Builder<Model>() |
||||||
|
.withEMB("/com/fr/design/ui/onlineupdate/push/pushUpdate.html").namespace("Pool").build(); |
||||||
|
|
||||||
|
contentPane.add(jsPane); |
||||||
|
} |
||||||
|
|
||||||
|
private void populate(DesignerUpdateInfo updateInfo) { |
||||||
|
Model model = createModel(updateInfo); |
||||||
|
jsPane.populate(model); |
||||||
|
} |
||||||
|
|
||||||
|
private Model createModel(DesignerUpdateInfo updateInfo) { |
||||||
|
Model model = new Model(); |
||||||
|
model.setVersion(updateInfo.getPushVersion()); |
||||||
|
model.setContent(updateInfo.getPushContent()); |
||||||
|
model.setMoreInfoUrl(updateInfo.getMoreInfoUrl()); |
||||||
|
model.setBackgroundUrl(updateInfo.getBackgroundUrl()); |
||||||
|
return model; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void checkValid() throws Exception { |
||||||
|
// do nothing
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 显示窗口 |
||||||
|
*/ |
||||||
|
private void showDialog() { |
||||||
|
setSize(DEFAULT); |
||||||
|
setUndecorated(true); |
||||||
|
GUICoreUtils.centerWindow(this); |
||||||
|
setVisible(true); |
||||||
|
} |
||||||
|
|
||||||
|
public class Model { |
||||||
|
private String version; |
||||||
|
private String content; |
||||||
|
private String moreInfoUrl; |
||||||
|
private String backgroundUrl; |
||||||
|
|
||||||
|
public String getVersion() { |
||||||
|
return version; |
||||||
|
} |
||||||
|
|
||||||
|
public void setVersion(String version) { |
||||||
|
this.version = version; |
||||||
|
} |
||||||
|
|
||||||
|
public String getContent() { |
||||||
|
return content; |
||||||
|
} |
||||||
|
|
||||||
|
public void setContent(String content) { |
||||||
|
this.content = content; |
||||||
|
} |
||||||
|
|
||||||
|
public String getMoreInfoUrl() { |
||||||
|
return moreInfoUrl; |
||||||
|
} |
||||||
|
|
||||||
|
public void setMoreInfoUrl(String moreInfoUrl) { |
||||||
|
this.moreInfoUrl = moreInfoUrl; |
||||||
|
} |
||||||
|
|
||||||
|
public String getBackgroundUrl() { |
||||||
|
return backgroundUrl; |
||||||
|
} |
||||||
|
|
||||||
|
public void setBackgroundUrl(String backgroundUrl) { |
||||||
|
this.backgroundUrl = backgroundUrl; |
||||||
|
} |
||||||
|
|
||||||
|
public void updateNow() { |
||||||
|
DesignerPushUpdateManager.getInstance().doUpdate(); |
||||||
|
exit(); |
||||||
|
} |
||||||
|
|
||||||
|
public void remindNextTime() { |
||||||
|
exit(); |
||||||
|
} |
||||||
|
|
||||||
|
public void skipThisVersion() { |
||||||
|
DesignerPushUpdateManager.getInstance().skipCurrentPushVersion(); |
||||||
|
exit(); |
||||||
|
} |
||||||
|
|
||||||
|
private void exit() { |
||||||
|
DesignerPushUpdateDialog.this.dialogExit(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,179 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<title>Push Update</title> |
||||||
|
<link rel="stylesheet" href="emb:/com/fr/web/ui/fineui.min.css"/> |
||||||
|
<script src="emb:/com/fr/web/ui/fineui.min.js"></script> |
||||||
|
<style> |
||||||
|
.title { |
||||||
|
font-size: 30px; |
||||||
|
} |
||||||
|
.desc { |
||||||
|
margin-top: 35px; |
||||||
|
} |
||||||
|
.moreInfo { |
||||||
|
margin-top: 15px; |
||||||
|
} |
||||||
|
.buttonGroup { |
||||||
|
margin-top: 35px; |
||||||
|
} |
||||||
|
.button-ignore { |
||||||
|
|
||||||
|
} |
||||||
|
body { |
||||||
|
padding-left: 30px; |
||||||
|
padding-top: 30px; |
||||||
|
color: white; |
||||||
|
} |
||||||
|
</style> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<script> |
||||||
|
// var EVENT_POPULATE = "EVENT_POPULATE"; |
||||||
|
|
||||||
|
// var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; |
||||||
|
// |
||||||
|
// var observer = new MutationObserver(function(mutations) { |
||||||
|
// mutations.forEach(function(mutation) { |
||||||
|
// if (mutation.type === "attributes" && window.Pool) { |
||||||
|
// console.log("attributes changed"); |
||||||
|
// window.fireEvent(EVENT_POPULATE); |
||||||
|
// } |
||||||
|
// }); |
||||||
|
// }); |
||||||
|
// |
||||||
|
// observer.observe(window, { |
||||||
|
// attributes: true //configure it to listen to attribute changes |
||||||
|
// }); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
window.addEventListener("load", function (ev) { |
||||||
|
// alert(window.Pool.data); |
||||||
|
// todo: 开发临时方案 |
||||||
|
// setTimeout(function () { |
||||||
|
|
||||||
|
console.log(window.Pool.data); |
||||||
|
var title = BI.createWidget({ |
||||||
|
type: "bi.vertical", |
||||||
|
items: [ |
||||||
|
{ |
||||||
|
type: "bi.label", |
||||||
|
text: "发现新版本", |
||||||
|
cls: "title", |
||||||
|
textAlign: "left" |
||||||
|
}, |
||||||
|
{ |
||||||
|
type: "bi.label", |
||||||
|
text: Pool.data.getVersion(), |
||||||
|
textAlign: "left" |
||||||
|
} |
||||||
|
] |
||||||
|
}); |
||||||
|
|
||||||
|
var desc = BI.createWidget({ |
||||||
|
type: "bi.vertical", |
||||||
|
cls: "desc", |
||||||
|
items: [ |
||||||
|
{ |
||||||
|
type: "bi.label", |
||||||
|
// text: "1) xxx", |
||||||
|
text: Pool.data.getContent(), |
||||||
|
textAlign: "left" |
||||||
|
} |
||||||
|
// { |
||||||
|
// type: "bi.label", |
||||||
|
// text: "2) ldsnvls df", |
||||||
|
// textAlign: "left" |
||||||
|
// } |
||||||
|
] |
||||||
|
}); |
||||||
|
|
||||||
|
var moreInfo = BI.createWidget({ |
||||||
|
type: "bi.text_button", |
||||||
|
text: "更多信息", |
||||||
|
cls: "moreInfo", |
||||||
|
textAlign: "left" |
||||||
|
}); |
||||||
|
|
||||||
|
var buttonGroup = BI.createWidget({ |
||||||
|
type: 'bi.left', |
||||||
|
cls: "buttonGroup", |
||||||
|
items: [ |
||||||
|
{ |
||||||
|
type: 'bi.button', |
||||||
|
text: '立即更新', |
||||||
|
level: 'common', |
||||||
|
height: 30, |
||||||
|
handler: function() { |
||||||
|
Pool.data.updateNow(); |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
el: { |
||||||
|
type: 'bi.button', |
||||||
|
text: '下次启动提醒我', |
||||||
|
level: 'ignore', |
||||||
|
height: 30, |
||||||
|
handler: function() { |
||||||
|
Pool.data.remindNextTime(); |
||||||
|
} |
||||||
|
}, |
||||||
|
lgap: 10 |
||||||
|
}, |
||||||
|
{ |
||||||
|
el: { |
||||||
|
type: 'bi.button', |
||||||
|
text: '跳过此版本', |
||||||
|
level: 'ignore', |
||||||
|
height: 30, |
||||||
|
handler: function() { |
||||||
|
Pool.data.skipThisVersion(); |
||||||
|
} |
||||||
|
}, |
||||||
|
lgap: 10 |
||||||
|
} |
||||||
|
] |
||||||
|
}); |
||||||
|
|
||||||
|
BI.createWidget({ |
||||||
|
type:"bi.vertical", |
||||||
|
element: "body", |
||||||
|
cls: "container", |
||||||
|
items: [ |
||||||
|
title, |
||||||
|
desc, |
||||||
|
moreInfo, |
||||||
|
buttonGroup |
||||||
|
] |
||||||
|
}); |
||||||
|
|
||||||
|
$(".container").css("background", "url(" + Pool.data.getBackgroundUrl() + ")"); |
||||||
|
$(".button-ignore").css({ |
||||||
|
"background-color": "white", |
||||||
|
"border": "1px solid white" |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }, 2000); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// setTimeout(function() { |
||||||
|
// // alert(Pool.data); |
||||||
|
// alert(Pool.data.getName() + " " + Pool.data.getAge()); |
||||||
|
// }, 2000); |
||||||
|
|
||||||
|
// Pool.update = function () { |
||||||
|
// Pool.data.setAge(12); |
||||||
|
// Pool.data.setName("Tom"); |
||||||
|
// return Pool.data; |
||||||
|
// }; |
||||||
|
}); |
||||||
|
|
||||||
|
</script> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,23 @@ |
|||||||
|
package com.fr.design.onlineupdate.push; |
||||||
|
|
||||||
|
import com.fr.design.DesignerEnvManager; |
||||||
|
import com.fr.json.JSONObject; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by plough on 2019/4/10. |
||||||
|
*/ |
||||||
|
public class DesignerPushUpdateDialogTest { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
DesignerEnvManager.getEnvManager().setOpenDebug(true); |
||||||
|
|
||||||
|
JSONObject jo = JSONObject.create(); |
||||||
|
jo.put("version", "2019.03.06.04.02.43.6"); |
||||||
|
jo.put("content", "test content"); |
||||||
|
jo.put("more", "http://baidu.com"); |
||||||
|
jo.put("background", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1555043827901&di=fc266992abef5a7e13b4e0cb98975a75&imgtype=0&src=http%3A%2F%2Fi5.3conline.com%2Fimages%2Fpiclib%2F201203%2F20%2Fbatch%2F1%2F130280%2F1332249463721rez0li5fg0_medium.jpg"); |
||||||
|
DesignerUpdateInfo mockUpdateInfo = new DesignerUpdateInfo("111.22.11", "2211.231.1", "11.23.1", jo); |
||||||
|
|
||||||
|
DesignerPushUpdateDialog.createAndShow(null, mockUpdateInfo); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue