package org.eurocarbdb.application.glycoworkbench;
import java.awt.BorderLayout;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
public class WebBrowser extends JPanel {
final public JWebBrowser webBrowser;
public WebBrowser() {
super(new BorderLayout());
JPanel webBrowserPanel = new JPanel(new BorderLayout());
webBrowserPanel.setBorder(BorderFactory
.createTitledBorder("Native Web Browser component"));
webBrowser = new JWebBrowser();
webBrowser.navigate("http://www.google.com");
webBrowser.setMenuBarVisible(false);
webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
add(webBrowserPanel, BorderLayout.CENTER);
// // Create an additional bar allowing to show/hide the menu bar of the
// web browser.
// JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4,
// 4));
// JCheckBox menuBarCheckBox = new JCheckBox("Menu Bar",
// webBrowser.isMenuBarVisible());
// menuBarCheckBox.addItemListener(new ItemListener() {
// public void itemStateChanged(ItemEvent e) {
// webBrowser.setMenuBarVisible(e.getStateChange() ==
// ItemEvent.SELECTED);
// }
// });
// buttonPanel.add(menuBarCheckBox);
// add(buttonPanel, BorderLayout.SOUTH);
}
public void openResource(URL remoteResource, String localResource,
boolean localInJar) throws URISyntaxException, IOException {
//this.webBrowser.navigate(remoteResource.toString());
if (checkSiteExists(remoteResource)) {
this.webBrowser.navigate(remoteResource.toString());
}else{
if (localInJar) {
this.openResource(new File(localResource));
} else {
this.webBrowser.navigate(localResource.toString());
}
}
}
public boolean checkSiteExists(URL url) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) url
.openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
//e.printStackTrace();
return false;
}
}
public void openResource(URL url) throws URISyntaxException, IOException {
openResource(url.toURI());
}
public void openResource(URI uri) throws IOException {
openResource(new File(uri));
}
public void openResource(InputStream inputStream) throws IOException {
openResource(new InputStreamReader(inputStream));
}
public void openResource(File file) throws FileNotFoundException,
IOException {
openResource(new FileReader(file));
}
public void openResource(Reader reader) throws IOException {
BufferedReader bufferedReader = new BufferedReader(reader);
StringBuffer buf = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
buf.append(line);
}
bufferedReader.close();
reader.close();
this.setHTMLContent(buf.toString());
}
public void setHTMLContent(String content) {
webBrowser.setHTMLContent(content);
}
}