/*
* MediathekView
* Copyright (C) 2008 W. Xaver
* W.Xaver[at]googlemail.com
* http://zdfmediathk.sourceforge.net/
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package mediathek.gui.actions;
import mSearch.tool.Listener;
import mSearch.tool.Log;
import mediathek.config.MVConfig;
import mediathek.gui.dialog.DialogProgrammOrdnerOeffnen;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.net.URI;
import java.net.URISyntaxException;
@SuppressWarnings("serial")
public class UrlHyperlinkAction extends AbstractAction {
private final JFrame jFrameParent;
public UrlHyperlinkAction(JFrame jjFrameParent, String url) throws URISyntaxException {
jFrameParent = jjFrameParent;
super.putValue(Action.NAME, url);
super.putValue(SHORT_DESCRIPTION, url);
// super.putValue(LONG_DESCRIPTION, url);
}
@Override
public void actionPerformed(ActionEvent e) {
try {
openURL(jFrameParent, e.getActionCommand());
} catch (URISyntaxException ignored) {
}
}
/**
* Try to open a browser window.
* @param paFrame the parent window.
* @param url URL to be opened. Here in string format.
* @throws URISyntaxException when URL is malformed.
*/
public static void openURL(JFrame paFrame, String url) throws URISyntaxException {
if (Desktop.isDesktopSupported()) {
Desktop d = Desktop.getDesktop();
try {
if (d.isSupported(Desktop.Action.BROWSE)) {
d.browse(new URI(url));
return;
}
} catch (Exception ignored) {
}
try {
String programm = "";
if (MVConfig.get(MVConfig.Configs.SYSTEM_URL_OEFFNEN).isEmpty()) {
String text = "\n Der Browser zum Anzeigen der URL wird nicht gefunden.\n Browser selbst auswählen.";
DialogProgrammOrdnerOeffnen dialog = new DialogProgrammOrdnerOeffnen(paFrame, true, "", "Browser suchen", text);
dialog.setVisible(true);
if (dialog.ok) {
programm = dialog.ziel;
}
} else {
programm = MVConfig.get(MVConfig.Configs.SYSTEM_URL_OEFFNEN);
}
String[] cmd = {programm, url};
Runtime.getRuntime().exec(cmd);
MVConfig.add(MVConfig.Configs.SYSTEM_URL_OEFFNEN, programm);
Listener.notify(Listener.EREIGNIS_PROGRAMM_OEFFNEN, UrlHyperlinkAction.class.getSimpleName());
} catch (Exception ex) {
MVConfig.add(MVConfig.Configs.SYSTEM_URL_OEFFNEN, ""); // dann wars wohl nix
Log.errorLog(316497658, ex, "URL öffnen: " + url);
}
}
}
}