/* * File : Check.java * Created : 09-jul-2002 10:06 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * 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 2 of the License, or * (at your option) 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 (see the LICENSE file). */ package edu.xtec.util; import java.awt.Dimension; import java.net.URL; import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; /** * This class is useful to display a warning message when a specific * requirement is not satisfied. Examples of unsatisfied requirements are the ability to * instantiate a specific class, to access to a file or resource, or to have specific * permissions. The message can be stored into an HTML resource, and will be * displayed in a {@link javax.swing.JEditorPane}. Users will be able to follow the * links included in the HTML document. * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.08.29 */ public class Check { private static final String DLG_KEY="CHECK_DIALOG"; private Check(){ } public static void showUrlPane(final Options options, String urlKey){ final Messages msg=options.getMessages(); HyperlinkListener hlst=new HyperlinkListener(){ public void hyperlinkUpdate(HyperlinkEvent e){ if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { final URL sUrl=e.getURL(); SwingUtilities.invokeLater(new Runnable(){ public void run(){ try{ if(options.getApplet()!=null) options.getApplet().getAppletContext().showDocument(sUrl); else BrowserLauncher.openURL(sUrl.toExternalForm()); } catch(Exception ex){ msg.showErrorWarning((JDialog)options.get(DLG_KEY), "URL_LAUNCH_ERROR", ex); } } }); } } }; JScrollPane scroll; try{ URL url=ResourceManager.getResource(msg.get(urlKey)); JEditorPane ep=new JEditorPane(url); ep.setEditable(false); ep.addHyperlinkListener(hlst); scroll=new JScrollPane(ep); scroll.setPreferredSize(new Dimension(500, 400)); } catch(Exception ex){ msg.showErrorWarning(options.getMainComponent(), "URL_ERROR", ex); return; } JOptionPane pane=new JOptionPane(new Object[]{scroll}, JOptionPane.WARNING_MESSAGE); JDialog dialog = pane.createDialog(options.getMainComponent(), msg.get(Messages.WARNING)); options.put(DLG_KEY, dialog); dialog.setVisible(true); options.remove(DLG_KEY); } public static boolean checkSignature(Options options, boolean showWarning){ boolean result=false; try{ System.getProperty("java.class.path"); result=true; } catch (SecurityException ex){ if(showWarning) showUrlPane(options, "CHECK_SIGNATURE_URL"); } return result; } }