/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2007 Sun Microsystems, Inc. */ package org.opends.quicksetup.upgrader.ui; import org.opends.quicksetup.upgrader.RemoteBuildManager; import org.opends.quicksetup.ui.CustomHTMLEditorKit; import org.opends.quicksetup.ui.UIFactory; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.net.Proxy; import java.net.SocketAddress; import java.net.URL; /** * This panel represents the big error message the pops up when the * panel can't download the build information. */ class BuildListDownloadErrorPanel extends JPanel { private RemoteBuildManager rbm = null; private Throwable reason = null; private ChooseVersionPanel chooseVersionPanel; private static final long serialVersionUID = 4614415561629811272L; /** * Creates an instance. * @param rbm RemoteBuildManager that is having trouble. * @param reason Throwable indicating the error when downloading * @param chooseVersionPanel ChooseVersionPanel where the error occurred */ public BuildListDownloadErrorPanel(ChooseVersionPanel chooseVersionPanel, RemoteBuildManager rbm, Throwable reason) { this.chooseVersionPanel = chooseVersionPanel; this.rbm = rbm; this.reason = reason; layoutPanel(); } private void layoutPanel() { setLayout(new GridBagLayout()); String proxyString = "None"; Proxy proxy = rbm.getProxy(); if (proxy != null) { SocketAddress addr = proxy.address(); proxyString = addr.toString(); } String baseContext = "Unspecified"; URL url = rbm.getBaseContext(); if (url != null) { baseContext = url.toString(); } String html = chooseVersionPanel.getMsg("upgrade-choose-version-build-list-error", new String[]{ baseContext, reason.getLocalizedMessage(), proxyString}); /* This helps with debugger the HTML rendering StringBuffer content = new StringBuffer(); try { FileInputStream fis = new FileInputStream("/tmp/error-html"); BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); String line = null; while (null != (line = reader.readLine())) { content.append(line); } html = content.toString(); } catch (IOException e) { e.printStackTrace(); } */ CustomHTMLEditorKit ek = new CustomHTMLEditorKit(); ek.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { chooseVersionPanel.specifyProxy(getParent()); // Since the proxy info may change we need // to regenerate the text removeAll(); layoutPanel(); repaint(); validate(); } }); add(UIFactory.makeHtmlPane(html, ek, UIFactory.INSTRUCTIONS_FONT)); } }