Skip to content

Releases: Nuix/Nx

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.

Version 1.13.0

15 Oct 20:49
9ebe3a3
Compare
Choose a tag to compare

Added ButtonRow control allowing you to create a row containing multiple buttons. See Test_ButtonRow.rb for an example, since it behaves slightly differently than existing controls.

image

Version 1.12.0

08 Oct 21:20
Compare
Choose a tag to compare

Significant improvement to loading ChoiceTable selections from JSON file when choices available in table is in 10's of thousands or higher.