Skip to content

Releases: Nuix/Nx

Version 1.22.0

04 Oct 22:03
Compare
Choose a tag to compare

Several Small Updates to ProcessingStatusDialog

Previously when the job being monitored by ProcessingStatusDialog completes, the dialog would close itself after 60 seconds. Now the time can be configured using the method ProcessingStatusDialog.setAutoCloseDelaySeconds. A value of 0 disables this auto close feature.

Added methods ProcessingStatusDialog.getJobWasAborted and ProcessingStatusControl.getJobWasStopped. When the user either stops or aborts the processing job through the interface the respective method will return true to denote this.

Eaxmple usage from Ruby (full file here):

processing_status_dialog = ProcessingStatusDialog.new
processing_status_dialog.setAutoCloseDelaySeconds(42) # Set to non-default value
# This will begin processing and display the processing status dialog
puts "Handing off to processing status dialog..."
processing_status_dialog.displayAndBeginProcessing(processor)

puts "Job was aborted?: #{processing_status_dialog.getJobWasAborted}"
puts "Job was stopped?: #{processing_status_dialog.getJobWasStopped}"

Version 1.21.1

23 Aug 19:22
Compare
Choose a tag to compare

When logging to ProgressDialog with time stamp enabled via a call to setTimestampLoggedMessages time stamp format used was YYYY-MM-dd hh:mm:ss but hh is hour of halfday (0~11) but instead we want it to be 24 hour time (since we do not include AM/PM) so format was changed to YYYY-MM-dd HH:mm:ss to instead use hour of day (0~23).

Version 1.21.0

18 Jun 21:37
Compare
Choose a tag to compare
  • CSV table control now expects/requires provided CSV be UTF-8 without BOM
  • CSV table control now uses font Arial MS Unicode due to wide range of characters it supports rendering

image

Note that this release has 2 JARs:

  • Nx.jar: Nuix 9.10 and beyond
  • Nx-9.8.jar: Specialized 9.8 and prior build to compensate for older version of CSV parsing library. Note to make use of this JAR in a script, you will want to rename it to Nx.jar. Please note that Nuix 9.8 and older are now several years old and therefore will effectively stop being supported by Nx.

Version 1.20.0

21 Nov 23:41
Compare
Choose a tag to compare

CSV Table Update

Updated CsvTable control to use Apache Commons CSV reader and its EXCEL format. This should hopefully provide a more robust CSV parser than the one in use before.

Version 1.18.2

08 Aug 22:15
Compare
Choose a tag to compare

Small change to DynamicTableModel.addRecord so that provided null values are ignored. This effectively allows the callback provided via DynamicTableControl.setUserCanAddRecords to yield null/nil to cancel adding a record. The following example hopefully helps demonstrate this:

# Enable adding records
dynamic_table_control.setUserCanAddRecords(true) do
	# Prompt user to select a file
	key_file = CommonDialogs.openFileDialog("C:\\","Key File")
	if !key_file.nil?
		# If user selected a file, addtionally prompt user to enter a password
		password = CommonDialogs.getInput("Password for #{key_file.getAbsolutePath}")
		if !password.nil?
			# If user provided both, yield a new record
			next {key_file: key_file.getAbsolutePath, password: password}
		end
	end

	# If we reached here, yield nil abort adding a new record
	next nil
end

Version 1.18.1

27 Feb 19:33
Compare
Choose a tag to compare

image

Added several new methods to TabbedCustomDialog:

v1.18.1: Also added methods to CustomTabPanel.

These methods allow for more complex logic regarding a control's enabled state being dependent on one or more checkable controls checked state (similar to how enabledOnlyWhenChecked works).

Version 1.17.0

14 Jan 21:44
Compare
Choose a tag to compare

Added a JSlider for CustomTabbedPanels, allowing for the quick selection of values over long ranges.

Slider Dialog Screenshot

The slider can be backed by either doubles or integers, depending on the method called. When doubles are passed in to the factory method a DoubleBoundedRangeModel is created to store the data, and when an integer is used the data model is a DefaultBoundedRangeModel. These models can be used to modify or retrieve the value of the slider. An example of each model:

	 // Using doubles for the value range from 0 to 1.
	 panel = panel.appendSlider(identifier, label, 0.0, 0.0, 1.0);
	 JSlider slider = (JSlider)panel.getControl(identifier);
	 DoubleBoundedRangeModel model = (DoubleBoundedRangeModel)slider.getModel();
	 model.setValue(0.75);
	 double max = model.getMaximumAsDouble();
	 // Using integers for the value range from 10 to 50, starting at 20.
	 panel = panel.appendSlider(identifier, label, 20, 10, 50);
	 JSlider slider = (JSlider)panel.getControl(identifier);
	 BoundedRangeModel model = slider.getModel();
	 model.setValue(45);
	 int max = model.getMaximum();

Version 1.16.0

13 Sep 20:46
abee395
Compare
Choose a tag to compare

Added an updatable Report Display to the bottom of the ProgressDialog. Use a com.nuix.nx.controls.models.ReportDataModel to create and modify the contents of the report, and display it on the dialog with ProgressDialog#addReport(ReportDataModel).

    # Create the ReportDataModel and fill it with sections and data fields to display
    rdm = ReportDataModel.new
    rdm.add_section "Section Name", {"Data Field 1" => 0.0, "Data Field 2" => 125}

    ProgressDialog.forBlock do | pd |
        # ...
        
        # As needed update the data model
        rdm.update_data "Section Name",  "Data Field 1", 13.4
        rdm.update_data "Section Name", "Data Field 2", 14

        # ...
    } );

Version 1.15.0

11 Aug 21:22
Compare
Choose a tag to compare

Added support for updating the headers of a DynamicTableControl by calling DynamicTableModel.setColumnName.

dialog.getControl("table_id").getModel.setColumnName(1,"New Col 1 Header")

Note: Header for the check column (col 0) does not currently support modification. Calling this method with a column index of 0 will do nothing.

Version 1.14.0

02 Aug 16:49
Compare
Choose a tag to compare

Fixed CustomTabPanel.getText and TabbedCustomDialog.getText so that they return a proper String from JPasswordFields. Before they were calling toString on the char[] returned from calling JPasswordField.getPassword which was yielding an identifier rather that that char[] as a String.