Yoix Changelog

What's new in Yoix 2.3.1

Sep 4, 2013
  • Added a Screen type, changed VM.screen from a dictionary to a Screen, added the VM.screens array, added a field named screen to all frames, dialogs and windows, and added documentation for VM (under the interpreter directory). The changes were added when multiple monitor support was included in the interpreter.
  • See the new VM and Screen reference pages and the discussion of the screen field in all frame, dialog and window reference pages for more details.
  • Added a field named fullscreen to Swing and AWT windows, frames, and dialogs. See the reference pages for more details
  • Added a "this block" to the named block variations. If there are two tokens in the variable name reference and the first is "this" then references to "this" in the block will refer to the compound object that's used for the block storage.
  • Added builtins named xmlToYoix() and yoixToXML() to yoix.parser that can be used to translate between an XML String and a Yoix structure built using dictionaries, arrays, and strings.
  • Added builtins named xmlAdd() and xmlGet() to yoix.parser that are often used to manipulate XML after xmlToYoix() converts it into an appropriate structure. See the reference pages for more details.
  • Made lots of improvements to the YWAIT package, including the addition of "edit components" that can be used when you want to support undo/redo operations and have immediate validation of all fields.
  • The current focus owner, if it's a Yoix component, can now be obtained using the new getFocusOwner() builtin that was added to yoix.awt and yoix.swing.
  • Builtins named getFirstFocusComponent(), getFocusComponentAfter(),
  • getFocusComponentBefore(), and getFocusComponents() were added to yoix.awt and yoix.swing and can be used to get information about focus traversal. See the reference pages for more details.
  • Added a focusable field to all swing and awt components. Almost all components have their focusable field start at TRUE, which means they can accept the keyboard focus. Setting focusable to FALSE prevents the component from becoming the focus owner.
  • Modified the implementation the nextfocus field that's defined in most Swing components so the tag associated with a component can also be used. See the reference pages for more details.
  • Added the --cookie, --cookies, and --cookiepolicy command line options that let you preload cookies and control how cookies received from the server are handled. All cookies set using these command line options must include a domain argument, but you don't get any warnings if there's a mistake or if you're using Java 1.5 where there's no cookie manager support. These new cookie options are included in the usage summary that you get with -? or --info command line options.
  • Added builtins named getScrollerSize() and getViewportSize() to yoix.swing that can be used to get the size of the scroller that the interpreter adds to some Swing components.
  • Added a builtin named getSaturationAdjustedColor() to yoix.awt and yoix.swing. See the reference pages for more detail.
  • JScrollPane now accepts JScrollBars in the layout array when they're followed by the VERTICAL or HORIZONTAL constraints, so there's now a relatively simple way for scripts to control the JScrollPane. We also added extent, origin, and viewport fields to JScrollPane.
  • Added a field named dividerlocked to JSplitPane, that can be temporarily used to stop the divider from moving when one or both of the displayed components is changed. See the reference page for more details.
  • The access(), isDirectoryPath() and isFilePath() builtins were modified slightly so they now accept pathnames that begin with the "file:" prefix.
  • Added an optional third argument to strjoin() that when TRUE includes undefined elements (as empty strings) in the result.
  • Added an optional second argument to htmlEncode() that can be used to specify additional characters that should be encoded.
  • Added an optional int argument to the isBuiltin(), isCallable(), and isFunction() builtins and when that argument is supplied the builtins only return TRUE if call could be made with that number of arguments.
  • Made a simple change to GridBagLayout so it accepts an Insets and assigns it to the insets in the internal GridBagConstraints that are associated with columns.
  • Added a function named allowEdit() to JTable that's called, if it's not NULL, before a cell can be changed by editing or the SET_FIELD action.
  • Added a function named afterSelect() to JTable that's called, if it's not NULL, whenever the JTable's selection changes.
  • Added invokeEditImport() as a way for scripts to be notified when the edit cell changes because data was imported by a DnD operation or from a Clipboard.
  • Added JTable cell editor specific actions named EDIT_GET_CELL, EDIT_GET_FIELD, EDIT_SET_FIELD, EDIT_SET_BACKGROUND, and
  • EDIT_SET_FOREGROUND.
  • Added GET_SELECTED_CELL as a JTable action.
  • Added a field name sortmap to JTable that can be used to force one column to be sorted by the contents of another column that's usually hidden.
  • Added selectionmark as a JTableColumn field that can be set to a string (e.g., "\x25BA") that you want automatically displayed in every row that's selected in that column.
  • Added optional third and fourth elements in the JTableColumn's cellcolors array that can be used to control the background and foreground colors when a cell is selected.