Sage ProvideX Plug-in for Eclipse v2.x - What's New

This document describes the some of latest features that have been added to the Sage ProvideX Plug-in for Eclipse:

info Prerequisites for this version of the plug-in:
  • Java 8 SE run-time or JDK; compatible with Java 17
  • Eclipse 4.5 (Mars) (or newer) with the Java Development Tools (JDT) plug-in
  • A local install of ProvideX with a 2 user developer license
Overview
Overview of changes in the current release.
Functional Areas
Changes grouped by functional area of the plug-in.
Historic Releases
Summary of change from historic releases of the plug-in.
info The Sage 100 Plug-in information has moved to a separate document and is included with that plug-in.

What's New June 2022
Overview - Latest Release
v2.6.7 June 2022

General
  • Adjust logic to resolve issues with new features when using a ProvideX executable older than v9.20
  • New Writing a Contributed Tool example to show how to use a panel for configuration options and the progress view to show messages as the tool performs actions.
Builder
  • Add a new preference to skip copy of programs to linked folders when there are build or style check errors
  • Use default ProvideX executable when NOMADS Alternate executable is invalid or cannot be found
  • When full build is triggered at launch and output folder exists, only build modified files
  • Additional log messages when updating outline, dictionary, and library DOM data
  • Scan for duplicate function and variable names (Error 24)
    • Multiple definitions of a property (public and private)
    • Multiple definitions of a function with same parameter types
    • Support full function definition within the class declaration section
    • Ignore LOCAL within a function definition
  • Option to disable scan for duplicate function and variable names (Error 24)
  • Add support for encrypted password values (requires ProvideX v9.20 or newer)
  • Add new project-specific property 'AltExe_EnvironmentPropertyFile'
    • Set the name of a properties file containing name/value pairs to use to set environment variables when initializing the build process; when property is set force build process to use the alternate executable flow.
    • This format of this file:
      • one name/value pair per line in the format name=value
      • a line starting with '#' is considered to be a comment
      • blank lines are ignored
      # Example Name/Value pairs
      my_app_title=Application Fantastic
      my_app_debug=1
  • Change message displayed when build process is interrupted to a confirmation prompt to allow user to ignore attempt to cancel process.
  • Write message to Console when project.properties file exists for project
Import/Convert
  • The process to convert ProvideX programs to text has changed.
    Old Import/Convert Process
    The old process moved the file from the source folder to the output folder and then converted the file in the output folder to create a new text version of the program in the source folder. One of the primary issues with this approach is the impact it has when using version control - all history is lost on the original file and there is a potential that the file moved to the output folder may now be tracked by the version control process.
    New Import/Convert Process
    The new process leaves the source file in the source folder. If the option Always add source file extension when converting programs to text is enabled, the convert process will create the text file in the source folder and then delete the original source file. If this option is not enabled, the text version of the program will have the same name as the original program. The convert process creates a temporary file for the text version of the program and replaces the original program with this temporary file. If the convert to text fails, the original source file has not changed.
    This has a number of benefits:
    • reduces potential loss of original source file if conversion process fails
    • more accurate and complete history when tracking changes in version control
    • no longer have a file in the output folder that may be tracked by version control
Editor
  • Additional debug messages to track (rare) issue where NOMADS library information is not loaded
  • Fix for null pointer exception when processing file annotations
  • Identification of keywords to highlight will now stop when followed by one of the characters: < > - * /
  • Updated Constants and Functions
Contributed Tools
  • The Configure button is disabled when a configuration action has not been implemented
  • General
    • A new option on the Appearance Preferences page to enable saving the window position of a contributed tool if it is moved.
    • Common UI MessageBox() Method - add parameter to set title for message box
    • ProgressLog - add methods to support the creation and display of a log file
  • PvxDocs:
    • Add option to set date/time stamp of generated documentation file(s) to match source class
    • Add option to document generation setup page to set option for "Link to Page"
    • Add substitution tag %PvxCode2()% to add ProvideX code sample to replace the tag in line
    • Add substitution tags %PvxCodeBegin% / %PvxCodeEnd% to define blocks of code spanning multiple lines
    • When parameter information starts with plus (+) character, add the remaining text to previous line to allow parameter description to span multiple lines
  • Dictionary Viewer:
    • Add print format column to information displayed for fields
  • Build Tool - Encrypt Password Value
    • A new contributed tool to encrypt a password value.
  • Change Keyword Case
    • Resolve issue where keyword case gets changed in comments
  • Style Check
    • New option when creating a rule to check the search value against the list of keywords in the program line
    • Create a detailed log of the issues discovered during the scan process; this log can be viewed by clicking the Details button once the scan process is complete.
    • Perform tag substitution during the build process; include the substitution information in the detail log.
  • Tag Substitution
    • A new contributed tool to replace special tags in a source file with a substitution value before creating the output file. The tags and substitution values are defined in a properties file built-in to the plug-in.
    • Additional user-defined tags and substitution values can be defined in a tagSubstitution.properties files in the folder configured for user keywords and external observers on the Contributed Extensions/Tools preference page.
    • The original source file is not changed; changes will appear in the compiled program(s).
