第六天 2014年10月7号
版本:1.0.4.DEV
这次主要是解决一些比较麻烦的问题,并没有最新的功能添加
关于编辑器与页面同步的问题
- 重新实现了编辑器与页面同步代码,虽然 JavaFX 没有释放接口,但通过一些办法还是可以拿到想要的数据
- 对于 WebView 而言,需要通过调用 Javascript 接口执行获得页面实际高度
- 对于 TextArea 而言,其结构比较复杂,通过遍历子节点的同时还要判断子节点的类型,确定后才能拿出 ScrollPane,而 ScrollPane ,也需要拿出 Content 之后才能精确拿到高度,以便计算同步高度
- 这次解决了这个问题, 相信会带来比较好的同步视图体验
WebView的实际页面高度
private WebView web;
/**
* 对于Web类型的高度而言,主要考虑加载成功时的计算
*/
public void updateScrollHeight() {
Object result = null;
try {
result = engine.executeScript("(function(){return Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight);})();");
}catch(JSException e){
}
if (result == null) {
scrollHeight = web.getHeight();
return ;
}
scrollHeight = Double.parseDouble(result.toString());
}
TextArea的实际内容高度
private TextArea input;
/**
* 更新可视高度
*/
public void updateScrollHeight() {
double height = -1;
ObservableList<Node> list = input.getChildrenUnmodifiable();
if(list.isEmpty()) height = input.getHeight();
for(Node node : list){
if(node instanceof ScrollPane) {
ScrollPane pane = (ScrollPane) node;
Region content = (Region) pane.getContent();
height = content.getHeight();
break;
}
}
this.scrollHeight = height < 0 ? input.getHeight() : height;
}
关于CTRL+D
删除行的光标问题
- 之前使用
CTRL+D
时,光标向上移了一位,导致体验变差 - 这次效果与 Eclipse 的
CTRL+D
的功能相同体验
添加了CTRL+P
预览命令
- 添加预览,并不执行保存