001 /*
002 * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 /* $Id: MathViewer.java,v 4add00437054 2010/01/21 11:39:11 MARIO $ */
018
019 package net.sourceforge.jeuclid.app.mathviewer;
020
021 import java.io.File;
022
023 import javax.swing.JFrame;
024 import javax.swing.SwingUtilities;
025 import javax.swing.UIManager;
026 import javax.swing.UnsupportedLookAndFeelException;
027
028 import net.sourceforge.jeuclid.Constants;
029
030 import org.apache.commons.logging.Log;
031 import org.apache.commons.logging.LogFactory;
032
033 import com.apple.eawt.Application;
034
035 /**
036 * A simple application for viewing MathML documents.
037
038 * @version $Revision: 4add00437054 $
039 */
040 public final class MathViewer {
041
042 /**
043 * Set to true if we're running under Mac OS X.
044 */
045 public static final boolean OSX =
046 System.getProperty("mrj.version") != null; //$NON-NLS-1$
047
048 /**
049 * Logger for this class.
050 */
051 private static final Log LOGGER = LogFactory.getLog(MathViewer.class);
052
053 /**
054 * Source file.
055 */
056 private static File source;
057
058 /**
059 * Default constructor.
060 */
061 private MathViewer() {
062 // Empty on purpose
063 }
064
065 /**
066 * Launches this application.
067 * @param args
068 * command line arguments. Ignored.
069 */
070 public static void main(final String[] args) {
071 MathViewer.source = null;
072 if (args.length > 0) {
073 MathViewer.source = new File(args[0]);
074 }
075 if (MathViewer.OSX) {
076 System.setProperty("apple.laf.useScreenMenuBar",
077 Constants.TRUE); //$NON-NLS-1$ //$NON-NLS-2$
078 }
079
080 try {
081 UIManager.setLookAndFeel(UIManager
082 .getSystemLookAndFeelClassName());
083 } catch (final ClassNotFoundException e) {
084 MathViewer.LOGGER.debug(e);
085 } catch (final InstantiationException e) {
086 MathViewer.LOGGER.debug(e);
087 } catch (final IllegalAccessException e) {
088 MathViewer.LOGGER.debug(e);
089 } catch (final UnsupportedLookAndFeelException e) {
090 MathViewer.LOGGER.debug(e);
091 }
092 SwingUtilities.invokeLater(new Runnable() {
093 public void run() {
094 final MainFrame mainFrame = new MainFrame();
095 mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
096 if (MathViewer.OSX) {
097 final Application a = Application.getApplication();
098 a.setEnabledAboutMenu(true);
099 a.setEnabledPreferencesMenu(true);
100 a.addApplicationListener(new MainFrameAppListener(
101 mainFrame));
102 }
103 if (MathViewer.source != null) {
104 mainFrame.loadFile(MathViewer.source);
105 }
106 mainFrame.setVisible(true);
107 }
108 });
109 }
110 }