Preferences
  • Fix: Editor Preference page fails to load in Eclipse 2020-12
  • Resolve issue with export of ProvideX Properties for resources in project(s)
  • Add a new debug preference to set the debug message verbosity level
Sage 100 Plug-in
  • The What's New and additional documentation has been moved to the Sage 100 plug-in.
Builder
  1. Usability
    • Add a new preference to skip copy of programs to linked folders when there are build or style check errors
    • Use default ProvideX executable when NOMADS Alternate executable is invalid or cannot be found
    • When full build is triggered at launch and output folder exists, only build modified files
    • Additional log messages when updating outline, dictionary, and library DOM data
    • New builder option to disable scan for duplicate function and variable names (Error 24)
    • Add support for encrypted password values (requires ProvideX v9.20 or newer)
    • Improve error 24 scan logic for class declaration
      • Support full function definition within the class declaration section
      • Ignore LOCAL within a function definition
    • Add new project-specific property 'AltExe_EnvironmentPropertyFile'
      • Set the name of a properties file containing name/value pairs to use to set environment variables when initializing the build process; when property is set force build process to use the alternate executable flow.
      • This format of this file:
        • one name/value pair per line in the format name=value
        • a line starting with '#' is considered to be a comment
        • blank lines are ignored
        # Example Name/Value pairs
        my_app_title=Application Fantastic
        my_app_debug=1
    • The Convert programs to text process has changed to use the source file in the original location rather than move the file to the output folder. This will reduce issues with source control systems where the move to the output folder was tracked as an intentional change.
  2. Copy to Test System
    • Add a new preference, and associated logic, to skip copy of programs to linked folders when there are build or style check errors

  3. Preference page: Builder | Options

    Preferences: Builder | Options

    Several new preferences have been added to the "Builder Options" preference page:

    • Skip copy of programs with errors to linked folders

      When enabled, programs containing errors will not get copied to any linked folders.

    • Ignore FULL Build for existing projects triggered when starting Eclipse

      As part of the startup of Eclipse full builds are sometimes triggered for all projects in a workspace. When this preference is enabled the plug-in will ignore the full build request; full builds can still be triggered from the Project menu.

    • Simple scan for duplicate function/variable names (Error 24)

      When disabled, the simple scan for duplicate function/variable names is skipped

  4. Convert ProvideX programs to text
    • The process to convert ProvideX programs to text has changed.
      Old Import/Convert Process
      The old process moved the file from the source folder to the output folder and then converted the file in the output folder to create a new text version of the program in the source folder. One of the primary issues with this approach is the impact it has when using version control - all history is lost on the original file and there is a potential that the file moved to the output folder may now be tracked by the version control process.
      New Import/Convert Process
      The new process leaves the source file in the source folder. If the option Always add source file extension when converting programs to text is enabled, the convert process will create the text file in the source folder and then delete the original source file. If this option is not enabled, the text version of the program will have the same name as the original program. The convert process creates a temporary file for the text version of the program and replaces the original program with this temporary file. If the convert to text fails, the original source file has not changed.

      This has a number of benefits:
      • reduces potential loss of original source file if conversion process fails
      • more accurate and complete history when tracking changes in version control
      • no longer have a file in the output folder that may be tracked by version control

Editor
  1. Usability
    • Additional debug messages to track (rare) issue where NOMADS library information is not loaded
    • Fix for null pointer exception when processing file annotations
    • Identification of keywords to highlight will now stop when followed by one of the characters: < > - * /
    • Updated Constants and Functions

