ptolemy.vergil
Class VergilApplication

java.lang.Object
  extended by ptolemy.actor.gui.ConfigurationApplication
      extended by ptolemy.actor.gui.MoMLApplication
          extended by ptolemy.vergil.VergilApplication
All Implemented Interfaces:
ExecutionListener
Direct Known Subclasses:
SingleWindowApplication

public class VergilApplication
extends MoMLApplication

An application for editing ptolemy models visually.

The exact facilities that are available are determined by an optional command line argument that names a directory in ptolemy/configs that contains a configuration.xml file. For example, if we call vergil -ptiny, then we will use ptolemy/configs/ptiny/configuration.xml and ptolemy/configs/ptiny/intro.htm. The default configuration is ptolemy/configs/full/configuration.xml, which is loaded before any other command-line arguments are processed.

This application also takes an optional command line argument pair -configuration configurationFile.xml that names a configuration to be read. For example,

 $PTII/bin/vergil -configuration ptolemy/configs/ptiny/configuration.xml
 
and
 $PTII/bin/vergil -ptiny
 
are equivalent

If there are no command-line arguments at all, then the configuration file is augmented by the MoML file ptolemy/configs/full/welcomeWindow.xml

Note that if the configuration starts with "ptiny", then RemoveNonPtinyClasses is used to remove classes such as code generators that might be present in the model but are not part of the Ptiny configuration.

Since:
Ptolemy II 1.0
Version:
$Id: VergilApplication.java 59167 2010-09-21 17:08:02Z cxh $
Author:
Edward A. Lee, Steve Neuendorffer, Christopher Hylands, contributor: Chad Berkeley
See Also:
ModelFrame, RunTableau, PtExecuteApplication
Accepted Rating:
Red (eal)
Proposed Rating:
Yellow (eal)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.actor.gui.ConfigurationApplication
ConfigurationApplication.IgnoreErrorHandler
 
Field Summary
protected static java.lang.String[][] _commandOptions
          The command-line options that take arguments.
private  java.lang.String _configurationSubdirectory
           
private  java.net.URL _configurationURL
           
private  boolean _expectingConfiguration
           
 
Fields inherited from class ptolemy.actor.gui.ConfigurationApplication
_basePath, _commandFlagsWithDescriptions, _commandTemplate, _configuration, _exit, _parser, _printPDF, _run, _statistics, _test
 
Constructor Summary
VergilApplication(java.lang.String[] args)
          Parse the specified command-line arguments, creating models and frames to interact with them.
VergilApplication(java.lang.String basePath, java.lang.String[] args)
          Parse the specified command-line arguments, creating models and frames to interact with them.
 
Method Summary
private  boolean _configurationParseArg(java.lang.String arg)
          Parse a command-line argument.
protected  Configuration _createDefaultConfiguration()
          Return a default Configuration.
protected  Configuration _createEmptyConfiguration()
          Return a default Configuration to use when there are no command-line arguments.
protected  void _parseArgs(java.lang.String[] args)
          Parse the command-line arguments.
protected  java.lang.String _usage()
          Return a string summarizing the command-line arguments.
static void errorAndExit(java.lang.String message, java.lang.String[] args, java.lang.Throwable throwable)
          Print out an error message and stack trace on stderr and then display a dialog box.
static void main(java.lang.String[] args)
          Create a new instance of this application, passing it the command-line arguments.
static void openLibrary(Configuration configuration, java.io.File file)
          Deprecated. Use UserActorLibrary.openLibrary(Configuration, File)
 
Methods inherited from class ptolemy.actor.gui.MoMLApplication
_initializeApplication
 
Methods inherited from class ptolemy.actor.gui.ConfigurationApplication
_configurationUsage, _configurationUsage, _openModel, _openModel, _parseArg, _printPDF, _readConfiguration, executionError, executionFinished, managerStateChanged, models, readConfiguration, runModels, specToURL, throwArgsException, waitForFinish
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_commandOptions

protected static java.lang.String[][] _commandOptions
The command-line options that take arguments.


_configurationSubdirectory

private java.lang.String _configurationSubdirectory

_configurationURL

private java.net.URL _configurationURL

_expectingConfiguration

private boolean _expectingConfiguration
Constructor Detail

