public class JythonManager extends IdvManager implements java.awt.event.ActionListener
DerivedDataDescriptor
and are held in DescriptorDataSource
Modifier and Type | Class and Description |
---|---|
static class |
JythonManager.LibHolder
Class LibHolder holds all things for a single lib
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
PROP_JYTHON_EDITOR
The path to the editor executable
|
contents, dialog, frame, window
ARG_B64BUNDLE, ARG_B64ISL, ARG_BUNDLE, ARG_CATALOG, ARG_CHOOSER, ARG_CLEARDEFAULT, ARG_CODE, ARG_CONNECT, ARG_CURRENTTIME, ARG_DATA, ARG_DEBUG, ARG_DEFAULT, ARG_DISPLAY, ARG_DXML, ARG_FIXEDTIME, ARG_HELP, ARG_IMAGE, ARG_IMAGESERVER, ARG_INSTALLPLUGIN, ARG_ISLFILE, ARG_ISLINTERACTIVE, ARG_LISTRESOURCES, ARG_MAINCLASS, ARG_MOVIE, ARG_MSG_DEBUG, ARG_MSG_RECORD, ARG_NODEFAULT, ARG_NOERRORSINGUI, ARG_NOGUI, ARG_NOONEINSTANCE, ARG_NOPLUGINS, ARG_NOPREF, ARG_ONEINSTANCEPORT, ARG_PLUGIN, ARG_PORT, ARG_PRINTJNLP, ARG_PROPERTIES, ARG_SCRIPT, ARG_SERVER, ARG_SETFILES, ARG_SITEPATH, ARG_TEMPLATE, ARG_TEST, ARG_TESTEVAL, ARG_TRACE, ARG_TRACEONLY, ARG_USERPATH, DEFAULT_DATE_FORMAT, DEFAULT_DOCPATH, DEFAULT_TIMEZONE, FILTER_CPT, FILTER_ISL, FILTER_JNLP, FILTER_XIDV, FILTER_XIDVZIDV, FILTER_XML, FILTER_ZIDV, ID_COMMANDSTORUN, ID_DATASOURCES, ID_DISPLAYCONTROLS, ID_IDV, ID_JYTHON, ID_MESSAGE, ID_MISCHASHTABLE, ID_NCIDV_VERSION, ID_VERSION, ID_VIEWMANAGERS, ID_WINDOWS, INITIAL_PROBE_EARTHLOCATION, NULL_DATA_SELECTION, NULL_STRING, PREF_APPEARANCEMODE, PREF_ARCHIVEDIR, PREF_ARCHIVENAME, PREF_AUTODISPLAYS_ENABLE, PREF_AUTODISPLAYS_SHOWGUI, PREF_AUTOSELECTDATA, PREF_CACHESIZE, PREF_CONTROLSINTABS, PREF_DATAPREFIX, PREF_DATE_FORMAT, PREF_DISTANCEUNIT, PREF_DOCACHE, PREF_EMBEDDATACHOOSERINDASHBOARD, PREF_EMBEDFIELDSELECTORINDASHBOARD, PREF_EMBEDLEGENDINDASHBOARD, PREF_EMBEDQUICKLINKSINDASHBOARD, PREF_EVENT_KEYBOARDMAP, PREF_EVENT_MOUSEMAP, PREF_EVENT_WHEELMAP, PREF_FAST_RENDER, PREF_FIELD_CACHETHRESHOLD, PREF_FILEREADDIR, PREF_FILEWRITEDIR, PREF_GEOMETRY_BY_REF, PREF_HISTORY, PREF_IMAGE_BY_REF, PREF_LARGE_REMOTE_DATA_WARN, PREF_LASTVERSION, PREF_LATLON_FORMAT, PREF_LEGEND_SHOWICONS, PREF_LOCALE, PREF_LOOKANDFEEL, PREF_MAXIMAGESIZE, PREF_MEMORY, PREF_NPOT_IMAGE, PREF_OPEN_ASK, PREF_OPEN_MERGE, PREF_OPEN_REMOVE, PREF_PROJ_LIST, PREF_SAMPLINGMODE, PREF_SHOWCONTROLWINDOW, PREF_SHOWDASHBOARD, PREF_SHOWDECODEDIALOG, PREF_SHOWHIDDENFILES, PREF_SHOWQUITCONFIRM, PREF_SITEPATH, PREF_THREADS_DATA, PREF_THREADS_RENDER, PREF_TIMEZONE, PREF_VERTICALCS, PREF_VERTICALUNIT, PREF_WINDOW_SHOWTOOLBAR, PREF_ZIDV_ASK, PREF_ZIDV_DIRECTORY, PREF_ZIDV_SAVETOTMP, PROP_3DMODE, PROP_ABOUTTEXT, PROP_APPRESOURCEPATH, PROP_CHOOSERS, PROP_CHOOSERS_ALL, PROP_CONTROLDESCRIPTORS, PROP_CONTROLDESCRIPTORS_ALL, PROP_DATAHOLDERBOUNDS, PROP_DEFAULTLOCATIONS, PROP_DISPLAYLIST_GROUP, PROP_FIXFILELOCKUP, PROP_JNLPCODEBASE, PROP_JNLPTEMPLATE, PROP_JNLPTITLE, PROP_LOADINGXML, PROP_MAP_GLOBE_LEVEL, PROP_MAP_MAP_LEVEL, PROP_MINIMUMFRAMECYCLETIME, PROP_MONITORPORT, PROP_OLDCONTROLDESCRIPTORS, PROP_ONEINSTANCEPORT, PROP_PREFERENCES, PROP_PROJ_NAME, PROP_RESOURCEFILES, PROP_SHOWCLOCK_DASH, PROP_SHOWCLOCK_VIEW, PROP_SHOWDASHBOARD, PROP_SHOWDATATREE, PROP_SHOWFORMULAS, PROP_SHOWSPLASH, PROP_SPLASHICON, PROP_UI_DESKTOP, PROP_USE_DISPLAYAREA, PROP_USE_TIMEDRIVER, PROP_VERSIONFILE, PROP_WINDOW_SCREENSIZEOFFSET, PROP_WINDOW_SIZEHEIGHT, PROP_WINDOW_SIZEWIDTH, PROP_WINDOW_USESCREENSIZE, SUFFIX_BAT, SUFFIX_CPT, SUFFIX_ISL, SUFFIX_JNLP, SUFFIX_RBI, SUFFIX_SH, SUFFIX_XIDV, SUFFIX_XML, SUFFIX_ZIDV
Constructor and Description |
---|
JythonManager(IntegratedDataViewer idv)
Create the manager and call initPython.
|
Modifier and Type | Method and Description |
---|---|
void |
addFormula(DerivedDataDescriptor ddd)
Add a formula to the IDV.
|
void |
appendJython(java.lang.String jython)
APpend jython to main editable lib
|
void |
appendJythonFromBundle(java.lang.String jython)
Append the given jython to that is from a bundle to the users jython
|
void |
appendTmpJython(java.lang.String jython)
Append the given jython to the temp jython
|
protected void |
applicationClosing()
Gets called when the IDV is quitting.
|
protected static boolean |
checkUntrustedJython(java.lang.String jython)
Make sure the given jython code matches the pattern (after removing whitespace):
idv.procedure_name ('arg1', arg2, ..., argn)
where if an arg is not in single quotes it cannot contain
a procedure call.
|
org.python.util.PythonInterpreter |
createInterpreter()
Factory method to create and interpreter.
|
JythonShell |
createShell()
Create a jython shell
|
void |
dataGroupsChanged()
Update derived needs when the DataGroups change
|
void |
deleteKeyPressed(DataChoice dataChoice)
Delete the data choice if it is a user formula
|
void |
descriptorChanged(DerivedDataDescriptor ddd)
Called when a formula data choice has changed (i.e.,
added, removed or edited.
|
protected javax.swing.JComponent |
doMakeContents()
Create the jython editor.
|
void |
doMakeDataChoiceMenuItems(DataChoice dataChoice,
java.util.List items)
Create the list of menu items for editing a data choice
that represents an end user formula.
|
java.util.List |
doMakeEditMenuItems()
make the edit menu items for the formula data source
|
java.util.List |
doMakeEditMenuItems(DescriptorDataSource dds)
make the edit menu items for the given formula data source
|
java.util.List |
doMakeFormulaDataSourceMenuItems(DataSource dataSource)
Return the list of menu items to use when the user has clicked on a formula DataSource.
|
void |
editInExternalEditor()
Edit the jython in the external editor
|
void |
editInExternalEditorInner(JythonManager.LibHolder holder)
Edit the jython in the external editor
|
void |
evaluateDataChoice(DataChoice dataChoice)
This simply clones the given data choice and calls getData
on it.
|
void |
evaluateTrusted(java.lang.String code)
Interpret the given jython code.
|
void |
evaluateTrusted(java.lang.String code,
java.util.Hashtable properties)
Interpret the given jython code.
|
void |
evaluateUntrusted(java.lang.String jythonCode)
Evaluate the given jython code.
|
void |
evaluateUntrusted(java.lang.String jythonCode,
java.util.Hashtable properties)
Evaluate the given jython code.
|
void |
exportFormulas()
Export user formulas
|
void |
exportFormulasToPlugin()
Export selected formulas to plugin
|
void |
exportSelectedToPlugin()
Export selcted text of current tab to plugin
|
void |
exportToPlugin()
Export to plugin
|
java.util.List |
findJythonMethods(boolean justList)
find methods
|
java.util.List |
findJythonMethods(boolean justList,
java.util.List holders)
find methods
|
java.util.List |
getDefaultDescriptors()
Get all end user formulas
|
org.python.util.PythonInterpreter |
getDerivedDataInterpreter()
Create a (singleton) jython interpreter and initialize it with the set
of classes defined in the xml
|
org.python.util.PythonInterpreter |
getDerivedDataInterpreter(java.lang.String methodName)
Create a (singleton) jython interpreter and initialize it with the set
of classes defined in the xml and (if needed) with the
class path represented by the methodName argument (if methodName
is of the form: some.package.path.SomeClass.someMethod).
|
DescriptorDataSource |
getDescriptorDataSource()
Get the descriptor data source
|
java.util.List |
getDescriptors()
get formula descriptors
|
java.util.List |
getEndUserDescriptors()
Get all end user formulas
|
boolean |
getInError()
Any errors
|
java.util.List |
getLibHolders()
the libs
|
java.util.List |
getLocalDescriptors()
Get all local descriptors
|
java.lang.String |
getUsersJythonText()
Get the end user edited text from the jython editor.
|
java.lang.String |
getWindowTitle()
Get the window titlexxx
|
void |
importFormulas()
Import user formulas
|
protected void |
initUserFormulas(IdvResourceManager newIrm)
Initialize the
DerivedDataDescriptor s
that are defined in the RSC_DERIVED resource collection
from the given resource manager. |
static void |
main(java.lang.String[] args)
main
|
void |
makeFileMenu(javax.swing.JMenu fileMenu)
make men
|
void |
makeFormula(org.python.core.PyFunction func)
Make a formula
|
void |
makeNewLibrary()
make new library
|
java.util.List |
makeProcedureMenu(java.lang.Object object,
java.lang.String method,
java.lang.String prefix)
Make menu
|
void |
removeFormula(DerivedDataChoice dataChoice)
Remove a formula from the IDV.
|
void |
removeFormula(DerivedDataDescriptor ddd)
remove formula
|
void |
removeInterpreter(org.python.util.PythonInterpreter interp)
Remove the interpreter from the list of interpreters.
|
void |
removeLibrary(JythonManager.LibHolder holder)
remove lib
|
boolean |
saveOnExit()
Save on exit if anything is changed
|
protected java.util.List |
selectFormulas()
Popup dialog to select formulas
|
void |
showFormulaDialog()
Show the formula dialog with no initial state.
|
void |
showFormulaDialog(DerivedDataDescriptor descriptor)
Show formula dialog with the given initial DDD.
|
void |
showFormulaDialog(DerivedDataDescriptor descriptor,
boolean isNew)
show the formula dialog
|
void |
showHelp()
SHow help
|
void |
showHelp(java.lang.String help)
show the help
|
void |
showJythonEditor()
Create, if needed, and show the jython editor.
|
boolean |
writeJythonLib(JythonManager.LibHolder holder)
Save the end user jython code from the jython editor into
the user's .unidata/idv area.
|
protected void |
writeUserFormulas()
Save the user created formulas.
|
getArgsManager, getCollabManager, getColorTableManager, getDataManager, getIdv, getIdvChooserManager, getIdvClass, getIdvProjectionManager, getIdvUIManager, getImageGenerator, getInstallManager, getJythonManager, getPersistenceManager, getPreferenceManager, getProperty, getProperty, getProperty, getPublishManager, getResourceManager, getStateManager, getStationModelManager, getStore, getVMManager, logException, showNormalCursor, showWaitCursor, waitUntilDisplaysAreDone, waitUntilDisplaysAreDone
actionPerformed, close, getContents, getDialog, getFrame, getWindow, isShowing, removeAll, setMenuBar, setWindowTitle, shouldMakeDialog, show, show, showModal, toFront, windowIsClosing
public static final java.lang.String PROP_JYTHON_EDITOR
public JythonManager(IntegratedDataViewer idv)
idv
- The IDVpublic void showJythonEditor()
public void exportSelectedToPlugin()
public void exportToPlugin()
protected javax.swing.JComponent doMakeContents()
doMakeContents
in class WindowHolder
public boolean saveOnExit()
public void makeFormula(org.python.core.PyFunction func)
func
- functionpublic void makeNewLibrary()
public java.util.List getLibHolders()
public void removeLibrary(JythonManager.LibHolder holder)
holder
- libpublic void makeFileMenu(javax.swing.JMenu fileMenu)
fileMenu
- menuprotected void applicationClosing()
public void editInExternalEditor()
public void editInExternalEditorInner(JythonManager.LibHolder holder)
holder
- libpublic java.lang.String getWindowTitle()
getWindowTitle
in class WindowHolder
public void showHelp()
public void showHelp(java.lang.String help)
help
- the help idpublic org.python.util.PythonInterpreter createInterpreter()
public JythonShell createShell()
public void removeInterpreter(org.python.util.PythonInterpreter interp)
interp
- The interpreter to removepublic boolean getInError()
public java.lang.String getUsersJythonText()
public void appendTmpJython(java.lang.String jython)
jython
- The jython from the bundlepublic void appendJythonFromBundle(java.lang.String jython)
jython
- The jython from the bundlepublic void appendJython(java.lang.String jython)
jython
- jythonpublic boolean writeJythonLib(JythonManager.LibHolder holder)
holder
- libprotected static boolean checkUntrustedJython(java.lang.String jython)
We have this here so (hopefully) a user won't inadvertently execute rogue jython code on their machine.
jython
- The codepublic void evaluateUntrusted(java.lang.String jythonCode)
jythonCode
- The code to executepublic void evaluateUntrusted(java.lang.String jythonCode, java.util.Hashtable properties)
jythonCode
- The code to executeproperties
- If non-null then populate the interpreter with the name/value pairspublic void evaluateTrusted(java.lang.String code)
code
- The code toe evaluatepublic void evaluateTrusted(java.lang.String code, java.util.Hashtable properties)
code
- The code toe evaluateproperties
- If non-null then populate the interpreter with the name/value pairspublic void dataGroupsChanged()
protected void initUserFormulas(IdvResourceManager newIrm)
DerivedDataDescriptor
s
that are defined in the RSC_DERIVED resource collection
from the given resource manager.newIrm
- The resource manager to get the derived resources fromprotected java.util.List selectFormulas()
public void exportFormulasToPlugin()
public void exportFormulas()
public void importFormulas()
protected void writeUserFormulas()
public void doMakeDataChoiceMenuItems(DataChoice dataChoice, java.util.List items)
dataChoice
- The end user formula data choiceitems
- List of menu items to add topublic void deleteKeyPressed(DataChoice dataChoice)
dataChoice
- The data choice to deletepublic void evaluateDataChoice(DataChoice dataChoice)
dataChoice
- The data chocie to evaluatepublic void removeFormula(DerivedDataChoice dataChoice)
dataChoice
- formula data choicepublic void removeFormula(DerivedDataDescriptor ddd)
ddd
- dddpublic void descriptorChanged(DerivedDataDescriptor ddd)
ddd
- descriptor for the formula.public void addFormula(DerivedDataDescriptor ddd)
ddd
- formula descriptorpublic java.util.List doMakeFormulaDataSourceMenuItems(DataSource dataSource)
dataSource
- The data source clicked onpublic java.util.List doMakeEditMenuItems()
public java.util.List doMakeEditMenuItems(DescriptorDataSource dds)
dds
- The formula data sourcepublic void showFormulaDialog()
public java.util.List getDescriptors()
public java.util.List getEndUserDescriptors()
public java.util.List getLocalDescriptors()
public java.util.List getDefaultDescriptors()
public void showFormulaDialog(DerivedDataDescriptor descriptor)
descriptor
- The descriptor for the formula.public void showFormulaDialog(DerivedDataDescriptor descriptor, boolean isNew)
descriptor
- the formulaisNew
- is this a new one or are we just changing itpublic DescriptorDataSource getDescriptorDataSource()
public org.python.util.PythonInterpreter getDerivedDataInterpreter()
public org.python.util.PythonInterpreter getDerivedDataInterpreter(java.lang.String methodName)
methodName
- Used to initialize the interpreter (if non -null)public java.util.List makeProcedureMenu(java.lang.Object object, java.lang.String method, java.lang.String prefix)
object
- object to callmethod
- method to callprefix
- preficpublic java.util.List findJythonMethods(boolean justList)
justList
- If true just the functionspublic java.util.List findJythonMethods(boolean justList, java.util.List holders)
justList
- If true just the functionholders
- libspublic static void main(java.lang.String[] args) throws java.lang.Exception
args
- argsjava.lang.Exception
- on badness