Contributed Tools
  1. General
    • Contributed Tools List
      • The Configure button on the Contributed Tools list is disabled when a configuration action has not been implemented
    • Writing a Contributed Tool
      • A new example to show how to use a panel for configuration options and the progress view to show messages as the tool performs actions.
    • Save Window Position

  2. Encrypt Password Value

    This is a contributed tool to encrypt a simple text password value. The encrypted password can be copied and used in:

    • The password field on a program properties page
    • The list of known passwords on the Import/Convert Preference page
    • The project properties file, property 'appendPreferenceS._ProgramPasswordList' to include the list of known passwords for a specific project.

      Tools - Encrypt Password


  3. ProvideX Docs
    • New substitution tags for code blocks
      • Add substitution tag %PvxCode2()% to add ProvideX code sample to replace the tag in line
      • Add substitution tags %PvxCodeBegin% / %PvxCodeEnd% to define blocks of code spanning multiple lines
    • Allow parameter documentation to span multiple lines
      • When parameter documentation text starts with plus (+) character, add the remaining text to previous line to allow parameter description to span multiple lines
    • Enhanced Documentation Generation Parameters

      Several new options have been added to the document generation setup page.

      PvxDocsRun - Setup

      • Option to override the method used to link to content pages from menu
      • Option to set modification date/time stamp to match source file

  4. Dictionary Viewer
    • Display additional field information

      Update to display additional information from the dictionary for each field:
      print format

    Dictionary Viewer

  5. Style Check

    A number of enhancements have been made to the Style Check contributed tool:

    • Check search value against list of keywords

      Define a rule to check the search value against list of keywords for each line.

    • Detailed Log of Issues

      The Style Check process will now create a detailed log of the issues discovered during the scan process; this log can be viewed by clicking new Details button once the scan process is complete.

  6. Tag Substitution
    • A new contributed tool to replace special tags in a source file with a substitution value before creating the output file. The tags and substitution values are defined in a properties file built-in to the plug-in.
    • Additional user-defined tags and substitution values can be defined in a tagSubstitution.properties files in the folder configured for user keywords and external observers on the Contributed Extensions/Tools preference page.
    • The original source file is not changed; changes will appear in the compiled program(s).
    • The logic will search for the tags in the following formats, there can be an optional colon after the keyword:
      • $keyword$
      • %keyword%
      • %(keyword)%
      • %{keyword}%
    • The format of the properties file is:
      keyword = substitution text or string expression
    • The string expression can use any ProvideX code to create the expression to use as the substitution value. The following variables are also available to include in the expression:
      • cOutputFilename$
      • cSourceLastModDate$
      • cSourceLastModTimestamp$
      • cSourceLastModYear$
    • The built-in tags and substitution values (some are formatted to be similar to the keyword substitution performed when using Subversion):
      Copyright = "(c) " + dte(0:"%Yl") +" The Sage Group plc or its licensors. All rights reserved."
      Header = "$Id: " + cOutputFilename$ + " " + cSourceLastModTimestamp$ + " $"
      Id = "$Id: " + cOutputFilename$ + " " + cSourceLastModTimestamp$ + " $"
      Revision = "$Revision: " + cSourceLastModDate$ + " $"
    • The secondary properties file used for the user defined substitution tags can override the definitions of the built-in tags as well as create new tags.
NOMADS Integration
  1. NOMADS Preferences

    Override NOMADS preference page settings for a project.

    • NOMADS_AltExe

      A full path to a ProvideX executable to be used for all NOMADS sessions launched for a resource in the project; (Use "/" characters in the path). The path will be verified to be a valid ProvideX executable before it is used. If the validation fails, the first executable found from the following list will be used:

      • NOMADS executable for the workspace
      • ProvideX executable for the project
      • ProvideX executable used by the workbench

    • NOMADS_ExtDictDir

      Specify a folder that is outside of the project workspace as the location of the ProvideX data dictionary files. The file 'PROVIDEX.DDF' must exist in this folder, otherwise, the value of this property will not be used.


Historic Releases
v2.6.5 July 2020

General
  • New Project Explorer view as replacement for deprecated Navigation View
  • New Workspace Properties file preference AltInit.InitSageSessionObject to enable the startup for workbench actions to initialize the Sage Session object
  • Reduce number of messages written to console view when debug options are not enabled
  • Error handling to catch when Java event process is no longer active
  • Correction to line number increment from AI system parameter override
  • Startup program - use in console session and when using alternate executable for build process
  • Changes to improve the reliability of Project/Workspace Preference/Property override values
  • Outline View
    • Add filters: Public / Private Properties, Private Functions
    • Change order for "Group By Type" and sort alphabetically within type
    • Set "Group by Type" as default
