public void setData(String text) { if (text != null && text.length() > 0) { InputStream in = null; try { Object result = null; Drawing drawing = createDrawing(); // Try to read the data using all known input formats. for (InputFormat fmt : drawing.getInputFormats()) { try { fmt.read(in, drawing); in = new ByteArrayInputStream(text.getBytes("UTF8")); result = drawing; break; } catch (IOException e) { result = e; } } if (result instanceof IOException) { throw (IOException) result; } setDrawing(drawing); } catch (Throwable e) { getDrawing().removeAllChildren(); SVGTextFigure tf = new SVGTextFigure(); tf.setText(e.getMessage()); tf.setBounds(new Point2D.Double(10, 10), new Point2D.Double(100, 100)); getDrawing().add(tf); e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException ex) { ex.printStackTrace(); } } } } }
/** Initializes the applet SVGApplet */ public void init() { // Set look and feel // ----------------- try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Throwable e) { // Do nothing. // If we can't set the desired look and feel, UIManager does // automaticaly the right thing for us. } // Display copyright info while we are loading the data // ---------------------------------------------------- Container c = getContentPane(); c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); String[] labels = getAppletInfo().split("\n"); // Strings.split(getAppletInfo(), '\n'); for (int i = 0; i < labels.length; i++) { c.add(new JLabel((labels[i].length() == 0) ? " " : labels[i])); } // We load the data using a worker thread // -------------------------------------- new Worker() { public Object construct() { Object result = null; InputStream in = null; try { // Try to read the data using all known input formats. Drawing drawing = createDrawing(); for (InputFormat fmt : drawing.getInputFormats()) { try { if (getParameter("data") != null) { in = new ByteArrayInputStream(getParameter("data").getBytes("UTF8")); } else if (getParameter("datafile") != null) { URL url = new URL(getDocumentBase(), getParameter("datafile")); in = url.openConnection().getInputStream(); } if (in != null) { fmt.read(in, drawing); result = drawing; break; } } catch (IOException e) { result = e; } } } catch (Throwable t) { result = t; } finally { if (in != null) { try { in.close(); } catch (IOException ex) { // ignore } } } return result; } public void finished(Object result) { if (result instanceof Throwable) { ((Throwable) result).printStackTrace(); } Container c = getContentPane(); c.setLayout(new BorderLayout()); c.removeAll(); c.add(drawingPanel = new SVGDrawingPanel()); initComponents(); if (result != null) { if (result instanceof Drawing) { setDrawing((Drawing) result); } else if (result instanceof Throwable) { getDrawing().add(new SVGTextFigure(result.toString())); ((Throwable) result).printStackTrace(); } } c.validate(); } }.start(); }