/*
* {{{ header & license
* Copyright (c) 2004 Joshua Marinacci
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* }}}
*/
package org.xhtmlrenderer.demo.browser;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import org.xhtmlrenderer.util.GeneralUtil;
import org.xhtmlrenderer.util.XRLog;
/**
* Description of the Class
*
* @author empty
*/
public class BrowserStartup {
/**
* Description of the Field
*/
public BrowserPanel panel;
/**
* Description of the Field
*/
protected BrowserMenuBar menu;
/**
* Description of the Field
*/
protected JFrame frame;
/**
* Description of the Field
*/
protected JFrame validation_console = null;
/**
* Description of the Field
*/
protected BrowserActions actions;
/**
* Page to view at startup
*/
protected String startPage;
/**
* Description of the Field
*/
protected ValidationHandler error_handler = new ValidationHandler();
/**
* Description of the Field
*/
public static final Logger logger = Logger.getLogger("app.browser");
/**
* Constructor for the BrowserStartup object
*/
public BrowserStartup() {
this("demo:demos/splash/splash.html");
}
/**
* Constructor for the BrowserStartup object
*/
public BrowserStartup(String startPage) {
logger.info("starting up");
this.startPage = startPage;
}
/**
* Initializes all UI components but does not display frame and does not load any pages.
*/
public void initUI() {
if (GeneralUtil.isMacOSX()) {
try {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "FS Browser");
} catch (Exception ex) {
try {
logger.log(Level.SEVERE, "error initalizing the mac properties", ex);
} catch (Exception ex2) {
//System.out.println("error writing to the log file!" + ex2);
//ex2.printStackTrace();
}
}
} else {
setLookAndFeel();
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.frame = frame;
logger.info("creating UI");
actions = new BrowserActions(this);
actions.init();
panel = new BrowserPanel(this, new FrameBrowserPanelListener());
panel.init();
panel.createActions();
menu = new BrowserMenuBar(this);
menu.init();
menu.createLayout();
menu.createActions();
frame.setJMenuBar(menu);
frame.getContentPane().add(panel.toolbar, BorderLayout.PAGE_START);
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
frame.getContentPane().add(panel.status, BorderLayout.PAGE_END);
frame.pack();
frame.setSize(1024, 768);
}
/**
* The main program for the BrowserStartup class
*
* @param args The command line arguments
*/
public static void main(final String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
final BrowserStartup bs = new BrowserStartup();
bs.initUI();
bs.launch();
}
});
}
/**
* Loads the first page (specified in the constructor) and shows the frame.
*/
public void launch() {
try {
panel.loadPage(startPage);
frame.setVisible(true);
} catch (Exception ex) {
XRLog.general(Level.SEVERE, ex.getMessage(), ex);
}
}
private static void setLookAndFeel() {
boolean lnfSet = false;
try {
UIManager.setLookAndFeel("com.jgoodies.looks.plastic.PlasticXPLookAndFeel");
lnfSet = true;
} catch (Throwable th) {
}
if (!lnfSet) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
lnfSet = true;
} catch (Throwable th) {
th.printStackTrace();
}
}
}
/**
* Description of the Class
*
* @author empty
*/
class FrameBrowserPanelListener implements BrowserPanelListener {
/**
* Description of the Method
*
* @param url PARAM
* @param title PARAM
*/
public void pageLoadSuccess(String url, String title) {
frame.setTitle(title + (title.length() > 0 ? " - " : "") + "Flying Saucer");
}
}
}
/*
* $Id$
*
* $Log$
* Revision 1.24 2009/05/15 16:28:14 pdoubleya
* Integrate async image loading, starting point is DelegatingUserAgentCallback. AWT images are now always buffered, but screen-compatible. RootPanel now supports a repaint mechanism, with optional layout, with some attempt to control how often one or the other actually takes place when many images have been loaded.
*
* Revision 1.23 2009/05/09 14:15:52 pdoubleya
* FindBugs: field can be final
*
* Revision 1.22 2007/07/13 13:32:31 pdoubleya
* Add webstart entry point for browser with no URL or File/open option. Move Zoom to menu entry, add warning on first zoom. Move preview to menu entry. Reorganize launch method a little to allow for multiple entry points.
*
* Revision 1.21 2006/10/04 08:06:26 pdoubleya
* Made reference to JGoodies via class name, not via class, in case not available; catch Throwable in that case as class not found is an error, not an exception.
*
* Revision 1.20 2006/07/31 14:20:54 pdoubleya
* Bunch of cleanups and fixes. Now using a toolbar for actions, added Home button, next/prev navigation actions to facilitate demo file browsing, loading demo pages from a list, about dlg and link to user's manual.
*
* Revision 1.19 2006/01/01 04:01:07 peterbrant
* Avoid double layout on component resize / Don't relayout if print mode and window size changes
*
* Revision 1.18 2005/11/28 17:02:33 peterbrant
* Add ability to launch browser with URL provided on the command line (from Andrew Goodnough)
*
* Revision 1.17 2005/11/17 21:41:21 peterbrant
* Allow custom start page
*
* Revision 1.16 2005/09/08 03:37:57 joshy
* final R5 release
*
* Revision 1.15 2005/07/31 01:12:29 joshy
* updated browser demos, about box demos, and added pack200 to the distro
*
* Revision 1.14 2005/07/21 22:56:07 joshy
* tweaked the splash screen
*
* Revision 1.13 2005/06/16 07:24:44 tobega
* Fixed background image bug.
* Caching images in browser.
* Enhanced LinkListener.
* Some house-cleaning, playing with Idea's code inspection utility.
*
* Revision 1.12 2005/06/15 13:35:27 tobega
* Fixed history
*
* Revision 1.11 2005/04/03 21:51:31 joshy
* fixed code that gets the XMLReader on the mac
* added isMacOSX() to GeneralUtil
* added app name and single menu bar to browser
*
* Issue number:
* Obtained from:
* Submitted by:
* Reviewed by:
*
* Revision 1.10 2005/03/28 19:18:47 pdoubleya
* Fixed to update layout on resize.
*
* Revision 1.9 2005/03/28 19:03:32 pdoubleya
* Changed startup page.
*
* Revision 1.8 2004/12/12 03:33:07 tobega
* Renamed x and u to avoid confusing IDE. But that got cvs in a twist. See if this does it
*
* Revision 1.7 2004/12/12 02:54:30 tobega
* Making progress
*
* Revision 1.6 2004/11/16 07:25:20 tobega
* Renamed HTMLPanel to BasicPanel
*
* Revision 1.5 2004/11/16 03:43:25 joshy
* first pass at printing support
* Issue number:
* Obtained from:
* Submitted by:
* Reviewed by:
*
* Revision 1.4 2004/11/10 17:28:54 joshy
* initial support for anti-aliased text w/ minium
*
* Issue number:
* Obtained from:
* Submitted by:
* Reviewed by:
*
* Revision 1.3 2004/10/23 14:38:58 pdoubleya
* Re-formatted using JavaStyle tool.
* Cleaned imports to resolve wildcards except for common packages (java.io, java.util, etc)
* Added CVS log comments at bottom.
*
*
*/