mirror of
https://gitee.com/willfree/minbrowser.git
synced 2026-10-05 01:15:42 +08:00
完全调试通过了书签页收藏功能(书签数据存放在本地数据文件中)
This commit is contained in:
1 parent
2d5b5e9c9d
commit
cb700a39fc
9 files changed
+209
-18
No files matched your search
@@ -0,0 +1,3 @@
|
||||
%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B%EF%BC%8C%E4%BD%A0%E5%B0%B1%E7%9F%A5%E9%81%93 https%3A%2F%2Fwww.baidu.com%2F
|
||||
%E5%8D%B0%E5%BA%A6%E5%86%8D%E6%AC%A1%E7%A6%81%E7%94%A8%E4%B8%AD%E5%9B%BDAPP+%E5%A4%96%E4%BA%A4%E9%83%A8%E5%9B%9E%E5%BA%94_%E7%99%BE%E5%BA%A6%E6%90%9C%E7%B4%A2 https%3A%2F%2Fwww.baidu.com%2Fs%3Fcl%3D3%26tn%3Dbaidutop10%26fr%3Dtop1000%26wd%3D%E5%8D%B0%E5%BA%A6%E5%86%8D%E6%AC%A1%E7%A6%81%E7%94%A8%E4%B8%AD%E5%9B%BDAPP+%E5%A4%96%E4%BA%A4%E9%83%A8%E5%9B%9E%E5%BA%94%26rsv_idx%3D2%26rsv_dl%3Dfyb_n_homepage%26hisfilter%3D1
|
||||
%E6%98%8E%E5%B9%B4%E6%94%BE%E5%81%87%E5%AE%89%E6%8E%92%E5%87%BA%E7%82%89%21%E4%BA%94%E4%B8%80%E8%BF%9E%E4%BC%915%E5%A4%A9_%E7%99%BE%E5%BA%A6%E6%90%9C%E7%B4%A2 https%3A%2F%2Fwww.baidu.com%2Fs%3Fcl%3D3%26tn%3Dbaidutop10%26fr%3Dtop1000%26wd%3D%E6%98%8E%E5%B9%B4%E6%94%BE%E5%81%87%E5%AE%89%E6%8E%92%E5%87%BA%E7%82%89%21%E4%BA%94%E4%B8%80%E8%BF%9E%E4%BC%915%E5%A4%A9%26rsv_idx%3D2%26rsv_dl%3Dfyb_n_homepage%26hisfilter%3D1
|
||||
@@ -11,11 +11,20 @@
|
||||
<hr>
|
||||
</body>
|
||||
<script>
|
||||
function testShow() {
|
||||
var test1={id:"1",title:"百度两下",urlString:"https://www.baidu.com"};
|
||||
var test2={id:"2",title:"淅沥淅沥",urlString:"https://www.bilibili.com"};
|
||||
var test3={id:"3",title:"码云",urlString:"https://gitee.com/"};
|
||||
var bk=[test1,test2,test3];
|
||||
// function testShow() {
|
||||
// var test1={id:"1",title:"百度两下",urlString:"https://www.baidu.com"};
|
||||
// var test2={id:"2",title:"淅沥淅沥",urlString:"https://www.bilibili.com"};
|
||||
// var test3={id:"3",title:"码云",urlString:"https://gitee.com/"};
|
||||
// var bk=[test1,test2,test3];
|
||||
// showBookmarks(bk);
|
||||
// }
|
||||
var namecache="bookmark_name";
|
||||
function setCacheName(name) {
|
||||
namecache=name;
|
||||
}
|
||||
function addOneBookmark(bookmark_url) {
|
||||
var bookmark={id:"",title:namecache,urlString:bookmark_url};
|
||||
var bk=[bookmark];
|
||||
showBookmarks(bk);
|
||||
}
|
||||
// 唯一ID产生器
|
||||
@@ -32,8 +41,9 @@
|
||||
var object=bk[i];
|
||||
// 获取元素:链接
|
||||
var li=document.createElement("li");
|
||||
li.innerHTML=(object.title+" "+object.urlString).link(object.urlString)+" ";
|
||||
li.innerHTML=object.title+" "+(object.urlString).link(object.urlString)+" ";
|
||||
li.id=g();
|
||||
javaSetter.addMap(li.id,object.urlString);
|
||||
li.style="display:inline;";
|
||||
// 获取元素:按钮
|
||||
var btn=document.createElement("button");
|
||||
@@ -41,7 +51,10 @@
|
||||
btn.id=g();
|
||||
btn.style="background-color:red;color:white";
|
||||
btn.onclick=function () {
|
||||
alert(this.id);
|
||||
// alert(this.id);
|
||||
// 先执行删除数据的操作
|
||||
javaSetter.deleteBookmarkById(this.id-1);
|
||||
// 再删除页面元素
|
||||
document.getElementById(this.id-1).remove();
|
||||
document.getElementById(this.id).remove();
|
||||
};
|
||||
@@ -55,6 +68,6 @@
|
||||
ul.appendChild(br);
|
||||
}
|
||||
}
|
||||
testShow();
|
||||
// testShow();
|
||||
</script>
|
||||
</html>
|
||||
@@ -37,7 +37,17 @@ public class Bookmark {
|
||||
bookmarks.add(new BookmarkModel(name, url));
|
||||
}
|
||||
public void addOneBookmark(BookmarkModel bookmarkModel){
|
||||
bookmarks.add(bookmarkModel);
|
||||
// 判断是否已经存在该标签
|
||||
boolean flag=false;
|
||||
for(int i=0;i<bookmarks.size();i++){
|
||||
if(bookmarks.get(i).getUrl().equals(bookmarkModel.getUrl())){
|
||||
flag=true;
|
||||
}
|
||||
}
|
||||
// 不存在,则加入
|
||||
if(!flag) {
|
||||
bookmarks.add(bookmarkModel);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,12 +17,14 @@ import java.util.List;
|
||||
public class BookMarkUtil {
|
||||
|
||||
// 书签数据保存到的地址
|
||||
public static String bookmarksFilePath=SettingPropertyUtil.settingPath +"BookmarksData";
|
||||
// private static String bookmarksFilePath=SettingPropertyUtil.settingPath +"BookmarksData";
|
||||
private static String bookmarksFilePath="." + File.separator + "min" + File.separator +"BookmarksData";
|
||||
|
||||
/**
|
||||
* 从本地文件中读取所有标签页数据
|
||||
*/
|
||||
private static Bookmark readBookMarks(){
|
||||
public static Bookmark readBookMarks(){
|
||||
confirmFileExistence(bookmarksFilePath);
|
||||
Bookmark bookmark=new Bookmark();
|
||||
try {
|
||||
FileInputStream inputStream = new FileInputStream(bookmarksFilePath);
|
||||
@@ -58,11 +60,50 @@ public class BookMarkUtil {
|
||||
*/
|
||||
private static void saveWholeBookmarks(Bookmark bookmark){
|
||||
List<Bookmark.BookmarkModel> bookmarks=bookmark.getBookmarks();
|
||||
clearFileContent(bookmarksFilePath);
|
||||
for(int i=0;i<bookmarks.size();i++){
|
||||
saveNewBookMark(bookmarks.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认某个需要存在的文件存在:不存在则自动创建之,返回false;否则返回true
|
||||
* @return
|
||||
*/
|
||||
private static boolean confirmFileExistence(String fileName){
|
||||
File file =new File(fileName);
|
||||
boolean flag=true;
|
||||
try {
|
||||
if(!file.exists()) {
|
||||
file.createNewFile();
|
||||
flag=false;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
flag=false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空某个文件的内容
|
||||
* @param fileName
|
||||
*/
|
||||
private static void clearFileContent(String fileName) {
|
||||
File file =new File(fileName);
|
||||
try {
|
||||
if(!file.exists()) {
|
||||
file.createNewFile();
|
||||
}
|
||||
FileWriter fileWriter =new FileWriter(file);
|
||||
fileWriter.write("");
|
||||
fileWriter.flush();
|
||||
fileWriter.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存一个标签页的信息到本地
|
||||
*/
|
||||
@@ -70,7 +111,7 @@ public class BookMarkUtil {
|
||||
// 向文件中写入新的标签页
|
||||
try {
|
||||
File file = new File(bookmarksFilePath);
|
||||
FileOutputStream fos = null;
|
||||
FileOutputStream fos;
|
||||
if (!file.exists()) {
|
||||
file.createNewFile();//如果文件不存在,就创建该文件
|
||||
fos = new FileOutputStream(file);//首次写入获取
|
||||
|
||||
@@ -4,7 +4,9 @@ package cn.minbrowser.view;
|
||||
* @author wefree
|
||||
*/
|
||||
import cn.minbrowser.MainApp;
|
||||
import cn.minbrowser.model.Bookmark;
|
||||
import cn.minbrowser.protocol.MinURL.MinURLStreamHandlerFactory;
|
||||
import cn.minbrowser.util.BookMarkUtil;
|
||||
import cn.minbrowser.util.CustomUrlUtil;
|
||||
import cn.minbrowser.view.minibrowser.MiniTab;
|
||||
import javafx.application.Platform;
|
||||
@@ -42,6 +44,8 @@ public class NavigationBarController implements Initializable {
|
||||
private boolean isShowingSettingList;
|
||||
// 标记收藏标签页的弹窗的显示状态
|
||||
private boolean isShowingCollectingBookmark;
|
||||
// 保存所有标签收藏页的信息
|
||||
public Bookmark bookmark;
|
||||
|
||||
// 收藏标签页
|
||||
@FXML
|
||||
@@ -60,6 +64,8 @@ public class NavigationBarController implements Initializable {
|
||||
public void setMainApp(MainApp mainApp) {
|
||||
this.mainApp = mainApp;
|
||||
registerMinUrl();
|
||||
// 加载标签收藏页的所有数据
|
||||
bookmark= BookMarkUtil.readBookMarks();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -299,8 +305,8 @@ public class NavigationBarController implements Initializable {
|
||||
*/
|
||||
public void showBookmarkPane(String name, String url, Object userData) {
|
||||
if(!isShowingCollectingBookmark) {
|
||||
Double width = bookmarkPane.getScene().getWidth();
|
||||
AnchorPane.setLeftAnchor(bookmarkPane, 500D);
|
||||
// Double width = bookmarkPane.getScene().getWidth();
|
||||
AnchorPane.setLeftAnchor(bookmarkPane, 900D);
|
||||
bookmarkAddress.setText(url);
|
||||
bookmarkName.setText(name);
|
||||
bookmarkPane.setVisible(true);
|
||||
@@ -323,6 +329,10 @@ public class NavigationBarController implements Initializable {
|
||||
*/
|
||||
@FXML
|
||||
private void saveBookmark() {
|
||||
|
||||
Bookmark.BookmarkModel bookmarkModel=new Bookmark.BookmarkModel(
|
||||
bookmarkName.getText().trim(),bookmarkAddress.getText().trim());
|
||||
BookMarkUtil.saveBookMark(bookmarkModel);
|
||||
bookmark=BookMarkUtil.readBookMarks();
|
||||
hideBookmark();
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
package cn.minbrowser.view;
|
||||
|
||||
import cn.minbrowser.model.Bookmark;
|
||||
import cn.minbrowser.util.BookMarkUtil;
|
||||
import cn.minbrowser.util.FilePermissionUtil;
|
||||
import cn.minbrowser.view.login.LoginHandler;
|
||||
import cn.minbrowser.view.login.RegisterHandler;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.minbrowser.util.FilePermissionUtil.getRootPath;
|
||||
|
||||
/*
|
||||
@@ -13,7 +17,18 @@ public class TestMain {
|
||||
public static void main(String[] args) {
|
||||
// RegisterHandler.handleRegister("wefree","1","15239970973","kM2!rZ8^");
|
||||
// LoginHandler.handleLogin("wefree","1");
|
||||
FilePermissionUtil.getUserHome();
|
||||
System.out.println(FilePermissionUtil.getRootPath());
|
||||
// FilePermissionUtil.getUserHome();
|
||||
// System.out.println(FilePermissionUtil.getRootPath());
|
||||
// for(int i=1;i<6;i++) {
|
||||
// Bookmark.BookmarkModel bookmarkModel = new Bookmark.BookmarkModel(
|
||||
// "百度一下"+i, "https://www.baidu.com"+i);
|
||||
// BookMarkUtil.saveBookMark(bookmarkModel);
|
||||
// }
|
||||
Bookmark bookmark= BookMarkUtil.readBookMarks();
|
||||
List<Bookmark.BookmarkModel> bookmarkModels=bookmark.getBookmarks();
|
||||
for(int i=0;i<bookmarkModels.size();i++){
|
||||
Bookmark.BookmarkModel bookmarkModel=bookmarkModels.get(i);
|
||||
System.out.println(bookmarkModel.getName()+" "+bookmarkModel.getUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.minbrowser.view.minibrowser;
|
||||
|
||||
import cn.minbrowser.model.Bookmark;
|
||||
import cn.minbrowser.protocol.util.MinUrlUtil;
|
||||
import cn.minbrowser.util.ConnectTestUtil;
|
||||
import cn.minbrowser.util.FilePermissionUtil;
|
||||
@@ -7,6 +8,7 @@ import cn.minbrowser.view.MainPageHTMLController;
|
||||
import cn.minbrowser.view.NavigationBarController;
|
||||
import cn.minbrowser.view.login.LoginHTMLController;
|
||||
import cn.minbrowser.view.login.RegisterHTMLController;
|
||||
import cn.minbrowser.view.setting.BookmarkHTMLController;
|
||||
import cn.minbrowser.view.setting.SettingHTMLController;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
@@ -33,6 +35,8 @@ import java.io.UnsupportedEncodingException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.minbrowser.util.CustomUrlUtil.*;
|
||||
|
||||
@@ -69,6 +73,7 @@ public class MiniTab extends Tab {
|
||||
private LoginHTMLController loginHTMLController;
|
||||
private RegisterHTMLController registerHTMLController;
|
||||
private MainPageHTMLController mainPageHTMLController;
|
||||
private BookmarkHTMLController bookmarkHTMLController;
|
||||
|
||||
public MiniTab(NavigationBarController navigationBarController){
|
||||
this(HOME_URL,navigationBarController);
|
||||
@@ -86,6 +91,7 @@ public class MiniTab extends Tab {
|
||||
loginHTMLController=new LoginHTMLController(navigationBarController);
|
||||
registerHTMLController=new RegisterHTMLController(navigationBarController);
|
||||
mainPageHTMLController=new MainPageHTMLController();
|
||||
bookmarkHTMLController=new BookmarkHTMLController(navigationBarController);
|
||||
// 设置各组件在AnchorPane中的位置
|
||||
AnchorPane.setLeftAnchor(webview, 0D);
|
||||
AnchorPane.setRightAnchor(webview, 0D);
|
||||
@@ -287,7 +293,7 @@ public class MiniTab extends Tab {
|
||||
analysisAddress(INDEX_URL);
|
||||
break;
|
||||
case BOOKMARK:
|
||||
// controller.showBookmarkPane(getText(), input.getText(), null);
|
||||
navigationBarController.showBookmarkPane(getText(), input.getText(), null);
|
||||
break;
|
||||
}
|
||||
});
|
||||
@@ -337,6 +343,8 @@ public class MiniTab extends Tab {
|
||||
input.setText(ERROR_URL);
|
||||
}else if(url.contains("resources/html/Bookmarks/bookmarks.html")){
|
||||
input.setText(Bookmarks_SHOW_URL);
|
||||
setChangingBookmarkInfoListener();
|
||||
showBookmarkInfoByListenEngineState();
|
||||
}else {
|
||||
try {
|
||||
input.setText(URLDecoder.decode(url, "UTF-8"));
|
||||
@@ -368,6 +376,30 @@ public class MiniTab extends Tab {
|
||||
System.out.println("finished.");
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行bookmarks.html中的js代码,显示配置信息
|
||||
*/
|
||||
private void showBookmarkInfoByListenEngineState() {
|
||||
List<Bookmark.BookmarkModel> bookmarkModels=navigationBarController.bookmark.getBookmarks();
|
||||
for(int i=0;i<bookmarkModels.size();i++){
|
||||
Bookmark.BookmarkModel bookmarkModel=bookmarkModels.get(i);
|
||||
System.out.println(bookmarkModel.getName()+" "+bookmarkModel.getUrl());
|
||||
webview.getEngine().executeScript(
|
||||
"setCacheName(\""+bookmarkModel.getName()+"\");");
|
||||
webview.getEngine().executeScript(
|
||||
"addOneBookmark(\""+bookmarkModel.getUrl()+"\");");
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 将BookmarkHTMLController作为对象传入HTML中的JS,从而被JS调用
|
||||
*/
|
||||
private void setChangingBookmarkInfoListener(){
|
||||
System.out.println("start setting js listener (bookmark.html) ...");
|
||||
JSObject jsObject=(JSObject)webview.getEngine().executeScript("window");
|
||||
jsObject.setMember("javaSetter",bookmarkHTMLController);
|
||||
System.out.println("finished.");
|
||||
}
|
||||
|
||||
/**
|
||||
* 将LoginHTMLController作为对象传入HTML中的JS,从而被JS调用
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package cn.minbrowser.view.setting;
|
||||
|
||||
/*
|
||||
* @author wefree
|
||||
*/
|
||||
|
||||
import cn.minbrowser.model.Bookmark;
|
||||
import cn.minbrowser.util.BookMarkUtil;
|
||||
import cn.minbrowser.view.NavigationBarController;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 为bookmarks.html做数据传输
|
||||
*/
|
||||
public class BookmarkHTMLController {
|
||||
private NavigationBarController navigationBarController;
|
||||
|
||||
// 存储对应前端数据的键值对
|
||||
HashMap<String,String> dataMap=new HashMap<String, String>();
|
||||
|
||||
public BookmarkHTMLController(NavigationBarController navigationBarController){
|
||||
this.navigationBarController=navigationBarController;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除一个标签页数据
|
||||
* @param bookmark_url
|
||||
*/
|
||||
public void deleteBookmark(String bookmark_url){
|
||||
System.out.println("接收到了HTML发来的登录请求(deleteBookmark):"+bookmark_url);
|
||||
try {
|
||||
Bookmark.BookmarkModel bookmarkModel=new Bookmark.BookmarkModel("",bookmark_url);
|
||||
BookMarkUtil.rmBookMark(bookmarkModel);
|
||||
navigationBarController.bookmark=BookMarkUtil.readBookMarks();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
public void deleteBookmarkById(String id){
|
||||
System.out.println("接收到了HTML发来的登录请求(deleteBookmarkById):"+id);
|
||||
String bookmark_url=dataMap.get(id);
|
||||
deleteBookmark(bookmark_url);
|
||||
dataMap.remove(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 与前端同步的一个映射
|
||||
* @param id
|
||||
* @param bookmark_url
|
||||
*/
|
||||
public void addMap(String id,String bookmark_url){
|
||||
System.out.println("接收到了HTML发来的登录请求(addMap):"+id+" "+bookmark_url);
|
||||
try{
|
||||
dataMap.put(id,bookmark_url);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,12 @@
|
||||
.bookmark{
|
||||
-fx-background-image: url(../image/plus_16.png);
|
||||
}
|
||||
.inner_pane{
|
||||
-fx-border-radius: 3px;
|
||||
-fx-border-color: dodgerblue;
|
||||
-fx-border-style: solid;
|
||||
-fx-background-color: white;
|
||||
}
|
||||
/*#backButton {*/
|
||||
/*!*-fx-padding: 5 22 5 22;*!*/
|
||||
/*-fx-border-color: white;*/
|
||||
|
||||
Reference in new issue
Block a user