diff --git a/src/main/java/com/example/jxbrowser/AboutDialog.java b/src/main/java/com/example/jxbrowser/AboutDialog.java deleted file mode 100644 index ca015f8..0000000 --- a/src/main/java/com/example/jxbrowser/AboutDialog.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2000-2018 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import com.teamdev.jxbrowser.chromium.ProductInfo; - -import javax.swing.*; -import javax.swing.event.HyperlinkEvent; -import javax.swing.event.HyperlinkListener; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.util.Calendar; - -/** - * @author TeamDev Ltd. - */ -public class AboutDialog extends JDialog { - public AboutDialog(Frame owner) { - super(owner, "About JxBrowser Demo", true); - initContent(); - initKeyStroke(); - setResizable(false); - pack(); - setLocationRelativeTo(owner); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - } - - private void initContent() { - JTextPane aboutText = new JTextPane(); - aboutText.setContentType("text/html"); - aboutText.setText("" + - "JxBrowser Demo

" + - "Version " + ProductInfo.getVersion() + "

" + - - "This application is created for demonstration purposes only.
" + - "© " + Calendar.getInstance().get(Calendar.YEAR) + - " TeamDev Ltd. All rights reserved.

" + - - "Powered by JxBrowser. See " + - "terms of use.
" + - - "Based on Chromium project. " + - "See full list of Chromium
components, " + - "used in the current JxBrowser version.

" + - - "This demo uses WebKit and FFMpeg projects under LGPL.
" + - - "See licence text " + - "LGPL v.2 and " + - "LGPL v.2.1
"); - aboutText.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); - aboutText.setEditable(false); - aboutText.addHyperlinkListener(new HyperlinkListener() { - @SuppressWarnings("ParameterNameDiffersFromOverriddenParameter") - @Override - public void hyperlinkUpdate(HyperlinkEvent event) { - if (event.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) { - try { - Desktop desktop = Desktop.getDesktop(); - desktop.browse(event.getURL().toURI()); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - } - }); - add(aboutText, BorderLayout.CENTER); - } - - private void initKeyStroke() { - addKeyListener(new KeyAdapter() { - @Override - public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { - dispose(); - } - } - }); - JRootPane rootPane = getRootPane(); - KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false); - rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, "ESCAPE"); - rootPane.getActionMap().put("ESCAPE", new AbstractAction() { - private static final long serialVersionUID = 6693635607417495802L; - - public void actionPerformed(ActionEvent e) { - dispose(); - } - }); - } -} diff --git a/src/main/java/com/example/jxbrowser/CommandMenuItem.java b/src/main/java/com/example/jxbrowser/CommandMenuItem.java deleted file mode 100644 index ca8807b..0000000 --- a/src/main/java/com/example/jxbrowser/CommandMenuItem.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import com.teamdev.jxbrowser.chromium.EditorCommand; - -import javax.swing.*; - -/** - * @author Artem Trofimov - */ -public class CommandMenuItem extends JMenuItem { - - private final EditorCommand command; - - public CommandMenuItem(String commandName, EditorCommand command) { - super(commandName); - this.command = command; - } - - public EditorCommand getCommand() { - return command; - } -} diff --git a/src/main/java/com/example/jxbrowser/Demo.java b/src/main/java/com/example/jxbrowser/Demo.java new file mode 100644 index 0000000..e0a220e --- /dev/null +++ b/src/main/java/com/example/jxbrowser/Demo.java @@ -0,0 +1,99 @@ +package com.example.jxbrowser; + +import com.teamdev.jxbrowser.chromium.Browser; +import com.teamdev.jxbrowser.chromium.DataReceivedParams; +import com.teamdev.jxbrowser.chromium.ba; +import com.teamdev.jxbrowser.chromium.swing.BrowserView; +import com.teamdev.jxbrowser.chromium.swing.DefaultDialogHandler; +import com.teamdev.jxbrowser.chromium.swing.DefaultDownloadHandler; +import com.teamdev.jxbrowser.chromium.swing.DefaultNetworkDelegate; +import com.teamdev.jxbrowser.chromium.swing.DefaultPopupHandler; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.math.BigInteger; +import java.util.concurrent.TimeUnit; + +public class Demo { + + static { + // 破解jxbrowser的代码块 导入下面的包是关键 + // import com.teamdev.jxbrowser.chromium.ba; + try { + Field e = ba.class.getDeclaredField("e"); + e.setAccessible(true); + Field f = ba.class.getDeclaredField("f"); + f.setAccessible(true); + Field modifersField = Field.class.getDeclaredField("modifiers"); + modifersField.setAccessible(true); + modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL); + modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL); + e.set(null, new BigInteger("1")); + f.set(null, new BigInteger("1")); + modifersField.setAccessible(false); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + public static void main(String[] args) { + JFrame jFrame = new JFrame(); + jFrame.setTitle("WebClient"); + + Browser browser = new Browser(); + BrowserView browserView = new BrowserView(browser); + browser.setDownloadHandler(new DefaultDownloadHandler(browserView)); + browser.setDialogHandler(new DefaultDialogHandler(browserView)); + browser.setPopupHandler(new DefaultPopupHandler()); + + + jFrame.getContentPane().add(browserView, BorderLayout.CENTER); + jFrame.setSize(800, 600);//初始大小 + jFrame.setLocation(0, 0);//位置 + // 设置为全屏模式 + // jFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); + // 去掉边框 + // setUndecorated(true); + // 置顶 + // setAlwaysOnTop(true); + jFrame.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + // 关闭应用时要释放资源 + jFrame.dispose(); + System.exit(0);//0正常退出,1非正常退出 + } + }); + + // 显示 + jFrame.setVisible(true); + + // 先加载空白页 + browser.loadURL("about:blank"); + + // 休眠3秒 + sleep(3); + + browser.getContext().getNetworkService().setNetworkDelegate(new DefaultNetworkDelegate() { + @Override + public void onDataReceived(DataReceivedParams params) { + String string = new String(params.getData()); + super.onDataReceived(params); + } + }); + browser.loadURL("http://test.wbsite.xyz:8027/login.htm"); + } + + + private static void sleep(int seconds) { + try { + TimeUnit.SECONDS.sleep(seconds); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/example/jxbrowser/JSConsole.java b/src/main/java/com/example/jxbrowser/JSConsole.java deleted file mode 100644 index d418a00..0000000 --- a/src/main/java/com/example/jxbrowser/JSConsole.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import com.example.jxbrowser.resources.Resources; -import com.teamdev.jxbrowser.chromium.Browser; -import com.teamdev.jxbrowser.chromium.JSValue; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * @author TeamDev Ltd. - */ -public class JSConsole extends JPanel { - - private static final String NEW_LINE = "\n"; - private static final String QUERY_LINE_START = ">> "; - private final Browser browser; - private final ExecutorService executor; - private JTextArea console; - - public JSConsole(Browser browser) { - this.browser = browser; - this.executor = Executors.newCachedThreadPool(); - setLayout(new BorderLayout()); - add(createTitle(), BorderLayout.NORTH); - add(createConsoleOutput(), BorderLayout.CENTER); - add(createConsoleInput(), BorderLayout.SOUTH); - } - - private static JComponent createTitleLabel() { - return new JLabel("JavaScript Console"); - } - - private JComponent createConsoleInput() { - JPanel result = new JPanel(new BorderLayout()); - result.setBackground(Color.WHITE); - - JLabel label = new JLabel(QUERY_LINE_START); - label.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 0)); - - final JTextField consoleInput = new JTextField(); - consoleInput.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 4)); - consoleInput.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - executor.submit(new Runnable() { - public void run() { - final String script = consoleInput.getText(); - JSValue jsValue = browser.executeJavaScriptAndReturnValue(script); - final String executionResult = jsValue.toString(); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - updateConsoleOutput(script, executionResult); - consoleInput.setText(""); - } - }); - } - }); - } - }); - result.add(label, BorderLayout.WEST); - result.add(consoleInput, BorderLayout.CENTER); - return result; - } - - private JComponent createConsoleOutput() { - console = new JTextArea(); - console.setFont(new Font("Consolas", Font.PLAIN, 12)); - console.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); - console.setEditable(false); - console.setWrapStyleWord(true); - console.setLineWrap(true); - console.setText(""); - JScrollPane scrollPane = new JScrollPane(console); - scrollPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.GRAY)); - return scrollPane; - } - - private JComponent createTitle() { - JPanel panel = new JPanel(new BorderLayout()); -// panel.setBackground(new Color(182, 191, 207)); - panel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); - panel.add(createTitleLabel(), BorderLayout.WEST); - panel.add(createCloseButton(), BorderLayout.EAST); - return panel; - } - - private JComponent createCloseButton() { - JButton closeButton = new JButton(); - closeButton.setOpaque(false); - closeButton.setToolTipText("Close JavaScript Console"); - closeButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - closeButton.setPressedIcon(Resources.getIcon("close-pressed.png")); - closeButton.setIcon(Resources.getIcon("close.png")); - closeButton.setContentAreaFilled(false); - closeButton.setFocusable(false); - closeButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - firePropertyChange("JSConsoleClosed", false, true); - } - }); - return closeButton; - } - - private void updateConsoleOutput(String script, String executionResult) { - displayScript(script); - displayExecutionResult(executionResult); - console.setCaretPosition(console.getText().length()); - } - - private void displayExecutionResult(String result) { - console.append(result); - console.append(NEW_LINE); - } - - private void displayScript(String script) { - console.append(QUERY_LINE_START); - console.append(script); - console.append(NEW_LINE); - } -} diff --git a/src/main/java/com/example/jxbrowser/JxBrowserDemo.java b/src/main/java/com/example/jxbrowser/JxBrowserDemo.java deleted file mode 100644 index e73a94a..0000000 --- a/src/main/java/com/example/jxbrowser/JxBrowserDemo.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import com.example.jxbrowser.resources.Resources; -import com.teamdev.jxbrowser.chromium.ba; -import com.teamdev.jxbrowser.chromium.internal.Environment; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.math.BigInteger; - -/** - * @author TeamDev Ltd. - */ -public class JxBrowserDemo { - - static { - // 破解jxbrowser的代码块 导入下面的包是关键 - // import com.teamdev.jxbrowser.chromium.ba; - try { - Field e = ba.class.getDeclaredField("e"); - e.setAccessible(true); - Field f = ba.class.getDeclaredField("f"); - f.setAccessible(true); - Field modifersField = Field.class.getDeclaredField("modifiers"); - modifersField.setAccessible(true); - modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL); - modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL); - e.set(null, new BigInteger("1")); - f.set(null, new BigInteger("1")); - modifersField.setAccessible(false); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - private static void initEnvironment() throws Exception { - System.setProperty("apple.laf.useScreenMenuBar", "true"); - System.setProperty("com.apple.mrj.application.apple.menu.about.name", "JxBrowser Demo"); - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - JPopupMenu.setDefaultLightWeightPopupEnabled(false); - ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); - } - - public static void main(String[] args) throws Exception { - initEnvironment(); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - initAndDisplayUI(); - } - }); - } - - private static void initAndDisplayUI() { - final TabbedPane tabbedPane = new TabbedPane(); - insertTab(tabbedPane, TabFactory.createFirstTab()); - insertNewTabButton(tabbedPane); - - JFrame frame = new JFrame("JxBrowser Demo"); - frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - frame.addWindowListener(new WindowAdapter() { - @SuppressWarnings("CallToSystemExit") - @Override - public void windowClosing(WindowEvent e) { - tabbedPane.disposeAllTabs(); - if (Environment.isMac()) { - System.exit(0); - } - } - }); - frame.add(tabbedPane, BorderLayout.CENTER); - frame.setSize(1024, 700); - frame.setLocationRelativeTo(null); - frame.setVisible(true); - } - - private static void insertNewTabButton(final TabbedPane tabbedPane) { - TabButton button = new TabButton(Resources.getIcon("new-tab.png"), "New tab"); - button.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent e) { - insertTab(tabbedPane, TabFactory.createTab()); - } - }); - tabbedPane.addTabButton(button); - } - - private static void insertTab(TabbedPane tabbedPane, Tab tab) { - tabbedPane.addTab(tab); - tabbedPane.selectTab(tab); - } -} diff --git a/src/main/java/com/example/jxbrowser/Tab.java b/src/main/java/com/example/jxbrowser/Tab.java deleted file mode 100644 index 16c5304..0000000 --- a/src/main/java/com/example/jxbrowser/Tab.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -/** - * @author TeamDev Ltd. - */ -public class Tab { - - private final TabCaption caption; - private final TabContent content; - - public Tab(TabCaption caption, TabContent content) { - this.caption = caption; - this.content = content; - } - - public TabCaption getCaption() { - return caption; - } - - public TabContent getContent() { - return content; - } -} diff --git a/src/main/java/com/example/jxbrowser/TabButton.java b/src/main/java/com/example/jxbrowser/TabButton.java deleted file mode 100644 index 223fad1..0000000 --- a/src/main/java/com/example/jxbrowser/TabButton.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import javax.swing.*; - -/** - * @author TeamDev Ltd. - */ -public class TabButton extends JButton { - - public TabButton(Icon icon, String toolTipText) { - setIcon(icon); - setToolTipText(toolTipText); - setOpaque(false); - setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); - setContentAreaFilled(false); - setFocusable(false); - } - -} diff --git a/src/main/java/com/example/jxbrowser/TabCaption.java b/src/main/java/com/example/jxbrowser/TabCaption.java deleted file mode 100644 index c3dd9b5..0000000 --- a/src/main/java/com/example/jxbrowser/TabCaption.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - - -import com.example.jxbrowser.resources.Resources; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -/** - * @author TeamDev Ltd. - */ -public class TabCaption extends JPanel { - - private boolean selected; - private TabCaptionComponent component; - - public TabCaption() { - setLayout(new BorderLayout()); - setOpaque(false); - add(createComponent(), BorderLayout.CENTER); - add(Box.createHorizontalStrut(1), BorderLayout.EAST); - } - - private JComponent createComponent() { - component = new TabCaptionComponent(); - component.addPropertyChangeListener("CloseButtonPressed", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("CloseButtonPressed", evt.getOldValue(), evt.getNewValue()); - } - }); - component.addPropertyChangeListener("TabClicked", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - setSelected(true); - } - }); - return component; - } - - @Override - public Dimension getPreferredSize() { - return new Dimension(155, 26); - } - - @Override - public Dimension getMinimumSize() { - return new Dimension(50, 26); - } - - @Override - public Dimension getMaximumSize() { - return getPreferredSize(); - } - - public void setTitle(String title) { - component.setTitle(title); - } - - public boolean isSelected() { - return selected; - } - - public void setSelected(boolean selected) { - boolean oldValue = this.selected; - this.selected = selected; - component.setSelected(selected); - firePropertyChange("TabSelected", oldValue, selected); - } - - private static class TabCaptionComponent extends JPanel { - - private final Color defaultBackground; - private JLabel label; - - private TabCaptionComponent() { - defaultBackground = getBackground(); - setLayout(new BorderLayout()); - setOpaque(false); - add(createLabel(), BorderLayout.CENTER); - add(createCloseButton(), BorderLayout.EAST); - } - - private JComponent createLabel() { - label = new JLabel(); - label.setOpaque(false); - label.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); - label.addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON1) { - firePropertyChange("TabClicked", false, true); - } - if (e.getButton() == MouseEvent.BUTTON2) { - firePropertyChange("CloseButtonPressed", false, true); - } - } - }); - return label; - } - - private JComponent createCloseButton() { - JButton closeButton = new JButton(); - closeButton.setOpaque(false); - closeButton.setToolTipText("Close"); - closeButton.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); - closeButton.setPressedIcon(Resources.getIcon("close-pressed.png")); - closeButton.setIcon(Resources.getIcon("close.png")); - closeButton.setContentAreaFilled(false); - closeButton.setFocusable(false); - closeButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - firePropertyChange("CloseButtonPressed", false, true); - } - }); - return closeButton; - } - - public void setTitle(final String title) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - label.setText(title); - label.setToolTipText(title); - } - }); - } - - public void setSelected(boolean selected) { - setBackground(selected ? defaultBackground : new Color(150, 150, 150)); - repaint(); - } - - @Override - public void paint(Graphics g) { - Graphics2D g2d = (Graphics2D) g.create(); - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); - g2d.setPaint( - new GradientPaint(0, 0, Color.LIGHT_GRAY, 0, getHeight(), getBackground())); - g2d.fillRect(0, 0, getWidth(), getHeight()); - g2d.dispose(); - super.paint(g); - } - } -} diff --git a/src/main/java/com/example/jxbrowser/TabCaptions.java b/src/main/java/com/example/jxbrowser/TabCaptions.java deleted file mode 100644 index 3ff61f5..0000000 --- a/src/main/java/com/example/jxbrowser/TabCaptions.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import javax.swing.*; -import java.awt.*; - -/** - * @author TeamDev Ltd. - */ -public class TabCaptions extends JPanel { - - private TabCaption selectedTab; - - private JPanel tabsPane; - private JPanel buttonsPane; - - public TabCaptions() { - createUI(); - } - - private void createUI() { - setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - setBackground(Color.DARK_GRAY); - add(createItemsPane()); - add(createButtonsPane()); - add(Box.createHorizontalGlue()); - } - - private JComponent createItemsPane() { - tabsPane = new JPanel(); - tabsPane.setOpaque(false); - tabsPane.setLayout(new BoxLayout(tabsPane, BoxLayout.X_AXIS)); - return tabsPane; - } - - private JComponent createButtonsPane() { - buttonsPane = new JPanel(); - buttonsPane.setOpaque(false); - buttonsPane.setLayout(new BoxLayout(buttonsPane, BoxLayout.X_AXIS)); - return buttonsPane; - } - - public void addTab(TabCaption item) { - tabsPane.add(item); - } - - public void removeTab(TabCaption item) { - tabsPane.remove(item); - } - - public void addTabButton(TabButton button) { - buttonsPane.add(button); - } - - public TabCaption getSelectedTab() { - return selectedTab; - } - - public void setSelectedTab(TabCaption selectedTab) { - this.selectedTab = selectedTab; - this.selectedTab.setSelected(true); - } -} diff --git a/src/main/java/com/example/jxbrowser/TabContent.java b/src/main/java/com/example/jxbrowser/TabContent.java deleted file mode 100644 index f0d3bda..0000000 --- a/src/main/java/com/example/jxbrowser/TabContent.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent; -import com.teamdev.jxbrowser.chromium.events.LoadAdapter; -import com.teamdev.jxbrowser.chromium.events.TitleEvent; -import com.teamdev.jxbrowser.chromium.events.TitleListener; -import com.teamdev.jxbrowser.chromium.swing.BrowserView; - -import javax.swing.*; -import java.awt.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -/** - * @author TeamDev Ltd. - */ -public class TabContent extends JPanel { - - private final BrowserView browserView; - private final ToolBar toolBar; - private final JComponent jsConsole; - private final JComponent container; - private final JComponent browserContainer; - - public TabContent(final BrowserView browserView) { - this.browserView = browserView; - this.browserView.getBrowser().addLoadListener(new LoadAdapter() { - @Override - public void onFinishLoadingFrame(FinishLoadingEvent event) { - if (event.isMainFrame()) { - firePropertyChange("PageTitleChanged", null, - TabContent.this.browserView.getBrowser().getTitle()); - } - } - }); - - this.browserView.getBrowser().addTitleListener(new TitleListener() { - @Override - public void onTitleChange(TitleEvent event) { - firePropertyChange("PageTitleChanged", null, event.getTitle()); - } - }); - - browserContainer = createBrowserContainer(); - jsConsole = createConsole(); - toolBar = createToolBar(browserView); - - container = new JPanel(new BorderLayout()); - container.add(browserContainer, BorderLayout.CENTER); - - setLayout(new BorderLayout()); - add(toolBar, BorderLayout.NORTH); - add(container, BorderLayout.CENTER); - } - - private ToolBar createToolBar(BrowserView browserView) { - ToolBar toolBar = new ToolBar(browserView); - toolBar.addPropertyChangeListener("TabClosed", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("TabClosed", false, true); - } - }); - toolBar.addPropertyChangeListener("JSConsoleDisplayed", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - showConsole(); - } - }); - toolBar.addPropertyChangeListener("JSConsoleClosed", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - hideConsole(); - } - }); - return toolBar; - } - - private void hideConsole() { - showComponent(browserContainer); - } - - private void showComponent(JComponent component) { - container.removeAll(); - container.add(component, BorderLayout.CENTER); - validate(); - } - - private void showConsole() { - JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); - splitPane.add(browserContainer, JSplitPane.TOP); - splitPane.add(jsConsole, JSplitPane.BOTTOM); - splitPane.setResizeWeight(0.8); - splitPane.setBorder(BorderFactory.createEmptyBorder()); - showComponent(splitPane); - } - - private JComponent createConsole() { - JSConsole result = new JSConsole(browserView.getBrowser()); - result.addPropertyChangeListener("JSConsoleClosed", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - hideConsole(); - toolBar.didJSConsoleClose(); - } - }); - return result; - } - - private JComponent createBrowserContainer() { - JPanel container = new JPanel(new BorderLayout()); - container.add(browserView, BorderLayout.CENTER); - return container; - } - - public void dispose() { - browserView.getBrowser().dispose(); - } -} diff --git a/src/main/java/com/example/jxbrowser/TabFactory.java b/src/main/java/com/example/jxbrowser/TabFactory.java deleted file mode 100644 index 43f6cd0..0000000 --- a/src/main/java/com/example/jxbrowser/TabFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import com.teamdev.jxbrowser.chromium.Browser; -import com.teamdev.jxbrowser.chromium.swing.BrowserView; -import com.teamdev.jxbrowser.chromium.swing.DefaultDialogHandler; -import com.teamdev.jxbrowser.chromium.swing.DefaultDownloadHandler; -import com.teamdev.jxbrowser.chromium.swing.DefaultPopupHandler; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -/** - * @author TeamDev Ltd. - */ -public final class TabFactory { - - public static Tab createFirstTab() { - return createTab("http://192.168.88.103"); - } - - public static Tab createTab() { - return createTab("about:blank"); - } - - public static Tab createTab(String url) { - Browser browser = new Browser(); - BrowserView browserView = new BrowserView(browser); - TabContent tabContent = new TabContent(browserView); - - browser.setDownloadHandler(new DefaultDownloadHandler(browserView)); - browser.setDialogHandler(new DefaultDialogHandler(browserView)); - browser.setPopupHandler(new DefaultPopupHandler()); - - final TabCaption tabCaption = new TabCaption(); - tabCaption.setTitle("about:blank"); - - tabContent.addPropertyChangeListener("PageTitleChanged", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - tabCaption.setTitle((String) evt.getNewValue()); - } - }); - - browser.loadURL(url); - return new Tab(tabCaption, tabContent); - } -} diff --git a/src/main/java/com/example/jxbrowser/TabbedPane.java b/src/main/java/com/example/jxbrowser/TabbedPane.java deleted file mode 100644 index 6a70172..0000000 --- a/src/main/java/com/example/jxbrowser/TabbedPane.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import javax.swing.*; -import java.awt.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.List; - -/** - * @author TeamDev Ltd. - */ -public class TabbedPane extends JPanel { - - private final List tabs; - private final TabCaptions captions; - private final JComponent contentContainer; - - public TabbedPane() { - this.captions = new TabCaptions(); - this.tabs = new ArrayList(); - this.contentContainer = new JPanel(new BorderLayout()); - - setLayout(new BorderLayout()); - add(captions, BorderLayout.NORTH); - add(contentContainer, BorderLayout.CENTER); - } - - public void disposeAllTabs() { - for (Tab tab : getTabs()) { - disposeTab(tab); - } - } - - private void disposeTab(Tab tab) { - tab.getCaption().setSelected(false); - tab.getContent().dispose(); - removeTab(tab); - if (hasTabs()) { - Tab firstTab = getFirstTab(); - firstTab.getCaption().setSelected(true); - } else { - Window window = SwingUtilities.getWindowAncestor(this); - if (window != null) { - window.setVisible(false); - window.dispose(); - } - } - } - - private Tab findTab(TabCaption item) { - for (Tab tab : getTabs()) { - if (tab.getCaption().equals(item)) { - return tab; - } - } - return null; - } - - public void addTab(final Tab tab) { - TabCaption caption = tab.getCaption(); - caption.addPropertyChangeListener("CloseButtonPressed", new TabCaptionCloseTabListener()); - caption.addPropertyChangeListener("TabSelected", new SelectTabListener()); - - TabContent content = tab.getContent(); - content.addPropertyChangeListener("TabClosed", new TabContentCloseTabListener()); - - captions.addTab(caption); - tabs.add(tab); - validate(); - repaint(); - } - - private boolean hasTabs() { - return !tabs.isEmpty(); - } - - private Tab getFirstTab() { - return tabs.get(0); - } - - private List getTabs() { - return new ArrayList(tabs); - } - - public void removeTab(Tab tab) { - TabCaption tabCaption = tab.getCaption(); - captions.removeTab(tabCaption); - tabs.remove(tab); - validate(); - repaint(); - } - - public void addTabButton(TabButton button) { - captions.addTabButton(button); - } - - public void selectTab(Tab tab) { - TabCaption tabCaption = tab.getCaption(); - TabCaption selectedTab = captions.getSelectedTab(); - if (selectedTab != null && !selectedTab.equals(tabCaption)) { - selectedTab.setSelected(false); - } - captions.setSelectedTab(tabCaption); - } - - private class TabCaptionCloseTabListener implements PropertyChangeListener { - public void propertyChange(PropertyChangeEvent evt) { - TabCaption caption = (TabCaption) evt.getSource(); - Tab tab = findTab(caption); - disposeTab(tab); - } - } - - private class SelectTabListener implements PropertyChangeListener { - public void propertyChange(PropertyChangeEvent evt) { - TabCaption caption = (TabCaption) evt.getSource(); - Tab tab = findTab(caption); - if (caption.isSelected()) { - selectTab(tab); - } - if (!caption.isSelected()) { - TabContent content = tab.getContent(); - contentContainer.remove(content); - contentContainer.validate(); - contentContainer.repaint(); - } else { - final TabContent content = tab.getContent(); - contentContainer.add(content, BorderLayout.CENTER); - contentContainer.validate(); - contentContainer.repaint(); - } - } - } - - private class TabContentCloseTabListener implements PropertyChangeListener { - public void propertyChange(PropertyChangeEvent evt) { - TabContent content = (TabContent) evt.getSource(); - Tab tab = findTab(content); - disposeTab(tab); - } - - private Tab findTab(TabContent content) { - for (Tab tab : getTabs()) { - if (tab.getContent().equals(content)) { - return tab; - } - } - return null; - } - } -} diff --git a/src/main/java/com/example/jxbrowser/ToolBar.java b/src/main/java/com/example/jxbrowser/ToolBar.java deleted file mode 100644 index db03a8a..0000000 --- a/src/main/java/com/example/jxbrowser/ToolBar.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser; - -import com.example.jxbrowser.resources.Resources; -import com.teamdev.jxbrowser.chromium.Browser; -import com.teamdev.jxbrowser.chromium.BrowserPreferences; -import com.teamdev.jxbrowser.chromium.EditorCommand; -import com.teamdev.jxbrowser.chromium.SavePageType; -import com.teamdev.jxbrowser.chromium.events.Callback; -import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent; -import com.teamdev.jxbrowser.chromium.events.LoadAdapter; -import com.teamdev.jxbrowser.chromium.events.ProvisionalLoadingEvent; -import com.teamdev.jxbrowser.chromium.events.StartLoadingEvent; -import com.teamdev.jxbrowser.chromium.swing.BrowserView; - -import javax.swing.*; -import javax.swing.event.MenuEvent; -import javax.swing.event.MenuListener; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.InputEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.io.File; - -/** - * @author TeamDev Ltd. - */ -public class ToolBar extends JPanel { - private static final String RUN_JAVASCRIPT = "Run JavaScript..."; - private static final String CLOSE_JAVASCRIPT = "Close JavaScript Console"; - private static final String DEFAULT_URL = "about:blank"; - private final JTextField addressBar; - private final BrowserView browserView; - private JButton backwardButton; - private JButton forwardButton; - private JButton refreshButton; - private JButton stopButton; - private JMenuItem consoleMenuItem; - - public ToolBar(BrowserView browserView) { - this.browserView = browserView; - addressBar = createAddressBar(); - setLayout(new GridBagLayout()); - add(createActionsPane(), - new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, - GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); - add(addressBar, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, - GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(4, 0, 4, 5), 0, 0)); - add(createMenuButton(), new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, - GridBagConstraints.LINE_END, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 5), - 0, 0)); - } - - private static JButton createBackwardButton(final Browser browser) { - return createButton("Back", new AbstractAction() { - public void actionPerformed(ActionEvent e) { - browser.goBack(); - } - }); - } - - private static JButton createForwardButton(final Browser browser) { - return createButton("Forward", new AbstractAction() { - public void actionPerformed(ActionEvent e) { - browser.goForward(); - } - }); - } - - private static JButton createRefreshButton(final Browser browser) { - return createButton("Refresh", new AbstractAction() { - public void actionPerformed(ActionEvent e) { - browser.reload(); - } - }); - } - - private static JButton createStopButton(final Browser browser) { - return createButton("Stop", new AbstractAction() { - public void actionPerformed(ActionEvent e) { - browser.stop(); - } - }); - } - - private static JButton createButton(String caption, Action action) { - ActionButton button = new ActionButton(caption, action); - String imageName = caption.toLowerCase(); - button.setIcon(Resources.getIcon(imageName + ".png")); - button.setRolloverIcon(Resources.getIcon(imageName + "-selected.png")); - return button; - } - - private static JCheckBoxMenuItem createCheckBoxMenuItem(String title, boolean selected, - final CheckBoxMenuItemCallback action) { - final JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(title, selected); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - action.call(menuItem.isSelected()); - } - }); - return menuItem; - } - - public void didJSConsoleClose() { - consoleMenuItem.setText(RUN_JAVASCRIPT); - } - - private JPanel createActionsPane() { - backwardButton = createBackwardButton(browserView.getBrowser()); - forwardButton = createForwardButton(browserView.getBrowser()); - refreshButton = createRefreshButton(browserView.getBrowser()); - stopButton = createStopButton(browserView.getBrowser()); - - JPanel actionsPanel = new JPanel(); - actionsPanel.add(backwardButton); - actionsPanel.add(forwardButton); - actionsPanel.add(refreshButton); - actionsPanel.add(stopButton); - return actionsPanel; - } - - private JTextField createAddressBar() { - final JTextField result = new JTextField(DEFAULT_URL); - result.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL(result.getText()); - } - }); - - browserView.getBrowser().addLoadListener(new LoadAdapter() { - @Override - public void onStartLoadingFrame(StartLoadingEvent event) { - if (event.isMainFrame()) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - refreshButton.setEnabled(false); - stopButton.setEnabled(true); - } - }); - } - } - - @Override - public void onProvisionalLoadingFrame(final ProvisionalLoadingEvent event) { - if (event.isMainFrame()) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - result.setText(event.getURL()); - result.setCaretPosition(result.getText().length()); - - Browser browser = event.getBrowser(); - forwardButton.setEnabled(browser.canGoForward()); - backwardButton.setEnabled(browser.canGoBack()); - } - }); - } - } - - @Override - public void onFinishLoadingFrame(final FinishLoadingEvent event) { - if (event.isMainFrame()) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - refreshButton.setEnabled(true); - stopButton.setEnabled(false); - } - }); - } - } - }); - return result; - } - - private JComponent createMenuButton() { - final JPopupMenu popupMenu = new JPopupMenu(); - popupMenu.add(createConsoleMenuItem()); - popupMenu.add(createGetHTMLMenuItem()); - popupMenu.add(createPopupsMenuItem()); - popupMenu.add(createUploadFileMenuItem()); - popupMenu.add(createDownloadFileMenuItem()); - popupMenu.add(createJavaScriptDialogsMenuItem()); - popupMenu.add(createPDFViewerMenuItem()); - popupMenu.add(createFlashMenuItem()); - popupMenu.add(createGoogleMapsMenuItem()); - popupMenu.add(createHTML5VideoMenuItem()); - popupMenu.add(createZoomInMenuItem()); - popupMenu.add(createZoomOutMenuItem()); - popupMenu.add(createActualSizeMenuItem()); - popupMenu.add(createSaveWebPageMenuItem()); - popupMenu.add(createClearCacheMenuItem()); - popupMenu.add(createPreferencesSubMenu()); - popupMenu.add(createExecuteCommandSubMenu()); - popupMenu.add(createPrintMenuItem()); - popupMenu.addSeparator(); - popupMenu.add(createMoreMenuItem()); - popupMenu.addSeparator(); - popupMenu.add(createAboutMenuItem()); - - final ActionButton button = new ActionButton("Preferences", null); - button.setIcon(Resources.getIcon("gear.png")); - button.addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { - popupMenu.show(e.getComponent(), 0, button.getHeight()); - } else { - popupMenu.setVisible(false); - } - } - }); - return button; - } - - private Component createPrintMenuItem() { - JMenuItem menuItem = new JMenuItem("Print..."); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().print(); - } - }); - return menuItem; - } - - private Component createPreferencesSubMenu() { - JMenu menu = new JMenu("Preferences"); - BrowserPreferences preferences = browserView.getBrowser().getPreferences(); - menu.add(createCheckBoxMenuItem("JavaScript Enabled", preferences.isJavaScriptEnabled(), - new CheckBoxMenuItemCallback() { - public void call(boolean selected) { - BrowserPreferences preferences = browserView.getBrowser().getPreferences(); - preferences.setJavaScriptEnabled(selected); - browserView.getBrowser().setPreferences(preferences); - browserView.getBrowser().reloadIgnoringCache(); - } - })); - menu.add(createCheckBoxMenuItem("Images Enabled", preferences.isImagesEnabled(), - new CheckBoxMenuItemCallback() { - public void call(boolean selected) { - BrowserPreferences preferences = browserView.getBrowser().getPreferences(); - preferences.setImagesEnabled(selected); - browserView.getBrowser().setPreferences(preferences); - browserView.getBrowser().reloadIgnoringCache(); - } - })); - menu.add(createCheckBoxMenuItem("Plugins Enabled", preferences.isPluginsEnabled(), - new CheckBoxMenuItemCallback() { - public void call(boolean selected) { - BrowserPreferences preferences = browserView.getBrowser().getPreferences(); - preferences.setPluginsEnabled(selected); - browserView.getBrowser().setPreferences(preferences); - browserView.getBrowser().reloadIgnoringCache(); - } - })); - menu.add(createCheckBoxMenuItem("JavaScript Can Access Clipboard", - preferences.isJavaScriptCanAccessClipboard(), new CheckBoxMenuItemCallback() { - public void call(boolean selected) { - BrowserPreferences preferences = browserView.getBrowser().getPreferences(); - preferences.setJavaScriptCanAccessClipboard(selected); - browserView.getBrowser().setPreferences(preferences); - browserView.getBrowser().reloadIgnoringCache(); - } - })); - menu.add(createCheckBoxMenuItem("JavaScript Can Open Windows", - preferences.isJavaScriptCanOpenWindowsAutomatically(), - new CheckBoxMenuItemCallback() { - public void call(boolean selected) { - BrowserPreferences preferences = browserView.getBrowser().getPreferences(); - preferences.setJavaScriptCanOpenWindowsAutomatically(selected); - browserView.getBrowser().setPreferences(preferences); - browserView.getBrowser().reloadIgnoringCache(); - } - })); - return menu; - } - - private Component createClearCacheMenuItem() { - JMenuItem menuItem = new JMenuItem("Clear Cache"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().getCacheStorage().clearCache(new Callback() { - public void invoke() { - JOptionPane.showMessageDialog(browserView, "Cache is cleared successfully.", - "Clear Cache", JOptionPane.INFORMATION_MESSAGE); - } - }); - } - }); - return menuItem; - } - - private Component createExecuteCommandSubMenu() { - final JMenu menu = new JMenu("Execute Command"); - menu.addMenuListener(new MenuListener() { - public void menuSelected(MenuEvent e) { - Component[] menuItems = menu.getMenuComponents(); - for (Component menuItem : menuItems) { - menuItem.setEnabled(browserView.getBrowser() - .isCommandEnabled(((CommandMenuItem) menuItem).getCommand())); - } - } - - public void menuDeselected(MenuEvent e) { - - } - - public void menuCanceled(MenuEvent e) { - - } - }); - - menu.add(createExecuteCommandSubMenuItem("Cut", EditorCommand.CUT)); - menu.add(createExecuteCommandSubMenuItem("Copy", EditorCommand.COPY)); - menu.add(createExecuteCommandSubMenuItem("Paste", EditorCommand.PASTE)); - menu.add(createExecuteCommandSubMenuItem("Select All", EditorCommand.SELECT_ALL)); - menu.add(createExecuteCommandSubMenuItem("Unselect", EditorCommand.UNSELECT)); - menu.add(createExecuteCommandSubMenuItem("Undo", EditorCommand.UNDO)); - menu.add(createExecuteCommandSubMenuItem("Redo", EditorCommand.REDO)); - menu.add(createExecuteCommandSubMenuItem("Insert Text...", "Insert Text", - EditorCommand.INSERT_TEXT)); - menu.add(createExecuteCommandSubMenuItem("Find Text...", "Find Text", - EditorCommand.FIND_STRING)); - return menu; - } - - private Component createExecuteCommandSubMenuItem(final String commandName, - final EditorCommand command) { - final CommandMenuItem menuItem = new CommandMenuItem(commandName, command); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().executeCommand(command); - } - }); - return menuItem; - } - - private Component createExecuteCommandSubMenuItem(final String commandName, - final String dialogTitle, final EditorCommand command) { - final CommandMenuItem menuItem = new CommandMenuItem(commandName, command); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - String value = JOptionPane - .showInputDialog(browserView, "Command value:", dialogTitle, - JOptionPane.PLAIN_MESSAGE); - browserView.getBrowser().executeCommand(command, value); - } - }); - return menuItem; - } - - private Component createMoreMenuItem() { - JMenuItem menuItem = new JMenuItem("More Features..."); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL( - "https://jxbrowser.support.teamdev.com/support/solutions/9000049010"); - } - }); - return menuItem; - } - - private Component createSaveWebPageMenuItem() { - JMenuItem menuItem = new JMenuItem("Save Web Page..."); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - JFileChooser fileChooser = new JFileChooser(); - fileChooser.setSelectedFile(new File("my-web-page.html")); - int result = fileChooser.showSaveDialog(browserView); - if (result == JFileChooser.APPROVE_OPTION) { - File selectedFile = fileChooser.getSelectedFile(); - String dirPath = new File(selectedFile.getParent(), "resources") - .getAbsolutePath(); - browserView.getBrowser().saveWebPage(selectedFile.getAbsolutePath(), dirPath, - SavePageType.COMPLETE_HTML); - } - } - }); - return menuItem; - } - - private Component createActualSizeMenuItem() { - JMenuItem menuItem = new JMenuItem("Actual Size"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().zoomReset(); - } - }); - return menuItem; - } - - private Component createZoomOutMenuItem() { - JMenuItem menuItem = new JMenuItem("Zoom Out"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().zoomOut(); - } - }); - return menuItem; - } - - private Component createZoomInMenuItem() { - JMenuItem menuItem = new JMenuItem("Zoom In"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().zoomIn(); - } - }); - return menuItem; - } - - private Component createHTML5VideoMenuItem() { - JMenuItem menuItem = new JMenuItem("HTML5 Video"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser() - .loadURL("http://www.w3.org/2010/05/video/mediaevents.html"); - } - }); - return menuItem; - } - - private Component createGoogleMapsMenuItem() { - JMenuItem menuItem = new JMenuItem("Google Maps"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL("https://maps.google.com/"); - } - }); - return menuItem; - } - - private Component createJavaScriptDialogsMenuItem() { - JMenuItem menuItem = new JMenuItem("JavaScript Dialogs"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL("http://www.javascripter.net/faq/alert.htm"); - } - }); - return menuItem; - } - - private Component createDownloadFileMenuItem() { - JMenuItem menuItem = new JMenuItem("Download File"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL( - "https://s3.amazonaws.com/cloud.teamdev.com/downloads/demo/jxbrowserdemo.jnlp"); - } - }); - return menuItem; - } - - private Component createGetHTMLMenuItem() { - JMenuItem menuItem = new JMenuItem("Get HTML"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - String html = browserView.getBrowser().getHTML(); - Window window = SwingUtilities.getWindowAncestor(browserView); - JDialog dialog = new JDialog(window); - dialog.setModal(true); - dialog.setContentPane(new JScrollPane(new JTextArea(html))); - dialog.setSize(700, 500); - dialog.setLocationRelativeTo(null); - dialog.setVisible(true); - - } - }); - return menuItem; - } - - private JMenuItem createConsoleMenuItem() { - consoleMenuItem = new JMenuItem(RUN_JAVASCRIPT); - consoleMenuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (RUN_JAVASCRIPT.equals(consoleMenuItem.getText())) { - consoleMenuItem.setText(CLOSE_JAVASCRIPT); - firePropertyChange("JSConsoleDisplayed", false, true); - } else { - consoleMenuItem.setText(RUN_JAVASCRIPT); - firePropertyChange("JSConsoleClosed", false, true); - } - } - }); - return consoleMenuItem; - } - - private JMenuItem createUploadFileMenuItem() { - JMenuItem menuItem = new JMenuItem("Upload File"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser() - .loadURL("http://www.cs.tut.fi/~jkorpela/forms/file.html#example"); - } - }); - return menuItem; - } - - private JMenuItem createPopupsMenuItem() { - JMenuItem menuItem = new JMenuItem("Popup Windows"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL("http://www.popuptest.com"); - } - }); - return menuItem; - } - - private JMenuItem createPDFViewerMenuItem() { - JMenuItem menuItem = new JMenuItem("PDF Viewer"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL("http://www.orimi.com/pdf-test.pdf"); - } - }); - return menuItem; - } - - private JMenuItem createFlashMenuItem() { - JMenuItem menuItem = new JMenuItem("Adobe Flash"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - browserView.getBrowser().loadURL("http://helpx.adobe.com/flash-player.html"); - } - }); - return menuItem; - } - - private JMenuItem createAboutMenuItem() { - JMenuItem menuItem = new JMenuItem("About JxBrowser Demo"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Frame parentFrame = (Frame) SwingUtilities.getWindowAncestor(ToolBar.this); - AboutDialog aboutDialog = new AboutDialog(parentFrame); - aboutDialog.setVisible(true); - } - }); - return menuItem; - } - - private boolean isFocusRequired() { - String url = addressBar.getText(); - return url.isEmpty() || url.equals(DEFAULT_URL); - } - - @Override - public void addNotify() { - super.addNotify(); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - if (isFocusRequired()) { - addressBar.requestFocus(); - addressBar.selectAll(); - } - } - }); - } - - private interface CheckBoxMenuItemCallback { - void call(boolean selected); - } - - private static class ActionButton extends JButton { - private ActionButton(String hint, Action action) { - super(action); - setContentAreaFilled(false); - setBorder(BorderFactory.createEmptyBorder()); - setBorderPainted(false); - setRolloverEnabled(true); - setToolTipText(hint); - setText(null); - setFocusable(false); - setDefaultCapable(false); - } - } -} diff --git a/src/main/java/com/example/jxbrowser/WebClient.java b/src/main/java/com/example/jxbrowser/WebClient.java deleted file mode 100644 index ae36683..0000000 --- a/src/main/java/com/example/jxbrowser/WebClient.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.example.jxbrowser; - -import com.teamdev.jxbrowser.chromium.Browser; -import com.teamdev.jxbrowser.chromium.ba; -import com.teamdev.jxbrowser.chromium.swing.BrowserView; -import com.teamdev.jxbrowser.chromium.swing.DefaultDialogHandler; -import com.teamdev.jxbrowser.chromium.swing.DefaultDownloadHandler; -import com.teamdev.jxbrowser.chromium.swing.DefaultPopupHandler; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.FocusListener; -import java.awt.event.KeyListener; -import java.awt.event.MouseListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.math.BigInteger; -import java.util.concurrent.TimeUnit; - -public class WebClient extends JFrame { - - static { - // 破解jxbrowser的代码块 导入下面的包是关键 - // import com.teamdev.jxbrowser.chromium.ba; - try { - Field e = ba.class.getDeclaredField("e"); - e.setAccessible(true); - Field f = ba.class.getDeclaredField("f"); - f.setAccessible(true); - Field modifersField = Field.class.getDeclaredField("modifiers"); - modifersField.setAccessible(true); - modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL); - modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL); - e.set(null, new BigInteger("1")); - f.set(null, new BigInteger("1")); - modifersField.setAccessible(false); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - private Browser browser; - - public static void main(String[] args) throws InterruptedException { - WebClient webClient = new WebClient(); - webClient.loadUrl("http://www.baidu.com"); - TimeUnit.SECONDS.sleep(3); - - String html = webClient.getBrowser().getHTML(); - System.out.println(html); - } - - public Browser getBrowser() { - return browser; - } - - public WebClient() { - super(); - initClient(new String[]{}); - } - - private void initClient(String[] args) { - setTitle("WebClient"); - - browser = new Browser(); - BrowserView browserView = new BrowserView(browser); - browser.setDownloadHandler(new DefaultDownloadHandler(browserView)); - browser.setDialogHandler(new DefaultDialogHandler(browserView)); - browser.setPopupHandler(new DefaultPopupHandler()); - - - getContentPane().add(browserView, BorderLayout.CENTER); - setSize(800, 600);//初始大小 - setLocation(0, 0);//位置 - //setUndecorated(true); - //setAlwaysOnTop(true); - addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent e) { - // 关闭应用时要释放资源 - dispose(); - System.exit(0);//0正常退出,1非正常退出 - } - }); - - // 显示 - setVisible(true); - - loadUrl("about:blank"); - } - - /** - * 加载地址 - * - * @param url 地址 - */ - public void loadUrl(String url) { - browser.loadURL(url); - } - - /** - * 全屏模式 - */ - public void setMaximized() { - // 设置为全屏模式 - setExtendedState(JFrame.MAXIMIZED_BOTH); - } - - /** - * 刷新 - */ - public void reload() { - - } - - /** - * 强制刷新 - */ - public void reloadForce() { - - } - - public void addFocusListener(FocusListener listener) { - //cefBrowser.getUIComponent().addFocusListener(listener); - } - - public void addMouseListener(MouseListener listener) { - //cefBrowser.getUIComponent().addMouseListener(listener); - } - - public void addKeyListener(KeyListener listener) { - //cefBrowser.getUIComponent().addKeyListener(listener); - } - - public void executeJavaScript(String javascript) { - //cefBrowser.executeJavaScript(javascript, null, 1); - } - - public void close() { - - dispose(); - System.exit(0); - } -} diff --git a/src/main/java/com/example/jxbrowser/resources/Resources.java b/src/main/java/com/example/jxbrowser/resources/Resources.java deleted file mode 100644 index 35453a6..0000000 --- a/src/main/java/com/example/jxbrowser/resources/Resources.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2000-2017 TeamDev Ltd. All rights reserved. - * TeamDev PROPRIETARY and CONFIDENTIAL. - * Use is subject to license terms. - */ - -package com.example.jxbrowser.resources; - -import javax.swing.*; - -public class Resources { - - public static ImageIcon getIcon(String fileName) { -// return new ImageIcon(Resources.class.getResource(fileName)); - return null; - } -} diff --git a/src/main/java/com/example/jxbrowser/resources/back-selected.png b/src/main/java/com/example/jxbrowser/resources/back-selected.png deleted file mode 100644 index 84e6d6e..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/back-selected.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/back.png b/src/main/java/com/example/jxbrowser/resources/back.png deleted file mode 100644 index fe03a8e..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/back.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/close-pressed.png b/src/main/java/com/example/jxbrowser/resources/close-pressed.png deleted file mode 100644 index 5841e70..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/close-pressed.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/close.png b/src/main/java/com/example/jxbrowser/resources/close.png deleted file mode 100644 index a1eebf4..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/close.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/forward-selected.png b/src/main/java/com/example/jxbrowser/resources/forward-selected.png deleted file mode 100644 index 3cb3bc8..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/forward-selected.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/forward.png b/src/main/java/com/example/jxbrowser/resources/forward.png deleted file mode 100644 index 9d7d1e0..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/forward.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/gear.png b/src/main/java/com/example/jxbrowser/resources/gear.png deleted file mode 100644 index a6385fd..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/gear.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/go.png b/src/main/java/com/example/jxbrowser/resources/go.png deleted file mode 100644 index 2b5ccca..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/go.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/home-selected.png b/src/main/java/com/example/jxbrowser/resources/home-selected.png deleted file mode 100644 index 874785d..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/home-selected.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/home.png b/src/main/java/com/example/jxbrowser/resources/home.png deleted file mode 100644 index 55a12fd..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/home.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/jxbrowser16x16.png b/src/main/java/com/example/jxbrowser/resources/jxbrowser16x16.png deleted file mode 100644 index 20b1fef..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/jxbrowser16x16.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/jxbrowser32x32.png b/src/main/java/com/example/jxbrowser/resources/jxbrowser32x32.png deleted file mode 100644 index 9013da2..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/jxbrowser32x32.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/new-tab.png b/src/main/java/com/example/jxbrowser/resources/new-tab.png deleted file mode 100644 index 2ab5c16..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/new-tab.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/refresh-selected.png b/src/main/java/com/example/jxbrowser/resources/refresh-selected.png deleted file mode 100644 index e0773cc..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/refresh-selected.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/refresh.png b/src/main/java/com/example/jxbrowser/resources/refresh.png deleted file mode 100644 index fabdef1..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/refresh.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/stop-selected.png b/src/main/java/com/example/jxbrowser/resources/stop-selected.png deleted file mode 100644 index c04fe88..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/stop-selected.png and /dev/null differ diff --git a/src/main/java/com/example/jxbrowser/resources/stop.png b/src/main/java/com/example/jxbrowser/resources/stop.png deleted file mode 100644 index 6e12306..0000000 Binary files a/src/main/java/com/example/jxbrowser/resources/stop.png and /dev/null differ