From 048c56a6366b80737d61a287db7b87205e2d1cc6 Mon Sep 17 00:00:00 2001
From: free will <2647778488@qq.com>
Date: Fri, 6 Nov 2020 11:11:20 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=A5=BD=E4=BA=86=E6=96=B0=E5=BB=BA?=
=?UTF-8?q?=E6=A0=87=E7=AD=BE=E9=A1=B5=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cn/minbrowser/util/ConnectTestUtil.java | 20 ++++++
.../view/NavigationBarController.java | 62 ++++++++++++-------
.../minbrowser/view/minibrowser/MiniTab.java | 13 ++--
.../fxml/NavigationBarOverviewV2.fxml | 1 +
4 files changed, 70 insertions(+), 26 deletions(-)
create mode 100644 src/main/java/cn/minbrowser/util/ConnectTestUtil.java
diff --git a/src/main/java/cn/minbrowser/util/ConnectTestUtil.java b/src/main/java/cn/minbrowser/util/ConnectTestUtil.java
new file mode 100644
index 0000000..fd8da7c
--- /dev/null
+++ b/src/main/java/cn/minbrowser/util/ConnectTestUtil.java
@@ -0,0 +1,20 @@
+package cn.minbrowser.util;
+
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class ConnectTestUtil {
+ protected static int Timeout = 2000;
+ public static int Request(String request){
+ try{
+ URL url = new URL(request);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("HEAD");
+ connection.setConnectTimeout(Timeout);
+ connection.setReadTimeout(Timeout);
+ return connection.getResponseCode();
+ }catch (Exception e){
+ return 404;
+ }
+ }
+}
diff --git a/src/main/java/cn/minbrowser/view/NavigationBarController.java b/src/main/java/cn/minbrowser/view/NavigationBarController.java
index 29ea075..8588297 100644
--- a/src/main/java/cn/minbrowser/view/NavigationBarController.java
+++ b/src/main/java/cn/minbrowser/view/NavigationBarController.java
@@ -33,6 +33,8 @@ public class NavigationBarController implements Initializable {
private ImageView userPhoto;
@FXML
private ImageView settingPhoto;
+ @FXML
+ private Button addTabButton;
private final Double tabHeaderWidth = 200D;
@@ -59,32 +61,48 @@ public class NavigationBarController implements Initializable {
//在fxml被载入时候被自动调用
this.userPhoto.setImage(new Image("file:resources/images/user.png"));
this.settingPhoto.setImage(new Image("file:resources/images/3dot.png"));
- // 初始化增加标签按钮
- Button addTabBtn=new Button("++++++++++++++++++");
- addTabBtn.setVisible(true);
// 设置tabpane中tab的最大宽度
tabPane.setTabMaxWidth(tabHeaderWidth);
// 加载标签
- tabPane.getTabs().add(new MiniTab(this));
- tabPane.getSelectionModel().getSelectedItem().setClosable(true);
+ iniTab();
// 设置标签监听
-// tabPane.getTabs().addListener((ListChangeListener.Change extends Tab> c) -> {
-// // 如果tab全部关闭,就退出系统
-// int size = c.getList().size();
-// if (size == 0) {
-// Platform.exit();
-// }
-// // 根据tabpane的个数变换AddTabBtn的位置
-// Double width = tabPane.getScene().getWidth();
-// Double left = tabHeaderWidth * size + (size - 1) * 12D + 20D;
-// if (left - 80D > width) {
-// left = width - 80D;
-// tabPane.setTabMinWidth(5D);
-// } else if (left < width - tabHeaderWidth) {
-// tabPane.setTabMinWidth(tabHeaderWidth);
-// }
-// AnchorPane.setLeftAnchor(addTabBtn, left);
-// });
+ setTabPaneListener();
+ }
+
+ /**
+ * 初次加载标签(主页标签)
+ */
+ private void iniTab(){
+ tabPane.getTabs().add(new MiniTab(this));
+ AnchorPane.setLeftAnchor(addTabButton,175D);
+ addTabButton.setOnAction((event) -> {
+ MiniTab mt = new MiniTab(this);
+ tabPane.getTabs().add(mt);
+ tabPane.getSelectionModel().select(mt);
+ });
+ }
+
+ /**
+ * 设置标签监听
+ */
+ private void setTabPaneListener(){
+ tabPane.getTabs().addListener((ListChangeListener.Change extends Tab> c) -> {
+ // 如果tab全部关闭,就退出系统
+ int size = c.getList().size();
+ if (size == 0) {
+ System.exit(0);
+ }
+ // 根据tabpane的个数变换AddTabBtn的位置
+ Double width = tabPane.getScene().getWidth();
+ Double left = tabHeaderWidth * size + (size - 1) * 16D + 25D;
+ if (left - 80D > width) {
+ left = width - 80D;
+ tabPane.setTabMinWidth(5D);
+ } else if (left < width - tabHeaderWidth) {
+ tabPane.setTabMinWidth(tabHeaderWidth);
+ }
+ AnchorPane.setLeftAnchor(addTabButton, left);
+ });
}
/**
diff --git a/src/main/java/cn/minbrowser/view/minibrowser/MiniTab.java b/src/main/java/cn/minbrowser/view/minibrowser/MiniTab.java
index 0fe797e..d5d4e71 100644
--- a/src/main/java/cn/minbrowser/view/minibrowser/MiniTab.java
+++ b/src/main/java/cn/minbrowser/view/minibrowser/MiniTab.java
@@ -1,6 +1,7 @@
package cn.minbrowser.view.minibrowser;
import cn.minbrowser.protocol.util.MinUrlUtil;
+import cn.minbrowser.util.ConnectTestUtil;
import cn.minbrowser.util.FilePermissionUtil;
import cn.minbrowser.view.MainPageHTMLController;
import cn.minbrowser.view.NavigationBarController;
@@ -120,8 +121,12 @@ public class MiniTab extends Tab {
// min协议加载
webview.getEngine().load(url);
} else {
- // http及其它通用网络协议的加载
- webview.getEngine().load(url);
+ if(ConnectTestUtil.Request(url)==404){
+ showErrorPage();
+ }else{
+ // http及其它通用网络协议的加载
+ webview.getEngine().load(url);
+ }
}
});
}
@@ -198,8 +203,6 @@ public class MiniTab extends Tab {
showLoginPage();
}else if(url.equals(REGISTER_URL) || url.equals(REGISTER_SHOW_URL)){
showRegisterPage();
- }else if(url.equals(ERROR_URL)){
- showErrorPage();
}else {
load(url);
}
@@ -324,6 +327,8 @@ public class MiniTab extends Tab {
|| url.equals(INDEX_SHOW_URL)){
input.setText(INDEX_SHOW_URL);
showUsernameByListenEngineState();
+ }else if(url.contains("resources/html/InfoUtil/error.html")){
+ input.setText(ERROR_URL);
}else {
try {
input.setText(URLDecoder.decode(url, "UTF-8"));
diff --git a/src/main/resources/fxml/NavigationBarOverviewV2.fxml b/src/main/resources/fxml/NavigationBarOverviewV2.fxml
index 851ed87..8bcc494 100644
--- a/src/main/resources/fxml/NavigationBarOverviewV2.fxml
+++ b/src/main/resources/fxml/NavigationBarOverviewV2.fxml
@@ -26,5 +26,6 @@
+