// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.opendata.core.gui;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.io.IOException;
import javax.swing.Icon;
import javax.swing.JEditorPane;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.gui.ExtendedDialog;
import org.openstreetmap.josm.plugins.opendata.core.licenses.License;
import org.openstreetmap.josm.tools.ImageProvider;
public class ViewLicenseDialog extends ExtendedDialog {
private final License license;
private final JEditorPane htmlPane;
private boolean summary;
public ViewLicenseDialog(License license) throws IOException {
this(license, Main.parent, tr("License"), new String[] {tr("OK"), "", tr("Cancel")});
}
public ViewLicenseDialog(License license, Component parent, String title, String[] buttonTexts) throws IOException {
super(parent, title, buttonTexts);
this.license = license;
this.htmlPane = new JEditorPane();
htmlPane.setEditable(false);
if (license.getSummaryURL() != null) {
htmlPane.setPage(license.getSummaryURL());
summary = true;
} else {
htmlPane.setPage(license.getURL());
summary = false;
}
JScrollPane scrollPane = new JScrollPane(htmlPane);
scrollPane.setPreferredSize(new Dimension(800, 600));
setButtonIcons(new Icon[] {
ImageProvider.get("ok"),
ImageProvider.get("agreement24"),
ImageProvider.get("cancel"),
});
setToolTipTexts(new String[] {
null,
tr("View the full text of this license"),
null});
if (license.getIcon() != null) {
setIcon(license.getIcon());
} else {
setIcon(JOptionPane.INFORMATION_MESSAGE);
}
setCancelButton(3);
setMinimumSize(new Dimension(300, 200));
setContent(scrollPane, false);
}
@Override
protected void buttonAction(int buttonIndex, ActionEvent evt) {
if (buttonIndex == 1) {
try {
if (summary) {
buttons.get(1).setText(tr("View summary"));
htmlPane.setPage(license.getURL());
} else {
buttons.get(1).setText(tr("View full text"));
htmlPane.setPage(license.getSummaryURL());
}
} catch (IOException e) {
e.printStackTrace();
}
summary = !summary;
} else {
super.buttonAction(buttonIndex, evt);
}
}
@Override
public void setupDialog() {
super.setupDialog();
buttons.get(1).setEnabled(license.getSummaryURL() != null && license.getURL() != null);
if (summary) {
buttons.get(1).setText(tr("View full text"));
} else {
buttons.get(1).setText(tr("View summary"));
}
}
}