diff --git a/src/net/apocalypselabs/symat/Functions.java b/src/net/apocalypselabs/symat/Functions.java
index 2e7408d..dfda029 100644
--- a/src/net/apocalypselabs/symat/Functions.java
+++ b/src/net/apocalypselabs/symat/Functions.java
@@ -1184,6 +1184,10 @@ public class Functions {
public TextBox textbox() {
return new TextBox();
}
+
+ public WebBrowser browser() {
+ return new WebBrowser();
+ }
/*
Constructor.
*/
diff --git a/src/net/apocalypselabs/symat/WebBrowser.form b/src/net/apocalypselabs/symat/WebBrowser.form
index e95d797..ef1969e 100644
--- a/src/net/apocalypselabs/symat/WebBrowser.form
+++ b/src/net/apocalypselabs/symat/WebBrowser.form
@@ -1,6 +1,6 @@
-
diff --git a/src/net/apocalypselabs/symat/WebBrowser.java b/src/net/apocalypselabs/symat/WebBrowser.java
index 1345e0b..3270edb 100644
--- a/src/net/apocalypselabs/symat/WebBrowser.java
+++ b/src/net/apocalypselabs/symat/WebBrowser.java
@@ -47,7 +47,11 @@ package net.apocalypselabs.symat;
import java.awt.BorderLayout;
import javafx.application.Platform;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
import javafx.collections.ObservableList;
+import javafx.concurrent.Worker;
+import javafx.concurrent.Worker.State;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Node;
@@ -90,7 +94,16 @@ public class WebBrowser extends javax.swing.JInternalFrame {
children.add(browser);
jfxPanel.setScene(scene);
webEngine = browser.getEngine();
- webEngine.setUserAgent("SyMAT " + Main.VERSION_NAME);
+ webEngine.getLoadWorker().stateProperty().addListener(
+ new ChangeListener() {
+ @Override
+ public void changed(ObservableValue ov, State oldState, State newState) {
+ if (newState == Worker.State.SUCCEEDED) {
+ urlBox.setText(webEngine.getLocation());
+ }
+ }
+ });
+ webEngine.setUserAgent("SyMAT/" + Main.VERSION_NAME);
webEngine.loadContent("Loading...
");
}
});
@@ -100,7 +113,7 @@ public class WebBrowser extends javax.swing.JInternalFrame {
public WebBrowser(String title) {
this();
setTitle(title);
- loadURL("https://wiki.symatapp.com/");
+ loadURL("http://wiki.symatapp.com/");
}
public WebBrowser(String title, String url) {
@@ -119,6 +132,9 @@ public class WebBrowser extends javax.swing.JInternalFrame {
setFrameIcon(new ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/forum.png")));
break;
case PAD_LOGO:
+ navBar.setVisible(false);
+ goBtn.setEnabled(false);
+ backBtn.setEnabled(false);
setFrameIcon(new ImageIcon(getClass().getResource("/net/apocalypselabs/symat/icons/editor.png")));
break;
default:
@@ -140,6 +156,7 @@ public class WebBrowser extends javax.swing.JInternalFrame {
resizeAll();
}
});
+ urlBox.setText(url);
}
public void loadString(final String content) {
@@ -150,6 +167,7 @@ public class WebBrowser extends javax.swing.JInternalFrame {
resizeAll();
}
});
+ urlBox.setText("");
}
/**
@@ -161,6 +179,11 @@ public class WebBrowser extends javax.swing.JInternalFrame {
// //GEN-BEGIN:initComponents
private void initComponents() {
+ navBar = new javax.swing.JToolBar();
+ backBtn = new javax.swing.JButton();
+ urlBox = new javax.swing.JTextField();
+ goBtn = new javax.swing.JButton();
+
setClosable(true);
setIconifiable(true);
setMaximizable(true);
@@ -195,6 +218,57 @@ public class WebBrowser extends javax.swing.JInternalFrame {
}
});
+ navBar.setFloatable(false);
+ navBar.setRollover(true);
+ navBar.setLayout(new java.awt.BorderLayout());
+
+ backBtn.setFont(Main.ubuntuRegular.deriveFont(16.0f));
+ backBtn.setText("<");
+ backBtn.setFocusable(false);
+ backBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ backBtn.setMaximumSize(new java.awt.Dimension(30, 21));
+ backBtn.setMinimumSize(new java.awt.Dimension(30, 21));
+ backBtn.setPreferredSize(new java.awt.Dimension(30, 21));
+ backBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+ navBar.add(backBtn, java.awt.BorderLayout.WEST);
+ backBtn.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ backBtnActionPerformed(evt);
+ }
+ });
+ /*
+ navBar.add(backBtn);
+ */
+
+ urlBox.addKeyListener(new java.awt.event.KeyAdapter() {
+ public void keyTyped(java.awt.event.KeyEvent evt) {
+ urlBoxKeyTyped(evt);
+ }
+ });
+ navBar.add(urlBox, java.awt.BorderLayout.CENTER);
+ /*
+ navBar.add(urlBox);
+ */
+
+ goBtn.setText("Go");
+ goBtn.setFocusable(false);
+ goBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ goBtn.setMaximumSize(new java.awt.Dimension(30, 21));
+ goBtn.setMinimumSize(new java.awt.Dimension(30, 21));
+ goBtn.setPreferredSize(new java.awt.Dimension(30, 21));
+ goBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+ navBar.add(goBtn, java.awt.BorderLayout.EAST);
+ goBtn.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ goBtnActionPerformed(evt);
+ }
+ });
+ /*
+ navBar.add(goBtn);
+ */
+
+ getContentPane().add(navBar, java.awt.BorderLayout.PAGE_START);
+
pack();
}// //GEN-END:initComponents
@@ -213,6 +287,31 @@ public class WebBrowser extends javax.swing.JInternalFrame {
resizeAll();
}//GEN-LAST:event_formComponentShown
+ private void urlBoxKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_urlBoxKeyTyped
+ if (evt.getKeyChar() == '\n') {
+ goBtn.doClick();
+ }
+ }//GEN-LAST:event_urlBoxKeyTyped
+
+ private void goBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_goBtnActionPerformed
+ if (!urlBox.getText().startsWith("http")) {
+ urlBox.setText("http://" + urlBox.getText());
+ }
+ loadURL(urlBox.getText());
+ }//GEN-LAST:event_goBtnActionPerformed
+
+ private void backBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backBtnActionPerformed
+ Platform.runLater(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ browser.getEngine().getHistory().go(-1);
+ } catch (Exception ex) {
+ }
+ }
+ });
+ }//GEN-LAST:event_backBtnActionPerformed
+
private void resizeAll() {
Platform.runLater(new Runnable() {
@Override
@@ -225,5 +324,9 @@ public class WebBrowser extends javax.swing.JInternalFrame {
}
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton backBtn;
+ private javax.swing.JButton goBtn;
+ private javax.swing.JToolBar navBar;
+ private javax.swing.JTextField urlBox;
// End of variables declaration//GEN-END:variables
}