public Browser(String currentHref) { super(); this.currentHref = currentHref; try { if (Bither.getMainFrame() != null) { Bither.getMainFrame().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); } addHyperlinkListener(new ActivatedHyperlinkListener(Bither.getMainFrame(), this)); loadingMessage = LocaliserUtils.getString("browser.loadingMessage"); setEditable(false); setBackground(Themes.currentTheme.detailPanelBackground()); String fontName = null; if (fontName == null || "".equals(fontName)) { fontName = ColorAndFontConstants.BITHER_DEFAULT_FONT_NAME; } // Add in san-serif as a fallback. fontName = fontName + ", san-serif"; int fontSize = ColorAndFontConstants.BITHER_DEFAULT_FONT_SIZE; boolean isItalic = false; boolean isBold = false; Font adjustedFont = FontSizer.INSTANCE.getAdjustedDefaultFont(); if (adjustedFont != null) { setFont(adjustedFont); fontSize = adjustedFont.getSize(); isItalic = adjustedFont.isItalic(); isBold = adjustedFont.isBold(); } String fontCSS = "font-size:" + fontSize + "pt; font-family:" + fontName + ";"; if (isItalic) { fontCSS = fontCSS + "font-style:italic;"; } else { fontCSS = fontCSS + "font-style:normal;"; } if (isBold) { fontCSS = fontCSS + "font-weight:bold;"; } else { fontCSS = fontCSS + "font-weight:normal;"; } HTMLEditorKit kit = new HTMLEditorKit(); setEditorKit(kit); javax.swing.text.html.StyleSheet styleSheet = kit.getStyleSheet(); styleSheet.addRule("body {" + fontCSS + "}"); Document doc = kit.createDefaultDocument(); setDocument(doc); log.debug("Trying to load '" + currentHref + "'..."); } catch (Exception ex) { showUnableToLoadMessage(ex.getClass().getCanonicalName() + " " + ex.getMessage()); } }
public ExceptionDialog(Frame parent, Exception e) { super(parent); setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.e = e; setMinimumSize(new Dimension(400, 150)); setTitle(e == null ? "Exception" : e.getClass().getName()); initComponents(); drawComponents(); pack(); }
public void run() { try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset)); if (outputFile != null) { bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), charset)); } String line; while ((line = br.readLine()) != null) { filePosition += line.length() + 2; line = line.trim(); if (!line.startsWith("#")) { String[] sides = split(line); if ((sides != null) && !sides[0].equals("key")) { if (searchPHI) { // Search the decrypted PHI for the searchText sides[0] = decrypt(sides[0]); if (sides[0].indexOf(searchText) != -1) { output(sides[0] + " = " + sides[1] + "\n"); } } else { // Search the trial ID for the searchText if (sides[1].indexOf(searchText) != -1) { sides[0] = decrypt(sides[0]); output(sides[0] + " = " + sides[1] + "\n"); } } } } } br.close(); if (bw != null) { bw.flush(); bw.close(); } } catch (Exception e) { append("\n\n" + e.getClass().getName() + ": " + e.getMessage() + "\n"); } append("\nDone.\n"); setMessage("Ready..."); }
/** * Execute applet events. Here is the state transition diagram * * <pre>{@literal * Note: (XXX) is the action * APPLET_XXX is the state * (applet code loaded) --> APPLET_LOAD -- (applet init called)--> APPLET_INIT -- * (applet start called) --> APPLET_START -- (applet stop called) --> APPLET_STOP -- * (applet destroyed called) --> APPLET_DESTROY --> (applet gets disposed) --> * APPLET_DISPOSE --> ... * }</pre> * * In the legacy lifecycle model. The applet gets loaded, inited and started. So it stays in the * APPLET_START state unless the applet goes away(refresh page or leave the page). So the applet * stop method called and the applet enters APPLET_STOP state. Then if the applet is revisited, it * will call applet start method and enter the APPLET_START state and stay there. * * <p>In the modern lifecycle model. When the applet first time visited, it is same as legacy * lifecycle model. However, when the applet page goes away. It calls applet stop method and * enters APPLET_STOP state and then applet destroyed method gets called and enters APPLET_DESTROY * state. * * <p>This code is also called by AppletViewer. In AppletViewer "Restart" menu, the applet is jump * from APPLET_STOP to APPLET_DESTROY and to APPLET_INIT . * * <p>Also, the applet can jump from APPLET_INIT state to APPLET_DESTROY (in Netscape/Mozilla * case). Same as APPLET_LOAD to APPLET_DISPOSE since all of this are triggered by browser. */ @Override public void run() { Thread curThread = Thread.currentThread(); if (curThread == loaderThread) { // if we are in the loader thread, cause // loading to occur. We may exit this with // status being APPLET_DISPOSE, APPLET_ERROR, // or APPLET_LOAD runLoader(); return; } boolean disposed = false; while (!disposed && !curThread.isInterrupted()) { AppletEvent evt; try { evt = getNextEvent(); } catch (InterruptedException e) { showAppletStatus("bail"); return; } // showAppletStatus("EVENT = " + evt.getID()); try { switch (evt.getID()) { case APPLET_LOAD: if (!okToLoad()) { break; } // This complexity allows loading of applets to be // interruptable. The actual thread loading runs // in a separate thread, so it can be interrupted // without harming the applet thread. // So that we don't have to worry about // concurrency issues, the main applet thread waits // until the loader thread terminates. // (one way or another). if (loaderThread == null) { setLoaderThread(new Thread(null, this, "AppletLoader", 0, false)); loaderThread.start(); // we get to go to sleep while this runs loaderThread.join(); setLoaderThread(null); } else { // REMIND: issue an error -- this case should never // occur. } break; case APPLET_INIT: // AppletViewer "Restart" will jump from destroy method to // init, that is why we need to check status w/ APPLET_DESTROY if (status != APPLET_LOAD && status != APPLET_DESTROY) { showAppletStatus("notloaded"); break; } applet.resize(defaultAppletSize); if (PerformanceLogger.loggingEnabled()) { PerformanceLogger.setTime("Applet Init"); PerformanceLogger.outputLog(); } applet.init(); // Need the default(fallback) font to be created in this AppContext Font f = getFont(); if (f == null || "dialog".equals(f.getFamily().toLowerCase(Locale.ENGLISH)) && f.getSize() == 12 && f.getStyle() == Font.PLAIN) { setFont(new Font(Font.DIALOG, Font.PLAIN, 12)); } // Validate the applet in event dispatch thread // to avoid deadlock. try { final AppletPanel p = this; Runnable r = new Runnable() { @Override public void run() { p.validate(); } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } status = APPLET_INIT; showAppletStatus("inited"); break; case APPLET_START: { if (status != APPLET_INIT && status != APPLET_STOP) { showAppletStatus("notinited"); break; } applet.resize(currentAppletSize); applet.start(); // Validate and show the applet in event dispatch thread // to avoid deadlock. try { final AppletPanel p = this; final Applet a = applet; Runnable r = new Runnable() { @Override public void run() { p.validate(); a.setVisible(true); // Fix for BugTraq ID 4041703. // Set the default focus for an applet. if (hasInitialFocus()) { setDefaultFocus(); } } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } status = APPLET_START; showAppletStatus("started"); break; } case APPLET_STOP: if (status != APPLET_START) { showAppletStatus("notstarted"); break; } status = APPLET_STOP; // Hide the applet in event dispatch thread // to avoid deadlock. try { final Applet a = applet; Runnable r = new Runnable() { @Override public void run() { a.setVisible(false); } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } // During Applet.stop(), any AccessControlException on an involved Class remains in // the "memory" of the AppletClassLoader. If the same instance of the ClassLoader is // reused, the same exception will occur during class loading. Set the // AppletClassLoader's // exceptionStatusSet flag to allow recognition of what had happened // when reusing AppletClassLoader object. try { applet.stop(); } catch (java.security.AccessControlException e) { setExceptionStatus(e); // rethrow exception to be handled as it normally would be. throw e; } showAppletStatus("stopped"); break; case APPLET_DESTROY: if (status != APPLET_STOP && status != APPLET_INIT) { showAppletStatus("notstopped"); break; } status = APPLET_DESTROY; // During Applet.destroy(), any AccessControlException on an involved Class remains in // the "memory" of the AppletClassLoader. If the same instance of the ClassLoader is // reused, the same exception will occur during class loading. Set the // AppletClassLoader's // exceptionStatusSet flag to allow recognition of what had happened // when reusing AppletClassLoader object. try { applet.destroy(); } catch (java.security.AccessControlException e) { setExceptionStatus(e); // rethrow exception to be handled as it normally would be. throw e; } showAppletStatus("destroyed"); break; case APPLET_DISPOSE: if (status != APPLET_DESTROY && status != APPLET_LOAD) { showAppletStatus("notdestroyed"); break; } status = APPLET_DISPOSE; try { final Applet a = applet; Runnable r = new Runnable() { @Override public void run() { remove(a); } }; AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); } catch (InterruptedException ie) { } catch (InvocationTargetException ite) { } applet = null; showAppletStatus("disposed"); disposed = true; break; case APPLET_QUIT: return; } } catch (Exception e) { status = APPLET_ERROR; if (e.getMessage() != null) { showAppletStatus("exception2", e.getClass().getName(), e.getMessage()); } else { showAppletStatus("exception", e.getClass().getName()); } showAppletException(e); } catch (ThreadDeath e) { showAppletStatus("death"); return; } catch (Error e) { status = APPLET_ERROR; if (e.getMessage() != null) { showAppletStatus("error2", e.getClass().getName(), e.getMessage()); } else { showAppletStatus("error", e.getClass().getName()); } showAppletException(e); } clearLoadAbortRequest(); } }
/** * Process a directory potentially full of fonts * * @param dir The directory of fonts to process * @param fonts The fonts list to add to */ private static void processFontDirectory(File dir, ArrayList fonts) { if (!dir.exists()) { return; } if (processed.contains(dir)) { return; } processed.add(dir); File[] sources = dir.listFiles(); if (sources == null) { return; } for (int j = 0; j < sources.length; j++) { File source = sources[j]; if (source.getName().equals(".")) { continue; } if (source.getName().equals("..")) { continue; } if (source.isDirectory()) { processFontDirectory(source, fonts); continue; } if (source.getName().toLowerCase().endsWith(".ttf")) { try { if (statusListener != null) { statusListener.updateStatus("Processing " + source.getName()); } FontData data = new FontData(new FileInputStream(source), 1); fonts.add(data); String famName = data.getFamilyName(); if (!families.contains(famName)) { families.add(famName); } boolean bo = data.getJavaFont().isBold(); boolean it = data.getJavaFont().isItalic(); if ((bo) && (it)) { bolditalic.put(famName, data); } else if (bo) { bold.put(famName, data); } else if (it) { italic.put(famName, data); } else { plain.put(famName, data); } } catch (Exception e) { if (DEBUG) { System.err.println( "Unable to process: " + source.getAbsolutePath() + " (" + e.getClass() + ": " + e.getMessage() + ")"); } if (statusListener != null) { statusListener.updateStatus("Unable to process: " + source.getName()); } } } } }