Commit 388cbdd3 authored by Anian Bühler's avatar Anian Bühler
Browse files

read reference files from jar to temp file and open in browser

parent 5d833bff
......@@ -7,9 +7,15 @@ import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
......@@ -188,70 +194,68 @@ public class ContextMenu extends PopupMenu implements ActionListener {
* in standard browser
* @param blockGenusName = genus name of the active block
* added by letsgoING
* @throws URISyntaxException
*/
private void createReferenceWindow(String blockGenusName) {
//TODO: Test with reference files
String resourcePath = "/com/ardublock/reference/"+blockGenusName+".html";
File htmlFile = null;
File imageFile = null;
System.out.println("TEST | Active Block: "+blockGenusName);
String htmlResource ="/com/ardublock/reference/"+blockGenusName+".html";
String imageResource ="/com/ardublock/reference/"+blockGenusName+".png";
String tempPath = "";
//TODO: TEST on all plattforms (Linux/MAC/Windows)
try {
Desktop.getDesktop().browse(getClass().getResource(resourcePath).toURI());
} catch (IOException e) {
//get current .jar path for temp files
try {
tempPath = new File(URLDecoder.decode(getClass().getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8")).getParentFile().getPath();
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
//e.printStackTrace();
try {
Desktop.getDesktop().browse(getClass().getResource("/com/ardublock/reference/404.html").toURI());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e1.printStackTrace();
}
/*
//get html path
String referenceText = "Block not found!";
Path path = null;
try {
path = Paths.get(getClass().getResource(resourcePath).toURI());
} catch (URISyntaxException e1 ) {
// TODO Auto-generated catch block
//e1.printStackTrace();
} catch (NullPointerException ne) {
//ne.printStackTrace();
}
if(path != null) {
try {
referenceText = new String(Files.readAllBytes(path));
//copy html to tmp file
try {
InputStream input = getClass().getResourceAsStream(htmlResource);
htmlFile = new File(tempPath +"/"+ blockGenusName + ".html");
OutputStream out = new FileOutputStream(htmlFile);
int read;
byte[] bytes = new byte[1024];
while ((read = input.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.close();
htmlFile.deleteOnExit();
} catch (IOException ex) {
ex.printStackTrace();
}
//copy image to tmp file
try {
InputStream input = getClass().getResourceAsStream(imageResource);
imageFile = new File(tempPath +"/"+ blockGenusName+".png");
OutputStream out = new FileOutputStream(imageFile);
int read;
byte[] bytes = new byte[10000];
while ((read = input.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.close();
imageFile.deleteOnExit();
} catch (IOException ex) {
ex.printStackTrace();
}
//open file in standard browser
if (htmlFile != null && !htmlFile.exists() && imageFile != null && !imageFile.exists()) {
throw new RuntimeException("Error: File " + htmlFile + "or " + imageFile + " not found!");
}else {
try {
Desktop.getDesktop().browse(htmlFile.toURI());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//OPTION JFRAME
Frame frame = new JFrame("Block Reference");
JLabel label = new JLabel(referenceText);
frame.add(label);
frame.setLocationRelativeTo( null );
frame.pack();
frame.setVisible(true);
//OPTION DIALOG
JOptionPane.showMessageDialog(
null,
referenceText,
"Block-Referenz - "+((RenderableBlock) activeComponent).getBlock().getGenusName(), JOptionPane.INFORMATION_MESSAGE, null);
*/
}
return;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment