Releases: Nuix/Nx
Version 1.22.0
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
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
- 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
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
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
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
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
Added a JSlider for CustomTabbedPanels, allowing for the quick selection of values over long ranges.
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
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
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
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
.