package chatty.gui.components; import chatty.Chatty; import chatty.gui.UrlOpener; import chatty.util.UrlRequest; import java.awt.BorderLayout; import java.awt.Font; import java.awt.Insets; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * Can be shown to give more information on an available update. Loads the * current changelog from the server. * * @author tduva */ public class UpdateMessage extends JDialog { private static final String CHANGELOG_URL = "http://chatty.github.io/changes.txt"; //private static final String CHANGELOG_URL = "http://127.0.0.1/twitch/changes.txt"; private final JLabel version; private final JTextArea changelog; private boolean changelogLoaded; public UpdateMessage(Window owner) { super(owner); changelog = new JTextArea(); changelog.setFont(Font.decode(Font.MONOSPACED)); changelog.setEditable(false); changelog.setColumns(87); changelog.setRows(30); changelog.setMargin(new Insets(5, 5, 5, 5)); version = new JLabel(); add(version, BorderLayout.NORTH); add(new JScrollPane(changelog), BorderLayout.CENTER); JPanel buttons = new JPanel(); add(buttons, BorderLayout.SOUTH); final JButton openWebsite = new JButton("Open website"); final JButton close = new JButton("Close"); buttons.add(openWebsite); buttons.add(close); ActionListener buttonAction = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == openWebsite) { UrlOpener.openUrlPrompt(UpdateMessage.this, Chatty.WEBSITE, true); } else if (e.getSource() == close) { setVisible(false); } } }; openWebsite.addActionListener(buttonAction); close.addActionListener(buttonAction); pack(); } public void showDialog() { setTitle("Update available!"); setVisible(true); loadChangelog(); } public void setNewVersion(String newVersion) { version.setText("<html><body style='padding: 6px;'>Your version: "+Chatty.VERSION+" | Latest: "+newVersion); } /** * Loads the changelog if not already successfully loaded. */ private void loadChangelog() { if (changelogLoaded) { return; } changelog.setText("Loading.."); UrlRequest request = new UrlRequest(CHANGELOG_URL) { @Override public void requestResult(String result, int responseCode) { if (responseCode == 200) { changelog.setText(result); changelogLoaded = true; } else { changelog.setText("Error loading changelog."); } } }; new Thread(request).start(); } }