Builder
  • Add logic to handle new and modified files when automatic build is triggered as a result of a refresh or plug-in start-up
  • Add logic to identify and build new files added to source folder from outside of Eclipse
  • Suppress password request for data files added to Import/Convert Preference page
  • Correction to automatic build to only process each file once
  • Incremental Build using an alternate executable to load properties from project properties file
  • Adjust logic used to check whether file is a resource when attempting to convert resources to text
Editor
  • Add new template 'esx' to insert the ProvideX code to Escape to Console in Command Window when Debug is enabled
  • Add new template 'sageheader' and change ProvideX Program Wizard and ProvideX Class Wizard to use this template instead of the 'header' template
Wizards
  • ProvideX Class Wizard
    • Allow selecting class files for LIKE from entire workspace in addition to current project
    • Adjust to use new 'sageheading' template
    • Change logic for creation of LIKE statement in new class to group up to five class files per line
    • Only use files from selected list with PVC extension, ignore any others
NOMADS Integration
  • Add 'Data Classifications' task to NOMADS View drop-down menu
Preferences
  • Change text for option to add file extension to source file when converting a compiled program on Import/Convert Preference page
  • Restore option to suppress password request as new data files are processed
Contributed Tools
  • Adjust contributed tool startup to skip theme logic when using a version of Sage 100 older than Sage 100 2016
  • Message Library Viewer
    • Change line-feed characters in modified text to SEP characters
  • Style Check
    • When preference for user defined keywords / contributed tools is set, automatically save new style rules to file in this folder
    • Update source file during build process when style check configuration option is set to automatically update source file and there is a replace value defined as part of a style check rule
  • Super Search
    • Add button to allow clearing previous search results

v2.6.2 July 2019

General
  • Outline View will now remember settings (sort / filter) for session
  • Resolve compatibility issues with Eclipse 2019-06 (4.12.0)
Builder
  • When building data files, check option to force rebuild of resource files
  • Enhance check for error 24 to match function declarations based on parameter data types
Preferences
  • Editor Preference Page
    • Fix for null pointer exception attempting to display Editor Preference page when the option to load external keyword completion proposals is not enabled
Contributed Tools
  • Super Search
    • Add button to allow clearing of book marks for current project or entire workspace depending on search selection

v2.6.0 March/April 2019

General
  • Now requires Java 8 run-time environment; compatibility fixes for OpenJDK 11
  • New option on 'Appearance' preference page to show value of TCB(29) reported by client (should be the same as the server value)
  • New preference to enable writing of debug messages to the console; use '_bDebugLogToConsole' to override this preference in project or workspace properties files
  • Catch actions / events that trigger the ProvideX EventManager to start and attempt to process after the EventManager has started
  • Use fonts set on Preferences / Appearance page for contributed tools and JavX console
Builder
  • Error scan will now check for duplicate property / method declarations which will trigger an error 24 when the class is instantiated
  • Add preference to force rebuild of files marked as resources
  • Update list of file extensions used to identify resource files
  • Display original source file name for event, when changed by intermediate observers
  • Changes to logic used to identify source file content type to improve builder stability
  • Skip build of any file identified as a resource in project/workspace properties file
  • Keep file attributes for copy from output folder to linked folders or test platform folders
  • Resolve potential builder hang when multiple line label references occur in single source line
Editor
  • Restore editor state from previous session
  • Single-click in outline view will now reposition to corresponding location in the editor view
  • New preference to allow double click in a string literal to select the current word instead of the entire contents
  • Code-highlighting to allow line labels to include '.' character
  • Update to code folding to resolve issue where editor window shifts to beginning of line when current cursor position is beyond the right edge of the editor window
  • User-defined Keyword Highlighting (v2.6.0)

    User can now define keyword categories and a list of keywords in each category. Each category must have a unique name and can be assigned special text and background colors to use for the display of the keywords. The category will be included in the list of categories on the Editor Preference page where the display colors can be changed.

    The keyword categories are defined in a new file placed in the folder defined for user contributed tools (fall-back to the root directory of the workspace) and the list of keywords in each category is defined in a new file using a name defined in the keyword categories file. The contents of these files are loaded when Eclipse starts with this workspace selected.

    For more information, see User Keyword Categories in the Plug-in Documentation.

  • Code folding, do not mark FOR-NEXT block starting with the FOR in a PRECISION x FOR OBJECT statement
