65 lines
1.9 KiB
Java
65 lines
1.9 KiB
Java
package nl.andrewlalis.blockbookbinder.view.about;
|
|
|
|
import nl.andrewlalis.blockbookbinder.util.ApplicationProperties;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.event.HyperlinkEvent;
|
|
import java.awt.*;
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.net.URI;
|
|
import java.net.URISyntaxException;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* Simple dialog whose main purpose is rendering an HTML document.
|
|
*/
|
|
public class AboutDialog extends JDialog {
|
|
public AboutDialog(Frame owner) {
|
|
super(owner, "About", true);
|
|
}
|
|
|
|
public void setupAndShow() {
|
|
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
|
this.setPreferredSize(new Dimension(
|
|
ApplicationProperties.getIntProp("about_dialog.min_width"),
|
|
ApplicationProperties.getIntProp("about_dialog.min_height")
|
|
));
|
|
JTextPane textPane = new JTextPane();
|
|
textPane.setEditable(false);
|
|
textPane.setContentType("text/html");
|
|
textPane.setText(this.getAboutHtml());
|
|
textPane.addHyperlinkListener(e -> {
|
|
try {
|
|
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
|
|
Desktop.getDesktop().browse(e.getURL().toURI());
|
|
}
|
|
} catch (URISyntaxException | IOException uriSyntaxException) {
|
|
uriSyntaxException.printStackTrace();
|
|
}
|
|
});
|
|
JScrollPane scrollPane = new JScrollPane(
|
|
textPane,
|
|
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
|
|
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
|
|
);
|
|
this.setContentPane(scrollPane);
|
|
this.pack();
|
|
this.setLocationRelativeTo(this.getOwner());
|
|
this.setVisible(true);
|
|
}
|
|
|
|
private String getAboutHtml() {
|
|
InputStream is = this.getClass().getClassLoader().getResourceAsStream(
|
|
ApplicationProperties.getProp("about_dialog.source")
|
|
);
|
|
if (is == null) {
|
|
return "";
|
|
}
|
|
return new BufferedReader(new InputStreamReader(is)).lines()
|
|
.parallel().collect(Collectors.joining("\n"));
|
|
}
|
|
}
|