VergilApplication

public VergilApplication(java.lang.String[] args)
                  throws java.lang.Exception
Parse the specified command-line arguments, creating models and frames to interact with them. Look for configurations in "ptolemy/configs"

Parameters:
args - The command-line arguments.
Throws:
java.lang.Exception - If command line arguments have problems.

VergilApplication

public VergilApplication(java.lang.String basePath,
                         java.lang.String[] args)
                  throws java.lang.Exception
Parse the specified command-line arguments, creating models and frames to interact with them.

Parameters:
basePath - The basePath to look for configurations in, usually "ptolemy/configs", but other tools might have other configurations in other directories
args - The command-line arguments.
Throws:
java.lang.Exception - If command line arguments have problems.
Method Detail

errorAndExit

public static void errorAndExit(java.lang.String message,
                                java.lang.String[] args,
                                java.lang.Throwable throwable)
Print out an error message and stack trace on stderr and then display a dialog box. This method is used as a fail safe in case there are problems with the configuration We use a Throwable here instead of an Exception because we might get an Error or and Exception. For example, if we are using JNI, then we might get a java.lang.UnsatisfiedLinkError, which is an Error, not and Exception.

Parameters:
message - The message to be displayed
args - The arguments to be displayed
throwable - The Throwable that caused the problem.

main

public static void main(java.lang.String[] args)
Create a new instance of this application, passing it the command-line arguments.

Parameters:
args - The command-line arguments.

openLibrary

public static void openLibrary(Configuration configuration,
                               java.io.File file)
                        throws java.lang.Exception
Deprecated. Use UserActorLibrary.openLibrary(Configuration, File)

Open the MoML file at the given location as a new library in the actor library for this application. An alternate class can be used to build the library if reading the MoML is not desired. The class must extend ptolemy.moml.LibraryBuilder and the _alternateLibraryBuilder property must be set with the 'value' set to the class that extends LibraryBuilder.

Parameters:
configuration - The configuration where we look for the actor library.
file - The MoML file to open.
Throws:
java.lang.Exception - If there is a problem opening the configuration, opening the MoML file, or opening the MoML file as a new library.

_createDefaultConfiguration

protected Configuration _createDefaultConfiguration()
                                             throws java.lang.Exception
Return a default Configuration. The initial default configuration is the MoML file full/configuration.xml under the _basePath directory, which is usually ptolemy/configs. using different command line arguments can change the value Usually, we also open the user library, which is located in the directory returned by StringUtilities.preferencesDirectory() If the configuration contains a top level Parameter named _hideUserLibrary, then we do not open the user library.

Overrides:
_createDefaultConfiguration in class ConfigurationApplication
Returns:
A default configuration.
Throws:
java.lang.Exception - If the configuration cannot be opened.

_createEmptyConfiguration

protected Configuration _createEmptyConfiguration()
                                           throws java.lang.Exception
Return a default Configuration to use when there are no command-line arguments. If the configuration contains a parameter _applicationBlankPtolemyEffigyAtStartup then we create an empty up an empty PtolemyEffigy.

Overrides:
_createEmptyConfiguration in class ConfigurationApplication
Returns:
A configuration for when there no command-line arguments.
Throws:
java.lang.Exception - If the configuration cannot be opened.

_parseArgs

protected void _parseArgs(java.lang.String[] args)
                   throws java.lang.Exception
Parse the command-line arguments.

Overrides:
_parseArgs in class ConfigurationApplication
Parameters:
args - The command-line arguments to be parsed.
Throws:
java.lang.Exception - If an argument is not understood or triggers an error.

_usage

protected java.lang.String _usage()
Return a string summarizing the command-line arguments.

Overrides:
_usage in class ConfigurationApplication
Returns:
A usage string.

_configurationParseArg

private boolean _configurationParseArg(java.lang.String arg)
                                throws java.lang.Exception
Parse a command-line argument. Usually, we would name this method _parseArg(), but we want to handle any arguments that handle configuration changes before calling the parent class _parseArg() because the parent class depends either having a configuration to work with, or the parent class sets up a configuration.

Returns:
True if the argument is understood, false otherwise.
Throws:
java.lang.Exception - If something goes wrong.