Contributed Tools
  • General
    • All contributed tools will now use the default Sage 100 theme when the ProvideX executable referenced for the project (or workbench) is in a recent Sage 100 environment
  • Dictionary Viewer
    • Update to display additional information from the dictionary for each file
  • PvxDocs
    • Add new tags for ordered list (@OList) and unordered list (@UList).
      • Each item in the list must be on a separate line
      • Start a line with a '+' character to add to the previous line
      • A blank comment line in a list will be ignored
      • The list ends at the next tag or the end tag for the list (@OList_End or @UList_End).
    • New button to view documentation after generation process has completed
  • Strip Trailing White Space
    • The tool will now strip trailing blank lines from the source file.
    • Change to not remove whitespace before line continuation characters
  • Super Search
    • The tool will now use a new property SuperSearch.IgnoreCharacterList from the project properties file to set additional characters to be ignored when scanning the source file(s) for binary characters.
NOMADS Integration
  • When a new file extension is added to the list of file extensions for NOMADS library files, a new file association will be created to associate the file extension to the NOMADS editor
  • Add option to access Search / Replace action for the current library

v2.5.4 August 2017

Builder
  • Only change the 'LC', 'LD', 'LE', and 'NL' system parameters when corresponding preference on IMPORT preference page is set. Otherwise, keep the current setting from the environment. This will allow alternate START_UP programs to set these system parameters for the build process.
  • Add new project property 'forceResourceDir.xxx' to force all files in the folder 'xxx' to be resource files
  • Check / add passwords from preference page to list of known password at beginning of each build
Contributed Tools
  • PvxDocs
    • Correction for formatting of HTML output for build information block and unordered list
    • Adjust logic to group overloaded method declarations before the parameter information for the method(s)
  • Strip Trailing Whitespace
    • Contributed tool to enable strip of trailing whitespace as part of the build process
  • Dictionary Viewer
    • Display additional information: physical file, column options, column defaults, key segment options
    • Display full file description; do not strip module or other keywords
    • Display embedded dictionary information for ProvideX keyed files
    • Skip paste attempt when no file open in editor
Editor
  • A preference has been added to the Editor Options preference page 'Completion Proposals - Enable load of external keyword categories'. When this preference is not checked, the loading of external keyword categories will be disabled. When set as a workspace preference, the external keyword categories will be enabled for entire workspace. The preference (_bCP_ExternalKeywords) can be included in the project.properties file to override the setting for a project.
NOMADS Integration
  • NOMADS editor will force NOMADS view to be visible, load with information for the selected library file, and then force close the NOMADS editor window

v2.5.3 March 2016

Editor
  • Compare: open new tab for program compare even when program is already loaded in another editor tab
  • Correction to logic to use the file property 'Allow C-style block comments' to override the Builder Options Preference 'Disable C-style block comments'.
Contributed Tools
  • Style Check - A new 'TODO' rule where comment following the tag is recorded in warning description.
Miscellaneous
  • Add logic to CALL alternate startup program when initializing a new ProvideX console session or loading a program into a ProvideX session

v2.5.2, v2.5.0 November 2015

Editor
  • Automatic keyword conversion as part of the build process
  • Code folding
Contributed Tools
  • Style Check - Update override tags, User/Local secondary rule file
Miscellaneous
  • New logic to identify when a project / workspace has been relocated
  • Cleanup property pages

v2.4.2 March 2014

Contributed Tools
  • Style Check - new rule options
Miscellaneous
  • Compatibility issues with recent Java updates
  • Changes to reduce the number of full builds
  • Improved error handling / reporting for file copy to test area
  • Additional error handling and new messages for the copy to test system to help identify reason for a failed copy.
  • Historically, Eclipse will occasionally decide to perform a "Full" build of all projects in a work space when the 'Build Automatically' option is enabled on the "Project" menu. For some projects this can take a considerable amount of time. The builder will now check to see of the output folder exists (normally this will be "compiled") and will skip the "Full" build. To force a "Full" build for a project, choose "Project | Clean" from the menu.

    The 'clean build' will not delete the output folder so properties associated with the output folder will not be lost as part of the 'clean build'

v2.4.0 March 2013

Editor
  • Editor options - new option to enable conversion of statement labels during keyword conversion
Builder
  • Resource build information now stored in properties file
Contributed Tools
  • Style check - a simple rule-based style check is now included
Miscellaneous
  • Project-specific properties enhancements:
    • Check for a workspace properties file
    • Set defaults/overrides for System preferences
  • Improved error handling / reporting for file copy to test area