diff --git a/.travis.yml b/.travis.yml index 8d767d6f1..e1395ed16 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,3 +22,18 @@ before_cache: cache: directories: - $HOME/.m2 + +install: + - if [ $(mvn -v | grep Java | sed -E 's/.*version:\ (.*\..*)\..*, vendor:.*/\1/g') = "1.8" ]; + then echo "on Java 8, skip droid-swing-ui module"; + mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -pl '!droid-swing-ui'; + else mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V; + fi; + + +script: + - if [ $(mvn -v | grep Java | sed -E 's/.*version:\ (.*\..*)\..*, vendor:.*/\1/g') = "1.8" ]; + then echo "on Java 8, skip droid-swing-ui module"; + mvn test -B -pl '!droid-swing-ui'; + else mvn test -B; + fi; diff --git a/README.md b/README.md index 7255caf46..a2a9b2be8 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Once the code is cloned into a folder (e.g. `droid`), executing `mvn clean insta ### Linux / OSX / Windows users Archive `droid-binary-${VERSION}-bin-unix.zip` -You will need JAVA 8 to 11 installed to run it. +You will need JAVA 9 to 11 installed to run it. Once unpacked, use the `droid.sh` or `droid.bat` script to run the application. diff --git a/droid-help/src/main/resources/DROID6.jhp b/droid-help/src/main/resources/DROID6.jhp index fb685a14e..732a2ec66 100644 --- a/droid-help/src/main/resources/DROID6.jhp +++ b/droid-help/src/main/resources/DROID6.jhp @@ -9,69 +9,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/droid-help/src/main/resources/Images/3d bar chart small.png b/droid-help/src/main/resources/Images/3d bar chart small.png deleted file mode 100644 index 22192f082..000000000 Binary files a/droid-help/src/main/resources/Images/3d bar chart small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/3d bar chart.png b/droid-help/src/main/resources/Images/3d bar chart.png deleted file mode 100644 index 0e6b51653..000000000 Binary files a/droid-help/src/main/resources/Images/3d bar chart.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Add small.png b/droid-help/src/main/resources/Images/Add small.png deleted file mode 100644 index ae47e430b..000000000 Binary files a/droid-help/src/main/resources/Images/Add small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Add.png b/droid-help/src/main/resources/Images/Add.png deleted file mode 100644 index 654a9b8d2..000000000 Binary files a/droid-help/src/main/resources/Images/Add.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Choose files and folders.png b/droid-help/src/main/resources/Images/Choose files and folders.png deleted file mode 100644 index 58b2fb813..000000000 Binary files a/droid-help/src/main/resources/Images/Choose files and folders.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Creating a new profile.png b/droid-help/src/main/resources/Images/Creating a new profile.png deleted file mode 100644 index cd036a13b..000000000 Binary files a/droid-help/src/main/resources/Images/Creating a new profile.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Creating a new profile2.png b/droid-help/src/main/resources/Images/Creating a new profile2.png deleted file mode 100644 index c12e4e3fd..000000000 Binary files a/droid-help/src/main/resources/Images/Creating a new profile2.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/DROID Main Window.png b/droid-help/src/main/resources/Images/DROID Main Window.png deleted file mode 100644 index 9006bb36c..000000000 Binary files a/droid-help/src/main/resources/Images/DROID Main Window.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Delete small.png b/droid-help/src/main/resources/Images/Delete small.png deleted file mode 100644 index d5160c22a..000000000 Binary files a/droid-help/src/main/resources/Images/Delete small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Export Defaults.png b/droid-help/src/main/resources/Images/Export Defaults.png deleted file mode 100644 index f7f4bc3bb..000000000 Binary files a/droid-help/src/main/resources/Images/Export Defaults.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Export dialog.png b/droid-help/src/main/resources/Images/Export dialog.png deleted file mode 100644 index 3125e8b62..000000000 Binary files a/droid-help/src/main/resources/Images/Export dialog.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Export small.png b/droid-help/src/main/resources/Images/Export small.png deleted file mode 100644 index 6f756b8f5..000000000 Binary files a/droid-help/src/main/resources/Images/Export small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Export.png b/droid-help/src/main/resources/Images/Export.png deleted file mode 100644 index 9b2d2bf4c..000000000 Binary files a/droid-help/src/main/resources/Images/Export.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Filter option selection.PNG b/droid-help/src/main/resources/Images/Filter option selection.PNG deleted file mode 100644 index afdbdfb08..000000000 Binary files a/droid-help/src/main/resources/Images/Filter option selection.PNG and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Filter selection.PNG b/droid-help/src/main/resources/Images/Filter selection.PNG deleted file mode 100644 index 2aca38337..000000000 Binary files a/droid-help/src/main/resources/Images/Filter selection.PNG and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Filter small.png b/droid-help/src/main/resources/Images/Filter small.png deleted file mode 100644 index 3f207b7c0..000000000 Binary files a/droid-help/src/main/resources/Images/Filter small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Filter.png b/droid-help/src/main/resources/Images/Filter.png deleted file mode 100644 index 9c21c52e1..000000000 Binary files a/droid-help/src/main/resources/Images/Filter.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/General.PNG b/droid-help/src/main/resources/Images/General.PNG deleted file mode 100644 index ee539a965..000000000 Binary files a/droid-help/src/main/resources/Images/General.PNG and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Icon_External_Link.png b/droid-help/src/main/resources/Images/Icon_External_Link.png deleted file mode 100644 index ba4f2059d..000000000 Binary files a/droid-help/src/main/resources/Images/Icon_External_Link.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Install signature.png b/droid-help/src/main/resources/Images/Install signature.png deleted file mode 100644 index ca33d64a5..000000000 Binary files a/droid-help/src/main/resources/Images/Install signature.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/New small.png b/droid-help/src/main/resources/Images/New small.png deleted file mode 100644 index 49387edbf..000000000 Binary files a/droid-help/src/main/resources/Images/New small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/New.png b/droid-help/src/main/resources/Images/New.png deleted file mode 100644 index cfd608fa3..000000000 Binary files a/droid-help/src/main/resources/Images/New.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Open file small.png b/droid-help/src/main/resources/Images/Open file small.png deleted file mode 100644 index b1fe628f4..000000000 Binary files a/droid-help/src/main/resources/Images/Open file small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Open file.png b/droid-help/src/main/resources/Images/Open file.png deleted file mode 100644 index e65457d64..000000000 Binary files a/droid-help/src/main/resources/Images/Open file.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Pause small.png b/droid-help/src/main/resources/Images/Pause small.png deleted file mode 100644 index d3acbd499..000000000 Binary files a/droid-help/src/main/resources/Images/Pause small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Pause.png b/droid-help/src/main/resources/Images/Pause.png deleted file mode 100644 index 758b0b080..000000000 Binary files a/droid-help/src/main/resources/Images/Pause.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Play small.png b/droid-help/src/main/resources/Images/Play small.png deleted file mode 100644 index 0b9e92cac..000000000 Binary files a/droid-help/src/main/resources/Images/Play small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Play.png b/droid-help/src/main/resources/Images/Play.png deleted file mode 100644 index 6066a425b..000000000 Binary files a/droid-help/src/main/resources/Images/Play.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Problem small.png b/droid-help/src/main/resources/Images/Problem small.png deleted file mode 100644 index 7970bf0c5..000000000 Binary files a/droid-help/src/main/resources/Images/Problem small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Profile Defaults.PNG b/droid-help/src/main/resources/Images/Profile Defaults.PNG deleted file mode 100644 index e1e22f68d..000000000 Binary files a/droid-help/src/main/resources/Images/Profile Defaults.PNG and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Profile paused.PNG b/droid-help/src/main/resources/Images/Profile paused.PNG deleted file mode 100644 index ceb09f27e..000000000 Binary files a/droid-help/src/main/resources/Images/Profile paused.PNG and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Profile running.PNG b/droid-help/src/main/resources/Images/Profile running.PNG deleted file mode 100644 index 74f2da82f..000000000 Binary files a/droid-help/src/main/resources/Images/Profile running.PNG and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Remove small.png b/droid-help/src/main/resources/Images/Remove small.png deleted file mode 100644 index d0b7fcdaa..000000000 Binary files a/droid-help/src/main/resources/Images/Remove small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Remove top level resources.png b/droid-help/src/main/resources/Images/Remove top level resources.png deleted file mode 100644 index 6a685b207..000000000 Binary files a/droid-help/src/main/resources/Images/Remove top level resources.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Remove top level resources2.png b/droid-help/src/main/resources/Images/Remove top level resources2.png deleted file mode 100644 index c688f89f0..000000000 Binary files a/droid-help/src/main/resources/Images/Remove top level resources2.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Remove.png b/droid-help/src/main/resources/Images/Remove.png deleted file mode 100644 index 70b48ea0b..000000000 Binary files a/droid-help/src/main/resources/Images/Remove.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Report small.png b/droid-help/src/main/resources/Images/Report small.png deleted file mode 100644 index e0cc6e177..000000000 Binary files a/droid-help/src/main/resources/Images/Report small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Report window.png b/droid-help/src/main/resources/Images/Report window.png deleted file mode 100644 index 53ce0ea8e..000000000 Binary files a/droid-help/src/main/resources/Images/Report window.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Report.png b/droid-help/src/main/resources/Images/Report.png deleted file mode 100644 index 43c96bbc1..000000000 Binary files a/droid-help/src/main/resources/Images/Report.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Save small.png b/droid-help/src/main/resources/Images/Save small.png deleted file mode 100644 index f40779528..000000000 Binary files a/droid-help/src/main/resources/Images/Save small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Save.png b/droid-help/src/main/resources/Images/Save.png deleted file mode 100644 index 4d39a4d1e..000000000 Binary files a/droid-help/src/main/resources/Images/Save.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Select profiles to report.png b/droid-help/src/main/resources/Images/Select profiles to report.png deleted file mode 100644 index 618269b7c..000000000 Binary files a/droid-help/src/main/resources/Images/Select profiles to report.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Signature Updates.PNG b/droid-help/src/main/resources/Images/Signature Updates.PNG deleted file mode 100644 index 93f109433..000000000 Binary files a/droid-help/src/main/resources/Images/Signature Updates.PNG and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Status Access Denied Small.png b/droid-help/src/main/resources/Images/Status Access Denied Small.png deleted file mode 100644 index d6509dc90..000000000 Binary files a/droid-help/src/main/resources/Images/Status Access Denied Small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Stop small.png b/droid-help/src/main/resources/Images/Stop small.png deleted file mode 100644 index 15944db34..000000000 Binary files a/droid-help/src/main/resources/Images/Stop small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Stop.png b/droid-help/src/main/resources/Images/Stop.png deleted file mode 100644 index ea2ade44d..000000000 Binary files a/droid-help/src/main/resources/Images/Stop.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Sync small.png b/droid-help/src/main/resources/Images/Sync small.png deleted file mode 100644 index e398c944d..000000000 Binary files a/droid-help/src/main/resources/Images/Sync small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Sync.png b/droid-help/src/main/resources/Images/Sync.png deleted file mode 100644 index 12cc06dbb..000000000 Binary files a/droid-help/src/main/resources/Images/Sync.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Tune small.png b/droid-help/src/main/resources/Images/Tune small.png deleted file mode 100644 index ad8b3cc46..000000000 Binary files a/droid-help/src/main/resources/Images/Tune small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Tune.png b/droid-help/src/main/resources/Images/Tune.png deleted file mode 100644 index fa8c19fff..000000000 Binary files a/droid-help/src/main/resources/Images/Tune.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Update small.png b/droid-help/src/main/resources/Images/Update small.png deleted file mode 100644 index 64854f339..000000000 Binary files a/droid-help/src/main/resources/Images/Update small.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Update.png b/droid-help/src/main/resources/Images/Update.png deleted file mode 100644 index 3bfaea291..000000000 Binary files a/droid-help/src/main/resources/Images/Update.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/containerResourceType.gif b/droid-help/src/main/resources/Images/containerResourceType.gif deleted file mode 100644 index 131c28da4..000000000 Binary files a/droid-help/src/main/resources/Images/containerResourceType.gif and /dev/null differ diff --git a/droid-help/src/main/resources/Images/fileResourceType.gif b/droid-help/src/main/resources/Images/fileResourceType.gif deleted file mode 100644 index bc325ff7f..000000000 Binary files a/droid-help/src/main/resources/Images/fileResourceType.gif and /dev/null differ diff --git a/droid-help/src/main/resources/Images/folderResourceType.gif b/droid-help/src/main/resources/Images/folderResourceType.gif deleted file mode 100644 index 190d0254d..000000000 Binary files a/droid-help/src/main/resources/Images/folderResourceType.gif and /dev/null differ diff --git a/droid-help/src/main/resources/Images/format_count_small_ONE.png b/droid-help/src/main/resources/Images/format_count_small_ONE.png deleted file mode 100644 index 22807329c..000000000 Binary files a/droid-help/src/main/resources/Images/format_count_small_ONE.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/format_count_small_ZERO.png b/droid-help/src/main/resources/Images/format_count_small_ZERO.png deleted file mode 100644 index 350d4c592..000000000 Binary files a/droid-help/src/main/resources/Images/format_count_small_ZERO.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/icons/Add.png b/droid-help/src/main/resources/Images/icons/Add.png new file mode 100644 index 000000000..9ea2637d3 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Add.png differ diff --git a/droid-help/src/main/resources/Images/icons/Export.png b/droid-help/src/main/resources/Images/icons/Export.png new file mode 100644 index 000000000..c5104a019 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Export.png differ diff --git a/droid-help/src/main/resources/Images/icons/Filter.png b/droid-help/src/main/resources/Images/icons/Filter.png new file mode 100644 index 000000000..a997905b5 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Filter.png differ diff --git a/droid-help/src/main/resources/Images/icons/Icon_External_Link.png b/droid-help/src/main/resources/Images/icons/Icon_External_Link.png new file mode 100644 index 000000000..47a7ac99b Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Icon_External_Link.png differ diff --git a/droid-help/src/main/resources/Images/icons/New.png b/droid-help/src/main/resources/Images/icons/New.png new file mode 100644 index 000000000..d798fbc35 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/New.png differ diff --git a/droid-help/src/main/resources/Images/icons/Open file.png b/droid-help/src/main/resources/Images/icons/Open file.png new file mode 100644 index 000000000..d148d6ebf Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Open file.png differ diff --git a/droid-help/src/main/resources/Images/icons/Pause.png b/droid-help/src/main/resources/Images/icons/Pause.png new file mode 100644 index 000000000..110fc85bf Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Pause.png differ diff --git a/droid-help/src/main/resources/Images/icons/Play.png b/droid-help/src/main/resources/Images/icons/Play.png new file mode 100644 index 000000000..44672b6df Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Play.png differ diff --git a/droid-help/src/main/resources/Images/icons/Remove.png b/droid-help/src/main/resources/Images/icons/Remove.png new file mode 100644 index 000000000..57d1f2586 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Remove.png differ diff --git a/droid-help/src/main/resources/Images/icons/Report.png b/droid-help/src/main/resources/Images/icons/Report.png new file mode 100644 index 000000000..b53c1ccde Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Report.png differ diff --git a/droid-help/src/main/resources/Images/icons/Save.png b/droid-help/src/main/resources/Images/icons/Save.png new file mode 100644 index 000000000..27448fc85 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Save.png differ diff --git a/droid-help/src/main/resources/Images/icons/Stop.png b/droid-help/src/main/resources/Images/icons/Stop.png new file mode 100644 index 000000000..cc919e095 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Stop.png differ diff --git a/droid-help/src/main/resources/Images/icons/Sync.png b/droid-help/src/main/resources/Images/icons/Sync.png new file mode 100644 index 000000000..904436b5a Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/Sync.png differ diff --git a/droid-help/src/main/resources/Images/icons/containerResourceType.png b/droid-help/src/main/resources/Images/icons/containerResourceType.png new file mode 100644 index 000000000..35e46930b Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/containerResourceType.png differ diff --git a/droid-help/src/main/resources/Images/icons/fileResourceType.png b/droid-help/src/main/resources/Images/icons/fileResourceType.png new file mode 100644 index 000000000..1c1cdf2a8 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/fileResourceType.png differ diff --git a/droid-help/src/main/resources/Images/icons/folderResourceType.png b/droid-help/src/main/resources/Images/icons/folderResourceType.png new file mode 100644 index 000000000..dbb597396 Binary files /dev/null and b/droid-help/src/main/resources/Images/icons/folderResourceType.png differ diff --git a/droid-help/src/main/resources/Images/image5023991620744055586.png b/droid-help/src/main/resources/Images/image5023991620744055586.png deleted file mode 100644 index faf91d157..000000000 Binary files a/droid-help/src/main/resources/Images/image5023991620744055586.png and /dev/null differ diff --git a/droid-help/src/main/resources/Images/imagepplciveu949648349507005920.gif b/droid-help/src/main/resources/Images/imagepplciveu949648349507005920.gif deleted file mode 100644 index bd2adc9b3..000000000 Binary files a/droid-help/src/main/resources/Images/imagepplciveu949648349507005920.gif and /dev/null differ diff --git a/droid-help/src/main/resources/Images/imagexhdtsyfe1346910463329419033.gif b/droid-help/src/main/resources/Images/imagexhdtsyfe1346910463329419033.gif deleted file mode 100644 index bd2adc9b3..000000000 Binary files a/droid-help/src/main/resources/Images/imagexhdtsyfe1346910463329419033.gif and /dev/null differ diff --git a/droid-help/src/main/resources/Images/Checkbox.png b/droid-help/src/main/resources/Images/screenshots/Checkbox.png similarity index 100% rename from droid-help/src/main/resources/Images/Checkbox.png rename to droid-help/src/main/resources/Images/screenshots/Checkbox.png diff --git a/droid-help/src/main/resources/Images/screenshots/Choose files and folders.png b/droid-help/src/main/resources/Images/screenshots/Choose files and folders.png new file mode 100644 index 000000000..aa1b7990f Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Choose files and folders.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Creating a new profile.png b/droid-help/src/main/resources/Images/screenshots/Creating a new profile.png new file mode 100644 index 000000000..a993e59e4 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Creating a new profile.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Export Defaults.png b/droid-help/src/main/resources/Images/screenshots/Export Defaults.png new file mode 100644 index 000000000..09c85492c Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Export Defaults.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Export dialog.png b/droid-help/src/main/resources/Images/screenshots/Export dialog.png new file mode 100644 index 000000000..fefad8df2 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Export dialog.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Filter option selection.png b/droid-help/src/main/resources/Images/screenshots/Filter option selection.png new file mode 100644 index 000000000..92af042a2 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Filter option selection.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Filter selection.png b/droid-help/src/main/resources/Images/screenshots/Filter selection.png new file mode 100644 index 000000000..90a8797ce Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Filter selection.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Install signature.png b/droid-help/src/main/resources/Images/screenshots/Install signature.png new file mode 100644 index 000000000..59f27ebea Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Install signature.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Profile paused.png b/droid-help/src/main/resources/Images/screenshots/Profile paused.png new file mode 100644 index 000000000..4b87fec4a Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Profile paused.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Profile running.png b/droid-help/src/main/resources/Images/screenshots/Profile running.png new file mode 100644 index 000000000..4ead5a276 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Profile running.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Profiles.png b/droid-help/src/main/resources/Images/screenshots/Profiles.png new file mode 100644 index 000000000..2ff9584bc Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Profiles.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Remove top level resources.png b/droid-help/src/main/resources/Images/screenshots/Remove top level resources.png new file mode 100644 index 000000000..bdd868cca Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Remove top level resources.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Remove top level resources2.png b/droid-help/src/main/resources/Images/screenshots/Remove top level resources2.png new file mode 100644 index 000000000..e12dbe533 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Remove top level resources2.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Report window.png b/droid-help/src/main/resources/Images/screenshots/Report window.png new file mode 100644 index 000000000..7e2ec0938 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Report window.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Select profiles to report.png b/droid-help/src/main/resources/Images/screenshots/Select profiles to report.png new file mode 100644 index 000000000..5d6ab63e1 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Select profiles to report.png differ diff --git a/droid-help/src/main/resources/Images/screenshots/Signature Updates.png b/droid-help/src/main/resources/Images/screenshots/Signature Updates.png new file mode 100644 index 000000000..a40aa5ae0 Binary files /dev/null and b/droid-help/src/main/resources/Images/screenshots/Signature Updates.png differ diff --git a/droid-help/src/main/resources/Images/severity_small_WARN.png b/droid-help/src/main/resources/Images/severity_small_WARN.png deleted file mode 100644 index 0cea5484b..000000000 Binary files a/droid-help/src/main/resources/Images/severity_small_WARN.png and /dev/null differ diff --git a/droid-help/src/main/resources/Web pages/Change preferences.html b/droid-help/src/main/resources/Web pages/Change preferences.html index 098c791ee..9e2ccaf18 100644 --- a/droid-help/src/main/resources/Web pages/Change preferences.html +++ b/droid-help/src/main/resources/Web pages/Change preferences.html @@ -1,416 +1,416 @@ - - - - - - Change preferences - - - - - - - -
- - -
- Change - preferences -
-
- - - - - - -
- Welcome to DROID - - Startup configuration - - Update file format signatures -
-

- The preferences window allows you to configure various settings - used by DROID after it has started up.  There are also some settings which control how DROID starts up, which are not configured through - this window. There are three main tabs in the preferences window: -

- -

-   -

- - - - - -
- Profile defaults - - top -
-

- The Profile Defaults tab contains the settings used when creating a new profile.  -

- -

- -

-

-   -

-

- Binary Signature File -

-

- The binary signature file is the version of the binary signatures to use when trying to - identify file formats.  Binary signatures are patterns to find inside the file in order - to identify its file format.  Once a profile has been created, you cannot change the - binary signature file it uses.  It is recorded with the profile when you save it. -

-

- Container Signature File -

-

- The container signature file is the version of the container signatures to use when trying - to identify file formats.  Container signatures identify file formats by looking for - embedded files inside the main files.  Binary signatures can be applied to these - embedded files.  This improves the accuracy of recognition for these types of file - formats, as the search is confined to the specified embedded files, not to the entire - containing file.  Once a profile has been created, you cannot change the container - signature file it uses.  It is recorded with the profile when you save it. -

-

- Analyse contents of archive files. -

-

- If this option is checked, then DROID will look inside zip, tar and gzip files and profile - the files it finds inside them. -

-

- Analyse contents of web archive files. -

-

- If this option is checked, then DROID will look inside arc and warc files produced by crawling web pages, and profile - the files it finds inside them. If the Analyse archive option is not checked as well, - DROID will only look inside unzipped arc and warc files. Note that the file type stored in a web archive file will often not be the same as the file - type of the web page that produced it (eg. a GIF image generated by a PHP page). -

-

- Generate hash for each file -

-

- If this option is checked, then DROID will produce a hash (checksum) for the content of the file. -  By default this option is off, as generating hashes slows down profiling significantly. - The hash type defaults to MD5, but SHA256 can be selected as an alternative. -  Read "Detecting duplicate files" for more - information on why you may want to generate hashes. -

-

- Maximum bytes to scan -

-

- When DROID is trying to identify files, it looks inside the files for common patterns. This - setting allows you to configure how far from the beginning or end of the file DROID will - scan before it stops trying to identify the file. This has a large effect on the performance - of DROID, and a smaller effect on the accuracy of its identifications. -

-

- Almost all patterns which identify the format of files are found fairly close to - the start or end of the file. By default, this setting is 65536 bytes (64KB).  You can - make it smaller, and DROID's performance will increase, but the accuracy of identifications - may go down.  Alternatively, you can make it bigger, and the performance of DROID will - go down, and the identification accuracy may go up.  -

-

- Setting this value to a negative number (e.g. -1), will cause DROID to scan the entire - file (possibly more than once, if different patterns trigger those scans).  This setting - gives the maximum possible accuracy DROID can achieve, but can cause DROID to profile very - slowly, particularly if you have large files. -

-

- If you do have files which are not being identified, you can increase this value, or set it - to -1, to see if this has any effect on identification accuracy.  If it still can't - identify those files on a large setting (or the unlimited -1 setting), then you should - probably choose a smaller value to increase the identification performance. -

-

- Match extensions if no other - signatures defined -

-

- If this option is selected, DROID will only attempt to match file extensions for - formats for which no other binary or container signatures are defined.  The thinking - here is that, if a presumably more accurate signature failed to match the file format, then - matching against the extension alone would give potentially misleading results.  This is - the default behavior,  and is the same as previous versions of DROID. -

-

- Match extensions against all known - extensions -

-

- If this option is selected, DROID will attempt to match a file extensions against all known - extensions.  This may be helpful if you find you have files in newer formats, for which - there is currently no good binary or container signature, or you have unusual files for which - the existing signatures fail to match.  Using this option will produce identifications - for more files, and more multiple identifications for files.   -

-

- Default throttle -

-

- This is the delay in milliseconds that DROID should pause between identifying files read - from the file system.  Specifying a higher delay will cause DROID to work slower, - placing less load on your computer, network or disk storage.  It does not cause a pause - between identifying files inside archival files.   -

-

- Unless you need to slow DROID down, this should be set to zero.  Unlike the other - profile preferences, this value can be dynamically adjusted while running using the throttle - slider control on the main window.  The throttle setting can be different for each - profile, and will be saved with the profile. -

-

-   -

- - - - - -
- Signature updates - - top -
-

- This tab allows you to configure where DROID should try to update its signatures from, and - how often. -

- -

- -

-

-   -

-

- Binary Signatures URL -

-

- The web address where DROID can find a PRONOM-compatible web service to download binary - signature updates. -

-

- Container signatures URL -

-

- The web address where DROID can find the container signature file.  Container - signature files do not require specialised PRONOM web services to download from - a file - available on a standard web server is sufficient. -

-

- Proxy settings -

-

- Clicking this button will allow you to configure network proxy settings if your network has - a proxy.  Please consult your network administrator for details of any proxy settings - you may need to make. -

-

- Automatically check for updates -

-

- If this box is checked, then DROID will automatically attempt to look for updated signatures - according to the schedule you specify: -

-

- Update settings -

-
    -
  • - Every time DROID starts up - DROID will try to check for signature updates when it - starts. -
  • -
  • - Every X days - on starting up, DROID will check for signature updates after the - number of days since the last check.  Note that if you leave DROID running for more - days than is specified, it will not automatically try to update its signatures.  The - check is still only made on startup, but only if the number of days since the last time it - checked has elapsed. -
  • -
  • - Prompt before downloading - If this box is checked, DROID will prompt you before - downloading new signatures. -
  • -
  • - Use updated signature files by default - If this box is checked, DROID will - automatically use a newer signature file by default.  If it isn't checked, it will - still download the file, so it is available for selection in the profile default tab, but - it will not automatically make it the default signature file to use. -
  • -
-

- PUID URL pattern -

-

- The PUID URL pattern is the web location which DROID will connect to when clicking - on a PUID hyperlink in the profile tab.  This should contain the URL to connect to, and - the place into which the PUID should be inserted is indicated by %s.  For example, if we were to click on - a hyperlinked PUID of "fmt/111" in - the main profile results, DROID would launch your web browser at the address: "http://www.nationalarchives.gov.uk/pronom/fmt/111". -

-

-   -

- - - - - -
- Export - Defaults - - top -
-

- The Export Defaults tab contains miscellaneous settings, to configure how DROID exports - CSV files by default. -

- -

-   -

-

- Default CSV export options -

-

- DROID can export profiles to CSV files in two ways: one row per file, and one row per - format.  See exporting profiles for more - information on each of these options.  The settings here only configure the - default for export.  When you export, you can select which you prefer on a - per-export basis. -

-

-   -

- - - - - - -
- Welcome to DROID - - Startup configuration - - Update file format signatures -
-
-     -
- - + + + + + + Change preferences + + + + + + + +
+ + +
+ Change + preferences +
+
+ + + + + + +
+ Welcome to DROID + + Startup configuration + + Update file format signatures +
+

+ The preferences window allows you to configure various settings + used by DROID after it has started up.  There are also some settings which control how DROID starts up, which are not configured through + this window. There are three main tabs in the preferences window: +

+ +

+   +

+ + + + + +
+ Profile defaults + + top +
+

+ The Profile Defaults tab contains the settings used when creating a new profile.  +

+ +

+ +

+

+   +

+

+ Binary Signature File +

+

+ The binary signature file is the version of the binary signatures to use when trying to + identify file formats.  Binary signatures are patterns to find inside the file in order + to identify its file format.  Once a profile has been created, you cannot change the + binary signature file it uses.  It is recorded with the profile when you save it. +

+

+ Container Signature File +

+

+ The container signature file is the version of the container signatures to use when trying + to identify file formats.  Container signatures identify file formats by looking for + embedded files inside the main files.  Binary signatures can be applied to these + embedded files.  This improves the accuracy of recognition for these types of file + formats, as the search is confined to the specified embedded files, not to the entire + containing file.  Once a profile has been created, you cannot change the container + signature file it uses.  It is recorded with the profile when you save it. +

+

+ Analyse contents of archive files. +

+

+ If this option is checked, then DROID will look inside zip, tar and gzip files and profile + the files it finds inside them. +

+

+ Analyse contents of web archive files. +

+

+ If this option is checked, then DROID will look inside arc and warc files produced by crawling web pages, and profile + the files it finds inside them. If the Analyse archive option is not checked as well, + DROID will only look inside unzipped arc and warc files. Note that the file type stored in a web archive file will often not be the same as the file + type of the web page that produced it (eg. a GIF image generated by a PHP page). +

+

+ Generate hash for each file +

+

+ If this option is checked, then DROID will produce a hash (checksum) for the content of the file. +  By default this option is off, as generating hashes slows down profiling significantly. + The hash type defaults to MD5, but SHA256 can be selected as an alternative. +  Read "Detecting duplicate files" for more + information on why you may want to generate hashes. +

+

+ Maximum bytes to scan +

+

+ When DROID is trying to identify files, it looks inside the files for common patterns. This + setting allows you to configure how far from the beginning or end of the file DROID will + scan before it stops trying to identify the file. This has a large effect on the performance + of DROID, and a smaller effect on the accuracy of its identifications. +

+

+ Almost all patterns which identify the format of files are found fairly close to + the start or end of the file. By default, this setting is 65536 bytes (64KB).  You can + make it smaller, and DROID's performance will increase, but the accuracy of identifications + may go down.  Alternatively, you can make it bigger, and the performance of DROID will + go down, and the identification accuracy may go up.  +

+

+ Setting this value to a negative number (e.g. -1), will cause DROID to scan the entire + file (possibly more than once, if different patterns trigger those scans).  This setting + gives the maximum possible accuracy DROID can achieve, but can cause DROID to profile very + slowly, particularly if you have large files. +

+

+ If you do have files which are not being identified, you can increase this value, or set it + to -1, to see if this has any effect on identification accuracy.  If it still can't + identify those files on a large setting (or the unlimited -1 setting), then you should + probably choose a smaller value to increase the identification performance. +

+

+ Match extensions if no other + signatures defined +

+

+ If this option is selected, DROID will only attempt to match file extensions for + formats for which no other binary or container signatures are defined.  The thinking + here is that, if a presumably more accurate signature failed to match the file format, then + matching against the extension alone would give potentially misleading results.  This is + the default behavior,  and is the same as previous versions of DROID. +

+

+ Match extensions against all known + extensions +

+

+ If this option is selected, DROID will attempt to match a file extensions against all known + extensions.  This may be helpful if you find you have files in newer formats, for which + there is currently no good binary or container signature, or you have unusual files for which + the existing signatures fail to match.  Using this option will produce identifications + for more files, and more multiple identifications for files.   +

+

+ Default throttle +

+

+ This is the delay in milliseconds that DROID should pause between identifying files read + from the file system.  Specifying a higher delay will cause DROID to work slower, + placing less load on your computer, network or disk storage.  It does not cause a pause + between identifying files inside archival files.   +

+

+ Unless you need to slow DROID down, this should be set to zero.  Unlike the other + profile preferences, this value can be dynamically adjusted while running using the throttle + slider control on the main window.  The throttle setting can be different for each + profile, and will be saved with the profile. +

+

+   +

+ + + + + +
+ Signature updates + + top +
+

+ This tab allows you to configure where DROID should try to update its signatures from, and + how often. +

+ +

+ +

+

+   +

+

+ Binary Signatures URL +

+

+ The web address where DROID can find a PRONOM-compatible web service to download binary + signature updates. +

+

+ Container signatures URL +

+

+ The web address where DROID can find the container signature file.  Container + signature files do not require specialised PRONOM web services to download from - a file + available on a standard web server is sufficient. +

+

+ Proxy settings +

+

+ Clicking this button will allow you to configure network proxy settings if your network has + a proxy.  Please consult your network administrator for details of any proxy settings + you may need to make. +

+

+ Automatically check for updates +

+

+ If this box is checked, then DROID will automatically attempt to look for updated signatures + according to the schedule you specify: +

+

+ Update settings +

+
    +
  • + Every time DROID starts up - DROID will try to check for signature updates when it + starts. +
  • +
  • + Every X days - on starting up, DROID will check for signature updates after the + number of days since the last check.  Note that if you leave DROID running for more + days than is specified, it will not automatically try to update its signatures.  The + check is still only made on startup, but only if the number of days since the last time it + checked has elapsed. +
  • +
  • + Prompt before downloading - If this box is checked, DROID will prompt you before + downloading new signatures. +
  • +
  • + Use updated signature files by default - If this box is checked, DROID will + automatically use a newer signature file by default.  If it isn't checked, it will + still download the file, so it is available for selection in the profile default tab, but + it will not automatically make it the default signature file to use. +
  • +
+

+ PUID URL pattern +

+

+ The PUID URL pattern is the web location which DROID will connect to when clicking + on a PUID hyperlink in the profile tab.  This should contain the URL to connect to, and + the place into which the PUID should be inserted is indicated by %s.  For example, if we were to click on + a hyperlinked PUID of "fmt/111" in + the main profile results, DROID would launch your web browser at the address: "http://www.nationalarchives.gov.uk/pronom/fmt/111". +

+

+   +

+ + + + + +
+ Export + Defaults + + top +
+

+ The Export Defaults tab contains miscellaneous settings, to configure how DROID exports + CSV files by default. +

+ +

+   +

+

+ Default CSV export options +

+

+ DROID can export profiles to CSV files in two ways: one row per file, and one row per + format.  See exporting profiles for more + information on each of these options.  The settings here only configure the + default for export.  When you export, you can select which you prefer on a + per-export basis. +

+

+   +

+ + + + + + +
+ Welcome to DROID + + Startup configuration + + Update file format signatures +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/Choose files and folders.html b/droid-help/src/main/resources/Web pages/Choose files and folders.html index c1b6e4cb7..d248c335f 100644 --- a/droid-help/src/main/resources/Web pages/Choose files and folders.html +++ b/droid-help/src/main/resources/Web pages/Choose files and folders.html @@ -1,191 +1,191 @@ - - - - - - Choose files and folders - - - - - - - -
- - -
-   Choose files and folders -
-
- - - - - - - - -
- Welcome to DROID - - Create a - profile - -  Adding - -  Removing - -  Run - your profile -
-

-   -

-

-   Adding -

-

- To add files and folders to a profile, click the  Add    button, or - select the Edit / Add files and folders menu. -   You can also right-click with your mouse on the main profile window, and - select the Add option from the popup menu. -

-

- A selection window will appear.  On the left hand side is a navigator to explore - your folders.  The example below shows the "Internet Explorer" folder selected on - the left hand side, and the contents of this folder are shown on the right. -

-

- Any files or folders selected on the right will appear in the "Selected resources" - text box at the bottom.  Select multiple files and folders at the same time by - holding down the SHIFT key to select a list, or the CTRL key to individually select or - deselect files or folders.  -

-

-   -

-

-   -

-

-   -

-

- Include sub-folders -

-

- When a folder is added to a profile, it is often useful to also profile all of its - sub-folders.  Underneath the selected resources text box,  is checked by default.  Uncheck this box if you only want - to profile the files directly inside a folder and to ignore any sub-folders.  If - you are only selecting files, this setting makes no difference.  Note that if you are profiling inside archival files, they will - still be profiled regardless of this setting, which only applies to folders in the file - system you are profiling. -

-

-   -

-

- Adding your selection -

-

- Press the   OK -   button to add the selected files and folders to your profile, or the   Cancel   -  button to leave the selection window with no changes made.   Add     can be used repeatedly to add files and - folders from different locations in your file system to your profile. -

-

-   -

-

-   Removing -

-

- To remove files or folders from the profile, select them in the main window, and either - press the   Remove    button, or use the Edit / Remove files or folders menu item.  You can also - right-click with your mouse on the main profile window, and select the Remove option - from the popup menu. -

-

-   -

-

- Only the top-level files and folders you have added to a profile can be removed. -  When you run a profile with a folder, the - profiling process will automatically add the files and folders it finds underneath it. -  After you run a profile, you cannot add or remove files or folders from the profile - anymore - its specification becomes fixed. -

-

-    -

- - - - - - - - -
- Welcome to DROID - - Create a - profile - -  Adding - -  Removing - -  Run - your profile -
-
-     -
-

-   -

- - + + + + + + Choose files and folders + + + + + + + +
+ + +
+   Choose files and folders +
+
+ + + + + + + + +
+ Welcome to DROID + + Create a + profile + +  Adding + +  Removing + +  Run + your profile +
+

+   +

+

+   Adding +

+

+ To add files and folders to a profile, click the  Add    button, or + select the Edit / Add files and folders menu. +   You can also right-click with your mouse on the main profile window, and + select the Add option from the popup menu. +

+

+ A selection window will appear.  On the left hand side is a navigator to explore + your folders.  The example below shows the "Internet Explorer" folder selected on + the left hand side, and the contents of this folder are shown on the right. +

+

+ Any files or folders selected on the right will appear in the "Selected resources" + text box at the bottom.  Select multiple files and folders at the same time by + holding down the SHIFT key to select a list, or the CTRL key to individually select or + deselect files or folders.  +

+

+   +

+

+   +

+

+   +

+

+ Include sub-folders +

+

+ When a folder is added to a profile, it is often useful to also profile all of its + sub-folders.  Underneath the selected resources text box,  is checked by default.  Uncheck this box if you only want + to profile the files directly inside a folder and to ignore any sub-folders.  If + you are only selecting files, this setting makes no difference.  Note that if you are profiling inside archival files, they will + still be profiled regardless of this setting, which only applies to folders in the file + system you are profiling. +

+

+   +

+

+ Adding your selection +

+

+ Press the   OK +   button to add the selected files and folders to your profile, or the   Cancel   +  button to leave the selection window with no changes made.   Add     can be used repeatedly to add files and + folders from different locations in your file system to your profile. +

+

+   +

+

+   Removing +

+

+ To remove files or folders from the profile, select them in the main window, and either + press the   Remove    button, or use the Edit / Remove files or folders menu item.  You can also + right-click with your mouse on the main profile window, and select the Remove option + from the popup menu. +

+

+   +

+

+ Only the top-level files and folders you have added to a profile can be removed. +  When you run a profile with a folder, the + profiling process will automatically add the files and folders it finds underneath it. +  After you run a profile, you cannot add or remove files or folders from the profile + anymore - its specification becomes fixed. +

+

+    +

+ + + + + + + + +
+ Welcome to DROID + + Create a + profile + +  Adding + +  Removing + +  Run + your profile +
+
+     +
+

+   +

+ + diff --git a/droid-help/src/main/resources/Web pages/Command line control.html b/droid-help/src/main/resources/Web pages/Command line control.html index 6c62b71f9..9dbbbd415 100644 --- a/droid-help/src/main/resources/Web pages/Command line control.html +++ b/droid-help/src/main/resources/Web pages/Command line control.html @@ -1,608 +1,608 @@ - - - - - - Command line control - - - - - - - -
- - -
- Command - line control -
-
- - - - - - -
- Welcome to DROID - -   - -   -
-

- DROID can be controlled via the command line.  It is a little more limited than the - full control offered by the Graphical User Interface (GUI). Only a single filter can be - specified via the command line to apply to profiles for export or reporting, whereas in the - GUI, each profile can have a separate filter.   -

-

- Command line control allows DROID to be scripted into batch processes or automated - work-flows. The following command-line options are available: -

- -

- Command line usage does not currently allow all operations to be combined in a single - command-line.  Some options simply print information to the screen, such as the version - of DROID.  For the others, you can create new profiles and save the results in one step. -  To filter, report or export a profile requires a second step, opening a previously - saved profile to process. -

-

- General -

-

- -h, --help -

-

- Display this help. More help is available using the help menu in the Graphical User - Interface. -

-

- -v, --version -

-

- Displays the version of the DROID software. -

-

- -q, --quiet -

-

- DROID will limit its console output to the requested information and errors - only.   Errors will be sent to the standard error output of the console. -

-

- -R,--recurse -

-

- Recurse into all subfolders of any folder specified using the –a or -Nr option. This means that the - contents of all sub-folders of the original folder will be processed, and any sub-folders in - them, and so on. -

-

- If this option is not specified, only the files directly under a folder will be processed. - If –R is specified, files in all sub-folders (and their sub-folders, and so on) will be - processed as well.  Note that in the Graphical User Interface, processing sub-folders is - the default setting. -

-

- For example: -

- - - - -
-  droid –R –a “C:\Files\Another Folder”–p - “C:\Results\result3.droid    -
-

-   -

-

-     Profiles -

-

- -a,--profile-resources <resources...> -

-

- Adds resources to a new profile and runs it. Resources are the file path of any file or - folder you want to profile. The file paths should be given surrounded in double quotes, and - separated by spaces from each other. The profile results will be saved to a single file - specified using the –p option. For example: -

- - - - -
-  droid –a “C:\Files\A Folder” - “C:\Files\file.xxx” –p “C:\Results\result1.droid” -
-

- Note: You cannot use reporting, filtering and exporting when using the –a option. -

-

-   -

-

-  -p,--profile <filename ...> -

-

- When used in conjunction with reporting, filtering or exporting, -p specifies a list of - profiles to open. The file paths of the profiles should be given surrounded in double quotes, - and separated by spaces from each other. When used in conjunction with the –a option, the - results of the new profile will be saved to that file, and you can only specify a single - file. For example: -

- - - - - - - -
-  droid –p “C:\Results\result1.droid” - “C:\Results\result2.droid” –e “C:\Exports\combinedResults.csv” -
-  droid –a “C:\Files\A Folder” - “C:\Files\file.xxx” –p “C:\Results\result1.droid” -
-

-   -

-

- Filtering -

-

- -f, --filter-all <filter ...> -

-

- Filter all the profiles specified using the –p option. Only results which match ALL - filter criteria specified will appear. Filter criteria are specified using the following - method: -

-

-     “<field> - <operator> <values>” -

-

- where <field> is the name of a filterable field, <operator> is the type of - comparison to use, and <values> are the value or values against which the field value - should be compared. The –k option provides information on the available fields and operators. - You can specify more than one filter criteria, surrounded in double quotes and separated by - spaces from each other. For example: -

- - - - - - - - - -
-  droid –p “C:\Results\result3.droid” –f - “PUID any_of fmt/111 fmt/112” –e “C:\Exports\filteredResults.csv”    -
-  droid –p “C:\Results\result1.droid” - “C:\Results\result2.droid” –f “file_size > 0” –e - “C:\Exports\filteredCombinedResults.csv”    -
-  droid –p “C:\Results\result1.droid” - –f “extension_mismatch = 'true'" –e - “C:\Exports\mismatchedResults.csv”    -
-

- -F, --filter-any <filter ...> -

-

- Filter profiles as the –f option does, except results which match ANY of the specified - filter criteria will appear. -

-

- -k, --filter-fields -

-

- Lists the available fields to use in filters and the operators which can be used with them. -

-

-   -

-

- Exporting -

-

- -e, --export <filename> -

-

- Export the specified profiles as a single CSV file, with one row for each file profiled. - This means that if a file has multiple identifications, only a single row for that file will - be written out, with the identifications added as additional columns at the right of the row. -  If any filters are specified, then they will apply to the exported file. For example: -

- - - - - - - -
-  droid –p “C:\Results\result1.droid” - “C:\Results\result2.droid” –e “C:\Exports\combinedResults.csv”  -
-  droid –p “C:\Results\result3.droid” –f - “PUID any_of fmt/111 fmt/112” –e “C:\Exports\filteredResults.csv   -
-

-   -

-

- -E, --export <filename> -

-

- Export the specified profiles as a single CSV file, with one row for each format for each - file profiled. This means that if a file has multiple identifications, then a separate - row will be written out for each file and separate identification made. If any filters - are specified, then they will apply to the exported file. For example: -

- - - - - - - -
-  droid –p “C:\Results\result1.droid” - “C:\Results\result2.droid” -E “C:\Exports\combinedResults.csv”  -
-  droid –p “C:\Results\result3.droid” –f - “PUID any_of fmt/111 fmt/112” –E “C:\Exports\filteredResults.csv  -
-

-   -

-

- Reporting -

-

- -n, --report-name <report name> -

-

- Runs the report with the specified - name on any profiles opened using the –p - option. If any filters are specified, then they will apply to all the profiles specified - to report against.  For example, this command would load the profile from the "C:\Results\result1.droid" file, run the - "File count and sizes" report, and save the results to a PDF file: "C:\Reports\result1Report.pdf": -

- - - - -
-   droid –p “C:\Results\result1.droid” - –n “File count and sizes” –r “C:\Reports\result1Report.pdf”    -
-

-   -

-

- -t, --report-output-type <output type> -

-

- Sets the output file format of the - generated report.  If not specified, reports default to writing out as a PDF file. -  For example, this command would load the profile from the "C:\Results\result1.droid" file, run the - "Comprehensive Breakdown" report, and save the results in Planets XML format to - the file: "C:\Reports\result1Report.xml": -

- - - - -
-   droid –p “C:\Results\result1.droid” –n - “Comprehensive breakdown” -t "Planets XML" –r “C:\Reports\result1Report.xml” -
-

-   -

-

- -r, --report <filename> -

-

- Saves the report generated to the file specified. For example, this command would load - the profile from the "C:\Results\result1.droid" file, run the - "Total unreadable files" report, and save the results in DROID XML format to - the file: "C:\Reports\result1Report.xml": -

- - - - -
-   droid –p “C:\Results\result1.droid” –n “Total - unreadable files” -t "DROID Report XML" –r “C:\Reports\result1Report.xml" -
-

-   -

-

- -l, --list-reports <filename> -

-

- Lists the available reports, and the output formats each report can be saved in. For - example: -

- - - - -
- droid –l -
-

-   -

-

- No-profile mode -

-

- 'No-profile' mode provides a mechanism to use DROID without the overhead - of it starting up a database to store intermediate results for reporting. -

-

- -Nr, --no-profile-resource   <folder or file> -

-

- Identify either a specific file, or all files in a folder, without the use of a profile. The file or folder path should - be bounded by double quotes. The scan results will be sent to standard output. - For example: - - - - -
- droid -Nr "C:\Files\A Folder" -
-

-

- -Ns, --signature-file   <filename> -

-

- Specify the signature file to be used for identification. This must be used - each time no-profile mode is called. -

-

- - - - -
- droid -Nr "C:\Files\A Folder" -Ns DROID_SignatureFile_V65.xml -
-

-

- -Nc, --container-file   <filename> -

-

- [optional] The container signature file to be used for identification. If - omitted, container-format files may be identified by container type only. -

-

- For example: - - - - -
- droid -Nr "C:\Files\A Folder" -Ns DROID_SignatureFile_V65.xml -Nc container-signature-20120828.xml -
-

-

- -Nx, --extension-list   <extensions> -

-

- [optional] Only identify files with the given extensions -

-

- For example: - - - - -
- droid -Nr "C:\Files\A Folder" -Ns DROID_SignatureFile_V65.xml -Nc container-signature-20120828.xml -Nx csv jp2 -
-

-

- -A, --open-archives -

-

- [optional] Open archive (zip, tar, gzip) files and identify all their contents. -

-

- -W, --open-webarchives -

-

- [optional] Open web archive (arc, warc) files and identify their contents. Usually used in conjunction with -A. -

-

-   -

-

- Signatures -

-

- -c, --check-signature-update -

-

- Check for signature updates, but does not download them. -

-

- -d, --download-signature-update -

-

- Download the latest signature updates, if a newer version is available. -

-

- -X, --list-signature-files -

-

- Lists all locally available signature files. -

-

- -x, --display-signature-file -

-

- Displays the current default signature file. -

-

- -s, --configure-signature-file <version> -

-

- Sets the current default signature file version. For example: -

- - - - -
-  droid –s 42  -
-

-   -

- - - - - - -
- Welcome to DROID - -   - -   -
-
-     -
- - + + + + + + Command line control + + + + + + + +
+ + +
+ Command + line control +
+
+ + + + + + +
+ Welcome to DROID + +   + +   +
+

+ DROID can be controlled via the command line.  It is a little more limited than the + full control offered by the Graphical User Interface (GUI). Only a single filter can be + specified via the command line to apply to profiles for export or reporting, whereas in the + GUI, each profile can have a separate filter.   +

+

+ Command line control allows DROID to be scripted into batch processes or automated + work-flows. The following command-line options are available: +

+ +

+ Command line usage does not currently allow all operations to be combined in a single + command-line.  Some options simply print information to the screen, such as the version + of DROID.  For the others, you can create new profiles and save the results in one step. +  To filter, report or export a profile requires a second step, opening a previously + saved profile to process. +

+

+ General +

+

+ -h, --help +

+

+ Display this help. More help is available using the help menu in the Graphical User + Interface. +

+

+ -v, --version +

+

+ Displays the version of the DROID software. +

+

+ -q, --quiet +

+

+ DROID will limit its console output to the requested information and errors + only.   Errors will be sent to the standard error output of the console. +

+

+ -R,--recurse +

+

+ Recurse into all subfolders of any folder specified using the –a or -Nr option. This means that the + contents of all sub-folders of the original folder will be processed, and any sub-folders in + them, and so on. +

+

+ If this option is not specified, only the files directly under a folder will be processed. + If –R is specified, files in all sub-folders (and their sub-folders, and so on) will be + processed as well.  Note that in the Graphical User Interface, processing sub-folders is + the default setting. +

+

+ For example: +

+ + + + +
+  droid –R –a “C:\Files\Another Folder”–p + “C:\Results\result3.droid    +
+

+   +

+

+     Profiles +

+

+ -a,--profile-resources <resources...> +

+

+ Adds resources to a new profile and runs it. Resources are the file path of any file or + folder you want to profile. The file paths should be given surrounded in double quotes, and + separated by spaces from each other. The profile results will be saved to a single file + specified using the –p option. For example: +

+ + + + +
+  droid –a “C:\Files\A Folder” + “C:\Files\file.xxx” –p “C:\Results\result1.droid” +
+

+ Note: You cannot use reporting, filtering and exporting when using the –a option. +

+

+   +

+

+  -p,--profile <filename ...> +

+

+ When used in conjunction with reporting, filtering or exporting, -p specifies a list of + profiles to open. The file paths of the profiles should be given surrounded in double quotes, + and separated by spaces from each other. When used in conjunction with the –a option, the + results of the new profile will be saved to that file, and you can only specify a single + file. For example: +

+ + + + + + + +
+  droid –p “C:\Results\result1.droid” + “C:\Results\result2.droid” –e “C:\Exports\combinedResults.csv” +
+  droid –a “C:\Files\A Folder” + “C:\Files\file.xxx” –p “C:\Results\result1.droid” +
+

+   +

+

+ Filtering +

+

+ -f, --filter-all <filter ...> +

+

+ Filter all the profiles specified using the –p option. Only results which match ALL + filter criteria specified will appear. Filter criteria are specified using the following + method: +

+

+     “<field> + <operator> <values>” +

+

+ where <field> is the name of a filterable field, <operator> is the type of + comparison to use, and <values> are the value or values against which the field value + should be compared. The –k option provides information on the available fields and operators. + You can specify more than one filter criteria, surrounded in double quotes and separated by + spaces from each other. For example: +

+ + + + + + + + + +
+  droid –p “C:\Results\result3.droid” –f + “PUID any_of fmt/111 fmt/112” –e “C:\Exports\filteredResults.csv”    +
+  droid –p “C:\Results\result1.droid” + “C:\Results\result2.droid” –f “file_size > 0” –e + “C:\Exports\filteredCombinedResults.csv”    +
+  droid –p “C:\Results\result1.droid” + –f “extension_mismatch = 'true'" –e + “C:\Exports\mismatchedResults.csv”    +
+

+ -F, --filter-any <filter ...> +

+

+ Filter profiles as the –f option does, except results which match ANY of the specified + filter criteria will appear. +

+

+ -k, --filter-fields +

+

+ Lists the available fields to use in filters and the operators which can be used with them. +

+

+   +

+

+ Exporting +

+

+ -e, --export <filename> +

+

+ Export the specified profiles as a single CSV file, with one row for each file profiled. + This means that if a file has multiple identifications, only a single row for that file will + be written out, with the identifications added as additional columns at the right of the row. +  If any filters are specified, then they will apply to the exported file. For example: +

+ + + + + + + +
+  droid –p “C:\Results\result1.droid” + “C:\Results\result2.droid” –e “C:\Exports\combinedResults.csv”  +
+  droid –p “C:\Results\result3.droid” –f + “PUID any_of fmt/111 fmt/112” –e “C:\Exports\filteredResults.csv   +
+

+   +

+

+ -E, --export <filename> +

+

+ Export the specified profiles as a single CSV file, with one row for each format for each + file profiled. This means that if a file has multiple identifications, then a separate + row will be written out for each file and separate identification made. If any filters + are specified, then they will apply to the exported file. For example: +

+ + + + + + + +
+  droid –p “C:\Results\result1.droid” + “C:\Results\result2.droid” -E “C:\Exports\combinedResults.csv”  +
+  droid –p “C:\Results\result3.droid” –f + “PUID any_of fmt/111 fmt/112” –E “C:\Exports\filteredResults.csv  +
+

+   +

+

+ Reporting +

+

+ -n, --report-name <report name> +

+

+ Runs the report with the specified + name on any profiles opened using the –p + option. If any filters are specified, then they will apply to all the profiles specified + to report against.  For example, this command would load the profile from the "C:\Results\result1.droid" file, run the + "File count and sizes" report, and save the results to a PDF file: "C:\Reports\result1Report.pdf": +

+ + + + +
+   droid –p “C:\Results\result1.droid” + –n “File count and sizes” –r “C:\Reports\result1Report.pdf”    +
+

+   +

+

+ -t, --report-output-type <output type> +

+

+ Sets the output file format of the + generated report.  If not specified, reports default to writing out as a PDF file. +  For example, this command would load the profile from the "C:\Results\result1.droid" file, run the + "Comprehensive Breakdown" report, and save the results in Planets XML format to + the file: "C:\Reports\result1Report.xml": +

+ + + + +
+   droid –p “C:\Results\result1.droid” –n + “Comprehensive breakdown” -t "Planets XML" –r “C:\Reports\result1Report.xml” +
+

+   +

+

+ -r, --report <filename> +

+

+ Saves the report generated to the file specified. For example, this command would load + the profile from the "C:\Results\result1.droid" file, run the + "Total unreadable files" report, and save the results in DROID XML format to + the file: "C:\Reports\result1Report.xml": +

+ + + + +
+   droid –p “C:\Results\result1.droid” –n “Total + unreadable files” -t "DROID Report XML" –r “C:\Reports\result1Report.xml" +
+

+   +

+

+ -l, --list-reports <filename> +

+

+ Lists the available reports, and the output formats each report can be saved in. For + example: +

+ + + + +
+ droid –l +
+

+   +

+

+ No-profile mode +

+

+ 'No-profile' mode provides a mechanism to use DROID without the overhead + of it starting up a database to store intermediate results for reporting. +

+

+ -Nr, --no-profile-resource   <folder or file> +

+

+ Identify either a specific file, or all files in a folder, without the use of a profile. The file or folder path should + be bounded by double quotes. The scan results will be sent to standard output. + For example: + + + + +
+ droid -Nr "C:\Files\A Folder" +
+

+

+ -Ns, --signature-file   <filename> +

+

+ Specify the signature file to be used for identification. This must be used + each time no-profile mode is called. +

+

+ + + + +
+ droid -Nr "C:\Files\A Folder" -Ns DROID_SignatureFile_V65.xml +
+

+

+ -Nc, --container-file   <filename> +

+

+ [optional] The container signature file to be used for identification. If + omitted, container-format files may be identified by container type only. +

+

+ For example: + + + + +
+ droid -Nr "C:\Files\A Folder" -Ns DROID_SignatureFile_V65.xml -Nc container-signature-20120828.xml +
+

+

+ -Nx, --extension-list   <extensions> +

+

+ [optional] Only identify files with the given extensions +

+

+ For example: + + + + +
+ droid -Nr "C:\Files\A Folder" -Ns DROID_SignatureFile_V65.xml -Nc container-signature-20120828.xml -Nx csv jp2 +
+

+

+ -A, --open-archives +

+

+ [optional] Open archive (zip, tar, gzip) files and identify all their contents. +

+

+ -W, --open-webarchives +

+

+ [optional] Open web archive (arc, warc) files and identify their contents. Usually used in conjunction with -A. +

+

+   +

+

+ Signatures +

+

+ -c, --check-signature-update +

+

+ Check for signature updates, but does not download them. +

+

+ -d, --download-signature-update +

+

+ Download the latest signature updates, if a newer version is available. +

+

+ -X, --list-signature-files +

+

+ Lists all locally available signature files. +

+

+ -x, --display-signature-file +

+

+ Displays the current default signature file. +

+

+ -s, --configure-signature-file <version> +

+

+ Sets the current default signature file version. For example: +

+ + + + +
+  droid –s 42  +
+

+   +

+ + + + + + +
+ Welcome to DROID + +   + +   +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/Create a new profile.html b/droid-help/src/main/resources/Web pages/Create a new profile.html index 61ae7ff74..bde440f9e 100644 --- a/droid-help/src/main/resources/Web pages/Create a new profile.html +++ b/droid-help/src/main/resources/Web pages/Create a new profile.html @@ -1,110 +1,110 @@ - - - - - - Create a new profile - - - - - - - -
- - -
-   Create a new profile -
-
- - - - - - -
- Welcome to DROID - -   - -  Choose - files and folders -
-

- A profile is the files and folders you want to find out about, and the results of - profiling them.  You can create profiles by clicking the    New -    button, or selecting the File / - New menu item. DROID automatically creates a blank profile for you when it - starts. -

-

-   -

-

- You can create as many profiles as you like. Each profile appears in its own tab, - underneath the toolbar.You can choose files and - folders as soon as the tab appears using the   Add   command, - but it takes a few seconds for a new profile to be ready to run.  By default, profiles are "Untitled" until they are saved with a filename. -

-

- Once a profile is created, its settings are fixed from the Profile Defaults specified in the preferences window. -

- - - - - - -
- Welcome to DROID - -   - -  Choose - files and folders -
-
-     -
- - + + + + + + Create a new profile + + + + + + + +
+ + +
+   Create a new profile +
+
+ + + + + + +
+ Welcome to DROID + +   + +  Choose + files and folders +
+

+ A profile is the files and folders you want to find out about, and the results of + profiling them.  You can create profiles by clicking the    New +    button, or selecting the File / + New menu item. DROID automatically creates a blank profile for you when it + starts. +

+

+   +

+

+ You can create as many profiles as you like. Each profile appears in its own tab, + underneath the toolbar.You can choose files and + folders as soon as the tab appears using the   Add   command, + but it takes a few seconds for a new profile to be ready to run.  By default, profiles are "Untitled" until they are saved with a filename. +

+

+ Once a profile is created, its settings are fixed from the Profile Defaults specified in the preferences window. +

+ + + + + + +
+ Welcome to DROID + +   + +  Choose + files and folders +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/Detecting duplicate files.html b/droid-help/src/main/resources/Web pages/Detecting duplicate files.html index 36f2e0bd9..e419ce358 100644 --- a/droid-help/src/main/resources/Web pages/Detecting duplicate files.html +++ b/droid-help/src/main/resources/Web pages/Detecting duplicate files.html @@ -1,209 +1,209 @@ - - - - - - Using content hashes - - - - - - - -
- - -
- Detecting duplicate files -
-
- - - - - - -
- Welcome to DROID - - Information collected - - Filter your - results -
-

-  Duplicate files -

-

- It is very common to find that files are duplicated in different areas of your filing - systems.  Some estimates show that around 30% of all file storage consists of - duplicate files.  This can happen because many users save the same files from email - attachments, or they take a backup copy of files while they are working on them, but don't - end up changing most of them.  -

-

- One method of duplicate detection is to use content hashes. If two files have the same - hash value, then they are overwhelmingly likely to have identical content. The odds of - two arbitrary files having the same hash value by accident are less than 1 in - 18,000,000,000,000,000,000, which is very, very low (these odds are for MD5, with SHA1, and then SHA256 - the odds become orders of magnitude lower still). DROID can generate content hashes - for your files, but note that DROID will not locate files with the same hash value for you, - only generate them in the first place.  If you export your profiles to a CSV file and - import them into software like Excel or Access, you can query for files which have the same - hash.  -

-

- Another method of locating duplicate files (without using hashes) is to search for folder - names containing words like, 'backup', 'temp' and 'old', as users frequently name folders or - files with these words if they intend them to be temporary copies. Another, more time - consuming method, is by examining the names of files and folders. If there are areas with - very similar (or identical names), then you may have duplicate information within - them.  However, both of these methods can only give you an indication that there - may be duplication and a high degree of manual review will still be required to assure - yourself that the file contents are really duplicated.  -

-

- If you do find duplicate files, you must decide how to deal with them. Clearly you will need - to keep at least one of them, but you will have to decide which, if any, can be safely - removed.  There are risks to digital continuity in deleting files, so you should take - into account several considerations before deleting duplicates: -

-
    -
  • - not all users may have access to all copies of a duplicate file -
  • -
  • - the duplicate files may have different metadata. For example, the location of a file in a - filing structure can provide essential context. Or there may be important audit metadata - showing that different people opened the different duplicates -
  • -
  • - a duplicate file may provide context to the surrounding data it was stored next to. The - loss of this context could render the meaning of the surrounding files unclear or - unintelligible -
  • -
  • - large areas of duplication may be for test or development environments, and therefore will - be necessary for systems development. -
  • -
-

- You can mitigate some of the risks related to loss of context by leaving shortcuts (or - symbolic links in a UNIX file system) to the 'master file' when you delete a duplicate. -

-

-   -

-

- What are hashes -

-

- Hashes are long numbers, often represented as hexadecimal  text, which can be used as a signature to identify - the content of a file.  DROID can generate hashes called "MD5" , or SHA1" , or SHA256" , which are fairly fast to produce (relative - to other hashing algorithms). -

-

- Hashes are useful to locate duplicates in the files you profile, and to match with - common files which have published hash values. However, MD5 hashes are not resistant to - malicious attack - an attacker can create files which have the same hash but with different - content.  The goal of hashing in DROID is not to provide a cryptographic assurance - of uniqueness, only to locate likely duplicates and to link to forensic hash databases - (most of which use MD5). SHA1 and SHA256 are more recent and more secure than MD5, but should still not be - taken to provide an absolute guarantee of uniqueness. -

-

-   -

-

- Forensic Hash - Databases -

-

- Forensic hash databases are published databases of hash values for files which are widely - found.  These can allow you to detect whether the files in your systems are common, well - known files (such as Windows system files), whether they contain known illegal content, and - in some cases, malware such as viruses.   Knowing which files are well known - outside your organisation can support information policy and decision making.  For - example, you may discover that a lot of storage space is being taken up with multiple copies - of files which are easily replaced from install CDs. Files which are not well known probably - contain unique content, and would be hard to replace if deleted. -

-

- There are a variety of content hash databases available. One such database is: -

- -

- Note that DROID does not link your files to these hash databases. It merely generates a - compatible hash for each of your files, which you can then use to link with them. You will - require additional technical assistance to perform these links. -

-

-   -

- - - - - - -
- Welcome to DROID - - Information collected - - Filter your - results -
-
-     -
- - - + + + + + + Using content hashes + + + + + + + +
+ + +
+ Detecting duplicate files +
+
+ + + + + + +
+ Welcome to DROID + + Information collected + + Filter your + results +
+

+  Duplicate files +

+

+ It is very common to find that files are duplicated in different areas of your filing + systems.  Some estimates show that around 30% of all file storage consists of + duplicate files.  This can happen because many users save the same files from email + attachments, or they take a backup copy of files while they are working on them, but don't + end up changing most of them.  +

+

+ One method of duplicate detection is to use content hashes. If two files have the same + hash value, then they are overwhelmingly likely to have identical content. The odds of + two arbitrary files having the same hash value by accident are less than 1 in + 18,000,000,000,000,000,000, which is very, very low (these odds are for MD5, with SHA1, and then SHA256 + the odds become orders of magnitude lower still). DROID can generate content hashes + for your files, but note that DROID will not locate files with the same hash value for you, + only generate them in the first place.  If you export your profiles to a CSV file and + import them into software like Excel or Access, you can query for files which have the same + hash.  +

+

+ Another method of locating duplicate files (without using hashes) is to search for folder + names containing words like, 'backup', 'temp' and 'old', as users frequently name folders or + files with these words if they intend them to be temporary copies. Another, more time + consuming method, is by examining the names of files and folders. If there are areas with + very similar (or identical names), then you may have duplicate information within + them.  However, both of these methods can only give you an indication that there + may be duplication and a high degree of manual review will still be required to assure + yourself that the file contents are really duplicated.  +

+

+ If you do find duplicate files, you must decide how to deal with them. Clearly you will need + to keep at least one of them, but you will have to decide which, if any, can be safely + removed.  There are risks to digital continuity in deleting files, so you should take + into account several considerations before deleting duplicates: +

+
    +
  • + not all users may have access to all copies of a duplicate file +
  • +
  • + the duplicate files may have different metadata. For example, the location of a file in a + filing structure can provide essential context. Or there may be important audit metadata + showing that different people opened the different duplicates +
  • +
  • + a duplicate file may provide context to the surrounding data it was stored next to. The + loss of this context could render the meaning of the surrounding files unclear or + unintelligible +
  • +
  • + large areas of duplication may be for test or development environments, and therefore will + be necessary for systems development. +
  • +
+

+ You can mitigate some of the risks related to loss of context by leaving shortcuts (or + symbolic links in a UNIX file system) to the 'master file' when you delete a duplicate. +

+

+   +

+

+ What are hashes +

+

+ Hashes are long numbers, often represented as hexadecimal  text, which can be used as a signature to identify + the content of a file.  DROID can generate hashes called "MD5" , or SHA1" , or SHA256" , which are fairly fast to produce (relative + to other hashing algorithms). +

+

+ Hashes are useful to locate duplicates in the files you profile, and to match with + common files which have published hash values. However, MD5 hashes are not resistant to + malicious attack - an attacker can create files which have the same hash but with different + content.  The goal of hashing in DROID is not to provide a cryptographic assurance + of uniqueness, only to locate likely duplicates and to link to forensic hash databases + (most of which use MD5). SHA1 and SHA256 are more recent and more secure than MD5, but should still not be + taken to provide an absolute guarantee of uniqueness. +

+

+   +

+

+ Forensic Hash + Databases +

+

+ Forensic hash databases are published databases of hash values for files which are widely + found.  These can allow you to detect whether the files in your systems are common, well + known files (such as Windows system files), whether they contain known illegal content, and + in some cases, malware such as viruses.   Knowing which files are well known + outside your organisation can support information policy and decision making.  For + example, you may discover that a lot of storage space is being taken up with multiple copies + of files which are easily replaced from install CDs. Files which are not well known probably + contain unique content, and would be hard to replace if deleted. +

+

+ There are a variety of content hash databases available. One such database is: +

+ +

+ Note that DROID does not link your files to these hash databases. It merely generates a + compatible hash for each of your files, which you can then use to link with them. You will + require additional technical assistance to perform these links. +

+

+   +

+ + + + + + +
+ Welcome to DROID + + Information collected + + Filter your + results +
+
+     +
+ + + diff --git a/droid-help/src/main/resources/Web pages/Explore the results.html b/droid-help/src/main/resources/Web pages/Explore the results.html index 2d4eeb2cc..67813fb86 100644 --- a/droid-help/src/main/resources/Web pages/Explore the results.html +++ b/droid-help/src/main/resources/Web pages/Explore the results.html @@ -1,333 +1,333 @@ - - - - - - Explore the results - - - - - - - -
- - -
-  Filter your results -
-
- - - - - - - -
- Welcome to DROID - - Run - your profile - - Information collected by DROID - -    Open and save profiles -
-

- Results -

-

- Results appear in your profile tab as soon as they are profiled.  If you have - profiled any folders, then you can see the files and sub-folders inside them by clicking on - the open folder icon to their left.  To the right of each resource are columns - containing information about each resource. -   -

-

- Sorting -

-

- You can sort the columns by clicking on the column header.  Clicking once will sort in - descending order, another click will sort in ascending order, and a third click will remove - the sort.  The sort will also group resources that can have resources inside them (e.g. - folders or zip files) together, followed by the files, to keep similar resources together. -

-

- Filtering -

-

- When you have a lot of results, it is useful to be able to filter them, in order to narrow - down on the files or folders of particular interest.  You can define a filter for your - results by clicking the   Filter   button, or by - selecting the Filter / Edit Filter... menu item.  In the - filter definition dialog, you can add one or more conditions that a file must meet in order - to be visible in your profile, change whether your files must meet all the conditions you - specify, or any of them, and set whether the filter is enabled or not.   -

-

- -

-

- Any or All -

-
    -
  • - All - files must meet all filter conditions specified in order to be visible in your - profile. -
  • -
  • - Any - files can meet any filter condition specified in order to be visible in your profile. -
  • -
-

- Filter enabled -

-

- This checkbox allows you to set whether your filter is enabled or not.  When enabled, - results in your profile will be filtered, when disabled your filter conditions will simply - not apply (but their definition will remain).  You can also enable or disable filters - via the Filter / Filter on menu item. -

-

- Adding Filter Conditions -

-

- To specify a filter condition, you must fill out three items in a row in the filter table. -

-
    -
  1. - Field - the type of information you want to filter on, -
  2. -
  3. - Operation - the type of comparison to make, -
  4. -
  5. - Values - what to compare the value of the field to. -
  6. -
-

- Fields -

-

- Fields are the kind of information you want to filter on. Click on the first column of - the filter condition table, on the drop down box that says "<Please - select...>".  You can select from the following fields: -

-
    -
  • - File name - the (case sensitive) name of a file or folder -
  • -
  • - File size  - the size of a file in bytes -
  • -
  • - File extension - the (case sensitive) file name extension -
  • -
  • - Last modified date - the data a file or folder was last modified -
  • -
  • - Resource type - whether the resource is a folder, file or archival file (a file that - contains other files - e.g. a zip file). -
  • -
  • - Mime type - the mime-type of a file -
  • -
  • - PUID - the PRONOM Unique IDentifier of a file. -
  • -
  • - Format name - the name of a format identified by a PUID. -
  • -
  • - Identification method - the method by which a file or archival file was identified. -
  • -
  • - Job status - whether a file has been processed, or had an error when profiled. -
  • -
  • - Extension mismatch - whether the format identified is consistent with the file extension. -
  • -
-

- For more information on these fields and the information contained in them, please see "Information collected by DROID".  You can - specify more than one filter condition on the same field.  Notice that if you are - filtering using the All method, this makes it possible to create - filters which no file can meet (e.g. size < 100 and size > 100)! -

-

- Operation -

-

- Once you have selected the field you want to filter on, you can specify what kind of - comparison operation should be performed on it.  The available operations vary by the - type of field you have selected: -

-
    -
  • - Numbers and Dates: less than (<), less or equal (<=), - equals (=), greater than (=), greater or equal (>=), not equals (<>) -
  • -
  • - Text (case sensitive): equals (=), not equals (<>), starts with, ends - with, contains, does not start with, does not end with, does not contain. -
  • -
  • - Sets: some types of field can have one or more values. selected out of a - defined set of values (PUID, Mime type, Identification method, Job status).  To - compare sets, you can specify that there are "any of" the values in the specified set, or - "none of" the values in the specified set of values. -
  • -
-

- Values -

-

- Like the operations, the values you provide depend on the type of fields you are filtering on: -

-
    -
  • - Numbers: enter a positive whole number.  Only digits can be entered - no - decimal points, plus or minus signs are allowed. -
  • -
  • - Dates: provide the day, month and year in the boxes provided. -
  • -
  • - Text: enter your text into the box provided. -
  • -
  • - Sets: You cannot enter set values directly into the value area - you must select - them using the set selection dialog.  To bring up - the dialog, click the   ... -   button to the right of the value area.  Once you have selected - your values, a read-only representation of them will appear in the value area.  You - can always edit your sets by bringing up the set selection dialog again. -
  • -
-

- Set selection dialog -

-

- The set selection dialog lets you select one or more values from a list. -

-

- -

-

- On the left hand side of the dialog are all the available values to select.  On the - right hand side are the values you want to filter on.  To add values to your selection, - select the values you would like to add on the left hand side, and press the   Add >   button - between the two panes.  You can select values individually, or you can hold down the - SHIFT key to select a list of values.  If you hold down the CTRL key, you can select or - deselect multiple items individually.  To remove values from your selection, highlight - the values you want to remove on the right hand side, using the same techniques as adding, - and press the   < Remove -   button. -

-

- Once you are happy with your selection, press the   OK   button at the - bottom of the dialog.  Your selected values will be placed in the value box in the - filter dialog.  If you want to cancel any changes you have made, press the   Cancel -   button. -

-

- Removing Filter - Conditions -

-

- To remove a filter condition, simply click the   Remove   button at the far right of the row. -  You cannot remove the final row in the filter table, which always shows "<Please select...>" in the field column, as this row enables you to add - new filter conditions.  Unless you actually specify a field, this row does not - contribute to the filter specification. -

-

- Load and Save filters -

-

- If you have a filter you want to re-use, you can save filters to a file, and load them back - from a previously saved file.  Clicking on these buttons brings up a file selection - dialog window. -

-

- Apply and Cancel -

-

- If you are happy with your filter definition, press the   Apply   button at the - bottom of the screen.  Your filter specification will be associated with your profile, - and if you had enabled the filter, it will be applied to the profile immediately.  If - you press the   Cancel -   button, all changes you have made to the filter will be discarded, and - any previous filter will be restored as it was before you opened the filter dialog. -

-

-   -

- - - - - - - -
- Welcome to DROID - - Run - your profile - - Information collected by DROID - -    Open and save profiles -
-
-     -
- - + + + + + + Explore the results + + + + + + + +
+ + +
+  Filter your results +
+
+ + + + + + + +
+ Welcome to DROID + + Run + your profile + + Information collected by DROID + +    Open and save profiles +
+

+ Results +

+

+ Results appear in your profile tab as soon as they are profiled.  If you have + profiled any folders, then you can see the files and sub-folders inside them by clicking on + the open folder icon to their left.  To the right of each resource are columns + containing information about each resource. +   +

+

+ Sorting +

+

+ You can sort the columns by clicking on the column header.  Clicking once will sort in + descending order, another click will sort in ascending order, and a third click will remove + the sort.  The sort will also group resources that can have resources inside them (e.g. + folders or zip files) together, followed by the files, to keep similar resources together. +

+

+ Filtering +

+

+ When you have a lot of results, it is useful to be able to filter them, in order to narrow + down on the files or folders of particular interest.  You can define a filter for your + results by clicking the   Filter   button, or by + selecting the Filter / Edit Filter... menu item.  In the + filter definition dialog, you can add one or more conditions that a file must meet in order + to be visible in your profile, change whether your files must meet all the conditions you + specify, or any of them, and set whether the filter is enabled or not.   +

+

+ +

+

+ Any or All +

+
    +
  • + All - files must meet all filter conditions specified in order to be visible in your + profile. +
  • +
  • + Any - files can meet any filter condition specified in order to be visible in your profile. +
  • +
+

+ Filter enabled +

+

+ This checkbox allows you to set whether your filter is enabled or not.  When enabled, + results in your profile will be filtered, when disabled your filter conditions will simply + not apply (but their definition will remain).  You can also enable or disable filters + via the Filter / Filter on menu item. +

+

+ Adding Filter Conditions +

+

+ To specify a filter condition, you must fill out three items in a row in the filter table. +

+
    +
  1. + Field - the type of information you want to filter on, +
  2. +
  3. + Operation - the type of comparison to make, +
  4. +
  5. + Values - what to compare the value of the field to. +
  6. +
+

+ Fields +

+

+ Fields are the kind of information you want to filter on. Click on the first column of + the filter condition table, on the drop down box that says "<Please + select...>".  You can select from the following fields: +

+
    +
  • + File name - the (case sensitive) name of a file or folder +
  • +
  • + File size  - the size of a file in bytes +
  • +
  • + File extension - the (case sensitive) file name extension +
  • +
  • + Last modified date - the data a file or folder was last modified +
  • +
  • + Resource type - whether the resource is a folder, file or archival file (a file that + contains other files - e.g. a zip file). +
  • +
  • + Mime type - the mime-type of a file +
  • +
  • + PUID - the PRONOM Unique IDentifier of a file. +
  • +
  • + Format name - the name of a format identified by a PUID. +
  • +
  • + Identification method - the method by which a file or archival file was identified. +
  • +
  • + Job status - whether a file has been processed, or had an error when profiled. +
  • +
  • + Extension mismatch - whether the format identified is consistent with the file extension. +
  • +
+

+ For more information on these fields and the information contained in them, please see "Information collected by DROID".  You can + specify more than one filter condition on the same field.  Notice that if you are + filtering using the All method, this makes it possible to create + filters which no file can meet (e.g. size < 100 and size > 100)! +

+

+ Operation +

+

+ Once you have selected the field you want to filter on, you can specify what kind of + comparison operation should be performed on it.  The available operations vary by the + type of field you have selected: +

+
    +
  • + Numbers and Dates: less than (<), less or equal (<=), + equals (=), greater than (=), greater or equal (>=), not equals (<>) +
  • +
  • + Text (case sensitive): equals (=), not equals (<>), starts with, ends + with, contains, does not start with, does not end with, does not contain. +
  • +
  • + Sets: some types of field can have one or more values. selected out of a + defined set of values (PUID, Mime type, Identification method, Job status).  To + compare sets, you can specify that there are "any of" the values in the specified set, or + "none of" the values in the specified set of values. +
  • +
+

+ Values +

+

+ Like the operations, the values you provide depend on the type of fields you are filtering on: +

+
    +
  • + Numbers: enter a positive whole number.  Only digits can be entered - no + decimal points, plus or minus signs are allowed. +
  • +
  • + Dates: provide the day, month and year in the boxes provided. +
  • +
  • + Text: enter your text into the box provided. +
  • +
  • + Sets: You cannot enter set values directly into the value area - you must select + them using the set selection dialog.  To bring up + the dialog, click the   ... +   button to the right of the value area.  Once you have selected + your values, a read-only representation of them will appear in the value area.  You + can always edit your sets by bringing up the set selection dialog again. +
  • +
+

+ Set selection dialog +

+

+ The set selection dialog lets you select one or more values from a list. +

+

+ +

+

+ On the left hand side of the dialog are all the available values to select.  On the + right hand side are the values you want to filter on.  To add values to your selection, + select the values you would like to add on the left hand side, and press the   Add >   button + between the two panes.  You can select values individually, or you can hold down the + SHIFT key to select a list of values.  If you hold down the CTRL key, you can select or + deselect multiple items individually.  To remove values from your selection, highlight + the values you want to remove on the right hand side, using the same techniques as adding, + and press the   < Remove +   button. +

+

+ Once you are happy with your selection, press the   OK   button at the + bottom of the dialog.  Your selected values will be placed in the value box in the + filter dialog.  If you want to cancel any changes you have made, press the   Cancel +   button. +

+

+ Removing Filter + Conditions +

+

+ To remove a filter condition, simply click the   Remove   button at the far right of the row. +  You cannot remove the final row in the filter table, which always shows "<Please select...>" in the field column, as this row enables you to add + new filter conditions.  Unless you actually specify a field, this row does not + contribute to the filter specification. +

+

+ Load and Save filters +

+

+ If you have a filter you want to re-use, you can save filters to a file, and load them back + from a previously saved file.  Clicking on these buttons brings up a file selection + dialog window. +

+

+ Apply and Cancel +

+

+ If you are happy with your filter definition, press the   Apply   button at the + bottom of the screen.  Your filter specification will be associated with your profile, + and if you had enabled the filter, it will be applied to the profile immediately.  If + you press the   Cancel +   button, all changes you have made to the filter will be discarded, and + any previous filter will be restored as it was before you opened the filter dialog. +

+

+   +

+ + + + + + + +
+ Welcome to DROID + + Run + your profile + + Information collected by DROID + +    Open and save profiles +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/Exporting profiles.html b/droid-help/src/main/resources/Web pages/Exporting profiles.html index 6797692e0..00f0eb94c 100644 --- a/droid-help/src/main/resources/Web pages/Exporting profiles.html +++ b/droid-help/src/main/resources/Web pages/Exporting profiles.html @@ -1,330 +1,330 @@ - - - - - - Exporting profiles - - - - - - - -
- - -
-    Exporting profiles -
-
- - - - - - - -
- Welcome to DROID - -    Load and save profiles - - Filter your - results - -  Summary reporting -
-

- DROID can export all open profiles (which are not currently running) to a CSV file.  To - export a profile, press the    Export -   button, or select the File / Export - all... menu item.  This will bring up the export dialog window: -

-

- -

-

- The profiles you have open are listed in the export window.  If a profile is empty, or - in the process of running, it will be greyed out.  Select all the profiles you want to - export into a single CSV file by checking the boxes next to them.   If any of your - profiles have active filters, then the results will - also be filtered.  Each profile can have different filters defined and enabled. -

-

- You can also select whether the export should produce one row per file, or one row per - format.  When exporting one row per file, each row in the CSV file will represent a - single file, folder or archival file profiled with DROID.  If exporting one row per - format, each row in the CSV file will be a single format identificaiton made by DROID. -  Since a file can be identified as being more than one possible format, this option will - produce CSV files with multiple rows for the same file (but with different identifications - for it). -

-

- The characters of the export will be encoded as UTF-8 by default. If you need to set this - to the encoding used on your local machine instead, select 'Platform specific' instead. -

-

- When you are happy you want to export your profiles, press the    Export - profiles...   button.  This will bring up a standard file-save - dialog, in which you can specify where you want your CSV file to be saved.   -

-

- CSV File Columns -

-

- ID -

-

- This is a unique number assigned to each file, folder or archival file processed by DROID. -

-

- PARENT_ID -

-

- This is the id of the archival file or folder in which this file is contained. -

-

- URI (Uniform Resource Identifier) -

-

- This provides a standard, cross-platform way of describing where resources are located. -  URIs are described in more detail in "Information collected by DROID". -

-

- File path -

-

- The file system location of the resource being profiled, if the resource was directly - in a file system.  Some files are not inside a file system - for example, files inside a - zip file. In this case, the file path will be blank, as there is no file path to the - resource.   -

-

- Please note that file paths are platform dependent (they are different on windows and unix). -  DROID will write out file paths for the system on which it is currently running. -  This means that if you profile files on a unix machine, then export the profiles on a - windows machine, the file paths will be written out as if they were windows file paths, and - vice versa. -

-

- Name -

-

- The file name of the resource being profiled. -

-

- Method -

-

- This field gives the method by which a resource identification has been made.  DROID - can recognise resources by several methods: -

-
    -
  • - Extension - the file format was identified only by its filename extension.  This method may not be very reliable, as the filename - extension may be wrong.  It is only used when DROID cannot identify a resource by - another method, and cannot usually identify what the version of a file format is, only its - broad type. -
  • -
  • - Signature - the file format was identified by finding a file format signature inside - the file itself.  This method is more reliable than filename extensions, and can - identify the precise version of a file format. -
  • -
  • - Container - the file format was identified by finding embedded files and patterns - within them.  This method is as reliable as signature identifications, and can be more - reliable. -
  • -
-

- Job status -

-

- This field gives the identification status of a resource.  It can have several values: -

-
    -
  • - Not done - the resource has not yet been profiled. -
  • -
  • - Done - the resource was processed with no errors. -
  • -
  • - Access denied - the operating system refused to give DROID read permissions to the - resource. -
  • -
  • - Not found - the resource was moved or deleted before DROID could read it. -
  • -
  • - Error - an error occurred while trying to profile a resource.  For example, if - DROID is prevented from reading a file due to the user not having read permissions to it, - this will result in a profiling error for that file. -
  • -
-

- Size (bytes) -

-

- The size in bytes of a file.  Only files have a size - folders do not.  However, - note that some files can contain other files inside them, for example zip files. -  In this case, the zip file has a size (as it is a file), and so do the files inside it. -  The size reported in all cases is the uncompressed size of each file, as it would - appear if extracted from the container file. -

-

- Type -

-

- DROID categorises the files and folders it profiles as being one of three types: -

-
    -
  • - -  File                                           -
  • -
  • - -  Folder                                       -
  • -
  • -  Archival file (e.g. zip) -
  • -
-

- Extension -

-

- The filename extension of a file, which is the last part of a filename following a full - stop.  Only files have extensions, as they indicate the type of the file. -  Even if a folder has a full stop in its name, it will not be assigned an extension. -

-

- Last modified -

-

- The date and time on which a resource was last modified.  This is the only resource - date-time available to DROID, as the Java 6 platform on which it runs will not report any - others (e.g. creation date-time).  More file system information will be available - via the Java 7 platform, which is not yet available at the time of writing.  This would - also require DROID to be modified to take advantage of the new file system interfaces in Java - 7. -

-

- MD5, SHA1, or SHA256 hash -

-

- If you have enabled hash generation in - the preferences, then this column will contain the MD5, SHA1, or SHA256 hash for each file and archival file - processed.  See "Detecting duplicate files" - for more information on hashes. -

-

- PUID -

-

- The PRONOM Unique IDentifier (PUID) identifies the precise file format of a profiled - file. When a resource has been identified, it is assigned a PUID.   A unique - identifier exists for every file format that DROID can recognise, and these identifiers are - maintained in the PRONOM technical registry database, hosted at the UK - National Archives. -

-

- Mime type -

-

- The mime-type of an identified file format is a high level format identifier assigned by the - Internet Assigned Numbers.  It is widely used in email and other internet - protocols to identify the type of resource.  Not all file formats identified by DROID - have an assigned mime-type, and different PUIDs assigned by DROID can - have the same mime-type -

-

- Format Name -

-

- The name of an identified file format, as listed in the PRONOM technical registry against its PUID. -

-

- Format Version -

-

- The version of an identified file format, as listed in the PRONOM technical registry against its PUID.  Not all file formats have a defined version, so this field can be - blank even when a file has a PUID. -

-

-   -

- - - - - - - -
- Welcome to DROID - -    Load and save profiles - - Filter your - results - -  Summary reporting -
-
-     -
- - + + + + + + Exporting profiles + + + + + + + +
+ + +
+    Exporting profiles +
+
+ + + + + + + +
+ Welcome to DROID + +    Load and save profiles + + Filter your + results + +  Summary reporting +
+

+ DROID can export all open profiles (which are not currently running) to a CSV file.  To + export a profile, press the    Export +   button, or select the File / Export + all... menu item.  This will bring up the export dialog window: +

+

+ +

+

+ The profiles you have open are listed in the export window.  If a profile is empty, or + in the process of running, it will be greyed out.  Select all the profiles you want to + export into a single CSV file by checking the boxes next to them.   If any of your + profiles have active filters, then the results will + also be filtered.  Each profile can have different filters defined and enabled. +

+

+ You can also select whether the export should produce one row per file, or one row per + format.  When exporting one row per file, each row in the CSV file will represent a + single file, folder or archival file profiled with DROID.  If exporting one row per + format, each row in the CSV file will be a single format identificaiton made by DROID. +  Since a file can be identified as being more than one possible format, this option will + produce CSV files with multiple rows for the same file (but with different identifications + for it). +

+

+ The characters of the export will be encoded as UTF-8 by default. If you need to set this + to the encoding used on your local machine instead, select 'Platform specific' instead. +

+

+ When you are happy you want to export your profiles, press the    Export + profiles...   button.  This will bring up a standard file-save + dialog, in which you can specify where you want your CSV file to be saved.   +

+

+ CSV File Columns +

+

+ ID +

+

+ This is a unique number assigned to each file, folder or archival file processed by DROID. +

+

+ PARENT_ID +

+

+ This is the id of the archival file or folder in which this file is contained. +

+

+ URI (Uniform Resource Identifier) +

+

+ This provides a standard, cross-platform way of describing where resources are located. +  URIs are described in more detail in "Information collected by DROID". +

+

+ File path +

+

+ The file system location of the resource being profiled, if the resource was directly + in a file system.  Some files are not inside a file system - for example, files inside a + zip file. In this case, the file path will be blank, as there is no file path to the + resource.   +

+

+ Please note that file paths are platform dependent (they are different on windows and unix). +  DROID will write out file paths for the system on which it is currently running. +  This means that if you profile files on a unix machine, then export the profiles on a + windows machine, the file paths will be written out as if they were windows file paths, and + vice versa. +

+

+ Name +

+

+ The file name of the resource being profiled. +

+

+ Method +

+

+ This field gives the method by which a resource identification has been made.  DROID + can recognise resources by several methods: +

+
    +
  • + Extension - the file format was identified only by its filename extension.  This method may not be very reliable, as the filename + extension may be wrong.  It is only used when DROID cannot identify a resource by + another method, and cannot usually identify what the version of a file format is, only its + broad type. +
  • +
  • + Signature - the file format was identified by finding a file format signature inside + the file itself.  This method is more reliable than filename extensions, and can + identify the precise version of a file format. +
  • +
  • + Container - the file format was identified by finding embedded files and patterns + within them.  This method is as reliable as signature identifications, and can be more + reliable. +
  • +
+

+ Job status +

+

+ This field gives the identification status of a resource.  It can have several values: +

+
    +
  • + Not done - the resource has not yet been profiled. +
  • +
  • + Done - the resource was processed with no errors. +
  • +
  • + Access denied - the operating system refused to give DROID read permissions to the + resource. +
  • +
  • + Not found - the resource was moved or deleted before DROID could read it. +
  • +
  • + Error - an error occurred while trying to profile a resource.  For example, if + DROID is prevented from reading a file due to the user not having read permissions to it, + this will result in a profiling error for that file. +
  • +
+

+ Size (bytes) +

+

+ The size in bytes of a file.  Only files have a size - folders do not.  However, + note that some files can contain other files inside them, for example zip files. +  In this case, the zip file has a size (as it is a file), and so do the files inside it. +  The size reported in all cases is the uncompressed size of each file, as it would + appear if extracted from the container file. +

+

+ Type +

+

+ DROID categorises the files and folders it profiles as being one of three types: +

+
    +
  • + +  File                                           +
  • +
  • + +  Folder                                       +
  • +
  • +  Archival file (e.g. zip) +
  • +
+

+ Extension +

+

+ The filename extension of a file, which is the last part of a filename following a full + stop.  Only files have extensions, as they indicate the type of the file. +  Even if a folder has a full stop in its name, it will not be assigned an extension. +

+

+ Last modified +

+

+ The date and time on which a resource was last modified.  This is the only resource + date-time available to DROID, as the Java 6 platform on which it runs will not report any + others (e.g. creation date-time).  More file system information will be available + via the Java 7 platform, which is not yet available at the time of writing.  This would + also require DROID to be modified to take advantage of the new file system interfaces in Java + 7. +

+

+ MD5, SHA1, or SHA256 hash +

+

+ If you have enabled hash generation in + the preferences, then this column will contain the MD5, SHA1, or SHA256 hash for each file and archival file + processed.  See "Detecting duplicate files" + for more information on hashes. +

+

+ PUID +

+

+ The PRONOM Unique IDentifier (PUID) identifies the precise file format of a profiled + file. When a resource has been identified, it is assigned a PUID.   A unique + identifier exists for every file format that DROID can recognise, and these identifiers are + maintained in the PRONOM technical registry database, hosted at the UK + National Archives. +

+

+ Mime type +

+

+ The mime-type of an identified file format is a high level format identifier assigned by the + Internet Assigned Numbers.  It is widely used in email and other internet + protocols to identify the type of resource.  Not all file formats identified by DROID + have an assigned mime-type, and different PUIDs assigned by DROID can + have the same mime-type +

+

+ Format Name +

+

+ The name of an identified file format, as listed in the PRONOM technical registry against its PUID. +

+

+ Format Version +

+

+ The version of an identified file format, as listed in the PRONOM technical registry against its PUID.  Not all file formats have a defined version, so this field can be + blank even when a file has a PUID. +

+

+   +

+ + + + + + + +
+ Welcome to DROID + +    Load and save profiles + + Filter your + results + +  Summary reporting +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/FAQ.html b/droid-help/src/main/resources/Web pages/FAQ.html index f2247c5dc..7c8798aa7 100644 --- a/droid-help/src/main/resources/Web pages/FAQ.html +++ b/droid-help/src/main/resources/Web pages/FAQ.html @@ -1,446 +1,446 @@ - - - - - - FAQ - - - - - - - -
- - -
- Frequently Asked Questions -
-
- - - - - -
- Welcome to DROID - -   -
- -

- What version of Java do I need? -

-

- You will need to have Java 7 or 8 installed on your machine in order to run DROID 6.3. - The latest JAVA updates can be obtained from oracle.com/technetwork/java/index.html. -

-

- Can I open profiles created in earlier - versions of DROID? -

-

- No. Because of the expanded functionality incorporated in to DROID 6, you will not be able - to load profiles from previous versions in DROID 6, and vice-versa.  If you need to - re-analyse results in DROID 6 which were already obtained in earlier versions of DROID, you - will have to re-profile your files using DROID 6. -

-

- Why isn't DROID recognising certain - formats? -

-

- DROID can only recognise files for which there is a defined signature or known extension. -  Signatures are regularly updated by the National Archives, and DROID can download them - to improve the range of formats it can identify.  In some cases, an existing signature - may fail to recognise a file because the file is unusual in some way.  If you know of - such files, please email pronom@nationalarchives.gov.uk so we can develop better - signatures.  Note that we usually require a sample of a failing file to find out - why it is not being recognised.  Please make sure that there is no sensitive or personal - content in such files before sending them. -

-

- Why are some file times an hour different to those on my - system? -

-

- DROID does not record or display dates and times using local daylight savings - time, if any is configured on your system.  The underlying dates and times are correct, - but represented as universal time.  This means that, if your operating system is - configured to display times using daylight savings time settings, then some times can appear - to be one hour different to those displayed in DROID. -

-

- Can I configure DROID to give more accurate - results? -

-

- Yes. DROID 6 currently makes identifications of files based on scanning a limited amount of - the file. The default configuration is set to 64kb (you can change this in the - Tools>Preferences menu). This is sufficient to return accurate identifications for most - file-types. There are some exceptions, for example in order to identify some uncommon formats - (e.g. SIARD files), you will need to scan more or all of the file. If you choose to increase - the amount of the file that you scan, this is likely to significantly affect the performance - of DROID, particularly if you have numerous large files. -

-

- You can also configure whether DROID should match file extensions on all known formats for a - given file extension, or only on file extensions for which there is no other signature. -  By default, DROID will only match a file extension if there is no other signature - defined, on the grounds that if the other (usually more accurate) signature failed, it is - unlikely to be the file format with that extension.  Sometimes the more accurate - signatures will fail to identify a format (e.g. if a newer version has recently become - available).  In these cases, you may want to turn on matching for all extensions. -  This will tend to produce more identifications for a larger number of files. -  More files will have identifications where they did not before, and more files will - have multiple identifications, instead of a single identification.  Whether this is more - accurate is debatable and will depend on the files and signatures you currently have. -

-

- Can I continue to use the information in - the file system whilst I am profiling it? -

-

- Yes. If you are running DROID over large file stores, it is conceivable that you may need to - leave it running for a number of days or weeks. DROID will profile what is there at the time, - and so over large active locations the results will be gradually built up even while change - is happening. The eventual profile will therefore not reflect the entire state of your system - at any one time, but rather the state of each file or folder at the time DROID profiled - it. -

-

- You don't need to worry about users then changing files in the location that DROID is - profiling; if a file is identified in the file tree but then deleted or moved, it will be - recorded as an error. -

-

- How long does profiling take? -

-

- DROID 6 is much faster than earlier versions of DROID.  However, it depends on how much - and what type of information you are profiling, what level of accuracy you choose and what - information you need to get from the results.  As a general rule, the larger the volume - of data you profile the longer it will take for the profile to complete. However DROID will - also take longer to complete if you chose to: -

-
    -
  • - Analyse the contents of archive files (e.g. zip, gzip, tar, rar) -
  • -
  • - Create an MD5 hash  for each file -
  • -
  • - Increase the number of bytes that DROID scans in order to return an identification -
  • -
  • - Set a delay between identifying files using the throttle (to reduce the load on your - network or servers). -
  • -
-

- You will need to weigh up your requirements for accuracy, speed and what use you want to - make of the profiling information, setting your preferences accordingly before you begin to - profile your information. -

-

- Can I set it up and just leave DROID running? -

-

- Yes. Although you need to ensure that DROID has the correct access permissions to profile - the locations that you have identified. Also, it is good practice to pause and save your - profiling at regular intervals, to ensure that if you experience an unexpected problem (such - as power shortage or the area that DROID is running in is affected) you can pick up your - profiling again without losing all your results so far. -

-

- It is also possible to set up batch files or shell scripts to automate the process and - produce reports when running DROID through the command - line. You should speak to technical specialist in your organisation for more information - about this. -

-

- Will DROID 6 impact on the performance of - my systems? -

-

- Yes, there will be some impact, but this depends on a number of factors.  DROID does - not typically exert a high load on the file systems and networks it is running over, but - this will obviously depend on your particular environment and usages. -

-

- DROID 6 has dynamic throttling (configurable only in the GUI), so if you want to limit - the impact on your systems you can increase the amount of time that DROID pauses between - identifying each file. Because it is dynamic, you can for example slow down the rate at which - DROID works during the day, to reduce the load on your network, then increase its speed in - the evening. Remember that the more you ask DROID to pause, the longer it will take to - complete profiling. -

-

- How much disk space do I need to run DROID? -

-

- DROID needs disk space in its working area to process temporary files, and to record the database of results it builds - up as it profiles.  Profiles can require up to a gigabyte per two million files - processed. -

-

- Are there any limitations to where DROID can - profile? -

-

- You will need to ensure that DROID 6 has the appropriate access permissions to scan the - repositories that it is you have requested. DROID can only profile files held in file systems - or systems which provide a file-system view of its files to your operating system (e.g. a - network share).   -

-

- Does DROID 6 store copies of the files that it is - profiling? -

-

- DROID 6 creates temporary files when profiling inside archival files, such as zip, tar or - gzip files.  These are written out by default as ~tmp files in the .droid6 tmp - directory, unless the temporary folder - area has been configured to be somewhere else.  There are automatic cleanup - processes to remove information from this directory when the temporary file is no longer - needed, however on some occasions (such as if DROID stops unexpectedly), some files may not - be deleted. It is good practice to check this location regularly and remove any ~tmp files - that are no longer required by DROID.  DROID will log a warning if it cannot delete - a temporary file. -

-

- It is not possible to say how much space is required for temporary files while processing, - as this will depend on the size of your archival files and their contents.  DROID also - profiles more than one file at a time, so more than one archival file may be being processed - simultaneously.  It is prudent to ensure that you have enough space in your droid - working area to handle decompressing several archival files at any one point in time. -  If processing very large file systems, we would recommend that at least - 10 gigabytes of disk space should be reserved for temporary file processing, but you may - require more or less depending on your files. -

-

- Why has DROID stopped profiling before - completion? -

-

- This may be for a number of reasons. DROID 6 has crash recovery built in, which means as - long as DROID has sufficient warning that a file system has become unavailable (which it may - not have in some instances, such as a power shortage) it will pause the current profile ready - to be saved and / or resumed at a later date. -

-

- It is good practice to pause and save your profiling at regular intervals, to ensure that if - you experience an unexpected problem (such as power shortage or the area that DROID is - running in is affected) you can pick up your profiling again without losing data. -

-

- Why can't I resume a paused profile? -

-

- Because of the crash-recovery capability built in to DROID, it is important that any of the - top level folders that are selected are not deleted, removed or renamed either during - profiling (if the profile is paused) or before DROID has begun to profile them. This will - cause the profile to pause and you will not be able to be resume it.  This is because - DROID interprets a missing top-level folder as a missing file system, and it automatically - puts the profile into a pause mode to enable you to save your work and to resume when the - file system becomes available again. -

-

- It is best practice to select the highest folder possible when selecting the top-level - folders that you intend to profile and ensure that these are not moved, deleted or - renamed during or before profiling.  If you do experience your profile stopping for this - reason, you can still interrogate the data that you do have.  You can also create a new - profile that contains the remaining top-level items which were not profiled.  Multiple - profiles can be reported on and exported together, so you will achieve the same results. -

-

- Why does filtering on a "Not Done" status give no - results? -

-

- Files or folders which have not yet been processed have a Not Done status in DROID. -  These files and folders have not yet been recorded in the database, only in the - specification of what to eventually profile.  Filtering works by querying the underlying - database in which DROID records its results, therefore filtering on the Not Done status - returns no results, even if there are files and folders visible in the main view which have - not yet been processed. -

-

- Why does opening some filtered folders take a long - time? -

-

- When a filter is applied to a profile, the user interface has to do a lot of work - determining the status of each file or folder in the opening folder.  Folders with lots - of direct files or other folders in them (i.e. many thousands) can take quite a long time to - open.  This does not affect the filtering speed for exporting or reporting, so if you - are having problems opening a large folder with a filter, consider exporting the profile to a - CSV file, or running a report over it, rather than trying to open it in the user interface. -

-

- What can I do if DROID fails to start up? -

-
    -
  • - If DROID fails to start up, you may be running the wrong version of Java. -
  • -
  • - You can try moving, deleting or renaming your .droid6 folder, as described below. -  DROID will recreate a new working folder with all the default files it needs when it - starts up again. -
  • -
  • - Ensure that your installed version of Java is accessible from where DROID is installed. -  From a command-line in your droid installation folder, type "java -version".  If - you don't see the Java version being displayed, you may have to configure the path to your - Java installation.  Please consult the installation instructions for Java for your - operating system for details on how to do this. -
  • -
-

-  Deleting your .droid6 folder -

-

- By default, your .droid6 folder is set to be created in your home directory.  On - Windows, this is often found at C:\Documents and Settings\USERNAME\.droid6, - or C:\Users\USERNAME\.droid6. -   On UNIX systems, this may be found under /home/USERNAME/.droid6 -

-

- If you are running DROID on a Mac or other Linux based system, please note that the - .droid6 folder will be in the same location but will be 'hidden'. Note that Mac - systems do not make hidden files easily accessible from your computer. You can delete the - folder from your machine using the command line.  Please refer to your operating - system instructions for doing this. -

-

-  (Please note: the location of the .droid6 folder is configurable using a batch file or shell script, and may - have been set to a different location on your machine) -

-

- By default, the .droid6 folder contains any downloaded binary and container - signature files, log files, settings, report definitions, and temporary working area, - although some of these can be configured to be in - different locations. Please make sure you no longer require any of this information - before deleting.  However, DROID will recreate all the default information it needs - by default when it runs again, effectively resetting to a new installation. -

-

-   -

- - - - - -
- Welcome to DROID - -   -
-
-    -
- - + + + + + + FAQ + + + + + + + +
+ + +
+ Frequently Asked Questions +
+
+ + + + + +
+ Welcome to DROID + +   +
+ +

+ What version of Java do I need? +

+

+ You will need to have Java 7 or 8 installed on your machine in order to run DROID 6.3. + The latest JAVA updates can be obtained from oracle.com/technetwork/java/index.html. +

+

+ Can I open profiles created in earlier + versions of DROID? +

+

+ No. Because of the expanded functionality incorporated in to DROID 6, you will not be able + to load profiles from previous versions in DROID 6, and vice-versa.  If you need to + re-analyse results in DROID 6 which were already obtained in earlier versions of DROID, you + will have to re-profile your files using DROID 6. +

+

+ Why isn't DROID recognising certain + formats? +

+

+ DROID can only recognise files for which there is a defined signature or known extension. +  Signatures are regularly updated by the National Archives, and DROID can download them + to improve the range of formats it can identify.  In some cases, an existing signature + may fail to recognise a file because the file is unusual in some way.  If you know of + such files, please email pronom@nationalarchives.gov.uk so we can develop better + signatures.  Note that we usually require a sample of a failing file to find out + why it is not being recognised.  Please make sure that there is no sensitive or personal + content in such files before sending them. +

+

+ Why are some file times an hour different to those on my + system? +

+

+ DROID does not record or display dates and times using local daylight savings + time, if any is configured on your system.  The underlying dates and times are correct, + but represented as universal time.  This means that, if your operating system is + configured to display times using daylight savings time settings, then some times can appear + to be one hour different to those displayed in DROID. +

+

+ Can I configure DROID to give more accurate + results? +

+

+ Yes. DROID 6 currently makes identifications of files based on scanning a limited amount of + the file. The default configuration is set to 64kb (you can change this in the + Tools>Preferences menu). This is sufficient to return accurate identifications for most + file-types. There are some exceptions, for example in order to identify some uncommon formats + (e.g. SIARD files), you will need to scan more or all of the file. If you choose to increase + the amount of the file that you scan, this is likely to significantly affect the performance + of DROID, particularly if you have numerous large files. +

+

+ You can also configure whether DROID should match file extensions on all known formats for a + given file extension, or only on file extensions for which there is no other signature. +  By default, DROID will only match a file extension if there is no other signature + defined, on the grounds that if the other (usually more accurate) signature failed, it is + unlikely to be the file format with that extension.  Sometimes the more accurate + signatures will fail to identify a format (e.g. if a newer version has recently become + available).  In these cases, you may want to turn on matching for all extensions. +  This will tend to produce more identifications for a larger number of files. +  More files will have identifications where they did not before, and more files will + have multiple identifications, instead of a single identification.  Whether this is more + accurate is debatable and will depend on the files and signatures you currently have. +

+

+ Can I continue to use the information in + the file system whilst I am profiling it? +

+

+ Yes. If you are running DROID over large file stores, it is conceivable that you may need to + leave it running for a number of days or weeks. DROID will profile what is there at the time, + and so over large active locations the results will be gradually built up even while change + is happening. The eventual profile will therefore not reflect the entire state of your system + at any one time, but rather the state of each file or folder at the time DROID profiled + it. +

+

+ You don't need to worry about users then changing files in the location that DROID is + profiling; if a file is identified in the file tree but then deleted or moved, it will be + recorded as an error. +

+

+ How long does profiling take? +

+

+ DROID 6 is much faster than earlier versions of DROID.  However, it depends on how much + and what type of information you are profiling, what level of accuracy you choose and what + information you need to get from the results.  As a general rule, the larger the volume + of data you profile the longer it will take for the profile to complete. However DROID will + also take longer to complete if you chose to: +

+
    +
  • + Analyse the contents of archive files (e.g. zip, gzip, tar, rar) +
  • +
  • + Create an MD5 hash  for each file +
  • +
  • + Increase the number of bytes that DROID scans in order to return an identification +
  • +
  • + Set a delay between identifying files using the throttle (to reduce the load on your + network or servers). +
  • +
+

+ You will need to weigh up your requirements for accuracy, speed and what use you want to + make of the profiling information, setting your preferences accordingly before you begin to + profile your information. +

+

+ Can I set it up and just leave DROID running? +

+

+ Yes. Although you need to ensure that DROID has the correct access permissions to profile + the locations that you have identified. Also, it is good practice to pause and save your + profiling at regular intervals, to ensure that if you experience an unexpected problem (such + as power shortage or the area that DROID is running in is affected) you can pick up your + profiling again without losing all your results so far. +

+

+ It is also possible to set up batch files or shell scripts to automate the process and + produce reports when running DROID through the command + line. You should speak to technical specialist in your organisation for more information + about this. +

+

+ Will DROID 6 impact on the performance of + my systems? +

+

+ Yes, there will be some impact, but this depends on a number of factors.  DROID does + not typically exert a high load on the file systems and networks it is running over, but + this will obviously depend on your particular environment and usages. +

+

+ DROID 6 has dynamic throttling (configurable only in the GUI), so if you want to limit + the impact on your systems you can increase the amount of time that DROID pauses between + identifying each file. Because it is dynamic, you can for example slow down the rate at which + DROID works during the day, to reduce the load on your network, then increase its speed in + the evening. Remember that the more you ask DROID to pause, the longer it will take to + complete profiling. +

+

+ How much disk space do I need to run DROID? +

+

+ DROID needs disk space in its working area to process temporary files, and to record the database of results it builds + up as it profiles.  Profiles can require up to a gigabyte per two million files + processed. +

+

+ Are there any limitations to where DROID can + profile? +

+

+ You will need to ensure that DROID 6 has the appropriate access permissions to scan the + repositories that it is you have requested. DROID can only profile files held in file systems + or systems which provide a file-system view of its files to your operating system (e.g. a + network share).   +

+

+ Does DROID 6 store copies of the files that it is + profiling? +

+

+ DROID 6 creates temporary files when profiling inside archival files, such as zip, tar or + gzip files.  These are written out by default as ~tmp files in the .droid6 tmp + directory, unless the temporary folder + area has been configured to be somewhere else.  There are automatic cleanup + processes to remove information from this directory when the temporary file is no longer + needed, however on some occasions (such as if DROID stops unexpectedly), some files may not + be deleted. It is good practice to check this location regularly and remove any ~tmp files + that are no longer required by DROID.  DROID will log a warning if it cannot delete + a temporary file. +

+

+ It is not possible to say how much space is required for temporary files while processing, + as this will depend on the size of your archival files and their contents.  DROID also + profiles more than one file at a time, so more than one archival file may be being processed + simultaneously.  It is prudent to ensure that you have enough space in your droid + working area to handle decompressing several archival files at any one point in time. +  If processing very large file systems, we would recommend that at least + 10 gigabytes of disk space should be reserved for temporary file processing, but you may + require more or less depending on your files. +

+

+ Why has DROID stopped profiling before + completion? +

+

+ This may be for a number of reasons. DROID 6 has crash recovery built in, which means as + long as DROID has sufficient warning that a file system has become unavailable (which it may + not have in some instances, such as a power shortage) it will pause the current profile ready + to be saved and / or resumed at a later date. +

+

+ It is good practice to pause and save your profiling at regular intervals, to ensure that if + you experience an unexpected problem (such as power shortage or the area that DROID is + running in is affected) you can pick up your profiling again without losing data. +

+

+ Why can't I resume a paused profile? +

+

+ Because of the crash-recovery capability built in to DROID, it is important that any of the + top level folders that are selected are not deleted, removed or renamed either during + profiling (if the profile is paused) or before DROID has begun to profile them. This will + cause the profile to pause and you will not be able to be resume it.  This is because + DROID interprets a missing top-level folder as a missing file system, and it automatically + puts the profile into a pause mode to enable you to save your work and to resume when the + file system becomes available again. +

+

+ It is best practice to select the highest folder possible when selecting the top-level + folders that you intend to profile and ensure that these are not moved, deleted or + renamed during or before profiling.  If you do experience your profile stopping for this + reason, you can still interrogate the data that you do have.  You can also create a new + profile that contains the remaining top-level items which were not profiled.  Multiple + profiles can be reported on and exported together, so you will achieve the same results. +

+

+ Why does filtering on a "Not Done" status give no + results? +

+

+ Files or folders which have not yet been processed have a Not Done status in DROID. +  These files and folders have not yet been recorded in the database, only in the + specification of what to eventually profile.  Filtering works by querying the underlying + database in which DROID records its results, therefore filtering on the Not Done status + returns no results, even if there are files and folders visible in the main view which have + not yet been processed. +

+

+ Why does opening some filtered folders take a long + time? +

+

+ When a filter is applied to a profile, the user interface has to do a lot of work + determining the status of each file or folder in the opening folder.  Folders with lots + of direct files or other folders in them (i.e. many thousands) can take quite a long time to + open.  This does not affect the filtering speed for exporting or reporting, so if you + are having problems opening a large folder with a filter, consider exporting the profile to a + CSV file, or running a report over it, rather than trying to open it in the user interface. +

+

+ What can I do if DROID fails to start up? +

+
    +
  • + If DROID fails to start up, you may be running the wrong version of Java. +
  • +
  • + You can try moving, deleting or renaming your .droid6 folder, as described below. +  DROID will recreate a new working folder with all the default files it needs when it + starts up again. +
  • +
  • + Ensure that your installed version of Java is accessible from where DROID is installed. +  From a command-line in your droid installation folder, type "java -version".  If + you don't see the Java version being displayed, you may have to configure the path to your + Java installation.  Please consult the installation instructions for Java for your + operating system for details on how to do this. +
  • +
+

+  Deleting your .droid6 folder +

+

+ By default, your .droid6 folder is set to be created in your home directory.  On + Windows, this is often found at C:\Documents and Settings\USERNAME\.droid6, + or C:\Users\USERNAME\.droid6. +   On UNIX systems, this may be found under /home/USERNAME/.droid6 +

+

+ If you are running DROID on a Mac or other Linux based system, please note that the + .droid6 folder will be in the same location but will be 'hidden'. Note that Mac + systems do not make hidden files easily accessible from your computer. You can delete the + folder from your machine using the command line.  Please refer to your operating + system instructions for doing this. +

+

+  (Please note: the location of the .droid6 folder is configurable using a batch file or shell script, and may + have been set to a different location on your machine) +

+

+ By default, the .droid6 folder contains any downloaded binary and container + signature files, log files, settings, report definitions, and temporary working area, + although some of these can be configured to be in + different locations. Please make sure you no longer require any of this information + before deleting.  However, DROID will recreate all the default information it needs + by default when it runs again, effectively resetting to a new installation. +

+

+   +

+ + + + + +
+ Welcome to DROID + +   +
+
+    +
+ + diff --git a/droid-help/src/main/resources/Web pages/Information collected by DROID.html b/droid-help/src/main/resources/Web pages/Information collected by DROID.html index ad441c837..88430a828 100644 --- a/droid-help/src/main/resources/Web pages/Information collected by DROID.html +++ b/droid-help/src/main/resources/Web pages/Information collected by DROID.html @@ -1,818 +1,817 @@ - - - - - - Information collected by DROID - - - - - - - -
- - -
- Information collected by DROID -
-
- - - - - - -
- Welcome to DROID - - Filter your - results - - Report on - your results -
-

- DROID collects a variety of information about - your files and folders, including: -

-

-   -

- - - - - - - - - - - - - - - - - - - - - -
- Type - - File name - - File name extension -
- Extension mismatch - warning - - Location - - File size -
- Last modified date - - Number of format - identifications - - File formats -
- Identification method - - Content hash - - Status -
-

-   -

- - - - - -
- Type - - top -
-

- DROID categorises the files and folders it profiles as being one of three types: -

-
    -
  • - -  file                                           -
  • -
  • - -  folder                                       -
  • -
  • -  archival file -
  • -
-

- Files have format identifications, but do not have other files or folders inside - them. Folders do not have any format identifications or sizes, but can contain other - folders, files and archival files inside them. Archival files are like folders, in - that they can contain other folders, files and archival files inside them, but they are also - files, so they have format identifications and a file size. In this version, DROID can look - inside zip, tar and gzip archival files.  Archival files may have other archival files - nested inside them.  DROID will also profile inside these, and in any further nested - archival files. -

-

-   -

- - - - - -
- File name - - top -
-

- The name of a file, folder or archival file is its name, independent of its location on a - disk or inside an archival file. The file name extension (if any) is part of its name. DROID - treats all filenames as case-sensitive. For example, - 'MYDOCUMENT.DOC' and 'mydocument.doc' are regarded as different file names. -

-

-   -

- - - - - -
- File name - extension - - top -
-

- File extensions are a convention to indicate the broad type of a file (or archival file) by - appending a short string to a file name, separated by a full stop.  On Microsoft - Windows, the filename extension is used to indicate to the operating system what application - to run when double-clicking on the file.  Other operating systems do not use the - filename extension to determine which application to use.  However, filename extensions - have become a de-facto standard for indicating the broad type of a file format, and are - usually appended to filenames, even when a file is created on other platforms. -

-

- DROID extracts the file extension (if any) from a file name or archival file name and stores - it separately, to facilitate reporting, sorting and filtering on the extension alone.  -

-

- File names which begin with a full stop and have no other full stops in them are not - regarded as having an extension. For example, a file called '.myfile' has a filename of - '.myfile' and a blank extension, whereas '.myfile.doc' has a file name of '.myfile.doc' and - an extension of '.doc'.   This is because file names starting with a full stop are - hidden files in unix file systems, and also because it is not likely that a file name - would be entirely composed of a file extension, with no name before it. -

-

- DROID treats file extensions as case sensitive. However, it converts - all file extensions to lower-case to facilitate filtering and reporting. -

-

-   -

- - - - - -
-  File name extension mismatch warning - - top -
-

- Sometimes file extensions are incorrect for the type of the file, or are missing where there - should be one. If DROID detects that the file extension for a file name does not match the - formats it has identified, it will issue a file extension mismatch warning. For example, if a - file called 'myfile.doc' is identified as a spreadsheet, then a file extension mismatch - warning will be issued. -

-

- In the graphical user interface, extension mismatch warnings appear as a warning symbol  against the file extension itself.  When - exported to a CSV file, it will appear as a True or False value in its own column. -

-

-   -

- - - - - -
- Location - - top -
-

- DROID records the location of every file and folder it profiles. It records location in two - ways, using a file Uniform Resource - Indicator (URI) , and a file path where one - exists. Like file names and extensions, DROID treats file paths and URIs as case sensitive. -

-

- There are two ways of recording location because not all files and folders have a file path, - although this is the usual method of identifying location in a file system. Any file, folder - or archival file which is inside another archival file does not have a defined file path, as - it is inside the archival file, not directly in the file system.  -

-

- For example, if we have: -

-
    -
  1. - a folder called 'Folder' on the 'C:\' drive of a Windows computer -
  2. -
  3. - a file called 'Document.doc' inside 'Folder', -
  4. -
  5. - an archival file called 'Archive.zip' inside 'Folder' -
  6. -
  7. - a spreadsheet called 'Spreadsheet.xls' inside 'Archive.zip' -
  8. -
  9. - a folder called 'Another folder' inside 'Archive.zip' -
  10. -
  11. - a picture called 'Large picture.jpg' inside 'Another folder' -
  12. -
-

- Then we have the following file paths and URIs: -

-

-   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

-   -

-
-

- File path -

-
-

- Uniform Resource Indicator (URI) -

-
-

- 1 -

-
-

- C:\Folder -

-
-

- file:/C:/Folder/ -

-
-

- 2 -

-
-

- C:\Folder\Document.doc -

-
-

- file:/C:/Folder/Document.doc -

-
-

- 3 -

-
-

- C:\Folder\Archive.zip -

-
-

- file:/C:/Folder/Archive.zip -

-
-

- 4 -

-
-

-   -

-
-

- zip:/file:/C:/Folder/Archive.zip!Spreadsheet.xls -

-
-

- 5 -

-
-

-   -

-
-

- zip:/file:/C:/Folder/Archive.zip!Another%20folder/ -

-
-

- 6 -

-
-

-   -

-
-

- zip:/file:/C:/Folder/Archive.zip!Another%20folder/Large%20picture.jpg -

-
-

-   -

-

- Only files, archival files or folders which are directly accessible in the file system have - a file path. Those files and folders which are inside the zip file do not have a file path, - but do have a URI, which tells you that they are inside the zip file, where they can be found - in it, and where the zip file they are inside is to be found. -

-

- The prefixes of a URI tell you what sort of resource is being described by the URI, and the - exclamation marks indicate where one type of resource is contained by another. For example, - for 'Spreadsheet.xls', we can see that there is a file, C:/Folder/Archive.zip, with the - prefix file:/. The exclamation mark (!) tells us that the spreadsheet is contained by the Archive.zip file, and - the first prefix zip:/ tells us the type of the containment is a - zip file. Note that spaces in URIs are encoded by '%20', and - folder separators are always forward slashes.  If zip files are contained inside zip - files, inside zip files, more prefixes and exclamation marks are added as needed. -

-

- URIs mean that all resources profiled by DROID have a unique reference which tells you - where the resource is, even if it is inside an archival file, inside another archival file, - and so on.  This is something that file paths cannot do.  However, both are - provided, as working with file paths is easier, where they exist for a resource. -

-

-   -

- - - - - -
- File size - - top -
-

- The size of a file or archival file is recorded as the number of bytes used by the file. - Files can have a size of zero (no content, just a record in the file system). Folders do not - have a size. -

-

- The size of an archival file is the size of the archival file itself, not the sum of the - sizes of its contents. For example, zip files compress their contents, so the sum of the - sizes of the files inside a zip file will be bigger than the size of the archival file - itself. -

-

-   -

- - - - - -
- Last modified date and - time - - top -
-

- Most files, folders and archival files record the date and time on which they were last - modified. This is not the same as the date a file was originally created, or the date on - which a file was last read. Unfortunately, due to limitations in Java 6, DROID can only - acquire the last modified date, even though the other dates may be present on the file - system. -

-

- It is possible that not every file, folder or archival file will have a last modified date. - For example, in some cases, resources inside archival files may not record this date. -

-

- It is important to note that last-modified dates can be changed when files are copied from - one server to another, so this date may not reflect the last date a user actively modified - the content of a file. Also, the content of a file (the data within it) may actually be older - than the file itself if a file was copied, or simply typed up manually from an older piece - of content. -

-

- Some files may have noticeably inaccurate dates, e.g. 1 Jan 1970. In this case, the files - will be newer than indicated. This error will likely be caused by the battery failing on the - internal clock of the computer from which the document was uploaded, or some other error - which caused the date to be set incorrectly.   -

-

-   -

- - - - - -
- Number of - format identifications - - top -
-

- DROID attempts to identify the format of files, including archival files, but not folders. - The number of identifications DROID records for a file can vary. It can have -

-
    -
  • -  zero, if DROID can't identify a - format at all. -
  • -
  • -  one, if it is unambiguously - identified as a single format. -
  • -
  • - (2)  more than one, if DROID can't - unambiguously decide what format it is in. -
  • -
-

- In the user interface, the number in brackets indicates the number of possible format - identifications made.  Clicking on the link will bring up a window showing all the - identifications in a table.   Multiple possible identifications can happen for - three reasons. -

-
    -
  1. - A format is identified purely on the basis of its file extension, so multiple versions of a - file format may match the same extension. -
  2. -
  3. - A format has several versions which are very similar and hard for DROID to distinguish - between, so DROID will simply report all the possible versions. -
  4. -
  5. - A file may contain patterns, purely by chance, which appear in more than one file - format.  -
  6. -
-

-   -

- - - - - -
- File formats - - top -
-

- When DROID identifies a file format, it records four pieces of information: -

-
    -
  • - format name -
  • -
  • - format version -
  • -
  • - PRONOM Unique Identifier (PUID) -
  • -
  • - mime-type. -
  • -
-

- The format name is simply a human-readable name given to a file format or family of file - formats, for example, 'Microsoft Word'. The format version is the version of the format, for - example '97-2003'. The PUID is a globally unique, persistent identifier for a file format and - version, assigned by the National Archives through its PRONOM file format registry. For example, the PUID for the 'Microsoft Word 97-2003' - file format is 'fmt/40'. -

-

- PUIDs are guaranteed never to change, although new PUIDs may be defined. Clicking on a PUID - in DROID will take you to the relevant page for that file format on the National Archives - PRONOM website.  The website will also help you with some file format names that you may - be unfamiliar with. In particular, you may see files identified as 'OLE2 Compound Document - Format' (PUID fmt/111) which you can interpret as 'Microsoft Office generic' . In these - cases, the file is a Microsoft Office file which DROID could not identify any more closely, - but the file extension may indicate more precisely.  -

-

- Finally, the mime-type is another scheme for identifying broad types of files in use on the - internet. They are assigned by a body called the Internet Assigned Numbers Authority.  Mime-types are quite broad classifications, so - many different file formats will have the same mime-type. For example, the mime-type for - 'fmt/40' is 'application/msword' which is shared by all other binary Microsoft Word - formats. -

-

-   -

- - - - - -
- Identification method - - top -
-

- DROID has three different methods of identifying file formats: -

-
    -
  • - extension -
  • -
  • - signature -
  • -
  • - container. -
  • -
-

- An 'extension' identification means that a format was identified purely on the basis - of its file extension. Such an identification may not be reliable, as files can be named in - any way, and extensions do not identify formats down to the version level, so such - identifications can be quite broad, and may result in multiple identifications. -

-

- A 'signature' identification means that a format was identified by finding signature - patterns inside the file which are known to occur in particular file formats and versions. - This method is quite reliable, as it is fairly unlikely that by chance a file will happen to - have a pattern belonging to a different file format than its own. -

-

- A 'container' identification means that a format was identified by finding embedded - files (possibly with signatures of their own) inside the main file. For example, Microsoft - Office 2007 word processing files are actually zip files containing xml files, images or - other resources used in the document. A container identification would identify the main file - as a Microsoft Office 2007 file, not a zip file. This method is very reliable, as not only - does the broad type of container have to be identified (e.g. zip), but the zip file must then - be opened, and files inside scanned for further identifications to be made.  The - original zip identification is removed, and replaced by the Office 2007 identification, on - the basis of the files discovered within it. -

-

- Note that this is not the same as profiling files inside Archival files, even though - container-format files may be based on an archival format like zip.  A container-format - is a single file format, whose specification relies on specific files being inside it to - define the overarching format. An archival file format is a format whose only purpose is to - contain other files, and the particular files inside it has no effect on its identification - as an archival format. -

-

-   -

- - - - - -
- Content hash - - top -
-

- DROID can optionally generate a content hash of the contents of each file and archival file, - using the industry standard 'MD5' 'SHA1' or 'SHA256' algorithms. A content hash is a short signature that - can be used to identify the content of the file. It is extremely unlikely that two different - files will have the same content hash (although this is a remote possibility).   -

-

- Content hashes can be used to detect files with duplicate content, or can be linked to - forensic hash databases to find or exclude files which are widely used (and therefore not - unique to your organisation) or which contain illegal content.  See "Detecting duplicate files" for more information. -

-

- Content hashing is turned off by default, as producing a hash requires reading the entire - file, which will slow down DROID significantly.  -

-

-   -

- - - - - -
- Status - - top -
-

- As DROID profiles your files and folders, it records whether the profiling was successful or - not. There are four different statuses which a file or folder can have: -

-

-   -

- - - - - - - - - - - - - - - - - -
-       Done - - The file or folder was read successfully and any results found recorded. -
-  Not found - - The file or folder was moved or deleted before it could be profiled. -
-  Access denied - - The operating system refused read access to DROID.  You will have to grant read - permission to those files or folders if you want DROID to profile them. -
-  Error - - An error occurred while trying to read the file.  You may be able to determine the - cause of the error by examining DROID's log files. -
-

-   -

-

- In the user interface, these status icons are overlaid on the files, folders and archival - files as needed.   -

-

-   -

- - - - - -
- Case - Sensitivity - - top -
-

- All text collected by DROID is treated case sensitively, so upper case and lower case text - is regarded as different.  This is due to limitations of the underlying database, which - must either be entirely case sensitive, or entirely case insensitive.  DROID requires - some fields in its database to be case sensitive in order to operate properly, which means we - cannot make only some information case insensitive, even where it might be more useful - to do so.  -

- - - - - - -
- Welcome to DROID - - Filter your - results - - Report on - your results -
-
-     -
- - + + + + + + Information collected by DROID + + + + + + + +
+ + +
+ Information collected by DROID +
+
+ + + + + + +
+ Welcome to DROID + + Filter your + results + + Report on + your results +
+

+ DROID collects a variety of information about + your files and folders, including: +

+

+   +

+ + + + + + + + + + + + + + + + + + + + + +
+ Type + + File name + + File name extension +
+ Extension mismatch + warning + + Location + + File size +
+ Last modified date + + Number of format + identifications + + File formats +
+ Identification method + + Content hash + + Status +
+

+   +

+ + + + + +
+ Type + + top +
+

+ DROID categorises the files and folders it profiles as being one of three types: +

+
    +
  • + +  file                                           +
  • +
  • + +  folder                                       +
  • +
  • +  archival file +
  • +
+

+ Files have format identifications, but do not have other files or folders inside + them. Folders do not have any format identifications or sizes, but can contain other + folders, files and archival files inside them. Archival files are like folders, in + that they can contain other folders, files and archival files inside them, but they are also + files, so they have format identifications and a file size. In this version, DROID can look + inside zip, tar and gzip archival files.  Archival files may have other archival files + nested inside them.  DROID will also profile inside these, and in any further nested + archival files. +

+

+   +

+ + + + + +
+ File name + + top +
+

+ The name of a file, folder or archival file is its name, independent of its location on a + disk or inside an archival file. The file name extension (if any) is part of its name. DROID + treats all filenames as case-sensitive. For example, + 'MYDOCUMENT.DOC' and 'mydocument.doc' are regarded as different file names. +

+

+   +

+ + + + + +
+ File name + extension + + top +
+

+ File extensions are a convention to indicate the broad type of a file (or archival file) by + appending a short string to a file name, separated by a full stop.  On Microsoft + Windows, the filename extension is used to indicate to the operating system what application + to run when double-clicking on the file.  Other operating systems do not use the + filename extension to determine which application to use.  However, filename extensions + have become a de-facto standard for indicating the broad type of a file format, and are + usually appended to filenames, even when a file is created on other platforms. +

+

+ DROID extracts the file extension (if any) from a file name or archival file name and stores + it separately, to facilitate reporting, sorting and filtering on the extension alone.  +

+

+ File names which begin with a full stop and have no other full stops in them are not + regarded as having an extension. For example, a file called '.myfile' has a filename of + '.myfile' and a blank extension, whereas '.myfile.doc' has a file name of '.myfile.doc' and + an extension of '.doc'.   This is because file names starting with a full stop are + hidden files in unix file systems, and also because it is not likely that a file name + would be entirely composed of a file extension, with no name before it. +

+

+ DROID treats file extensions as case sensitive. However, it converts + all file extensions to lower-case to facilitate filtering and reporting. +

+

+   +

+ + + + + +
+  File name extension mismatch warning + + top +
+

+ Sometimes file extensions are incorrect for the type of the file, or are missing where there + should be one. If DROID detects that the file extension for a file name does not match the + formats it has identified, it will issue a file extension mismatch warning. For example, if a + file called 'myfile.doc' is identified as a spreadsheet, then a file extension mismatch + warning will be issued. +

+

+ In the graphical user interface, extension mismatch warnings appear as a warning symbol  against the file extension itself.  When + exported to a CSV file, it will appear as a True or False value in its own column. +

+

+   +

+ + + + + +
+ Location + + top +
+

+ DROID records the location of every file and folder it profiles. It records location in two + ways, using a file Uniform Resource + Indicator (URI) , and a file path where one + exists. Like file names and extensions, DROID treats file paths and URIs as case sensitive. +

+

+ There are two ways of recording location because not all files and folders have a file path, + although this is the usual method of identifying location in a file system. Any file, folder + or archival file which is inside another archival file does not have a defined file path, as + it is inside the archival file, not directly in the file system.  +

+

+ For example, if we have: +

+
    +
  1. + a folder called 'Folder' on the 'C:\' drive of a Windows computer +
  2. +
  3. + a file called 'Document.doc' inside 'Folder', +
  4. +
  5. + an archival file called 'Archive.zip' inside 'Folder' +
  6. +
  7. + a spreadsheet called 'Spreadsheet.xls' inside 'Archive.zip' +
  8. +
  9. + a folder called 'Another folder' inside 'Archive.zip' +
  10. +
  11. + a picture called 'Large picture.jpg' inside 'Another folder' +
  12. +
+

+ Then we have the following file paths and URIs: +

+

+   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+   +

+
+

+ File path +

+
+

+ Uniform Resource Indicator (URI) +

+
+

+ 1 +

+
+

+ C:\Folder +

+
+

+ file:/C:/Folder/ +

+
+

+ 2 +

+
+

+ C:\Folder\Document.doc +

+
+

+ file:/C:/Folder/Document.doc +

+
+

+ 3 +

+
+

+ C:\Folder\Archive.zip +

+
+

+ file:/C:/Folder/Archive.zip +

+
+

+ 4 +

+
+

+   +

+
+

+ zip:/file:/C:/Folder/Archive.zip!Spreadsheet.xls +

+
+

+ 5 +

+
+

+   +

+
+

+ zip:/file:/C:/Folder/Archive.zip!Another%20folder/ +

+
+

+ 6 +

+
+

+   +

+
+

+ zip:/file:/C:/Folder/Archive.zip!Another%20folder/Large%20picture.jpg +

+
+

+   +

+

+ Only files, archival files or folders which are directly accessible in the file system have + a file path. Those files and folders which are inside the zip file do not have a file path, + but do have a URI, which tells you that they are inside the zip file, where they can be found + in it, and where the zip file they are inside is to be found. +

+

+ The prefixes of a URI tell you what sort of resource is being described by the URI, and the + exclamation marks indicate where one type of resource is contained by another. For example, + for 'Spreadsheet.xls', we can see that there is a file, C:/Folder/Archive.zip, with the + prefix file:/. The exclamation mark (!) tells us that the spreadsheet is contained by the Archive.zip file, and + the first prefix zip:/ tells us the type of the containment is a + zip file. Note that spaces in URIs are encoded by '%20', and + folder separators are always forward slashes.  If zip files are contained inside zip + files, inside zip files, more prefixes and exclamation marks are added as needed. +

+

+ URIs mean that all resources profiled by DROID have a unique reference which tells you + where the resource is, even if it is inside an archival file, inside another archival file, + and so on.  This is something that file paths cannot do.  However, both are + provided, as working with file paths is easier, where they exist for a resource. +

+

+   +

+ + + + + +
+ File size + + top +
+

+ The size of a file or archival file is recorded as the number of bytes used by the file. + Files can have a size of zero (no content, just a record in the file system). Folders do not + have a size. +

+

+ The size of an archival file is the size of the archival file itself, not the sum of the + sizes of its contents. For example, zip files compress their contents, so the sum of the + sizes of the files inside a zip file will be bigger than the size of the archival file + itself. +

+

+   +

+ + + + + +
+ Last modified date and + time + + top +
+

+ Most files, folders and archival files record the date and time on which they were last + modified. This is not the same as the date a file was originally created, or the date on + which a file was last read. Unfortunately, due to limitations in Java 6, DROID can only + acquire the last modified date, even though the other dates may be present on the file + system. +

+

+ It is possible that not every file, folder or archival file will have a last modified date. + For example, in some cases, resources inside archival files may not record this date. +

+

+ It is important to note that last-modified dates can be changed when files are copied from + one server to another, so this date may not reflect the last date a user actively modified + the content of a file. Also, the content of a file (the data within it) may actually be older + than the file itself if a file was copied, or simply typed up manually from an older piece + of content. +

+

+ Some files may have noticeably inaccurate dates, e.g. 1 Jan 1970. In this case, the files + will be newer than indicated. This error will likely be caused by the battery failing on the + internal clock of the computer from which the document was uploaded, or some other error + which caused the date to be set incorrectly.   +

+

+   +

+ + + + + +
+ Number of + format identifications + + top +
+

+ DROID attempts to identify the format of files, including archival files, but not folders. + The number of identifications DROID records for a file can vary. It can have +

+
    +
  • +  zero, if DROID can't identify a + format at all. +
  • +
  • +  one, if it is unambiguously + identified as a single format. +
  • +
  • + (2)  more than one, if DROID can't + unambiguously decide what format it is in. +
  • +
+

+ In the user interface, the number in brackets indicates the number of possible format + identifications made.  Clicking on the link will bring up a window showing all the + identifications in a table.   Multiple possible identifications can happen for + three reasons. +

+
    +
  1. + A format is identified purely on the basis of its file extension, so multiple versions of a + file format may match the same extension. +
  2. +
  3. + A format has several versions which are very similar and hard for DROID to distinguish + between, so DROID will simply report all the possible versions. +
  4. +
  5. + A file may contain patterns, purely by chance, which appear in more than one file + format.  +
  6. +
+

+   +

+ + + + + +
+ File formats + + top +
+

+ When DROID identifies a file format, it records four pieces of information: +

+
    +
  • + format name +
  • +
  • + format version +
  • +
  • + PRONOM Unique Identifier (PUID) +
  • +
  • + mime-type. +
  • +
+

+ The format name is simply a human-readable name given to a file format or family of file + formats, for example, 'Microsoft Word'. The format version is the version of the format, for + example '97-2003'. The PUID is a globally unique, persistent identifier for a file format and + version, assigned by the National Archives through its PRONOM file format registry. For example, the PUID for the 'Microsoft Word 97-2003' + file format is 'fmt/40'. +

+

+ PUIDs are guaranteed never to change, although new PUIDs may be defined. Clicking on a PUID + in DROID will take you to the relevant page for that file format on the National Archives + PRONOM website.  The website will also help you with some file format names that you may + be unfamiliar with. In particular, you may see files identified as 'OLE2 Compound Document + Format' (PUID fmt/111) which you can interpret as 'Microsoft Office generic' . In these + cases, the file is a Microsoft Office file which DROID could not identify any more closely, + but the file extension may indicate more precisely.  +

+

+ Finally, the mime-type is another scheme for identifying broad types of files in use on the + internet. They are assigned by a body called the Internet Assigned Numbers Authority.  Mime-types are quite broad classifications, so + many different file formats will have the same mime-type. For example, the mime-type for + 'fmt/40' is 'application/msword' which is shared by all other binary Microsoft Word + formats. +

+

+   +

+ + + + + +
+ Identification method + + top +
+

+ DROID has three different methods of identifying file formats: +

+
    +
  • + extension +
  • +
  • + signature +
  • +
  • + container. +
  • +
+

+ An 'extension' identification means that a format was identified purely on the basis + of its file extension. Such an identification may not be reliable, as files can be named in + any way, and extensions do not identify formats down to the version level, so such + identifications can be quite broad, and may result in multiple identifications. +

+

+ A 'signature' identification means that a format was identified by finding signature + patterns inside the file which are known to occur in particular file formats and versions. + This method is quite reliable, as it is fairly unlikely that by chance a file will happen to + have a pattern belonging to a different file format than its own. +

+

+ A 'container' identification means that a format was identified by finding embedded + files (possibly with signatures of their own) inside the main file. For example, Microsoft + Office 2007 word processing files are actually zip files containing xml files, images or + other resources used in the document. A container identification would identify the main file + as a Microsoft Office 2007 file, not a zip file. This method is very reliable, as not only + does the broad type of container have to be identified (e.g. zip), but the zip file must then + be opened, and files inside scanned for further identifications to be made.  The + original zip identification is removed, and replaced by the Office 2007 identification, on + the basis of the files discovered within it. +

+

+ Note that this is not the same as profiling files inside Archival files, even though + container-format files may be based on an archival format like zip.  A container-format + is a single file format, whose specification relies on specific files being inside it to + define the overarching format. An archival file format is a format whose only purpose is to + contain other files, and the particular files inside it has no effect on its identification + as an archival format. +

+

+   +

+ + + + + +
+ Content hash + + top +
+

+ DROID can optionally generate a content hash of the contents of each file and archival file, + using the industry standard 'MD5' 'SHA1' or 'SHA256' algorithms. A content hash is a short signature that + can be used to identify the content of the file. It is extremely unlikely that two different + files will have the same content hash (although this is a remote possibility).   +

+

+ Content hashes can be used to detect files with duplicate content, or can be linked to + forensic hash databases to find or exclude files which are widely used (and therefore not + unique to your organisation) or which contain illegal content.  See "Detecting duplicate files" for more information. +

+

+ Content hashing is turned off by default, as producing a hash requires reading the entire + file, which will slow down DROID significantly.  +

+

+   +

+ + + + + +
+ Status + + top +
+

+ As DROID profiles your files and folders, it records whether the profiling was successful or + not. There are four different statuses which a file or folder can have: +

+

+   +

+ + + + + + + + + + + + + + + + + +
+       Done + + The file or folder was read successfully and any results found recorded. +
+  Not found + + The file or folder was moved or deleted before it could be profiled. +
+  Access denied + + The operating system refused read access to DROID.  You will have to grant read + permission to those files or folders if you want DROID to profile them. +
+  Error + + An error occurred while trying to read the file.  You may be able to determine the + cause of the error by examining DROID's log files. +
+

+   +

+

+ In the user interface, these status icons are overlaid on the files, folders and archival + files as needed.   +

+

+   +

+ + + + + +
+ Case + Sensitivity + + top +
+

+ All text collected by DROID is treated case sensitively, so upper case and lower case text + is regarded as different.  This is due to limitations of the underlying database, which + must either be entirely case sensitive, or entirely case insensitive.  DROID requires + some fields in its database to be case sensitive in order to operate properly, which means we + cannot make only some information case insensitive, even where it might be more useful + to do so.  +

+ + + + + + +
+ Welcome to DROID + + Filter your + results + + Report on + your results +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/License.html b/droid-help/src/main/resources/Web pages/License.html index df8c9df43..eeacc3fb7 100644 --- a/droid-help/src/main/resources/Web pages/License.html +++ b/droid-help/src/main/resources/Web pages/License.html @@ -1,138 +1,138 @@ - - - - - - DROID license - - - - - - - -
- - -
- License -
-
- - - - - -
- Welcome to DROID - - Third-party components -
-

- DROID is made freely available by The - National Archives to anyone under the open-source(External Link) BSD License, which permits its use, modification, inclusion in other - products and redistribution as long as the terms of the license are adhered to. -

-

- DROID license -

-

- Copyright (c) 2009-2016, The National Archives
- All rights reserved. -

-

- Redistribution and use in source and binary forms, with or without modification, are - permitted provided that the following conditions are met: -

-
    -
  • - Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. -
  • -
  • - Redistributions in binary form must reproduce the above copyright notice, this list of - conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. -
  • -
  • - Neither the name of The National Archives nor the names of its contributors may be - used to endorse or promote products derived from this software without specific prior - written permission. -
  • -
-

- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - OF THE POSSIBILITY OF SUCH DAMAGE. -

-

- Third-party component licenses -

-

- DROID uses several third-party components, which - are made available under a few widely - used open-source licenses.  All licenses to code used in DROID - permit the combined work as released by The National Archives to be freely used and - re-distributed. -

-

-   -

- - - - - -
- Welcome to DROID - - Third-party components -
-
-     -
- - + + + + + + DROID license + + + + + + + +
+ + +
+ License +
+
+ + + + + +
+ Welcome to DROID + + Third-party components +
+

+ DROID is made freely available by The + National Archives to anyone under the open-source(External Link) BSD License, which permits its use, modification, inclusion in other + products and redistribution as long as the terms of the license are adhered to. +

+

+ DROID license +

+

+ Copyright (c) 2009-2016, The National Archives
+ All rights reserved. +

+

+ Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: +

+
    +
  • + Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. +
  • +
  • + Redistributions in binary form must reproduce the above copyright notice, this list of + conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. +
  • +
  • + Neither the name of The National Archives nor the names of its contributors may be + used to endorse or promote products derived from this software without specific prior + written permission. +
  • +
+

+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. +

+

+ Third-party component licenses +

+

+ DROID uses several third-party components, which + are made available under a few widely + used open-source licenses.  All licenses to code used in DROID + permit the combined work as released by The National Archives to be freely used and + re-distributed. +

+

+   +

+ + + + + +
+ Welcome to DROID + + Third-party components +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/Load and save profiles.html b/droid-help/src/main/resources/Web pages/Load and save profiles.html index b170a3691..a47b302bd 100644 --- a/droid-help/src/main/resources/Web pages/Load and save profiles.html +++ b/droid-help/src/main/resources/Web pages/Load and save profiles.html @@ -1,155 +1,155 @@ - - - - - - Load and save profiles - - - - - - - -
- - -
-    Open and save profiles -
-
- - - - - - -
- Welcome to DROID - -   - -  Exporting - profiles -
-

-   -

-

- DROID can open and save profiles to a file with a .droid filename extension. -  Note that DROID 6 cannot open profiles created by earlier versions of DROID.   -

-

-   Opening a - profile -

-

- To open a saved profile, press the    Open   button, - or select the File / Open menu item.  A standard file - open selection dialog will appear.  Navigate to the droid profile you want to open, - and press the   OK -   button.  The profile will open in a - new tab.  If it is a large profile (containing hundreds of thousands of files and - folders), it may take a few minutes to open.  A progress bar at the bottom of the screen - shows how much of the profile has been opened so far. -

-

-   -

-

-   Saving a profile -

-

- To save a profile, press the   Save   button, or - select the File / Save menu item.  If your profile has - never been saved before, a standard file save dialog will appear, and you can choose where to - save the file and what name it has.  If your profile has - been saved before, it will be saved to the place it was opened from, and no file save dialog - will appear.  It it is a large profile (containing hundreds of thousands of files and - folders), it may take a few minutes to save.   A progress bar at the bottom of the - screen shows how much of the profile has been saved so far. -

-

- To save an existing profile to another file, select the File / Save - As... menu item.  This will always bring up a file save dialog, allowing you - to choose a different file to save to.  -

-

- DROID Profile files -

-

- Profile files are actually zip files, which contain some XML files describing the - profile, and a database containing any results of profiling so far.  DROID currently - uses the Apache Derby database, version 10.7, which can be opened using - various third-party tools, such as DB Visualizer.  The username to connect to a droid database is - droid_user, and the password is the same as the username.   -

-

- It is possible to manually edit the profile settings contained within the profile.xml file.  However, it is - not recommended that you do this, as changing settings within a profile may mean that - inconsistent results are returned (if the profile is paused and there are remaining results - to process), or may even cause DROID to crash if the settings conflict with the profile - state.  In particular you must not change which signatures are used by a profile. -  We cannot guarantee that other settings are safe to change.  Changing this file is - entirely at your own risk. -

-

-   -

- - - - - - -
- Welcome to DROID - -   - -  Exporting - profiles -
-
-    -
- - + + + + + + Load and save profiles + + + + + + + +
+ + +
+    Open and save profiles +
+
+ + + + + + +
+ Welcome to DROID + +   + +  Exporting + profiles +
+

+   +

+

+ DROID can open and save profiles to a file with a .droid filename extension. +  Note that DROID 6 cannot open profiles created by earlier versions of DROID.   +

+

+   Opening a + profile +

+

+ To open a saved profile, press the    Open   button, + or select the File / Open menu item.  A standard file + open selection dialog will appear.  Navigate to the droid profile you want to open, + and press the   OK +   button.  The profile will open in a + new tab.  If it is a large profile (containing hundreds of thousands of files and + folders), it may take a few minutes to open.  A progress bar at the bottom of the screen + shows how much of the profile has been opened so far. +

+

+   +

+

+   Saving a profile +

+

+ To save a profile, press the   Save   button, or + select the File / Save menu item.  If your profile has + never been saved before, a standard file save dialog will appear, and you can choose where to + save the file and what name it has.  If your profile has + been saved before, it will be saved to the place it was opened from, and no file save dialog + will appear.  It it is a large profile (containing hundreds of thousands of files and + folders), it may take a few minutes to save.   A progress bar at the bottom of the + screen shows how much of the profile has been saved so far. +

+

+ To save an existing profile to another file, select the File / Save + As... menu item.  This will always bring up a file save dialog, allowing you + to choose a different file to save to.  +

+

+ DROID Profile files +

+

+ Profile files are actually zip files, which contain some XML files describing the + profile, and a database containing any results of profiling so far.  DROID currently + uses the Apache Derby database, version 10.7, which can be opened using + various third-party tools, such as DB Visualizer.  The username to connect to a droid database is + droid_user, and the password is the same as the username.   +

+

+ It is possible to manually edit the profile settings contained within the profile.xml file.  However, it is + not recommended that you do this, as changing settings within a profile may mean that + inconsistent results are returned (if the profile is paused and there are remaining results + to process), or may even cause DROID to crash if the settings conflict with the profile + state.  In particular you must not change which signatures are used by a profile. +  We cannot guarantee that other settings are safe to change.  Changing this file is + entirely at your own risk. +

+

+   +

+ + + + + + +
+ Welcome to DROID + +   + +  Exporting + profiles +
+
+    +
+ + diff --git a/droid-help/src/main/resources/Web pages/Running a profile.html b/droid-help/src/main/resources/Web pages/Running a profile.html index 18231986f..46d052b9b 100644 --- a/droid-help/src/main/resources/Web pages/Running a profile.html +++ b/droid-help/src/main/resources/Web pages/Running a profile.html @@ -1,226 +1,226 @@ - - - - - - Running a profile - - - - - - - -
- - -
-    Run your profile -
-
- - - - - - - - -
- Welcome to DROID - - Choose files - and folders - -  Running - -  Pausing
- -
- Filter your results -
-

-   -

-

-   Running -

-

- You can start profiling files or folders using the -   Start   -  button, or by selecting the Run / Start Identification menu item.   -

-

- -

-

- As files and folders are identified, they are added to the profile, and you can see all - the results obtained so far. If you expand a folder, it will show all the files and - folders found so far.  If you happen to open the folder that is being profiled at that - time, you will see its child files and sub-folders appearing under it. -

-

- Once you have started a profile running, you cannot choose any further files or folders in it. The - specification of which files and folders to process in your profile becomes fixed at the - point it first begins running.  If you want to subsequently profile other files or - folders, then you can do this in a new profile. -  Results held in multiple profiles can be exported and reported on - together. -

-

- Progress -

-

- When your profile first starts running, it counts all the files and folders in your - profile, including those in sub-folders.  Once it has counted them, a progress bar will - show how much work has been completed, and how much more there is to do.   -

-

- The progress bar only gives an estimate of progress.  Files which - exist inside other files (e.g. zip files) are not accounted for, and in any case, files - can be added or removed from your file system while your profile is still running. -  In most cases, the progress bar gives a fairly good indication of the amount of - work remaining to be done.  The current file being analysed is also displayed, so even - if the progress bar doesn't seem to be moving, you can see that it is still profiling. -

-

- Throttling back -

-

- You can control how quickly or slowly DROID processes the files in your profile, and this - can be done at any time, whether your profile is running or not.  This can take the load - off your computer, network or disks if running it would impact you, or other users. -   By default, DROID works as quickly as it can, but you can tell DROID to delay for - a short amount of time between each file it processes. -

-

- To slow down or speed up DROID, use the slider control at the bottom right of the main - window.  When the slider is at the far left of the control, DROID will work as fast as - it can (a delay of zero).  When the slider is at the far right, DROID will wait for one - second between processing each file.  Even very small delays can reduce the load on - networks and file servers, so the normal useful range for throttling is usually between zero - and a hundred milliseconds. -

-

- Restrictions while profiling -

-

- While your profile is running, its filter cannot be enabled, and you cannot save - it. If you had enabled a filter previously, it will be automatically disabled - when your profile is started. Disabling a filter doesn't get rid of it - it just turns - it off temporarily.  You can turn it on again when the profile is finished, or paused. -

-

- In addition, you cannot run any reports or export a profile while it is running.  You can report and - export other profiles which are not running. -

-

- If you want to do any of the above tasks while a profile is running, you can - temporarily pause it, carry out the task, and then resume profiling - later. -

-

-   Pausing -

-

- You can pause your profile at any time by pressing the -   Pause -   button, or by selecting the Run / Pause - identification menu item.   -

-

- -

-

- The progress bar will freeze at whatever point it reached, - and you will see no further messages about files being analysed in the status bar. Your - profile may not pause straight away, as there may be a few outstanding items to be processed - in its work queue, particularly if it is in the middle of uncompressing a large archival - file.  Once paused, there are no restrictions on what you - can do with your profile (except that you cannot choose further files or folders once you have - started profiling). -

-

- Resuming -

-

- You can resume profiling by simple running it again, using - the   Start   command.  Profiling will pick up running - from the point it left off, leaving all results so far intact. You can also save a paused profile, and then open and resume it at a later date.  If the files - where your profile was last paused are now different, DROID will attempt to resume by - locating the nearest place it can successfully re-start from. -

-

-   -

- - - - - - - - -
- Welcome to DROID - - Choose files - and folders - -  Running - -  Pausing
- -
- Filter your - results -
-
-     -
- - + + + + + + Running a profile + + + + + + + +
+ + +
+    Run your profile +
+
+ + + + + + + + +
+ Welcome to DROID + + Choose files + and folders + +  Running + +  Pausing
+ +
+ Filter your results +
+

+   +

+

+   Running +

+

+ You can start profiling files or folders using the +   Start   +  button, or by selecting the Run / Start Identification menu item.   +

+

+ +

+

+ As files and folders are identified, they are added to the profile, and you can see all + the results obtained so far. If you expand a folder, it will show all the files and + folders found so far.  If you happen to open the folder that is being profiled at that + time, you will see its child files and sub-folders appearing under it. +

+

+ Once you have started a profile running, you cannot choose any further files or folders in it. The + specification of which files and folders to process in your profile becomes fixed at the + point it first begins running.  If you want to subsequently profile other files or + folders, then you can do this in a new profile. +  Results held in multiple profiles can be exported and reported on + together. +

+

+ Progress +

+

+ When your profile first starts running, it counts all the files and folders in your + profile, including those in sub-folders.  Once it has counted them, a progress bar will + show how much work has been completed, and how much more there is to do.   +

+

+ The progress bar only gives an estimate of progress.  Files which + exist inside other files (e.g. zip files) are not accounted for, and in any case, files + can be added or removed from your file system while your profile is still running. +  In most cases, the progress bar gives a fairly good indication of the amount of + work remaining to be done.  The current file being analysed is also displayed, so even + if the progress bar doesn't seem to be moving, you can see that it is still profiling. +

+

+ Throttling back +

+

+ You can control how quickly or slowly DROID processes the files in your profile, and this + can be done at any time, whether your profile is running or not.  This can take the load + off your computer, network or disks if running it would impact you, or other users. +   By default, DROID works as quickly as it can, but you can tell DROID to delay for + a short amount of time between each file it processes. +

+

+ To slow down or speed up DROID, use the slider control at the bottom right of the main + window.  When the slider is at the far left of the control, DROID will work as fast as + it can (a delay of zero).  When the slider is at the far right, DROID will wait for one + second between processing each file.  Even very small delays can reduce the load on + networks and file servers, so the normal useful range for throttling is usually between zero + and a hundred milliseconds. +

+

+ Restrictions while profiling +

+

+ While your profile is running, its filter cannot be enabled, and you cannot save + it. If you had enabled a filter previously, it will be automatically disabled + when your profile is started. Disabling a filter doesn't get rid of it - it just turns + it off temporarily.  You can turn it on again when the profile is finished, or paused. +

+

+ In addition, you cannot run any reports or export a profile while it is running.  You can report and + export other profiles which are not running. +

+

+ If you want to do any of the above tasks while a profile is running, you can + temporarily pause it, carry out the task, and then resume profiling + later. +

+

+   Pausing +

+

+ You can pause your profile at any time by pressing the +   Pause +   button, or by selecting the Run / Pause + identification menu item.   +

+

+ +

+

+ The progress bar will freeze at whatever point it reached, + and you will see no further messages about files being analysed in the status bar. Your + profile may not pause straight away, as there may be a few outstanding items to be processed + in its work queue, particularly if it is in the middle of uncompressing a large archival + file.  Once paused, there are no restrictions on what you + can do with your profile (except that you cannot choose further files or folders once you have + started profiling). +

+

+ Resuming +

+

+ You can resume profiling by simple running it again, using + the   Start   command.  Profiling will pick up running + from the point it left off, leaving all results so far intact. You can also save a paused profile, and then open and resume it at a later date.  If the files + where your profile was last paused are now different, DROID will attempt to resume by + locating the nearest place it can successfully re-start from. +

+

+   +

+ + + + + + + + +
+ Welcome to DROID + + Choose files + and folders + +  Running + +  Pausing
+ +
+ Filter your + results +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/Startup configuration.html b/droid-help/src/main/resources/Web pages/Startup configuration.html index 330642a1f..74282e800 100644 --- a/droid-help/src/main/resources/Web pages/Startup configuration.html +++ b/droid-help/src/main/resources/Web pages/Startup configuration.html @@ -1,285 +1,285 @@ - - - - - - Startup configuration - - - - - - - -
- - -
- Startup - configuration -
-
- - - - - - -
- Welcome to DROID - - Update file format signatures - - Change preferences -
-

- There are some settings which - DROID needs to be told at the point it starts up.  These either relate to how - Java is started in the first place, or to fundamental settings which DROID needs to know - before it can do anything else.  You can configure these settings in several ways, by editing the startup scripts, or by setting system environment variables. -   If any of the settings are not configured at all, they have defaults in each - case. -

-

- Editing startup scripts -

-

- There are two startup scripts which can be used to run DROID: -

-
    -
  • - droid.bat on Windows -
  • -
  • - droid.sh on Mac or Linux -
  • -
-

- Each of these files is a simple text file, which has documented sections to configure each - of the settings near the start of the file.  Settings provided by the scripts will - override any system environment variables you have set in the system as a whole. -

-

- Note: be very careful if you edit the Mac or Linux startup scripts on Microsoft Windows - systems, as this will often add Windows-specific line-endings to the file which may prevent - it from working correctly on Mac or Linux systems.  Some text editors let you specify - the type of line-ending to write out. -

-

- System environment variables -

-

- DROID will attempt to pick up settings from system environment variables if they are not - provided by a startup script. To configure system environment variables, please see the - documentation for your operating system.   The environment variables to use are - documented against each of the settings below. -

-

- Settings -

- -

- Maximum memory to use -

-

- Java programs can only use as much memory as the Java Runtime Environment sets aside - for them.  By default, this value is often quite low.  We recommend that DROID runs - with up to 512Mb of memory potentially available, which is the default when DROID runs if no - further configuration is done.   -

-

- This is the only setting which will only take effect if DROID is run using the startup - scripts.  This is because it is a setting Java itself needs to know, before DROID is - even run.   -

-
    -
  • - Default value (running through scripts and the DROID.exe file): 512Mb -
  • -
  • - Environment variable: droidMemory -
  • -
-

- User settings folder -

-

- The user settings folder is where DROID stores user settings, including preferences, report - definitions, filter definitions and file format signatures.  If not otherwise - configured, all the other folders and files configurable below are also stored under this - folder. -

-
    -
  • - Default value: a folder called ".droid6" directly under the user's home - directory, -
  • -
  • - Environment variable: droidUserDir -
  • -
-

- Temporary files folder -

-

- The temporary files folder is where DROID creates and deletes temporary files required - during processing.  Two sub-folders are created underneath this folder: -

-
    -
  1. - /tmp - for decompressing archival files to be further processed, and any other - temporary files required.  These are deleted when no longer required during - processing. -
  2. -
  3. - /profiles - to store temporary copies of profiles DROID currently has open. -  Each temporary profile is deleted when it is closed. -
  4. -
-

- Normally there should be no files left in these areas after closing DROID down, but in case - of any problems, any files in these areas can be safely deleted if DROID is not - running.  -

-
    -
  • - Default value: the droid user settings folder. -
  • -
  • - Environment variable: - droidTempDir -
  • -
-

- Logging folder -

-

- The logging folder is where DROID writes its log files out during operation. -

-
    -
  • - Default value: a folder called "logs" under the droid user settings - folder. -
  • -
  • - Environment variable: - droidLogDir -
  • -
-

- Log configuration -

-

- DROID uses a logging system called log4j .  You can configure different log settings by - providing the path to a log configuration file, or by editing the settings in the default log - configuration file. -

-
    -
  • - Default value: a file called "log4j.properties" under the droid user - settings folder. -
  • -
  • - Environment variable: - log4j.configuration -
  • -
-

- Console log level -

-

- DROID logs events to the console by default at an INFO level.  If - DROID is running in quiet mode from the command line, then this property is overridden - to be at an ERROR level.  You can configure the default log level to the console - using this property in the start up scripts. Valid logging levels, from most verbose to least - verbose, are DEBUG, INFO, WARN, ERROR, FATAL. -

-
    -
  • - Default value: INFO -
  • -
  • - Environment variable: consoleLogThreshold -
  • -
-

-   -

- - - - - - -
- Welcome to DROID - - Update file format signatures - - Change preferences -
-
-    -
- - + + + + + + Startup configuration + + + + + + + +
+ + +
+ Startup + configuration +
+
+ + + + + + +
+ Welcome to DROID + + Update file format signatures + + Change preferences +
+

+ There are some settings which + DROID needs to be told at the point it starts up.  These either relate to how + Java is started in the first place, or to fundamental settings which DROID needs to know + before it can do anything else.  You can configure these settings in several ways, by editing the startup scripts, or by setting system environment variables. +   If any of the settings are not configured at all, they have defaults in each + case. +

+

+ Editing startup scripts +

+

+ There are two startup scripts which can be used to run DROID: +

+
    +
  • + droid.bat on Windows +
  • +
  • + droid.sh on Mac or Linux +
  • +
+

+ Each of these files is a simple text file, which has documented sections to configure each + of the settings near the start of the file.  Settings provided by the scripts will + override any system environment variables you have set in the system as a whole. +

+

+ Note: be very careful if you edit the Mac or Linux startup scripts on Microsoft Windows + systems, as this will often add Windows-specific line-endings to the file which may prevent + it from working correctly on Mac or Linux systems.  Some text editors let you specify + the type of line-ending to write out. +

+

+ System environment variables +

+

+ DROID will attempt to pick up settings from system environment variables if they are not + provided by a startup script. To configure system environment variables, please see the + documentation for your operating system.   The environment variables to use are + documented against each of the settings below. +

+

+ Settings +

+ +

+ Maximum memory to use +

+

+ Java programs can only use as much memory as the Java Runtime Environment sets aside + for them.  By default, this value is often quite low.  We recommend that DROID runs + with up to 512Mb of memory potentially available, which is the default when DROID runs if no + further configuration is done.   +

+

+ This is the only setting which will only take effect if DROID is run using the startup + scripts.  This is because it is a setting Java itself needs to know, before DROID is + even run.   +

+
    +
  • + Default value (running through scripts and the DROID.exe file): 512Mb +
  • +
  • + Environment variable: droidMemory +
  • +
+

+ User settings folder +

+

+ The user settings folder is where DROID stores user settings, including preferences, report + definitions, filter definitions and file format signatures.  If not otherwise + configured, all the other folders and files configurable below are also stored under this + folder. +

+
    +
  • + Default value: a folder called ".droid6" directly under the user's home + directory, +
  • +
  • + Environment variable: droidUserDir +
  • +
+

+ Temporary files folder +

+

+ The temporary files folder is where DROID creates and deletes temporary files required + during processing.  Two sub-folders are created underneath this folder: +

+
    +
  1. + /tmp - for decompressing archival files to be further processed, and any other + temporary files required.  These are deleted when no longer required during + processing. +
  2. +
  3. + /profiles - to store temporary copies of profiles DROID currently has open. +  Each temporary profile is deleted when it is closed. +
  4. +
+

+ Normally there should be no files left in these areas after closing DROID down, but in case + of any problems, any files in these areas can be safely deleted if DROID is not + running.  +

+
    +
  • + Default value: the droid user settings folder. +
  • +
  • + Environment variable: + droidTempDir +
  • +
+

+ Logging folder +

+

+ The logging folder is where DROID writes its log files out during operation. +

+
    +
  • + Default value: a folder called "logs" under the droid user settings + folder. +
  • +
  • + Environment variable: + droidLogDir +
  • +
+

+ Log configuration +

+

+ DROID uses a logging system called log4j .  You can configure different log settings by + providing the path to a log configuration file, or by editing the settings in the default log + configuration file. +

+
    +
  • + Default value: a file called "log4j.properties" under the droid user + settings folder. +
  • +
  • + Environment variable: + log4j.configuration +
  • +
+

+ Console log level +

+

+ DROID logs events to the console by default at an INFO level.  If + DROID is running in quiet mode from the command line, then this property is overridden + to be at an ERROR level.  You can configure the default log level to the console + using this property in the start up scripts. Valid logging levels, from most verbose to least + verbose, are DEBUG, INFO, WARN, ERROR, FATAL. +

+
    +
  • + Default value: INFO +
  • +
  • + Environment variable: consoleLogThreshold +
  • +
+

+   +

+ + + + + + +
+ Welcome to DROID + + Update file format signatures + + Change preferences +
+
+    +
+ + diff --git a/droid-help/src/main/resources/Web pages/Summary reporting.html b/droid-help/src/main/resources/Web pages/Summary reporting.html index 6f77a2e63..df791f338 100644 --- a/droid-help/src/main/resources/Web pages/Summary reporting.html +++ b/droid-help/src/main/resources/Web pages/Summary reporting.html @@ -1,289 +1,289 @@ - - - - - - Summary reporting - - - - - - - -
- - -
-    Summary reporting -
-
- - - - - - -
- Welcome to DROID - - Filter your - results - -  Exporting - profiles -
-

- DROID can create a variety of reports containing statistics about the files and folders - in your profiles, and save the report as several different kinds of file.   -

-

- Selecting profiles to report on -

-

- To create a summary report of one or more profiles, press the    Report    button, - or select the Report / Generate Report menu option. -  This will bring up the profile selection dialog, which allows you to select which - profiles to report on.   -

-

- -

-

- If a selected profile has an active filter, this filter will be used when generating the - report.  So you can produce different reports on the same profiles, by using different - filters.  For example, you could filter out all files which are very large, giving you - averages which are closer to the mean values normally encountered. Or you could filter out - everything except document formats, letting you produce statistical reports on document types - only. -

-

- Available reports -

-

- Once you have selected some profiles to report on, select which report you wish to generate. -  DROID ships with eleven pre-defined reports: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File count and sizes - -  The count, total size, and minimum, maximum and average size of all files in your - profiles
-
- -
- Total count of files and folders - -  A count of all files and folders in your profiles
-
- -
- Total unreadable files - -  A count of all the unreadable files in your profiles
-
- -
- Total unreadable folders - -  A count of all the unreadable folders in your profiles
-
- -
- File count and sizes by file extension - -  The count, total size, and minimum, maximum and average size of all files in your - profiles broken down by their file extensions. -
- File count and sizes by file format PUID - - The count, total size, and minimum, maximum and average size of all files in your - profiles broken down by their file format PUIDs.
- -
- File count and sizes by mime type - - The count, total size, and minimum, maximum and average size of all files in your - profiles broken down by their mime types.
- -
- File count and sizes by month last modified - - The count, total size, and minimum, maximum and average size of all files in your - profiles broken down by the month they were last modified in.  Months are - represented as a number from 1 (January) to 12 (December). -
- File count and sizes by year last modified - - The count, total size, and minimum, maximum and average size of all files in your - profiles broken down by the year they were last modified.
- -
- File count and sizes by year and month last modified - - The count, total size, and minimum, maximum and average size of all files in your - profiles broken down by the year and month they were last modified.   Months - are represented as a number from 1 (January) to 12 (December). -
- Comprehensive breakdown - -  A report combining all of the above reports into a single report.  This report - may take a long time to generate over large profiles. -
-

-   -

-

- Building your report -

-

- Next, press the   Report on - profiles...    button to generate your report.   -

-

- -

-

-   -

-

-   -

-

- Statistics presented are broken down by profile, and aggregated across all the profiles you - have selected to report on. -

-

- Exporting your report -

-

-  Finally, if you want to save your report, press the    Export...   button. -  This will enable you to save your report in a variety of file formats.  By - default, all reports can be saved as: -

-
    -
  • - PDF -
  • -
  • - Web page -
  • -
  • - Text -
  • -
  • - DROID Report XML -
  • -
-

- In addition, some reports have special output formats defined.  As shipped, DROID 6 - includes a PLANETS XML export option for the Comprehensive Breakdown report.  All - reports are generated from the DROID Report XML, so you can use this format to transform - into any other formats you require, using XSLT technology.  All report definitions, and - any associated transforms are located in the report_definitions sub-folder underneath your user settings folder. -

-

-   -

- - - - - - -
- Welcome to DROID - - Filter your - results - -  Exporting - profiles -
-
-     -
- - + + + + + + Summary reporting + + + + + + + +
+ + +
+    Summary reporting +
+
+ + + + + + +
+ Welcome to DROID + + Filter your + results + +  Exporting + profiles +
+

+ DROID can create a variety of reports containing statistics about the files and folders + in your profiles, and save the report as several different kinds of file.   +

+

+ Selecting profiles to report on +

+

+ To create a summary report of one or more profiles, press the    Report    button, + or select the Report / Generate Report menu option. +  This will bring up the profile selection dialog, which allows you to select which + profiles to report on.   +

+

+ +

+

+ If a selected profile has an active filter, this filter will be used when generating the + report.  So you can produce different reports on the same profiles, by using different + filters.  For example, you could filter out all files which are very large, giving you + averages which are closer to the mean values normally encountered. Or you could filter out + everything except document formats, letting you produce statistical reports on document types + only. +

+

+ Available reports +

+

+ Once you have selected some profiles to report on, select which report you wish to generate. +  DROID ships with eleven pre-defined reports: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ File count and sizes + +  The count, total size, and minimum, maximum and average size of all files in your + profiles
+
+ +
+ Total count of files and folders + +  A count of all files and folders in your profiles
+
+ +
+ Total unreadable files + +  A count of all the unreadable files in your profiles
+
+ +
+ Total unreadable folders + +  A count of all the unreadable folders in your profiles
+
+ +
+ File count and sizes by file extension + +  The count, total size, and minimum, maximum and average size of all files in your + profiles broken down by their file extensions. +
+ File count and sizes by file format PUID + + The count, total size, and minimum, maximum and average size of all files in your + profiles broken down by their file format PUIDs.
+ +
+ File count and sizes by mime type + + The count, total size, and minimum, maximum and average size of all files in your + profiles broken down by their mime types.
+ +
+ File count and sizes by month last modified + + The count, total size, and minimum, maximum and average size of all files in your + profiles broken down by the month they were last modified in.  Months are + represented as a number from 1 (January) to 12 (December). +
+ File count and sizes by year last modified + + The count, total size, and minimum, maximum and average size of all files in your + profiles broken down by the year they were last modified.
+ +
+ File count and sizes by year and month last modified + + The count, total size, and minimum, maximum and average size of all files in your + profiles broken down by the year and month they were last modified.   Months + are represented as a number from 1 (January) to 12 (December). +
+ Comprehensive breakdown + +  A report combining all of the above reports into a single report.  This report + may take a long time to generate over large profiles. +
+

+   +

+

+ Building your report +

+

+ Next, press the   Report on + profiles...    button to generate your report.   +

+

+ +

+

+   +

+

+   +

+

+ Statistics presented are broken down by profile, and aggregated across all the profiles you + have selected to report on. +

+

+ Exporting your report +

+

+  Finally, if you want to save your report, press the    Export...   button. +  This will enable you to save your report in a variety of file formats.  By + default, all reports can be saved as: +

+
    +
  • + PDF +
  • +
  • + Web page +
  • +
  • + Text +
  • +
  • + DROID Report XML +
  • +
+

+ In addition, some reports have special output formats defined.  As shipped, DROID 6 + includes a PLANETS XML export option for the Comprehensive Breakdown report.  All + reports are generated from the DROID Report XML, so you can use this format to transform + into any other formats you require, using XSLT technology.  All report definitions, and + any associated transforms are located in the report_definitions sub-folder underneath your user settings folder. +

+

+   +

+ + + + + + +
+ Welcome to DROID + + Filter your + results + +  Exporting + profiles +
+
+     +
+ + diff --git a/droid-help/src/main/resources/Web pages/Third-party components.html b/droid-help/src/main/resources/Web pages/Third-party components.html index 894beff00..11507de74 100644 --- a/droid-help/src/main/resources/Web pages/Third-party components.html +++ b/droid-help/src/main/resources/Web pages/Third-party components.html @@ -1,390 +1,396 @@ - - - - - - Third-party components - - - - - - - -
- - -
- Third - party components -
-
- - - - - - -
- Welcome to DROID - -   - - License -
-

- DROID uses a variety of open-source third-party components, providing indispensable - functionality, such as this help system, a database, XML and CSV file processing, - graphical components, web services, logging, file handling, archival file handling, - command line control and many other utilities to enhance the java platform.  The - DROID project team would like to thank the authors of these components for making software - like DROID possible. -

-

-   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Component - - License -
- Apache Commons Logging - - Apache License -
- Apache Commons Command Line Interface - - Apache License -
- Apache Commons Input Output - - Apache License -
- Apache Commons Language Extensions - - Apache License -
- Apache Commons Configuration - - Apache License -
- Apache Commons Compression - - Apache License -
- Apache Commons Collections - - Apache License -
- Apache Commons Database Pooling - - Apache License -
- Apache Commons Configuration - - Apache License -
- Apache Crossfire Services - - Apache License -
- Netbeans Swing OpenIDE Platform - - Common Development and Distribution - License -
- - Netbeans Swing Outline Component - - Common Development and Distribution - License -
- Beansbinding - - Lesser General Public License -
- Spring Framework - - Apache License -
- JodaTime - - Apache License -
- OpenCSV - - Apache License -
- Apache Log4J Logging Framework - - Apache License -
- Xerces XML Parser - - Apache License -
- Apache Derby Database - - Apache License -
- Java Transaction - API - - - Sun JTA License -
- Simple Logging Facade for Java - - MIT License -
- Hibernate Entity Manager - - Lesser General Public Licence -
- Code Generation Library - - Apache License -
- Java Help - - General Public License with Classpath - Exception -
- Flying Saucer XHTML & PDF Renderer - - - Lesser General Public License -
- TrueZip - - Apache License -
- ByteSeek - - BSD License -
-

- Only the compiled form of these components are included in DROID.  No modifications to - the source code of these components have been made by the DROID project.  The source - code to these components is available from their respective owners, via the links in - the above table.  The icons used in DROID are freely provided by Aha-Soft and the Eclipse project. -

-

-   -

- - - - - - -
- Welcome to DROID - -   - - License -
-
-    -
- - + + + + + + Third-party components + + + + + + + +
+ + +
+ Third + party components +
+
+ + + + + + +
+ Welcome to DROID + +   + + License +
+

+ DROID uses a variety of open-source third-party components, providing indispensable + functionality, such as this help system, a database, XML and CSV file processing, + graphical components, web services, logging, file handling, archival file handling, + command line control and many other utilities to enhance the java platform.  The + DROID project team would like to thank the authors of these components for making software + like DROID possible. +

+

+   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Component + + License +
+ Apache Commons Logging + + Apache License +
+ Apache Commons Command Line Interface + + Apache License +
+ Apache Commons Input Output + + Apache License +
+ Apache Commons Language Extensions + + Apache License +
+ Apache Commons Configuration + + Apache License +
+ Apache Commons Compression + + Apache License +
+ Apache Commons Collections + + Apache License +
+ Apache Commons Database Pooling + + Apache License +
+ Apache Commons Configuration + + Apache License +
+ Apache Crossfire Services + + Apache License +
+ Netbeans Swing OpenIDE Platform + + Common Development and Distribution + License +
+ + Netbeans Swing Outline Component + + Common Development and Distribution + License +
+ Beansbinding + + Lesser General Public License +
+ Spring Framework + + Apache License +
+ JodaTime + + Apache License +
+ OpenCSV + + Apache License +
+ Apache Log4J Logging Framework + + Apache License +
+ Xerces XML Parser + + Apache License +
+ Apache Derby Database + + Apache License +
+ Java Transaction + API + + + Sun JTA License +
+ Simple Logging Facade for Java + + MIT License +
+ Hibernate Entity Manager + + Lesser General Public Licence +
+ Code Generation Library + + Apache License +
+ Java Help + + General Public License with Classpath + Exception +
+ Flying Saucer XHTML & PDF Renderer + + + Lesser General Public License +
+ TrueZip + + Apache License +
+ ByteSeek + + BSD License +
+

+ Only the compiled form of these components are included in DROID.  No modifications to + the source code of these components have been made by the DROID project.  The source + code to these components is available from their respective owners, via the links in + the above table.   +

+

+ The icons used in DROID are freely provided and made by + Smashicons  and + Freepik  from www.flaticon.com , and the Eclipse project. +

+

+   +

+ + + + + + +
+ Welcome to DROID + +   + + License +
+
+    +
+ + diff --git a/droid-help/src/main/resources/Web pages/Update file format signatures.html b/droid-help/src/main/resources/Web pages/Update file format signatures.html index a69e84ba2..c8089f797 100644 --- a/droid-help/src/main/resources/Web pages/Update file format signatures.html +++ b/droid-help/src/main/resources/Web pages/Update file format signatures.html @@ -1,178 +1,178 @@ - - - - - - Update file format signatures - - - - - - - -
- - -
-    Update file format signatures -
-
- - - - - - -
- Welcome to DROID - - Startup configuration - - Change preferences -
-

-   -

-

- DROID can update its file format signatures using the PRONOM technical registry service hosted at the National - Archives.  To manually update your file format signatures, select the Tools / Check for signature updates... menu item.   -

-

- -

-

- Either enter the file name and path of the signature file you want to install, or press the -  Browse...   - button to bring up a file selection dialog.  If you check the "Use this signature file - as default", it will become the default for new profiles.  If not, the signature will be - available to select in the preferences should you want to use it at some point in the future, - but will not be used by default.  When you have selected the file to install, press the -  Install    - button, or  Cancel -   to exit the dialog making no changes. -

-

- It is also possible for DROID to automatically check for and update its signatures on a - regular schedule.  This can be configured in the preferences section. -

-

- If you have a binary signature - file locally that you want to use, you can install this file in DROID using the Tools / Install signature file... menu item.  This will bring up a - file open dialog from which you can select the signature file that you want DROID to use. -  Currently this feature cannot be used to install container signatures, only binary - signature files. -

-

- Alternatively, you can manually copy a binary or container signature file into your droid - working area (which is by default located in a folder called ".droid", underneath your home folder). -  For binary signature files, place them in the "signature_files" sub-folder.  For - container signature files, place them in the "container_sigs" sub folder.  Note that - container signature files have a number appended to them, which is the date on which they are - updated, in the format year, month date.  For example, the file "container-signature-20110114.xml" is the - container signature file last updated on January 14th, 2011. -

-

- Binary signatures -

-

- Most file formats have either "magic numbers"  embedded within them, or they have regular - structures which always appear in files of that format.  The binary signatures define - what patterns to find in order to identify a file format.  The signatures can specify - simple sequences of bytes, alternate sequences, or several different possible bytes at the - same position in the file.  These patterns may be found at known positions (e.g. at the - start or 20 bytes in from the end of the file), or they may appear at variable positions, - either within a known range of possible positions, or anywhere in the file at all. -  Signatures can combine all of these features, sometimes more than one in the same - signature.   -

-

- Taking a very contrived example, a signature may specify that there are three bytes at the - start of the file: 01, 02 and 03.  Then 5 bytes on there is either 04 or 05. After that, - somewhere between 10 and 1000 bytes on is either 06 07 08 09, or 10, 11, 12, 13. -  Finally, the bytes ff, ee, dd are found right at the end of the file. -

-

- Container signatures -

-

- Some file formats are actually collections of embedded files, each with their own - formats.  For example, Microsoft Office 2007 files are actually zip files, which - contain various other files.  Taken together, they define an Office 2007 file. -  Binary signatures are not very good at identifying files like this, as the contents of - the embedded files are obscured by the containing format (in this case, zip).  In order - to provide more accurate identifications, DROID can open files which use either the ZIP - format, or the OLE2 format, and look inside them to see what embedded files are present. -

-

- Container signatures are just specifications of which files to look for inside the - containing formats, and optionally, one or more binary signatures to run against those - files if they are found. -

-

-   -

- - - - - - -
- Welcome to DROID - - Startup configuration - - Change preferences -
-
-    -
- - + + + + + + Update file format signatures + + + + + + + +
+ + +
+    Update file format signatures +
+
+ + + + + + +
+ Welcome to DROID + + Startup configuration + + Change preferences +
+

+   +

+

+ DROID can update its file format signatures using the PRONOM technical registry service hosted at the National + Archives.  To manually update your file format signatures, select the Tools / Check for signature updates... menu item.   +

+

+ +

+

+ Either enter the file name and path of the signature file you want to install, or press the +  Browse...   + button to bring up a file selection dialog.  If you check the "Use this signature file + as default", it will become the default for new profiles.  If not, the signature will be + available to select in the preferences should you want to use it at some point in the future, + but will not be used by default.  When you have selected the file to install, press the +  Install    + button, or  Cancel +   to exit the dialog making no changes. +

+

+ It is also possible for DROID to automatically check for and update its signatures on a + regular schedule.  This can be configured in the preferences section. +

+

+ If you have a binary signature + file locally that you want to use, you can install this file in DROID using the Tools / Install signature file... menu item.  This will bring up a + file open dialog from which you can select the signature file that you want DROID to use. +  Currently this feature cannot be used to install container signatures, only binary + signature files. +

+

+ Alternatively, you can manually copy a binary or container signature file into your droid + working area (which is by default located in a folder called ".droid", underneath your home folder). +  For binary signature files, place them in the "signature_files" sub-folder.  For + container signature files, place them in the "container_sigs" sub folder.  Note that + container signature files have a number appended to them, which is the date on which they are + updated, in the format year, month date.  For example, the file "container-signature-20110114.xml" is the + container signature file last updated on January 14th, 2011. +

+

+ Binary signatures +

+

+ Most file formats have either "magic numbers"  embedded within them, or they have regular + structures which always appear in files of that format.  The binary signatures define + what patterns to find in order to identify a file format.  The signatures can specify + simple sequences of bytes, alternate sequences, or several different possible bytes at the + same position in the file.  These patterns may be found at known positions (e.g. at the + start or 20 bytes in from the end of the file), or they may appear at variable positions, + either within a known range of possible positions, or anywhere in the file at all. +  Signatures can combine all of these features, sometimes more than one in the same + signature.   +

+

+ Taking a very contrived example, a signature may specify that there are three bytes at the + start of the file: 01, 02 and 03.  Then 5 bytes on there is either 04 or 05. After that, + somewhere between 10 and 1000 bytes on is either 06 07 08 09, or 10, 11, 12, 13. +  Finally, the bytes ff, ee, dd are found right at the end of the file. +

+

+ Container signatures +

+

+ Some file formats are actually collections of embedded files, each with their own + formats.  For example, Microsoft Office 2007 files are actually zip files, which + contain various other files.  Taken together, they define an Office 2007 file. +  Binary signatures are not very good at identifying files like this, as the contents of + the embedded files are obscured by the containing format (in this case, zip).  In order + to provide more accurate identifications, DROID can open files which use either the ZIP + format, or the OLE2 format, and look inside them to see what embedded files are present. +

+

+ Container signatures are just specifications of which files to look for inside the + containing formats, and optionally, one or more binary signatures to run against those + files if they are found. +

+

+   +

+ + + + + + +
+ Welcome to DROID + + Startup configuration + + Change preferences +
+
+    +
+ + diff --git a/droid-help/src/main/resources/Web pages/Welcome to DROID.html b/droid-help/src/main/resources/Web pages/Welcome to DROID.html index 3b5b50599..c0a8a8c38 100644 --- a/droid-help/src/main/resources/Web pages/Welcome to DROID.html +++ b/droid-help/src/main/resources/Web pages/Welcome to DROID.html @@ -1,186 +1,186 @@ - - - - - - Welcome to DROID - - - - - - - -
- - -
- Welcome - to DROID -
-
- - - - - - - -
- What's new - - Information collected - - License - - Frequently Asked Questions -
-

- DROID is a tool to help you analyse what kinds of files you have.  It - collects information about your files into - profiles, and lets you filter, export and report on your results.  It recognises file - formats by using ‘signature’ information provided by digital preservation researchers at The - National Archives.   -

- - - - - - - - - - - - - -
-      - -  To begin using DROID:
- -
-  Once you have some results: - -   -
-   - -

-   Create a new profile -

-

-   Choose files and folders -

-

-   Run your profile -

-
-

-  Filter your results -

-

-   Create a summary report -

-

-   Export your results -

-
-

-   -

-
-

-   -

-

- You can also open or save existing profiles, - update your file format signatures, or - change your profiling preferences.   DROID can - be controlled by a graphical user interface or using a command-line.  For frequently asked questions and - troubleshooting, please read the Frequently Asked Questions. -

-

- If you would like to provide suggestions, bug reports or feedback on DROID, please - e-mail pronom@nationalarchives.gov.uk, or you can use the discussion forum, or submit an issue via GitHub.  The latest version is - available from the DROID web page.   -

-

- It runs on Windows, Mac and Linux, and potentially on other platforms that support - applications written in Java, from Java 7 update 80 onwards. It may also run on some - earlier versions of the Java runtime, but this is not guaranteed. -

-

-   -

- - - - - - - -
- What's new - - Information collected - - License - - Frequently Asked Questions -
-
-   -
-

-   -

-

-   -

- - + + + + + + Welcome to DROID + + + + + + + +
+ + +
+ Welcome + to DROID +
+
+ + + + + + + +
+ What's new + + Information collected + + License + + Frequently Asked Questions +
+

+ DROID is a tool to help you analyse what kinds of files you have.  It + collects information about your files into + profiles, and lets you filter, export and report on your results.  It recognises file + formats by using ‘signature’ information provided by digital preservation researchers at The + National Archives.   +

+ + + + + + + + + + + + + +
+      + +  To begin using DROID:
+ +
+  Once you have some results: + +   +
+   + +

+   Create a new profile +

+

+   Choose files and folders +

+

+   Run your profile +

+
+

+  Filter your results +

+

+   Create a summary report +

+

+   Export your results +

+
+

+   +

+
+

+   +

+

+ You can also open or save existing profiles, + update your file format signatures, or + change your profiling preferences.   DROID can + be controlled by a graphical user interface or using a command-line.  For frequently asked questions and + troubleshooting, please read the Frequently Asked Questions. +

+

+ If you would like to provide suggestions, bug reports or feedback on DROID, please + e-mail pronom@nationalarchives.gov.uk, or you can use the discussion forum, or submit an issue via GitHub.  The latest version is + available from the DROID web page.   +

+

+ It runs on Windows, Mac and Linux, and potentially on other platforms that support + applications written in Java, from Java 9 onwards. It may also run on some + earlier versions of the Java runtime, but this is not guaranteed. +

+

+   +

+ + + + + + + +
+ What's new + + Information collected + + License + + Frequently Asked Questions +
+
+   +
+

+   +

+

+   +

+ + diff --git a/droid-help/src/main/resources/Web pages/Whats New.html b/droid-help/src/main/resources/Web pages/Whats New.html index 7b990128b..dc37887be 100644 --- a/droid-help/src/main/resources/Web pages/Whats New.html +++ b/droid-help/src/main/resources/Web pages/Whats New.html @@ -1,256 +1,256 @@ - - - - - - Whats New - - - - - - - -
- - -
- What's - new -
-
- - - - - - -
- Welcome to DROID - - License - - Frequently Asked Questions -
-

- DROID 6 has many new features which improve the speed, accuracy and your exploration of its - results.  Behind the scenes, it introduces some new capabilities to allow signatures for - new file formats to be developed more easily, and with greater power to match - difficult file formats. -

- -

- Speed -

-
    -
  • - A new binary signature recognition engine is approximately twice as fast as the old - engine, and with an enhanced syntax offering new - kinds of signatures. -
  • -
  • - An option to limit how much of a file is - scanned from its beginning and end.   -
  • -
  • - New profiles are quicker to start up, using copies of pre-built empty databases, rather - than creating them anew each time. -
  • -
  • - Profiling tools were used to locate and eliminate bottlenecks.  In - particular, binary signature recognition and archival file handling is now much faster. -
  • -
-

- Accuracy -

- -

- Reporting -

-
    -
  • - A new reporting engine offers 11 predefined reports, giving statistical breakdowns of your files and - folders in various different ways. -
  • -
  • - Reports can be viewed on screen, and saved into several different file formats, including - PDF, text, web pages and XML. -
  • -
-

- Exporting -

-
    -
  • - CSV files can now export results one row per file, or - one row per format identification. -
  • -
-

- Filtering -

-
    -
  • - Filters can now be saved and loaded for quick access to commonly used filters. -
  • -
-

- User interface -

-
    -
  • - Icons are used to communicate essential information quickly. -
  • -
  • - Filtering can be turned on or off from the main - toolbar, via the Filter On checkbox. -
  • -
  • - Folders and archival files which are filtered out in the main view appear greyed out, to - distinguish them from items which were not filtered out. -
  • -
  • - If a file has multiple identifications, its format information is now directly accessible - from the main window. -
  • -
  • - "Open Containing Folder" option to go straight to the files you have profiled from within - DROID. -
  • -
  • - A right-click popup menu offers common editing options quickly. -
  • -
  • - Copy to clipboard for results in the main window. -
  • -
  • - "Expand" and "Expand next three levels" options for selected results in the main window. -
  • -
  • - General tidying up to maximise the use of screen space. -
  • -
-

- Container signatures -

-
    -
  • - Container signatures are a new kind of file format signature, to recognise file formats - which contain other files inside themselves (for example, Microsoft Office 2007 files). -
  • -
-

- Binary signature syntax -

-

- The syntax of the signatures used by the binary signature engine has been enhanced, both in - terms of readability and fundamental expressivity. In addition to existing syntax, it allows - for text strings, case insensitive text strings and arbitrary sets of bytes.  These - features can be mixed together in ways which the previous engine cannot process. -  This makes it easier to create new signatures, and to understand existing ones. -  In some cases, several old signatures can be combined into one signature, which - increases the speed of DROID. -

-

- The new syntax will be documented in other technical documentation, and will not appear in - signature files for some time until users of DROID have updated to the newer engine. -  Some of the new syntax can be seen in the container signature files, which do not have - backward compatibility issues. -

-

-   -

- - - - - - -
- Welcome to DROID - - License - - Frequently Asked Questions -
-
-   -
- - + + + + + + Whats New + + + + + + + +
+ + +
+ What's + new +
+
+ + + + + + +
+ Welcome to DROID + + License + + Frequently Asked Questions +
+

+ DROID 6 has many new features which improve the speed, accuracy and your exploration of its + results.  Behind the scenes, it introduces some new capabilities to allow signatures for + new file formats to be developed more easily, and with greater power to match + difficult file formats. +

+ +

+ Speed +

+
    +
  • + A new binary signature recognition engine is approximately twice as fast as the old + engine, and with an enhanced syntax offering new + kinds of signatures. +
  • +
  • + An option to limit how much of a file is + scanned from its beginning and end.   +
  • +
  • + New profiles are quicker to start up, using copies of pre-built empty databases, rather + than creating them anew each time. +
  • +
  • + Profiling tools were used to locate and eliminate bottlenecks.  In + particular, binary signature recognition and archival file handling is now much faster. +
  • +
+

+ Accuracy +

+ +

+ Reporting +

+
    +
  • + A new reporting engine offers 11 predefined reports, giving statistical breakdowns of your files and + folders in various different ways. +
  • +
  • + Reports can be viewed on screen, and saved into several different file formats, including + PDF, text, web pages and XML. +
  • +
+

+ Exporting +

+
    +
  • + CSV files can now export results one row per file, or + one row per format identification. +
  • +
+

+ Filtering +

+
    +
  • + Filters can now be saved and loaded for quick access to commonly used filters. +
  • +
+

+ User interface +

+
    +
  • + Icons are used to communicate essential information quickly. +
  • +
  • + Filtering can be turned on or off from the main + toolbar, via the Filter On checkbox. +
  • +
  • + Folders and archival files which are filtered out in the main view appear greyed out, to + distinguish them from items which were not filtered out. +
  • +
  • + If a file has multiple identifications, its format information is now directly accessible + from the main window. +
  • +
  • + "Open Containing Folder" option to go straight to the files you have profiled from within + DROID. +
  • +
  • + A right-click popup menu offers common editing options quickly. +
  • +
  • + Copy to clipboard for results in the main window. +
  • +
  • + "Expand" and "Expand next three levels" options for selected results in the main window. +
  • +
  • + General tidying up to maximise the use of screen space. +
  • +
+

+ Container signatures +

+
    +
  • + Container signatures are a new kind of file format signature, to recognise file formats + which contain other files inside themselves (for example, Microsoft Office 2007 files). +
  • +
+

+ Binary signature syntax +

+

+ The syntax of the signatures used by the binary signature engine has been enhanced, both in + terms of readability and fundamental expressivity. In addition to existing syntax, it allows + for text strings, case insensitive text strings and arbitrary sets of bytes.  These + features can be mixed together in ways which the previous engine cannot process. +  This makes it easier to create new signatures, and to understand existing ones. +  In some cases, several old signatures can be combined into one signature, which + increases the speed of DROID. +

+

+ The new syntax will be documented in other technical documentation, and will not appear in + signature files for some time until users of DROID have updated to the newer engine. +  Some of the new syntax can be seen in the container signature files, which do not have + backward compatibility issues. +

+

+   +

+ + + + + + +
+ Welcome to DROID + + License + + Frequently Asked Questions +
+
+   +
+ + diff --git a/droid-help/src/main/resources/map.xml b/droid-help/src/main/resources/map.xml index 1508e63c5..f5a6fc850 100644 --- a/droid-help/src/main/resources/map.xml +++ b/droid-help/src/main/resources/map.xml @@ -33,85 +33,65 @@ --> + "http://java.sun.com/products/javahelp/map_2_0.dtd"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/droid-results/src/main/java/uk/gov/nationalarchives/droid/profile/export/JDBCSqlItemReader.java b/droid-results/src/main/java/uk/gov/nationalarchives/droid/profile/export/JDBCSqlItemReader.java index 0ef944ef7..60049a755 100644 --- a/droid-results/src/main/java/uk/gov/nationalarchives/droid/profile/export/JDBCSqlItemReader.java +++ b/droid-results/src/main/java/uk/gov/nationalarchives/droid/profile/export/JDBCSqlItemReader.java @@ -71,6 +71,8 @@ public class JDBCSqlItemReader implements ItemReader { private static final String PUID = "PUID"; private static final String NODE_ID = "NODE_ID"; private static final String NAME = "NAME"; + private static final String MIME_TYPE = "MIME_TYPE"; + private static final String VERSION = "VERSION"; private static final String EMPTY_FOLTER_SUBSELECT = " CASE \n" + "\t\t WHEN p.RESOURCE_TYPE = 0 THEN \n" + "\t\t \tCASE\n" @@ -408,9 +410,9 @@ private Map loadAllFormats() { Format format = new Format(); String puid = rs.getString(PUID); format.setPuid(puid); - format.setMimeType(rs.getString("MIME_TYPE")); - format.setName(NAME); - format.setVersion("VERSION"); + format.setMimeType(rs.getString(MIME_TYPE)); + format.setName(rs.getString(NAME)); + format.setVersion(rs.getString(VERSION)); return format; }); diff --git a/droid-swing-ui/pom.xml b/droid-swing-ui/pom.xml index 2f0e05de8..622b220a2 100644 --- a/droid-swing-ui/pom.xml +++ b/droid-swing-ui/pom.xml @@ -98,6 +98,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.form b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.form index 3dc233cdf..ff6832a28 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.form +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.form @@ -24,8 +24,8 @@ - - + + @@ -42,8 +42,8 @@ - - + + @@ -60,17 +60,17 @@ - - + + - - + + - - + + @@ -85,17 +85,17 @@ - - + + - - + + - - + + @@ -110,8 +110,8 @@ - - + + @@ -129,8 +129,8 @@ - - + + @@ -157,16 +157,16 @@ - - + + - - + + - - + + @@ -181,16 +181,16 @@ - - + + - - + + - - + + @@ -207,8 +207,8 @@ - - + + @@ -221,8 +221,8 @@ - - + + @@ -234,6 +234,9 @@ + + + @@ -242,6 +245,9 @@ + + + @@ -262,16 +268,16 @@ - - + + - - + + - - + + @@ -286,16 +292,16 @@ - - + + - - + + - - + + @@ -335,13 +341,13 @@ - - + + - - + + @@ -371,13 +377,13 @@ - - + + - - + + @@ -531,8 +537,8 @@ - - + + @@ -546,8 +552,8 @@ - - + + @@ -564,16 +570,16 @@ - - + + - - + + - - + + @@ -588,8 +594,8 @@ - - + + @@ -610,16 +616,16 @@ - - + + - - + + - - + + @@ -634,16 +640,16 @@ - - + + - - + + - - + + @@ -665,16 +671,16 @@ - - + + - - + + - - + + @@ -689,16 +695,16 @@ - - + + - - + + - - + + @@ -717,8 +723,8 @@ - - + + @@ -778,8 +784,8 @@ - - + + diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.java index f55da5dc7..80b7ab834 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/DroidMainFrame.java @@ -106,6 +106,8 @@ import uk.gov.nationalarchives.droid.gui.report.ReportViewFrame; import uk.gov.nationalarchives.droid.gui.signature.CheckSignatureUpdateAction; import uk.gov.nationalarchives.droid.gui.signature.UpdateSignatureAction; +import uk.gov.nationalarchives.droid.gui.util.DroidImageUtils; +import uk.gov.nationalarchives.droid.gui.util.IconType; import uk.gov.nationalarchives.droid.gui.widgetwrapper.ProfileSelectionDialog; import uk.gov.nationalarchives.droid.planets.gui.PlanetXMLFileFilter; import uk.gov.nationalarchives.droid.planets.gui.PlanetXMLProgressDialog; @@ -127,6 +129,7 @@ public class DroidMainFrame extends JFrame { private static final String STATE = "state"; private static final long serialVersionUID = 8170787911864425667L; + private static final String ICONS_PATH = "/uk/gov/nationalarchives/droid/icons/"; private Logger log = LoggerFactory.getLogger(getClass()); @@ -287,8 +290,7 @@ public void propertyChange(PropertyChangeEvent evt) { private void init() { log.info("Starting DROID."); - URL icon = getClass().getResource("/uk/gov/nationalarchives/droid/icons/DROID16.gif"); - setIconImage(new ImageIcon(icon).getImage()); + setIconImage(new ImageIcon(getClass().getResource(ICONS_PATH + "96x96-DROID.png")).getImage()); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { @@ -473,7 +475,7 @@ public void propertyChange(java.beans.PropertyChangeEvent evt) { } }); - jButtonNewProfile.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/New.png"))); // NOI18N + jButtonNewProfile.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"New.png", IconType.LARGE)); jButtonNewProfile.setText("New"); jButtonNewProfile.setToolTipText("Create new profile"); jButtonNewProfile.setFocusable(false); @@ -486,7 +488,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); droidToolBar.add(jButtonNewProfile); - jButtonOpenProfile.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Open file.png"))); // NOI18N + jButtonOpenProfile.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Open file.png", IconType.LARGE)); jButtonOpenProfile.setText("Open"); jButtonOpenProfile.setToolTipText("Open existing profile"); jButtonOpenProfile.setFocusable(false); @@ -499,11 +501,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); droidToolBar.add(jButtonOpenProfile); - jButtonSaveProfile.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Save.png"))); // NOI18N + jButtonSaveProfile.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save.png", IconType.LARGE)); jButtonSaveProfile.setText("Save"); jButtonSaveProfile.setToolTipText("Save profile"); - jButtonSaveProfile.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Save disabled.png"))); // NOI18N - jButtonSaveProfile.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Save disabled.png"))); // NOI18N + jButtonSaveProfile.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save disabled.png", IconType.LARGE)); + jButtonSaveProfile.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save disabled.png", IconType.LARGE)); jButtonSaveProfile.setFocusable(false); jButtonSaveProfile.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButtonSaveProfile.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); @@ -514,7 +516,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); droidToolBar.add(jButtonSaveProfile); - jButtonExport.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Export.png"))); // NOI18N + jButtonExport.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Export.png", IconType.LARGE)); jButtonExport.setText("Export"); jButtonExport.setToolTipText("Export results"); jButtonExport.setFocusable(false); @@ -530,11 +532,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jSeparator13.setSeparatorSize(new java.awt.Dimension(20, 40)); droidToolBar.add(jSeparator13); - jButtonAddFile.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Add.png"))); // NOI18N + jButtonAddFile.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Add.png", IconType.LARGE)); jButtonAddFile.setText("Add"); jButtonAddFile.setToolTipText("Add files or folders to profile"); - jButtonAddFile.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Add disabled.png"))); // NOI18N - jButtonAddFile.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Add disabled.png"))); // NOI18N + jButtonAddFile.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Add disabled.png", IconType.LARGE)); + jButtonAddFile.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Add disabled.png", IconType.LARGE)); jButtonAddFile.setFocusable(false); jButtonAddFile.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButtonAddFile.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); @@ -545,11 +547,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); droidToolBar.add(jButtonAddFile); - jButtonRemoveFilesAndFolder.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Remove.png"))); // NOI18N + jButtonRemoveFilesAndFolder.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Remove.png", IconType.LARGE)); jButtonRemoveFilesAndFolder.setText("Remove"); jButtonRemoveFilesAndFolder.setToolTipText("Remove files/folders from profile"); - jButtonRemoveFilesAndFolder.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Remove disabled.png"))); // NOI18N - jButtonRemoveFilesAndFolder.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Remove disabled.png"))); // NOI18N + jButtonRemoveFilesAndFolder.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Remove disabled.png", IconType.LARGE)); + jButtonRemoveFilesAndFolder.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Remove disabled.png", IconType.LARGE)); jButtonRemoveFilesAndFolder.setFocusable(false); jButtonRemoveFilesAndFolder.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButtonRemoveFilesAndFolder.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); @@ -563,11 +565,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jSeparator12.setSeparatorSize(new java.awt.Dimension(20, 40)); droidToolBar.add(jSeparator12); - jButtonStart.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Play.png"))); // NOI18N + jButtonStart.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Play.png", IconType.LARGE)); jButtonStart.setText("Start"); jButtonStart.setToolTipText("Run identification"); - jButtonStart.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Play disabled.png"))); // NOI18N - jButtonStart.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Play disabled.png"))); // NOI18N + jButtonStart.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Play disabled.png", IconType.LARGE)); + jButtonStart.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Play disabled.png", IconType.LARGE)); jButtonStart.setFocusable(false); jButtonStart.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButtonStart.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); @@ -578,11 +580,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); droidToolBar.add(jButtonStart); - jButtonStop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Pause.png"))); // NOI18N + jButtonStop.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Pause.png", IconType.LARGE)); jButtonStop.setText("Pause"); jButtonStop.setToolTipText("Pause identification"); - jButtonStop.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Pause disabled.png"))); // NOI18N - jButtonStop.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Pause disabled.png"))); // NOI18N + jButtonStop.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Pause disabled.png", IconType.LARGE)); + jButtonStop.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Pause disabled.png", IconType.LARGE)); jButtonStop.setFocusable(false); jButtonStop.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButtonStop.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); @@ -596,7 +598,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jSeparator11.setSeparatorSize(new java.awt.Dimension(20, 40)); droidToolBar.add(jSeparator11); - jButtonFilter.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/icons/Filter.png"))); // NOI18N + jButtonFilter.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Filter.png", IconType.LARGE)); jButtonFilter.setText("Filter"); jButtonFilter.setToolTipText("Define and apply filter to results"); jButtonFilter.setFocusable(false); @@ -642,7 +644,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jSeparator10.setSeparatorSize(new java.awt.Dimension(20, 40)); droidToolBar.add(jSeparator10); - jButtonReport.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Report.png"))); // NOI18N + jButtonReport.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Report.png", IconType.LARGE)); jButtonReport.setText("Report"); jButtonReport.setToolTipText("Generate a statistical report over the open profiles"); jButtonReport.setFocusable(false); @@ -667,7 +669,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); jMenuItemNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/New small.png"))); // NOI18N + jMenuItemNew.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"New.png", IconType.SMALL)); jMenuItemNew.setText("New"); jMenuItemNew.setToolTipText("New profile"); jMenuItemNew.addActionListener(new java.awt.event.ActionListener() { @@ -678,7 +680,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuFile.add(jMenuItemNew); jMenuItemOpen.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemOpen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Open file small.png"))); // NOI18N + jMenuItemOpen.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Open file.png", IconType.SMALL)); jMenuItemOpen.setText("Open"); jMenuItemOpen.setToolTipText("Open a profile"); jMenuItemOpen.addActionListener(new java.awt.event.ActionListener() { @@ -689,12 +691,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuFile.add(jMenuItemOpen); jMenuSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); - jMenuSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Save small.png"))); // NOI18N + jMenuSave.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save.png", IconType.SMALL)); jMenuSave.setText("Save"); jMenuSave.setToolTipText("Save a profile"); jMenuSave.setActionCommand("save"); - jMenuSave.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/icons/Save Blue 16 d g.gif"))); // NOI18N - jMenuSave.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/icons/Save Blue 16 d g.gif"))); // NOI18N + jMenuSave.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save disabled.png", IconType.SMALL)); + jMenuSave.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save disabled.png", IconType.SMALL)); jMenuSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuSaveActionPerformed(evt); @@ -703,12 +705,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuFile.add(jMenuSave); jMenuSaveAs.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - jMenuSaveAs.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Save As small.png"))); // NOI18N + jMenuSaveAs.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save As.png", IconType.SMALL)); jMenuSaveAs.setText("Save As..."); jMenuSaveAs.setToolTipText("Save a profile to a specified file"); jMenuSaveAs.setActionCommand("save"); - jMenuSaveAs.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Save As small disabled.png"))); // NOI18N - jMenuSaveAs.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Save As small disabled.png"))); // NOI18N + jMenuSaveAs.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save As disabled.png", IconType.SMALL)); + jMenuSaveAs.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Save As disabled.png", IconType.SMALL)); jMenuSaveAs.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuSaveAsActionPerformed(evt); @@ -717,7 +719,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuFile.add(jMenuSaveAs); jMenuItemExport.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemExport.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Export small.png"))); // NOI18N + jMenuItemExport.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Export.png", IconType.SMALL)); jMenuItemExport.setText("Export all..."); jMenuItemExport.setToolTipText("Export profiles"); jMenuItemExport.setActionCommand("export"); @@ -729,7 +731,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuFile.add(jMenuItemExport); jMenuQuit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK)); - jMenuQuit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Quit Small.png"))); // NOI18N + jMenuQuit.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Quit.png", IconType.SMALL)); jMenuQuit.setText("Quit"); jMenuQuit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -755,11 +757,11 @@ public void menuSelected(javax.swing.event.MenuEvent evt) { }); jMenuItemAddFileOrFolders.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemAddFileOrFolders.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Add small.png"))); // NOI18N + jMenuItemAddFileOrFolders.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Add.png", IconType.SMALL)); jMenuItemAddFileOrFolders.setText("Add file/folders"); jMenuItemAddFileOrFolders.setToolTipText("Add files or folders to a profile"); - jMenuItemAddFileOrFolders.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Add small disabled.png"))); // NOI18N - jMenuItemAddFileOrFolders.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Add small disabled.png"))); // NOI18N + jMenuItemAddFileOrFolders.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Add disabled.png", IconType.SMALL)); + jMenuItemAddFileOrFolders.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Add disabled.png", IconType.SMALL)); jMenuItemAddFileOrFolders.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItemAddFileOrFoldersActionPerformed(evt); @@ -768,11 +770,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuEdit.add(jMenuItemAddFileOrFolders); jMenuItemRemoveFolder.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemRemoveFolder.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Remove small.png"))); // NOI18N + jMenuItemRemoveFolder.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Remove.png", IconType.SMALL)); jMenuItemRemoveFolder.setText("Remove files/folders"); jMenuItemRemoveFolder.setToolTipText("Remove files or folders from a profile"); - jMenuItemRemoveFolder.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Remove small disabled.png"))); // NOI18N - jMenuItemRemoveFolder.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Remove small disabled.png"))); // NOI18N + jMenuItemRemoveFolder.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Remove disabled.png", IconType.SMALL)); + jMenuItemRemoveFolder.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Remove disabled.png", IconType.SMALL)); jMenuItemRemoveFolder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItemRemoveFolderActionPerformed(evt); @@ -782,7 +784,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuEdit.add(jSeparator1); jMenuItemOpenFolder.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ENTER, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemOpenFolder.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/icons/Icon_External_Link.png"))); // NOI18N + jMenuItemOpenFolder.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Open containing folder.png", IconType.SMALL)); jMenuItemOpenFolder.setText("Open containing folder..."); jMenuItemOpenFolder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -792,7 +794,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuEdit.add(jMenuItemOpenFolder); jMenuItemCopyToClipboard.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemCopyToClipboard.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Clipboard small.png"))); // NOI18N + jMenuItemCopyToClipboard.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Clipboard.png", IconType.SMALL)); jMenuItemCopyToClipboard.setText("Copy to clipboard"); jMenuItemCopyToClipboard.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -802,6 +804,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuEdit.add(jMenuItemCopyToClipboard); jMenuEdit.add(jSeparator2); + jMenuItemExpandChildren.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Expand.png", IconType.SMALL)); jMenuItemExpandChildren.setText("Expand"); jMenuItemExpandChildren.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -810,6 +813,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); jMenuEdit.add(jMenuItemExpandChildren); + jMenuItemExpandNextThree.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Expand 3 levels.png", IconType.SMALL)); jMenuItemExpandNextThree.setText("Expand next three levels"); jMenuItemExpandNextThree.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -825,11 +829,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuRun.setActionCommand("run"); jMenuItemStart.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemStart.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Play small.png"))); // NOI18N + jMenuItemStart.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Play.png", IconType.SMALL)); jMenuItemStart.setText("Start identification"); jMenuItemStart.setToolTipText("Start identifying files in the profile"); - jMenuItemStart.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Play small disabled.png"))); // NOI18N - jMenuItemStart.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Play small disabled.png"))); // NOI18N + jMenuItemStart.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Play disabled.png", IconType.SMALL)); + jMenuItemStart.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Play disabled.png", IconType.SMALL)); jMenuItemStart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItemStartActionPerformed(evt); @@ -838,11 +842,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuRun.add(jMenuItemStart); jMenuItemStop.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK)); - jMenuItemStop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Pause small.png"))); // NOI18N + jMenuItemStop.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Pause.png", IconType.SMALL)); jMenuItemStop.setText("Pause identification"); jMenuItemStop.setToolTipText("Pause identification in the profile"); - jMenuItemStop.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Pause small disabled.png"))); // NOI18N - jMenuItemStop.setDisabledSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Pause small disabled.png"))); // NOI18N + jMenuItemStop.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Pause disabled.png", IconType.SMALL)); + jMenuItemStop.setDisabledSelectedIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Pause disabled.png", IconType.SMALL)); jMenuItemStop.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItemStopActionPerformed(evt); @@ -876,10 +880,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuFilter.add(jSeparator8); jMenuEditFilter.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - jMenuEditFilter.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Filter small.png"))); // NOI18N + jMenuEditFilter.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Filter.png", IconType.SMALL)); jMenuEditFilter.setText("Edit filter..."); jMenuEditFilter.setToolTipText("Edit the filter for a profile"); - jMenuEditFilter.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Filter small disabled.png"))); // NOI18N + jMenuEditFilter.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Filter disabled.png", IconType.SMALL)); jMenuEditFilter.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuEditFilterActionPerformed(evt); @@ -903,10 +907,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuReport.setActionCommand("report"); generateReportMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK)); - generateReportMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Report small.png"))); // NOI18N + generateReportMenuItem.setIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Report.png", IconType.SMALL)); generateReportMenuItem.setText("Generate Report..."); generateReportMenuItem.setToolTipText("Generates a report in DROID XML format"); - generateReportMenuItem.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Report small disabled.png"))); // NOI18N + generateReportMenuItem.setDisabledIcon(DroidImageUtils.createBaseMultiResolutionImage(ICONS_PATH,"Report disabled.png", IconType.SMALL)); generateReportMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateReportMenuItemActionPerformed(evt); diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.form b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.form index ae7d11753..ffb48e29c 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.form +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.form @@ -14,8 +14,8 @@ - - + + @@ -27,8 +27,8 @@ - - + + @@ -42,8 +42,8 @@ - - + + @@ -55,8 +55,8 @@ - - + + @@ -228,15 +228,14 @@ - - - - - - - + + + + + + diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.java index 0e59f0cd5..956bf59b6 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/ProfileForm.java @@ -91,6 +91,8 @@ import uk.gov.nationalarchives.droid.gui.treemodel.OutlineColumn; import uk.gov.nationalarchives.droid.gui.treemodel.OutlineComparableComparator; import uk.gov.nationalarchives.droid.gui.treemodel.ProfileRowModel; +import uk.gov.nationalarchives.droid.gui.util.DroidImageUtils; +import uk.gov.nationalarchives.droid.gui.util.IconType; import uk.gov.nationalarchives.droid.gui.widgetwrapper.FileChooserProxy; import uk.gov.nationalarchives.droid.gui.widgetwrapper.FileChooserProxyImpl; import uk.gov.nationalarchives.droid.gui.widgetwrapper.JOptionPaneProxy; @@ -315,7 +317,7 @@ public void componentShown(java.awt.event.ComponentEvent evt) { } }); - PopupAddFilesAndFolders.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Add small.png"))); // NOI18N + PopupAddFilesAndFolders.setIcon(DroidImageUtils.createBaseMultiResolutionImage("/uk/gov/nationalarchives/droid/icons/","Add.png", IconType.SMALL)); PopupAddFilesAndFolders.setText(org.openide.util.NbBundle.getMessage(ProfileForm.class, "ProfileForm.PopupAddFilesAndFolders.text")); // NOI18N PopupAddFilesAndFolders.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -324,7 +326,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); jPopupMenu1.add(PopupAddFilesAndFolders); - PopupRemoveFilesOrFolders.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Remove small.png"))); // NOI18N + PopupRemoveFilesOrFolders.setIcon(DroidImageUtils.createBaseMultiResolutionImage("/uk/gov/nationalarchives/droid/icons/","Remove.png", IconType.SMALL)); PopupRemoveFilesOrFolders.setText(org.openide.util.NbBundle.getMessage(ProfileForm.class, "ProfileForm.PopupRemoveFilesOrFolders.text")); // NOI18N PopupRemoveFilesOrFolders.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -334,7 +336,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jPopupMenu1.add(PopupRemoveFilesOrFolders); jPopupMenu1.add(PopupSeparator1); - PopupOpenContainingFolder.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/icons/Icon_External_Link.png"))); // NOI18N + PopupOpenContainingFolder.setIcon(DroidImageUtils.createBaseMultiResolutionImage("/uk/gov/nationalarchives/droid/icons/","Icon_External_Link.png", IconType.LARGE)); PopupOpenContainingFolder.setText(org.openide.util.NbBundle.getMessage(ProfileForm.class, "ProfileForm.PopupOpenContainingFolder.text")); // NOI18N PopupOpenContainingFolder.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -343,7 +345,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); jPopupMenu1.add(PopupOpenContainingFolder); - PopupMenuCopyToClipboard.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/OldIcons/Clipboard small.png"))); // NOI18N + PopupMenuCopyToClipboard.setIcon(DroidImageUtils.createBaseMultiResolutionImage("/uk/gov/nationalarchives/droid/icons/","Clipboard.png", IconType.SMALL)); PopupMenuCopyToClipboard.setText(org.openide.util.NbBundle.getMessage(ProfileForm.class, "ProfileForm.PopupMenuCopyToClipboard.text")); // NOI18N PopupMenuCopyToClipboard.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -427,12 +429,12 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { throttlePanelLayout.setVerticalGroup( throttlePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(throttlePanelLayout.createSequentialGroup() - .addGroup(throttlePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(throttleSlider, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(throttlePanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(throttleLabel))) - .addContainerGap(39, Short.MAX_VALUE)) + .addContainerGap() + .addComponent(throttleLabel) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(throttlePanelLayout.createSequentialGroup() + .addComponent(throttleSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addContainerGap()) ); profileProgressBar.setToolTipText(org.openide.util.NbBundle.getMessage(ProfileForm.class, "ProfileForm.profileProgressBar.toolTipText")); // NOI18N @@ -480,7 +482,7 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 868, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 826, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.form b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.form index 446c3eb68..f5a7d6312 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.form +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.form @@ -129,7 +129,7 @@ - + diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.java index b87f8c969..d0320c1a3 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/export/ExportDialog.java @@ -1,552 +1,548 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.export; - -import java.awt.Component; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import javax.swing.ButtonGroup; -import javax.swing.ComboBoxModel; -import javax.swing.DefaultCellEditor; -import javax.swing.DefaultComboBoxModel; -import javax.swing.GroupLayout; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.SwingConstants; -import javax.swing.GroupLayout.Alignment; -import javax.swing.JComboBox; -import javax.swing.LayoutStyle.ComponentPlacement; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableCellRenderer; - -import org.openide.util.NbBundle; - -import uk.gov.nationalarchives.droid.export.interfaces.ExportOptions; -import uk.gov.nationalarchives.droid.gui.DroidMainFrame; -import uk.gov.nationalarchives.droid.gui.ProfileForm; - -/** - * - * @author rflitcroft - */ -public class ExportDialog extends JDialog { - - private static final long serialVersionUID = -4598078880004073202L; - - private DroidMainFrame droidMain; - private DefaultTableModel tableModel; - private List profilesRowData; - private boolean approved; - - - /** - * Creates new form ReportDialog. - * @param parent the dialog's parent - */ - public ExportDialog(final DroidMainFrame parent) { - super(parent); - droidMain = parent; - setModal(true); - - initComponents(); - jScrollPane1.getViewport().setBackground(profileSelectTable.getBackground()); - pack(); - setLocationRelativeTo(getParent()); - - } - - /** - * Shows the dialog in modal mode. - */ - public void showDialog() { - - profilesRowData = new ArrayList(); - Collection profiles = droidMain.getDroidContext().allProfiles(); - for (ProfileForm profile : profiles) { - profilesRowData.add(new ProfileWrapper(profile)); - } - - tableModel = new DefaultTableModel(0, 1) { - @Override - public Class getColumnClass(int columnIndex) { - return ProfileForm.class; - } - - @Override - public boolean isCellEditable(int row, int column) { - return profilesRowData.get(row).getProfile().getProfile().getState().isReportable(); - } - }; - - for (ProfileWrapper profile : profilesRowData) { - Object[] row = new Object[] {profile}; - tableModel.addRow(row); - } - - profileSelectTable.setModel(tableModel); - - profileSelectTable.setDefaultEditor(ProfileForm.class, new CheckBoxEditor()); - profileSelectTable.setDefaultRenderer(ProfileForm.class, new CheckBoxRenderer()); - - jScrollPane1.setColumnHeaderView(null); - profileSelectTable.setCellSelectionEnabled(false); - - enableGenerateButton(); - approved = false; - setVisible(true); - } - - - /** - * - * @return ExportOptions - what sort of export to perform. - */ - public ExportOptions getExportOptions() { - if (RadioOneRowPerFile.isSelected()) { - return ExportOptions.ONE_ROW_PER_FILE; - } - return ExportOptions.ONE_ROW_PER_FORMAT; - } - - /** - * Get the character Output Encoding for the export file. - * - * @return The character encoding for the export file - */ - public String getOutputEncoding() { - final CharsetEncodingItem encoding = (CharsetEncodingItem) cmdEncoding.getSelectedItem(); - return encoding.getCharset().name(); - } - - /** - * Get BOM flag for output encoding. - * @return BOM flag status. - */ - public boolean isBom() { - final CharsetEncodingItem encoding = (CharsetEncodingItem) cmdEncoding.getSelectedItem(); - return encoding.isBom(); - } - - /** - * - * @param options The export options. - */ - public void setExportOptions(ExportOptions options) { - if (options.equals(ExportOptions.ONE_ROW_PER_FILE)) { - RadioOneRowPerFile.setSelected(true); - } else if (options.equals(ExportOptions.ONE_ROW_PER_FORMAT)) { - RadioOneRowPerIdentification.setSelected(true); - } - } - - /** - * @return the profilesRowData - */ - public List getSelectedProfileIds() { - List selectedProfiles = new ArrayList(); - - for (ProfileWrapper profileWrapper : profilesRowData) { - if (profileWrapper.isSelected()) { - selectedProfiles.add(profileWrapper.getProfile().getProfile().getUuid()); - } - } - - return selectedProfiles; - } - - private void cancelButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed - - setVisible(false); - dispose(); - - }//GEN-LAST:event_cancelButtonActionPerformed - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - // //GEN-BEGIN:initComponents - private void initComponents() { - - buttonGroup1 = new ButtonGroup(); - profileSelectLabel = new JLabel(); - jScrollPane1 = new JScrollPane(); - profileSelectTable = new JTable(); - jPanel1 = new JPanel(); - cancelButton = new JButton(); - exportButton = new JButton(); - RadioOneRowPerFile = new JRadioButton(); - RadioOneRowPerIdentification = new JRadioButton(); - cmdEncoding = new JComboBox(); - jLabel1 = new JLabel(); - - setTitle(NbBundle.getMessage(ExportDialog.class, "ExportDialog.title_1")); // NOI18N - setAlwaysOnTop(true); - setName("exportDialog"); // NOI18N - - profileSelectLabel.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.profileSelectLabel.text_1")); // NOI18N - - jScrollPane1.setPreferredSize(new Dimension(300, 402)); - - profileSelectTable.setModel(new DefaultTableModel( - new Object [][] { - - }, - new String [] { - "Title 1" - } - )); - profileSelectTable.setRowHeight(20); - profileSelectTable.setRowSelectionAllowed(false); - profileSelectTable.setShowHorizontalLines(false); - profileSelectTable.setShowVerticalLines(false); - profileSelectTable.setTableHeader(null); - jScrollPane1.setViewportView(profileSelectTable); - - cancelButton.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.cancelButton.text")); // NOI18N - cancelButton.setVerticalAlignment(SwingConstants.BOTTOM); - cancelButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - cancelButtonActionPerformed(evt); - } - }); - - exportButton.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.generateButton.text")); // NOI18N - exportButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - exportButtonActionPerformed(evt); - } - }); - - buttonGroup1.add(RadioOneRowPerFile); - RadioOneRowPerFile.setSelected(true); - RadioOneRowPerFile.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerFile.text")); // NOI18N - RadioOneRowPerFile.setToolTipText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerFile.toolTipText")); // NOI18N - - buttonGroup1.add(RadioOneRowPerIdentification); - RadioOneRowPerIdentification.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerIdentification.text")); // NOI18N - RadioOneRowPerIdentification.setToolTipText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerIdentification.toolTipText")); // NOI18N - - cmdEncoding.setModel(getOutputEncodings()); - cmdEncoding.setEditor(null); - - jLabel1.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.jLabel1.text_1")); // NOI18N - - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING) - .addGroup(Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addComponent(jLabel1) - .addGap(18, 18, 18) - .addComponent(cmdEncoding, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(exportButton) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(RadioOneRowPerFile) - .addPreferredGap(ComponentPlacement.UNRELATED) - .addComponent(RadioOneRowPerIdentification) - .addGap(0, 145, Short.MAX_VALUE))) - .addContainerGap()) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(Alignment.LEADING) - .addGroup(Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addGroup(jPanel1Layout.createParallelGroup(Alignment.BASELINE) - .addComponent(RadioOneRowPerFile) - .addComponent(RadioOneRowPerIdentification)) - .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel1Layout.createParallelGroup(Alignment.BASELINE) - .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, 23, GroupLayout.PREFERRED_SIZE) - .addComponent(exportButton) - .addComponent(cmdEncoding, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel1)) - .addContainerGap()) - ); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(Alignment.LEADING) - .addComponent(jPanel1, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(Alignment.LEADING) - .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(profileSelectLabel)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(profileSelectLabel) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - ); - }// //GEN-END:initComponents - - /** - * @param evt The event that triggers the action. - */ - protected void exportButtonActionPerformed(ActionEvent evt) { - // TODO Auto-generated method stub - approved = true; - setVisible(false); - } - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private JRadioButton RadioOneRowPerFile; - private JRadioButton RadioOneRowPerIdentification; - private ButtonGroup buttonGroup1; - private JButton cancelButton; - private JComboBox cmdEncoding; - private JButton exportButton; - private JLabel jLabel1; - private JPanel jPanel1; - private JScrollPane jScrollPane1; - private JLabel profileSelectLabel; - private JTable profileSelectTable; - // End of variables declaration//GEN-END:variables - - private void enableGenerateButton() { - boolean profileSelected = false; - for (ProfileWrapper profileWrapper : profilesRowData) { - if (profileWrapper.isSelected()) { - profileSelected = true; - break; - } - } - - exportButton.setEnabled(profileSelected); - } - - /** - * Simple tuple for holding combobox items - * for character encoding. - */ - class CharsetEncodingItem { - private final String label; - private final Charset charset; - private final boolean bom; - - /** - * @param label The label to use in the combobox item - * @param charset The character encoding value - */ - public CharsetEncodingItem(final String label, final Charset charset) { - this.label = label; - this.charset = charset; - this.bom = false; - } - - /** - * @param label The label to use in the combobox item - * @param charset The character encoding value - * @param bom Add BOM to the file. - */ - public CharsetEncodingItem(String label, Charset charset, boolean bom) { - this.label = label; - this.charset = charset; - this.bom = bom; - } - - /** - * Gets the label - * - * @return the label - */ - public String getLabel() { - return label; - } - - /** - * Gets the charset - * - * @return the charset - */ - public Charset getCharset() { - return charset; - } - - /** - * Gets bom. - * @return bom flag. - */ - public boolean isBom() { - return bom; - } - - /** - * Returns the label - * - * @return The label - */ - @Override - public String toString() { - return label; - } - } - - private ComboBoxModel getOutputEncodings() { - final DefaultComboBoxModel model = new DefaultComboBoxModel(); - final Charset defaultEncoding = Charset.defaultCharset(); - final Charset utf8 = Charset.forName("UTF-8"); - - model.addElement(new CharsetEncodingItem("UTF 8", utf8)); - model.addElement( - new CharsetEncodingItem("Platform Specific (" + defaultEncoding.name() + ")", defaultEncoding) - ); - model.addElement(new CharsetEncodingItem("UTF 8 with BOM", utf8, true)); - - return model; - } - - - private final class CheckBoxRenderer extends JCheckBox implements TableCellRenderer { - - private static final long serialVersionUID = -4078523535790396904L; - - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, - boolean hasFocus, int row, int column) { - ProfileWrapper profile = (ProfileWrapper) value; - - setSelected(profile.isSelected()); - setText(profile.getProfile().getName()); - setOpaque(false); - - boolean enabled = profilesRowData.get(row).getProfile() - .getProfile().getState().isReportable(); - setEnabled(enabled); - return this; - } - } - - private final class CheckBoxEditor extends DefaultCellEditor { - - private static final long serialVersionUID = 8023412072260282004L; - private ProfileWrapper profile; - - /** - * @param checkBox - */ - public CheckBoxEditor() { - super(new JCheckBox()); - } - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, - boolean isSelected, int row, int column) { - - profile = (ProfileWrapper) value; - - final JCheckBox checkBox = (JCheckBox) getComponent(); - - checkBox.setText(profile.getProfile().getName()); - checkBox.setSelected(profile.isSelected()); - checkBox.setOpaque(false); - - return checkBox; - } - - /** - * @see javax.swing.CellEditor#getCellEditorValue() - */ - @Override - public Object getCellEditorValue() { - profile.setSelected(((JCheckBox) getComponent()).isSelected()); - return profile; - } - } - - private final class ProfileWrapper { - - private ProfileForm profile; - private boolean selected; - - ProfileWrapper(ProfileForm profile) { - this.profile = profile; - } - - /** - * @param selected the selected to set - */ - public void setSelected(boolean selected) { - this.selected = selected; - enableGenerateButton(); - } - - /** - * @return the selected - */ - public boolean isSelected() { - return selected; - } - - /** - * @return the profile - */ - public ProfileForm getProfile() { - return profile; - } - } - - - /** - * @return true if the user approved the export generation; false otherwise. - */ - public boolean isApproved() { - return approved; - } -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.export; + +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.swing.ButtonGroup; +import javax.swing.ComboBoxModel; +import javax.swing.DefaultCellEditor; +import javax.swing.DefaultComboBoxModel; +import javax.swing.GroupLayout; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.GroupLayout.Alignment; +import javax.swing.JComboBox; +import javax.swing.LayoutStyle.ComponentPlacement; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableCellRenderer; + +import org.openide.util.NbBundle; + +import uk.gov.nationalarchives.droid.export.interfaces.ExportOptions; +import uk.gov.nationalarchives.droid.gui.DroidMainFrame; +import uk.gov.nationalarchives.droid.gui.ProfileForm; + +/** + * + * @author rflitcroft + */ +public class ExportDialog extends JDialog { + + private static final long serialVersionUID = -4598078880004073202L; + + private DroidMainFrame droidMain; + private DefaultTableModel tableModel; + private List profilesRowData; + private boolean approved; + + + /** + * Creates new form ReportDialog. + * @param parent the dialog's parent + */ + public ExportDialog(final DroidMainFrame parent) { + super(parent); + droidMain = parent; + setModal(true); + + initComponents(); + jScrollPane1.getViewport().setBackground(profileSelectTable.getBackground()); + pack(); + setLocationRelativeTo(getParent()); + + } + + /** + * Shows the dialog in modal mode. + */ + public void showDialog() { + + profilesRowData = new ArrayList(); + Collection profiles = droidMain.getDroidContext().allProfiles(); + for (ProfileForm profile : profiles) { + profilesRowData.add(new ProfileWrapper(profile)); + } + + tableModel = new DefaultTableModel(0, 1) { + @Override + public Class getColumnClass(int columnIndex) { + return ProfileForm.class; + } + + @Override + public boolean isCellEditable(int row, int column) { + return profilesRowData.get(row).getProfile().getProfile().getState().isReportable(); + } + }; + + for (ProfileWrapper profile : profilesRowData) { + Object[] row = new Object[] {profile}; + tableModel.addRow(row); + } + + profileSelectTable.setModel(tableModel); + + profileSelectTable.setDefaultEditor(ProfileForm.class, new CheckBoxEditor()); + profileSelectTable.setDefaultRenderer(ProfileForm.class, new CheckBoxRenderer()); + + jScrollPane1.setColumnHeaderView(null); + profileSelectTable.setCellSelectionEnabled(false); + + enableGenerateButton(); + approved = false; + setVisible(true); + } + + + /** + * + * @return ExportOptions - what sort of export to perform. + */ + public ExportOptions getExportOptions() { + if (RadioOneRowPerFile.isSelected()) { + return ExportOptions.ONE_ROW_PER_FILE; + } + return ExportOptions.ONE_ROW_PER_FORMAT; + } + + /** + * Get the character Output Encoding for the export file. + * + * @return The character encoding for the export file + */ + public String getOutputEncoding() { + final CharsetEncodingItem encoding = (CharsetEncodingItem) cmdEncoding.getSelectedItem(); + return encoding.getCharset().name(); + } + + /** + * Get BOM flag for output encoding. + * @return BOM flag status. + */ + public boolean isBom() { + final CharsetEncodingItem encoding = (CharsetEncodingItem) cmdEncoding.getSelectedItem(); + return encoding.isBom(); + } + + /** + * + * @param options The export options. + */ + public void setExportOptions(ExportOptions options) { + if (options.equals(ExportOptions.ONE_ROW_PER_FILE)) { + RadioOneRowPerFile.setSelected(true); + } else if (options.equals(ExportOptions.ONE_ROW_PER_FORMAT)) { + RadioOneRowPerIdentification.setSelected(true); + } + } + + /** + * @return the profilesRowData + */ + public List getSelectedProfileIds() { + List selectedProfiles = new ArrayList(); + + for (ProfileWrapper profileWrapper : profilesRowData) { + if (profileWrapper.isSelected()) { + selectedProfiles.add(profileWrapper.getProfile().getProfile().getUuid()); + } + } + + return selectedProfiles; + } + + private void cancelButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed + + setVisible(false); + dispose(); + + }//GEN-LAST:event_cancelButtonActionPerformed + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonGroup1 = new ButtonGroup(); + profileSelectLabel = new JLabel(); + jScrollPane1 = new JScrollPane(); + profileSelectTable = new JTable(); + jPanel1 = new JPanel(); + cancelButton = new JButton(); + exportButton = new JButton(); + RadioOneRowPerFile = new JRadioButton(); + RadioOneRowPerIdentification = new JRadioButton(); + cmdEncoding = new JComboBox(); + jLabel1 = new JLabel(); + + setTitle(NbBundle.getMessage(ExportDialog.class, "ExportDialog.title_1")); // NOI18N + setAlwaysOnTop(true); + setName("exportDialog"); // NOI18N + + profileSelectLabel.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.profileSelectLabel.text_1")); // NOI18N + + jScrollPane1.setPreferredSize(new Dimension(300, 402)); + + profileSelectTable.setModel(new DefaultTableModel( + new Object [][] { + + }, + new String [] { + "Title 1" + } + )); + profileSelectTable.setRowHeight(20); + profileSelectTable.setRowSelectionAllowed(false); + profileSelectTable.setShowHorizontalLines(false); + profileSelectTable.setShowVerticalLines(false); + profileSelectTable.setTableHeader(null); + jScrollPane1.setViewportView(profileSelectTable); + + cancelButton.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.cancelButton.text")); // NOI18N + cancelButton.setVerticalAlignment(SwingConstants.BOTTOM); + cancelButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + cancelButtonActionPerformed(evt); + } + }); + + exportButton.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.generateButton.text")); // NOI18N + exportButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + exportButtonActionPerformed(evt); + } + }); + + buttonGroup1.add(RadioOneRowPerFile); + RadioOneRowPerFile.setSelected(true); + RadioOneRowPerFile.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerFile.text")); // NOI18N + RadioOneRowPerFile.setToolTipText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerFile.toolTipText")); // NOI18N + + buttonGroup1.add(RadioOneRowPerIdentification); + RadioOneRowPerIdentification.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerIdentification.text")); // NOI18N + RadioOneRowPerIdentification.setToolTipText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.RadioOneRowPerIdentification.toolTipText")); // NOI18N + + cmdEncoding.setModel(getOutputEncodings()); + cmdEncoding.setEditor(null); + + jLabel1.setText(NbBundle.getMessage(ExportDialog.class, "ExportDialog.jLabel1.text_1")); // NOI18N + + GroupLayout jPanel1Layout = new GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING) + .addGroup(Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addComponent(jLabel1) + .addGap(18, 18, 18) + .addComponent(cmdEncoding, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(exportButton) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(RadioOneRowPerFile) + .addPreferredGap(ComponentPlacement.UNRELATED) + .addComponent(RadioOneRowPerIdentification) + .addGap(0, 145, Short.MAX_VALUE))) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING) + .addGroup(Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(Alignment.BASELINE) + .addComponent(RadioOneRowPerFile) + .addComponent(RadioOneRowPerIdentification)) + .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(Alignment.BASELINE) + .addComponent(cancelButton) + .addComponent(exportButton) + .addComponent(cmdEncoding, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel1)) + .addContainerGap()) + ); + + GroupLayout layout = new GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING) + .addComponent(jPanel1, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(Alignment.LEADING) + .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(profileSelectLabel)) + .addContainerGap()) + ); + layout.setVerticalGroup(layout.createParallelGroup(Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(profileSelectLabel) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + ); + }// //GEN-END:initComponents + + /** + * @param evt The event that triggers the action. + */ + protected void exportButtonActionPerformed(ActionEvent evt) { + // TODO Auto-generated method stub + approved = true; + setVisible(false); + } + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private JRadioButton RadioOneRowPerFile; + private JRadioButton RadioOneRowPerIdentification; + private ButtonGroup buttonGroup1; + private JButton cancelButton; + private JComboBox cmdEncoding; + private JButton exportButton; + private JLabel jLabel1; + private JPanel jPanel1; + private JScrollPane jScrollPane1; + private JLabel profileSelectLabel; + private JTable profileSelectTable; + // End of variables declaration//GEN-END:variables + + private void enableGenerateButton() { + boolean profileSelected = false; + for (ProfileWrapper profileWrapper : profilesRowData) { + if (profileWrapper.isSelected()) { + profileSelected = true; + break; + } + } + + exportButton.setEnabled(profileSelected); + } + + /** + * Simple tuple for holding combobox items + * for character encoding. + */ + class CharsetEncodingItem { + private final String label; + private final Charset charset; + private final boolean bom; + + /** + * @param label The label to use in the combobox item + * @param charset The character encoding value + */ + public CharsetEncodingItem(final String label, final Charset charset) { + this.label = label; + this.charset = charset; + this.bom = false; + } + + /** + * @param label The label to use in the combobox item + * @param charset The character encoding value + * @param bom Add BOM to the file. + */ + public CharsetEncodingItem(String label, Charset charset, boolean bom) { + this.label = label; + this.charset = charset; + this.bom = bom; + } + + /** + * Gets the label + * + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * Gets the charset + * + * @return the charset + */ + public Charset getCharset() { + return charset; + } + + /** + * Gets bom. + * @return bom flag. + */ + public boolean isBom() { + return bom; + } + + /** + * Returns the label + * + * @return The label + */ + @Override + public String toString() { + return label; + } + } + + private ComboBoxModel getOutputEncodings() { + final DefaultComboBoxModel model = new DefaultComboBoxModel(); + final Charset defaultEncoding = Charset.defaultCharset(); + final Charset utf8 = Charset.forName("UTF-8"); + + model.addElement(new CharsetEncodingItem("UTF 8", utf8)); + model.addElement( + new CharsetEncodingItem("Platform Specific (" + defaultEncoding.name() + ")", defaultEncoding) + ); + model.addElement(new CharsetEncodingItem("UTF 8 with BOM", utf8, true)); + + return model; + } + + + private final class CheckBoxRenderer extends JCheckBox implements TableCellRenderer { + + private static final long serialVersionUID = -4078523535790396904L; + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, + boolean hasFocus, int row, int column) { + ProfileWrapper profile = (ProfileWrapper) value; + + setSelected(profile.isSelected()); + setText(profile.getProfile().getName()); + setOpaque(false); + + boolean enabled = profilesRowData.get(row).getProfile() + .getProfile().getState().isReportable(); + setEnabled(enabled); + return this; + } + } + + private final class CheckBoxEditor extends DefaultCellEditor { + + private static final long serialVersionUID = 8023412072260282004L; + private ProfileWrapper profile; + + /** + * @param checkBox + */ + public CheckBoxEditor() { + super(new JCheckBox()); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, int row, int column) { + + profile = (ProfileWrapper) value; + + final JCheckBox checkBox = (JCheckBox) getComponent(); + + checkBox.setText(profile.getProfile().getName()); + checkBox.setSelected(profile.isSelected()); + checkBox.setOpaque(false); + + return checkBox; + } + + /** + * @see javax.swing.CellEditor#getCellEditorValue() + */ + @Override + public Object getCellEditorValue() { + profile.setSelected(((JCheckBox) getComponent()).isSelected()); + return profile; + } + } + + private final class ProfileWrapper { + + private ProfileForm profile; + private boolean selected; + + ProfileWrapper(ProfileForm profile) { + this.profile = profile; + } + + /** + * @param selected the selected to set + */ + public void setSelected(boolean selected) { + this.selected = selected; + enableGenerateButton(); + } + + /** + * @return the selected + */ + public boolean isSelected() { + return selected; + } + + /** + * @return the profile + */ + public ProfileForm getProfile() { + return profile; + } + } + + + /** + * @return true if the user approved the export generation; false otherwise. + */ + public boolean isApproved() { + return approved; + } +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.form b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.form index 373c031ef..182d8f85d 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.form +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.form @@ -15,6 +15,7 @@ + @@ -31,24 +32,25 @@ - - - - - - - + + + + + + + + - + - + @@ -72,13 +74,8 @@ - - - - - - - + + diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.java index 0bdafd542..0e7b79a6e 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/filter/FilterDialog.java @@ -1,819 +1,818 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.filter; - -import java.awt.Component; -import java.awt.Frame; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.event.WindowEvent; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.file.Files; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.DefaultComboBoxModel; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JFileChooser; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JTable; -import javax.swing.ListSelectionModel; -import javax.swing.plaf.basic.BasicComboBoxRenderer; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableColumn; -import javax.xml.bind.JAXBException; - - -import uk.gov.nationalarchives.droid.core.interfaces.filter.CriterionFieldEnum; -import uk.gov.nationalarchives.droid.core.interfaces.filter.CriterionOperator; -import uk.gov.nationalarchives.droid.gui.DroidUIContext; -import uk.gov.nationalarchives.droid.gui.ProfileForm; -import uk.gov.nationalarchives.droid.gui.action.ApplyFilterToTreeTableAction; -import uk.gov.nationalarchives.droid.gui.filter.action.InitialiseFilterAction; -import uk.gov.nationalarchives.droid.gui.filter.action.LoadFilterAction; -import uk.gov.nationalarchives.droid.gui.filter.domain.DummyMetadata; -import uk.gov.nationalarchives.droid.gui.filter.domain.FilterDomain; -import uk.gov.nationalarchives.droid.gui.filter.domain.FilterValidationException; -import uk.gov.nationalarchives.droid.gui.filter.domain.GenericMetadata; -import uk.gov.nationalarchives.droid.gui.filter.domain.LastModifiedDateMetadata; -import uk.gov.nationalarchives.droid.gui.filter.domain.ExtensionMismatchMetadata; -import uk.gov.nationalarchives.droid.profile.FilterCriterionImpl; -import uk.gov.nationalarchives.droid.profile.FilterImpl; -import uk.gov.nationalarchives.droid.profile.FilterSpecDao; -import uk.gov.nationalarchives.droid.profile.JaxbFilterSpecDao; -import uk.gov.nationalarchives.droid.profile.ProfileManager; - -/** - * @author Alok Kumar Dash. - */ -public class FilterDialog extends JDialog { - - /** */ - private static final int ROW_HEIGHT = 23; - /** */ - private static final String REMOVE = "Remove"; - private static final int COL_0_WIDTH = 150; - private static final int COL_1_WIDTH = 150; - private static final int COL_3_WIDTH = 90; - private static final int COL_2_WIDTH = 375; - - private static final int COL_0 = 0; - private static final int COL_1 = 1; - private static final int COL_2 = 2; - private static final int COL_3 = 3; - - private static final long serialVersionUID = 5181319919824269596L; - - private DefaultTableModel tableModel = new DefaultTableModel(); - - // FilterDomain is used to load Filter condition in filter dialog and - // associated logic behind it. - private FilterDomain filterDomain = new FilterDomain(); - // Filter Context is used to store user selected values in filter and later - // used to persist in an xml in local disk. - // FilterContext filterContext = new FilterContext(); - private FilterImpl filterContext; - - // temporary filter context is used to store previous state of FIlter - // conditions before user stared to amend. - // and it is used to assign to changed filterContext if user decide not to - // apply changes. - private FilterImpl tempFilterContext; - - private DroidUIContext droidContext; - - private ProfileManager profileManager; - - private JComboBox metaDataCombobox; - - private JComboBox operationCombobox; - - private DefaultComboBoxModel operationComboboxModel; - - private boolean filterPredicatesLoading; - - private JFileChooser filterFileChooser; - - - /** - * Creates new form FilterDialog. CLones Filter context. - * - * @param parent - * Parent dialog. - * @param modal - * If we want filter dialog to be not modal. - * @param filterContext - * Filter Context - * @param droidContext - * Droid Context. - * @param profileManager - * Profile Manager. - * @param filterFileChooser - the file chooser to load or save filters. - */ - public FilterDialog(Frame parent, boolean modal, FilterImpl filterContext, - DroidUIContext droidContext, ProfileManager profileManager, JFileChooser filterFileChooser) { - super(parent, modal); - this.filterContext = filterContext; - this.droidContext = droidContext; - this.profileManager = profileManager; - this.filterFileChooser = filterFileChooser; - intialiseFilter(); - initComponents(); - myInitComponents(); - tempFilterContext = (FilterImpl) filterContext.clone(); - loadFilter(); - setLocationRelativeTo(parent); - } - - /** - * - * @return the filter - */ - public FilterDomain getFilter() { - return filterDomain; - } - - /** - * - * @param filter - * the filter to set - */ - public void setFilter(FilterDomain filter) { - this.filterDomain = filter; - } - - /** - * - * @return the filter context - */ - public FilterImpl getFilterContext() { - return filterContext; - } - - private void loadFilter() { - - if (isFilterPrevioudlyLoaded()) { - filterPredicatesLoading = true; - filterEnabledCheckbox.setSelected(filterContext.isEnabled()); - setFilterMode(); - LoadFilterAction loadFilterAction = new LoadFilterAction(); - loadFilterAction.loadFilter(this); - filterPredicatesLoading = false; - } - } - - /** - * - */ - private void setFilterMode() { - if (filterContext.isNarrowed()) { - narrowResultRadioButton.setSelected(true); - } else { - widenResultsRadioButton.setSelected(true); - } - } - - private boolean isFilterPrevioudlyLoaded() { - return filterContext.hasCriteria(); - } - - private void intialiseFilter() { - - String profileId = droidContext.getSelectedProfile().getProfile().getUuid(); - InitialiseFilterAction initialiseFilterAction = new InitialiseFilterAction(); - initialiseFilterAction.initialiseFilter(profileId, profileManager, filterDomain); - - } - - /** - * @return Object[] Object Array for the entire row in the filter table. - */ - - public Object[] getRowForTable() { - Component component = new TextBoxAndButton(this); - component.hide(); - // get all the meta data and load the combo - metaDataCombobox = new JComboBox(filterDomain.getMetaDataNames()); - metaDataCombobox.setRenderer(new BasicComboBoxRenderer() { - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, - boolean cellHasFocus) { - final String displayText = value == null ? "" : value.toString(); - return super.getListCellRendererComponent(list, displayText, index, isSelected, cellHasFocus); - } - }); - - operationCombobox = new JComboBox(); - operationComboboxModel = new DefaultComboBoxModel(); - operationCombobox.setModel(operationComboboxModel); - - - metaDataCombobox.addItemListener(new MetaDataComboItemListner()); - operationCombobox.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - - if (e.getStateChange() == ItemEvent.SELECTED && !filterPredicatesLoading) { - // set the corresponding value at filter context. - FilterCriterionImpl filterCriterion = - filterContext.getFilterCriterion(filterTable.getSelectedRow()); - JComboBox sourceCombo = (JComboBox) e.getSource(); - filterCriterion.setOperator((CriterionOperator) sourceCombo.getSelectedItem()); - } - } - }); - - // Remove button and its listner. - - JButton jButton2 = new JButton(REMOVE); - - // CHECKSTYLE:OFF FIXME - inner class is too long - jButton2.addActionListener(new ActionListener() { - // CHECKSTYLE:ON - @Override - public void actionPerformed(ActionEvent e) { - if (tableModel.getRowCount() > 1 && (filterTable.getSelectedRow() + 1) != tableModel.getRowCount()) { - int size = filterContext.getNumberOfFilterCriterion(); - - filterContext.removeFilterCriterion(filterTable.getSelectedRow()); - // fill the empty criteria which is been removed. - for (int k = filterTable.getSelectedRow() + 1; k < size; k++) { - filterContext.getFilterCriteriaMap().put(k - 1, filterContext.getFilterCriteriaMap().get(k)); - } - // remove the last one - filterContext.removeFilterCriterion(size - 1); - - tableModel.removeRow(filterTable.getSelectedRow()); - tableModel.fireTableRowsDeleted(filterTable.getSelectedRow(), filterTable.getSelectedRow()); - filterTable.revalidate(); - initColumnSizes(filterTable); - } - } - }); - Object[] data = {metaDataCombobox, operationCombobox, component, jButton2 }; - metaDataCombobox.setMaximumRowCount(filterDomain.getMetaDataNames().length); - return data; - } - - - - // CHECKSTYLE:OFF FIXME - anonymous class is way too long - private class MetaDataComboItemListner implements ItemListener { - @SuppressWarnings("deprecation") - @Override - // CHECKSTYLE:ON - public void itemStateChanged(ItemEvent e) { - if (!filterPredicatesLoading) { - - - CriterionFieldEnum deSelectedItem = null; - if (e.getStateChange() == e.DESELECTED) { - deSelectedItem = (CriterionFieldEnum) e.getItem(); - } - - Component comp = null; - int selectedRow = filterTable.getSelectedRow(); - // Get the source combo, and corresponding option combo and - // textbox and button references. - JComboBox sourceCombo = (JComboBox) e.getSource(); - // find what is selected. - CriterionFieldEnum selectedItem = (CriterionFieldEnum) sourceCombo.getSelectedItem(); - if (selectedItem != null) { - // get Metadata Object from the selected string. - GenericMetadata metadata = filterDomain.getMetaDataFromFieldType(selectedItem); - - if (metadata instanceof LastModifiedDateMetadata) { - comp = new DatePicker(); - } else if (metadata instanceof ExtensionMismatchMetadata) { - comp = new JComboBox(); - } else { - comp = new TextBoxAndButton(FilterDialog.this); - } - tableModel.setValueAt(comp, filterTable.getSelectedRow(), 2); - - if (e.getStateChange() == ItemEvent.SELECTED) { - // Add a new row if metadata is selected at last - // row. - if (tableModel.getRowCount() == selectedRow + 1) { - tableModel.addRow(getRowForTable()); - filterTable.revalidate(); - } - JComboBox comboBox = (JComboBox) tableModel.getValueAt(selectedRow, 1); - operationComboboxModel = (DefaultComboBoxModel) comboBox.getModel(); - // If filter criteria is not there that means fresh - // criteria for selected row and create one - - FilterCriterionImpl newCriteria = new FilterCriterionImpl(); - newCriteria.setRowNumber(filterTable.getSelectedRow()); - newCriteria.setField(metadata.getField()); - filterContext.addFilterCiterion(newCriteria, filterTable.getSelectedRow()); - - // Apply metadaUi logic. - applyMetadaUILogic(comp, metadata); - - //Add the possible criteria e.g. all, any equal to... - operationComboboxModel.removeAllElements(); - for (CriterionOperator metaDataOp : metadata.getOperationList()) { - operationComboboxModel.addElement(metaDataOp); - } - - if (comp instanceof TextBoxAndButton) { - ((TextBoxAndButton) comp).setType(metadata, filterContext.getFilterCriterion(filterTable - .getSelectedRow())); - } - //BNO: For extension_mismatch - if (comp instanceof JComboBox) { - JComboBox combo = (JComboBox) comp; - combo.addItem("true"); - combo.addItem("false"); - } - filterTable.repaint(); - } - } else { - GenericMetadata metadata = getFilterDomain().getMetaDataFromFieldType(deSelectedItem); - sourceCombo.getModel().setSelectedItem(metadata.getField()); - } - } - } - - /** - * @param comp - * @param metadata - */ - @SuppressWarnings("deprecation") - private void applyMetadaUILogic(Component comp, GenericMetadata metadata) { - if (metadata.isFreeText()) { - if (comp instanceof TextBoxAndButton) { - ((TextBoxAndButton) comp).getButton().hide(); - ((TextBoxAndButton) comp).getTextField().show(); - } - } else { - //BNO need to check as we have a combo box for Extension Mismatch so can't assume - // comp will always be TextAndButton - if (comp instanceof TextBoxAndButton) { - ((TextBoxAndButton) comp).getTextField().disable(); - } - - comp.show(); - } - if (metadata instanceof DummyMetadata) { - comp.hide(); - } - } - } - - - - private void myInitComponents() { - - filterTable = new FilterTable(); - filterTable.setRowHeight(ROW_HEIGHT); - filterTable.setDefaultRenderer(JComponent.class, new JComponentCellRenderer()); - filterTable.setDefaultEditor(JComponent.class, new JComponentCellEditor()); - - filterTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - - tableModel.addColumn("Field"); - tableModel.addColumn("Operation"); - tableModel.addColumn("Values"); - tableModel.addColumn(REMOVE); - - tableModel.insertRow(0, getRowForTable()); - - filterTable.setModel(tableModel); - initColumnSizes(filterTable); - - jScrollPane1.setViewportView(filterTable); - - buttonGroup1.add(widenResultsRadioButton); - buttonGroup1.add(narrowResultRadioButton); - narrowResultRadioButton.setSelected(true); - - } - - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - buttonGroup1 = new javax.swing.ButtonGroup(); - buttonGroup2 = new javax.swing.ButtonGroup(); - jPanel2 = new javax.swing.JPanel(); - jPanel4 = new javax.swing.JPanel(); - widenResultsRadioButton = new javax.swing.JRadioButton(); - narrowResultRadioButton = new javax.swing.JRadioButton(); - jPanel5 = new javax.swing.JPanel(); - filterEnabledCheckbox = new javax.swing.JCheckBox(); - jPanel1 = new javax.swing.JPanel(); - jButtonCancle = new javax.swing.JButton(); - jButtonApply = new javax.swing.JButton(); - LoadFilterButton = new javax.swing.JButton(); - SaveFilterButton = new javax.swing.JButton(); - jScrollPane1 = new javax.swing.JScrollPane(); - filterTable = new javax.swing.JTable(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - setTitle(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.title")); // NOI18N - - widenResultsRadioButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.widenResultsRadioButton.text")); // NOI18N - - narrowResultRadioButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.narrowResultRadioButton.text")); // NOI18N - - javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); - jPanel4.setLayout(jPanel4Layout); - jPanel4Layout.setHorizontalGroup( - jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap() - .addComponent(narrowResultRadioButton) - .addGap(18, 18, 18) - .addComponent(widenResultsRadioButton) - .addContainerGap(77, Short.MAX_VALUE)) - ); - jPanel4Layout.setVerticalGroup( - jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(narrowResultRadioButton) - .addComponent(widenResultsRadioButton))) - ); - - filterEnabledCheckbox.setSelected(true); - filterEnabledCheckbox.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.filterEnabledCheckbox.text")); // NOI18N - filterEnabledCheckbox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - filterEnabledCheckboxActionPerformed(evt); - } - }); - - javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); - jPanel5.setLayout(jPanel5Layout); - jPanel5Layout.setHorizontalGroup( - jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel5Layout.createSequentialGroup() - .addComponent(filterEnabledCheckbox) - .addContainerGap(266, Short.MAX_VALUE)) - ); - jPanel5Layout.setVerticalGroup( - jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(filterEnabledCheckbox)) - ); - - javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(108, Short.MAX_VALUE)) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - ); - - jButtonCancle.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jButtonCancle.text")); // NOI18N - jButtonCancle.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonCancleActionPerformed(evt); - } - }); - - jButtonApply.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jButtonApply.text")); // NOI18N - jButtonApply.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonApplyActionPerformed(evt); - } - }); - - LoadFilterButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.LoadFilterButton.text")); // NOI18N - LoadFilterButton.setToolTipText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.LoadFilterButton.toolTipText")); // NOI18N - LoadFilterButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - LoadFilterButtonActionPerformed(evt); - } - }); - - SaveFilterButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.SaveFilterButton.text")); // NOI18N - SaveFilterButton.setToolTipText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.SaveFilterButton.toolTipText")); // NOI18N - SaveFilterButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SaveFilterButtonActionPerformed(evt); - } - }); - - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addComponent(LoadFilterButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(SaveFilterButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 228, Short.MAX_VALUE) - .addComponent(jButtonApply, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jButtonCancle, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - ); - - jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButtonApply, jButtonCancle}); - - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(LoadFilterButton) - .addComponent(SaveFilterButton) - .addComponent(jButtonCancle) - .addComponent(jButtonApply)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonApply, jButtonCancle}); - - filterTable.setModel(new javax.swing.table.DefaultTableModel( - new Object [][] { - {null, null, null, null}, - {null, null, null, null}, - {null, null, null, null}, - {null, null, null, null} - }, - new String [] { - "Title 1", "Title 2", "Title 3", "Title 4" - } - )); - jScrollPane1.setViewportView(filterTable); - filterTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title0")); // NOI18N - filterTable.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title1")); // NOI18N - filterTable.getColumnModel().getColumn(2).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title2")); // NOI18N - filterTable.getColumnModel().getColumn(3).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title3")); // NOI18N - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(jPanel2, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 656, Short.MAX_VALUE) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - pack(); - }// //GEN-END:initComponents - - private void LoadFilterButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_LoadFilterButtonActionPerformed - int result = filterFileChooser.showOpenDialog(this); - if (result == JFileChooser.APPROVE_OPTION) { - //FIXME: should wire this up using spring, rather than hard coding references to - // particular objects here. - try { - FilterSpecDao reader = new JaxbFilterSpecDao(); - try (final InputStream in = - new BufferedInputStream(Files.newInputStream( - filterFileChooser.getSelectedFile().toPath()))) { - filterContext = reader.loadFilter(in); - } - loadFilter(); - } catch (JAXBException | IOException e) { - JOptionPane.showMessageDialog(this, "There was a problem loading the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); - } - } - }//GEN-LAST:event_LoadFilterButtonActionPerformed - - private void SaveFilterButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SaveFilterButtonActionPerformed - if (applyValuesToContext()) { - int result = filterFileChooser.showSaveDialog(this); - if (result == JFileChooser.APPROVE_OPTION) { - try(final OutputStream out = - new BufferedOutputStream( - Files.newOutputStream(filterFileChooser.getSelectedFile().toPath()))) { - final FilterSpecDao writer = new JaxbFilterSpecDao(); - writer.saveFilter(filterContext, out); - } catch (FileNotFoundException e) { - JOptionPane.showMessageDialog(this, "There was a problem saving the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); - } catch (JAXBException e) { - JOptionPane.showMessageDialog(this, "There was a problem saving the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); - } catch (IOException e) { - JOptionPane.showMessageDialog(this, "There was a problem saving the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); - } - } - } - }//GEN-LAST:event_SaveFilterButtonActionPerformed - - private void filterEnabledCheckboxActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_filterEnabledCheckboxActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_filterEnabledCheckboxActionPerformed - - private void jButtonCancleActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButtonCancleActionPerformed - // filterContext = tempFilterContext ; - droidContext.getSelectedProfile().getProfile().setFilter(tempFilterContext); - this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); - - }// GEN-LAST:event_jButtonCancleActionPerformed - - private void jButtonApplyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButtonApplyActionPerformed - - filterContext.setEnabled(filterEnabledCheckbox.isSelected()); - filterContext.setNarrowed(narrowResultRadioButton.isSelected()); - //FilterImpl filter = droidContext.getSelectedProfile().getProfile().getFilter(); - droidContext.getSelectedProfile().getProfile().setFilter(filterContext); - - if (applyValuesToContext()) { - getDroidContext().getSelectedProfile().getProfile().setDirty(true); - ProfileForm profileToFilter = getDroidContext().getSelectedProfile(); - ApplyFilterToTreeTableAction applyFilterToTreeAction = - new ApplyFilterToTreeTableAction(profileToFilter, getProfileManager()); - applyFilterToTreeAction.applyFilter(); - dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); - } - - //ApplyFilterAction applyFilterAction = new ApplyFilterAction(); - //applyFilterAction.applyFilter(this); - }// GEN-LAST:event_jButtonApplyActionPerformed - - /** - * Attempts to apply the values in the dialog to the filter. - * @return Whether the attempt was successful or not. - */ - private boolean applyValuesToContext() { - DefaultTableModel tModel = (DefaultTableModel) getFilterTable().getModel(); - List errorStrings = new ArrayList(); - // Iterate through the table and set all the free text. - // do not anything for the last row. - for (int i = 0; i < tModel.getRowCount() - 1; i++) { - // get the first combobox selected item. - final JComboBox comboBox1 = (JComboBox) tModel.getValueAt(i, 0); - CriterionFieldEnum firstComboBoxSelectedItem = (CriterionFieldEnum) comboBox1.getSelectedItem(); - // get the Component . - Component componentAtThirdRow = (Component) tModel.getValueAt( - i, 2); - - String freeTextAtRow = null; - try { - if (componentAtThirdRow instanceof TextBoxAndButton) { - freeTextAtRow = ((TextBoxAndButton) componentAtThirdRow) - .getTextField().getText(); - } else if (componentAtThirdRow instanceof DatePicker) { - freeTextAtRow = ((DatePicker) componentAtThirdRow) - .getDateString(); - } else if (componentAtThirdRow instanceof JComboBox) { - freeTextAtRow = ((JComboBox) componentAtThirdRow).getSelectedItem().toString(); - } else { - throw new RuntimeException("Fatal error"); - } - - // get meta data object from the selected string. - GenericMetadata metadata = getFilterDomain() - .getMetaDataFromFieldType(firstComboBoxSelectedItem); - - // Validate the values. - metadata.validate(freeTextAtRow); - } catch (FilterValidationException filterValidationException) { - errorStrings.add(filterValidationException.getMessage()); - } - FilterCriterionImpl filterCriteria = getFilterContext().getFilterCriterion(i); - filterCriteria.setValueFreeText(freeTextAtRow); - } - if (errorStrings.size() > 0) { - JOptionPane.showMessageDialog(this, errorStrings.toArray()); - return false; - } - return true; - } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton LoadFilterButton; - private javax.swing.JButton SaveFilterButton; - private javax.swing.ButtonGroup buttonGroup1; - private javax.swing.ButtonGroup buttonGroup2; - private javax.swing.JCheckBox filterEnabledCheckbox; - private javax.swing.JTable filterTable; - private javax.swing.JButton jButtonApply; - private javax.swing.JButton jButtonCancle; - private javax.swing.JPanel jPanel1; - private javax.swing.JPanel jPanel2; - private javax.swing.JPanel jPanel4; - private javax.swing.JPanel jPanel5; - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JRadioButton narrowResultRadioButton; - private javax.swing.JRadioButton widenResultsRadioButton; - // End of variables declaration//GEN-END:variables - - private void initColumnSizes(JTable table) { - - // Disable auto resizing - // table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - - // Set the first visible column to 100 pixels wide - TableColumn col = table.getColumnModel().getColumn(COL_0); - col.setPreferredWidth(COL_0_WIDTH); - - col = table.getColumnModel().getColumn(COL_1); - col.setPreferredWidth(COL_1_WIDTH); - - col = table.getColumnModel().getColumn(COL_2); - col.setPreferredWidth(COL_2_WIDTH); - - col = table.getColumnModel().getColumn(COL_3); - col.setPreferredWidth(COL_3_WIDTH); - - } - - /** - * @return the filterDomain - */ - public FilterDomain getFilterDomain() { - return filterDomain; - } - - /** - * @return the droidContext - */ - public DroidUIContext getDroidContext() { - return droidContext; - } - - /** - * @return the jTable1 - */ - public javax.swing.JTable getFilterTable() { - return filterTable; - } - - /** - * @return the profileManager - */ - public ProfileManager getProfileManager() { - return profileManager; - } -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.filter; + +import java.awt.Component; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.WindowEvent; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JFileChooser; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.plaf.basic.BasicComboBoxRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableColumn; +import javax.xml.bind.JAXBException; + + +import uk.gov.nationalarchives.droid.core.interfaces.filter.CriterionFieldEnum; +import uk.gov.nationalarchives.droid.core.interfaces.filter.CriterionOperator; +import uk.gov.nationalarchives.droid.gui.DroidUIContext; +import uk.gov.nationalarchives.droid.gui.ProfileForm; +import uk.gov.nationalarchives.droid.gui.action.ApplyFilterToTreeTableAction; +import uk.gov.nationalarchives.droid.gui.filter.action.InitialiseFilterAction; +import uk.gov.nationalarchives.droid.gui.filter.action.LoadFilterAction; +import uk.gov.nationalarchives.droid.gui.filter.domain.DummyMetadata; +import uk.gov.nationalarchives.droid.gui.filter.domain.FilterDomain; +import uk.gov.nationalarchives.droid.gui.filter.domain.FilterValidationException; +import uk.gov.nationalarchives.droid.gui.filter.domain.GenericMetadata; +import uk.gov.nationalarchives.droid.gui.filter.domain.LastModifiedDateMetadata; +import uk.gov.nationalarchives.droid.gui.filter.domain.ExtensionMismatchMetadata; +import uk.gov.nationalarchives.droid.profile.FilterCriterionImpl; +import uk.gov.nationalarchives.droid.profile.FilterImpl; +import uk.gov.nationalarchives.droid.profile.FilterSpecDao; +import uk.gov.nationalarchives.droid.profile.JaxbFilterSpecDao; +import uk.gov.nationalarchives.droid.profile.ProfileManager; + +/** + * @author Alok Kumar Dash. + */ +public class FilterDialog extends JDialog { + + /** */ + private static final int ROW_HEIGHT = 23; + /** */ + private static final String REMOVE = "Remove"; + private static final int COL_0_WIDTH = 150; + private static final int COL_1_WIDTH = 150; + private static final int COL_3_WIDTH = 90; + private static final int COL_2_WIDTH = 375; + + private static final int COL_0 = 0; + private static final int COL_1 = 1; + private static final int COL_2 = 2; + private static final int COL_3 = 3; + + private static final long serialVersionUID = 5181319919824269596L; + + private DefaultTableModel tableModel = new DefaultTableModel(); + + // FilterDomain is used to load Filter condition in filter dialog and + // associated logic behind it. + private FilterDomain filterDomain = new FilterDomain(); + // Filter Context is used to store user selected values in filter and later + // used to persist in an xml in local disk. + // FilterContext filterContext = new FilterContext(); + private FilterImpl filterContext; + + // temporary filter context is used to store previous state of FIlter + // conditions before user stared to amend. + // and it is used to assign to changed filterContext if user decide not to + // apply changes. + private FilterImpl tempFilterContext; + + private DroidUIContext droidContext; + + private ProfileManager profileManager; + + private JComboBox metaDataCombobox; + + private JComboBox operationCombobox; + + private DefaultComboBoxModel operationComboboxModel; + + private boolean filterPredicatesLoading; + + private JFileChooser filterFileChooser; + + + /** + * Creates new form FilterDialog. CLones Filter context. + * + * @param parent + * Parent dialog. + * @param modal + * If we want filter dialog to be not modal. + * @param filterContext + * Filter Context + * @param droidContext + * Droid Context. + * @param profileManager + * Profile Manager. + * @param filterFileChooser - the file chooser to load or save filters. + */ + public FilterDialog(Frame parent, boolean modal, FilterImpl filterContext, + DroidUIContext droidContext, ProfileManager profileManager, JFileChooser filterFileChooser) { + super(parent, modal); + this.filterContext = filterContext; + this.droidContext = droidContext; + this.profileManager = profileManager; + this.filterFileChooser = filterFileChooser; + intialiseFilter(); + initComponents(); + myInitComponents(); + tempFilterContext = (FilterImpl) filterContext.clone(); + loadFilter(); + setLocationRelativeTo(parent); + } + + /** + * + * @return the filter + */ + public FilterDomain getFilter() { + return filterDomain; + } + + /** + * + * @param filter + * the filter to set + */ + public void setFilter(FilterDomain filter) { + this.filterDomain = filter; + } + + /** + * + * @return the filter context + */ + public FilterImpl getFilterContext() { + return filterContext; + } + + private void loadFilter() { + + if (isFilterPrevioudlyLoaded()) { + filterPredicatesLoading = true; + filterEnabledCheckbox.setSelected(filterContext.isEnabled()); + setFilterMode(); + LoadFilterAction loadFilterAction = new LoadFilterAction(); + loadFilterAction.loadFilter(this); + filterPredicatesLoading = false; + } + } + + /** + * + */ + private void setFilterMode() { + if (filterContext.isNarrowed()) { + narrowResultRadioButton.setSelected(true); + } else { + widenResultsRadioButton.setSelected(true); + } + } + + private boolean isFilterPrevioudlyLoaded() { + return filterContext.hasCriteria(); + } + + private void intialiseFilter() { + + String profileId = droidContext.getSelectedProfile().getProfile().getUuid(); + InitialiseFilterAction initialiseFilterAction = new InitialiseFilterAction(); + initialiseFilterAction.initialiseFilter(profileId, profileManager, filterDomain); + + } + + /** + * @return Object[] Object Array for the entire row in the filter table. + */ + + public Object[] getRowForTable() { + Component component = new TextBoxAndButton(this); + component.hide(); + // get all the meta data and load the combo + metaDataCombobox = new JComboBox(filterDomain.getMetaDataNames()); + metaDataCombobox.setRenderer(new BasicComboBoxRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, + boolean cellHasFocus) { + final String displayText = value == null ? "" : value.toString(); + return super.getListCellRendererComponent(list, displayText, index, isSelected, cellHasFocus); + } + }); + + operationCombobox = new JComboBox(); + operationComboboxModel = new DefaultComboBoxModel(); + operationCombobox.setModel(operationComboboxModel); + + + metaDataCombobox.addItemListener(new MetaDataComboItemListner()); + operationCombobox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + + if (e.getStateChange() == ItemEvent.SELECTED && !filterPredicatesLoading) { + // set the corresponding value at filter context. + FilterCriterionImpl filterCriterion = + filterContext.getFilterCriterion(filterTable.getSelectedRow()); + JComboBox sourceCombo = (JComboBox) e.getSource(); + filterCriterion.setOperator((CriterionOperator) sourceCombo.getSelectedItem()); + } + } + }); + + // Remove button and its listner. + + JButton jButton2 = new JButton(REMOVE); + + // CHECKSTYLE:OFF FIXME - inner class is too long + jButton2.addActionListener(new ActionListener() { + // CHECKSTYLE:ON + @Override + public void actionPerformed(ActionEvent e) { + if (tableModel.getRowCount() > 1 && (filterTable.getSelectedRow() + 1) != tableModel.getRowCount()) { + int size = filterContext.getNumberOfFilterCriterion(); + + filterContext.removeFilterCriterion(filterTable.getSelectedRow()); + // fill the empty criteria which is been removed. + for (int k = filterTable.getSelectedRow() + 1; k < size; k++) { + filterContext.getFilterCriteriaMap().put(k - 1, filterContext.getFilterCriteriaMap().get(k)); + } + // remove the last one + filterContext.removeFilterCriterion(size - 1); + + tableModel.removeRow(filterTable.getSelectedRow()); + tableModel.fireTableRowsDeleted(filterTable.getSelectedRow(), filterTable.getSelectedRow()); + filterTable.revalidate(); + initColumnSizes(filterTable); + } + } + }); + Object[] data = {metaDataCombobox, operationCombobox, component, jButton2 }; + metaDataCombobox.setMaximumRowCount(filterDomain.getMetaDataNames().length); + return data; + } + + + + // CHECKSTYLE:OFF FIXME - anonymous class is way too long + private class MetaDataComboItemListner implements ItemListener { + @SuppressWarnings("deprecation") + @Override + // CHECKSTYLE:ON + public void itemStateChanged(ItemEvent e) { + if (!filterPredicatesLoading) { + + + CriterionFieldEnum deSelectedItem = null; + if (e.getStateChange() == e.DESELECTED) { + deSelectedItem = (CriterionFieldEnum) e.getItem(); + } + + Component comp = null; + int selectedRow = filterTable.getSelectedRow(); + // Get the source combo, and corresponding option combo and + // textbox and button references. + JComboBox sourceCombo = (JComboBox) e.getSource(); + // find what is selected. + CriterionFieldEnum selectedItem = (CriterionFieldEnum) sourceCombo.getSelectedItem(); + if (selectedItem != null) { + // get Metadata Object from the selected string. + GenericMetadata metadata = filterDomain.getMetaDataFromFieldType(selectedItem); + + if (metadata instanceof LastModifiedDateMetadata) { + comp = new DatePicker(); + } else if (metadata instanceof ExtensionMismatchMetadata) { + comp = new JComboBox(); + } else { + comp = new TextBoxAndButton(FilterDialog.this); + } + tableModel.setValueAt(comp, filterTable.getSelectedRow(), 2); + + if (e.getStateChange() == ItemEvent.SELECTED) { + // Add a new row if metadata is selected at last + // row. + if (tableModel.getRowCount() == selectedRow + 1) { + tableModel.addRow(getRowForTable()); + filterTable.revalidate(); + } + JComboBox comboBox = (JComboBox) tableModel.getValueAt(selectedRow, 1); + operationComboboxModel = (DefaultComboBoxModel) comboBox.getModel(); + // If filter criteria is not there that means fresh + // criteria for selected row and create one + + FilterCriterionImpl newCriteria = new FilterCriterionImpl(); + newCriteria.setRowNumber(filterTable.getSelectedRow()); + newCriteria.setField(metadata.getField()); + filterContext.addFilterCiterion(newCriteria, filterTable.getSelectedRow()); + + // Apply metadaUi logic. + applyMetadaUILogic(comp, metadata); + + //Add the possible criteria e.g. all, any equal to... + operationComboboxModel.removeAllElements(); + for (CriterionOperator metaDataOp : metadata.getOperationList()) { + operationComboboxModel.addElement(metaDataOp); + } + + if (comp instanceof TextBoxAndButton) { + ((TextBoxAndButton) comp).setType(metadata, filterContext.getFilterCriterion(filterTable + .getSelectedRow())); + } + //BNO: For extension_mismatch + if (comp instanceof JComboBox) { + JComboBox combo = (JComboBox) comp; + combo.addItem("true"); + combo.addItem("false"); + } + filterTable.repaint(); + } + } else { + GenericMetadata metadata = getFilterDomain().getMetaDataFromFieldType(deSelectedItem); + sourceCombo.getModel().setSelectedItem(metadata.getField()); + } + } + } + + /** + * @param comp + * @param metadata + */ + @SuppressWarnings("deprecation") + private void applyMetadaUILogic(Component comp, GenericMetadata metadata) { + if (metadata.isFreeText()) { + if (comp instanceof TextBoxAndButton) { + ((TextBoxAndButton) comp).getButton().hide(); + ((TextBoxAndButton) comp).getTextField().show(); + } + } else { + //BNO need to check as we have a combo box for Extension Mismatch so can't assume + // comp will always be TextAndButton + if (comp instanceof TextBoxAndButton) { + ((TextBoxAndButton) comp).getTextField().disable(); + } + + comp.show(); + } + if (metadata instanceof DummyMetadata) { + comp.hide(); + } + } + } + + + + private void myInitComponents() { + + filterTable = new FilterTable(); + filterTable.setRowHeight(ROW_HEIGHT); + filterTable.setDefaultRenderer(JComponent.class, new JComponentCellRenderer()); + filterTable.setDefaultEditor(JComponent.class, new JComponentCellEditor()); + + filterTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + tableModel.addColumn("Field"); + tableModel.addColumn("Operation"); + tableModel.addColumn("Values"); + tableModel.addColumn(REMOVE); + + tableModel.insertRow(0, getRowForTable()); + + filterTable.setModel(tableModel); + initColumnSizes(filterTable); + + jScrollPane1.setViewportView(filterTable); + + buttonGroup1.add(widenResultsRadioButton); + buttonGroup1.add(narrowResultRadioButton); + narrowResultRadioButton.setSelected(true); + + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonGroup1 = new javax.swing.ButtonGroup(); + buttonGroup2 = new javax.swing.ButtonGroup(); + jPanel2 = new javax.swing.JPanel(); + jPanel4 = new javax.swing.JPanel(); + widenResultsRadioButton = new javax.swing.JRadioButton(); + narrowResultRadioButton = new javax.swing.JRadioButton(); + jPanel5 = new javax.swing.JPanel(); + filterEnabledCheckbox = new javax.swing.JCheckBox(); + jPanel1 = new javax.swing.JPanel(); + jButtonCancle = new javax.swing.JButton(); + jButtonApply = new javax.swing.JButton(); + LoadFilterButton = new javax.swing.JButton(); + SaveFilterButton = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + filterTable = new javax.swing.JTable(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.title")); // NOI18N + + widenResultsRadioButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.widenResultsRadioButton.text")); // NOI18N + + narrowResultRadioButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.narrowResultRadioButton.text")); // NOI18N + + javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); + jPanel4.setLayout(jPanel4Layout); + jPanel4Layout.setHorizontalGroup( + jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addContainerGap() + .addComponent(narrowResultRadioButton) + .addGap(18, 18, 18) + .addComponent(widenResultsRadioButton) + .addContainerGap(77, Short.MAX_VALUE)) + ); + jPanel4Layout.setVerticalGroup( + jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(narrowResultRadioButton) + .addComponent(widenResultsRadioButton))) + ); + + filterEnabledCheckbox.setSelected(true); + filterEnabledCheckbox.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.filterEnabledCheckbox.text")); // NOI18N + filterEnabledCheckbox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + filterEnabledCheckboxActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); + jPanel5.setLayout(jPanel5Layout); + jPanel5Layout.setHorizontalGroup( + jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel5Layout.createSequentialGroup() + .addComponent(filterEnabledCheckbox) + .addContainerGap(266, Short.MAX_VALUE)) + ); + jPanel5Layout.setVerticalGroup( + jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(filterEnabledCheckbox)) + ); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(108, Short.MAX_VALUE)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + ); + + jButtonCancle.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jButtonCancle.text")); // NOI18N + jButtonCancle.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonCancleActionPerformed(evt); + } + }); + + jButtonApply.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jButtonApply.text")); // NOI18N + jButtonApply.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonApplyActionPerformed(evt); + } + }); + + LoadFilterButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.LoadFilterButton.text")); // NOI18N + LoadFilterButton.setToolTipText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.LoadFilterButton.toolTipText")); // NOI18N + LoadFilterButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + LoadFilterButtonActionPerformed(evt); + } + }); + + SaveFilterButton.setText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.SaveFilterButton.text")); // NOI18N + SaveFilterButton.setToolTipText(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.SaveFilterButton.toolTipText")); // NOI18N + SaveFilterButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SaveFilterButtonActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addComponent(LoadFilterButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(SaveFilterButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 228, Short.MAX_VALUE) + .addComponent(jButtonApply, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButtonCancle, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + + jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButtonApply, jButtonCancle}); + + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(LoadFilterButton) + .addComponent(SaveFilterButton) + .addComponent(jButtonCancle) + .addComponent(jButtonApply)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonApply, jButtonCancle}); + + filterTable.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null} + }, + new String [] { + "Title 1", "Title 2", "Title 3", "Title 4" + } + )); + jScrollPane1.setViewportView(filterTable); + if (filterTable.getColumnModel().getColumnCount() > 0) { + filterTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title0")); // NOI18N + filterTable.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title1")); // NOI18N + filterTable.getColumnModel().getColumn(2).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title2")); // NOI18N + filterTable.getColumnModel().getColumn(3).setHeaderValue(org.openide.util.NbBundle.getMessage(FilterDialog.class, "FilterDialog.jTable1.columnModel.title3")); // NOI18N + } + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 703, Short.MAX_VALUE) + .addContainerGap()))) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void LoadFilterButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_LoadFilterButtonActionPerformed + int result = filterFileChooser.showOpenDialog(this); + if (result == JFileChooser.APPROVE_OPTION) { + //FIXME: should wire this up using spring, rather than hard coding references to + // particular objects here. + try { + FilterSpecDao reader = new JaxbFilterSpecDao(); + try (final InputStream in = + new BufferedInputStream(Files.newInputStream( + filterFileChooser.getSelectedFile().toPath()))) { + filterContext = reader.loadFilter(in); + } + loadFilter(); + } catch (JAXBException | IOException e) { + JOptionPane.showMessageDialog(this, "There was a problem loading the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); + } + } + }//GEN-LAST:event_LoadFilterButtonActionPerformed + + private void SaveFilterButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SaveFilterButtonActionPerformed + if (applyValuesToContext()) { + int result = filterFileChooser.showSaveDialog(this); + if (result == JFileChooser.APPROVE_OPTION) { + try(final OutputStream out = + new BufferedOutputStream( + Files.newOutputStream(filterFileChooser.getSelectedFile().toPath()))) { + final FilterSpecDao writer = new JaxbFilterSpecDao(); + writer.saveFilter(filterContext, out); + } catch (FileNotFoundException e) { + JOptionPane.showMessageDialog(this, "There was a problem saving the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); + } catch (JAXBException e) { + JOptionPane.showMessageDialog(this, "There was a problem saving the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); + } catch (IOException e) { + JOptionPane.showMessageDialog(this, "There was a problem saving the filter.", "Filter warning", JOptionPane.ERROR_MESSAGE); + } + } + } + }//GEN-LAST:event_SaveFilterButtonActionPerformed + + private void filterEnabledCheckboxActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_filterEnabledCheckboxActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_filterEnabledCheckboxActionPerformed + + private void jButtonCancleActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButtonCancleActionPerformed + // filterContext = tempFilterContext ; + droidContext.getSelectedProfile().getProfile().setFilter(tempFilterContext); + this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); + + }// GEN-LAST:event_jButtonCancleActionPerformed + + private void jButtonApplyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButtonApplyActionPerformed + + filterContext.setEnabled(filterEnabledCheckbox.isSelected()); + filterContext.setNarrowed(narrowResultRadioButton.isSelected()); + //FilterImpl filter = droidContext.getSelectedProfile().getProfile().getFilter(); + droidContext.getSelectedProfile().getProfile().setFilter(filterContext); + + if (applyValuesToContext()) { + getDroidContext().getSelectedProfile().getProfile().setDirty(true); + ProfileForm profileToFilter = getDroidContext().getSelectedProfile(); + ApplyFilterToTreeTableAction applyFilterToTreeAction = + new ApplyFilterToTreeTableAction(profileToFilter, getProfileManager()); + applyFilterToTreeAction.applyFilter(); + dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); + } + + //ApplyFilterAction applyFilterAction = new ApplyFilterAction(); + //applyFilterAction.applyFilter(this); + }// GEN-LAST:event_jButtonApplyActionPerformed + + /** + * Attempts to apply the values in the dialog to the filter. + * @return Whether the attempt was successful or not. + */ + private boolean applyValuesToContext() { + DefaultTableModel tModel = (DefaultTableModel) getFilterTable().getModel(); + List errorStrings = new ArrayList(); + // Iterate through the table and set all the free text. + // do not anything for the last row. + for (int i = 0; i < tModel.getRowCount() - 1; i++) { + // get the first combobox selected item. + final JComboBox comboBox1 = (JComboBox) tModel.getValueAt(i, 0); + CriterionFieldEnum firstComboBoxSelectedItem = (CriterionFieldEnum) comboBox1.getSelectedItem(); + // get the Component . + Component componentAtThirdRow = (Component) tModel.getValueAt( + i, 2); + + String freeTextAtRow = null; + try { + if (componentAtThirdRow instanceof TextBoxAndButton) { + freeTextAtRow = ((TextBoxAndButton) componentAtThirdRow) + .getTextField().getText(); + } else if (componentAtThirdRow instanceof DatePicker) { + freeTextAtRow = ((DatePicker) componentAtThirdRow) + .getDateString(); + } else if (componentAtThirdRow instanceof JComboBox) { + freeTextAtRow = ((JComboBox) componentAtThirdRow).getSelectedItem().toString(); + } else { + throw new RuntimeException("Fatal error"); + } + + // get meta data object from the selected string. + GenericMetadata metadata = getFilterDomain() + .getMetaDataFromFieldType(firstComboBoxSelectedItem); + + // Validate the values. + metadata.validate(freeTextAtRow); + } catch (FilterValidationException filterValidationException) { + errorStrings.add(filterValidationException.getMessage()); + } + FilterCriterionImpl filterCriteria = getFilterContext().getFilterCriterion(i); + filterCriteria.setValueFreeText(freeTextAtRow); + } + if (errorStrings.size() > 0) { + JOptionPane.showMessageDialog(this, errorStrings.toArray()); + return false; + } + return true; + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton LoadFilterButton; + private javax.swing.JButton SaveFilterButton; + private javax.swing.ButtonGroup buttonGroup1; + private javax.swing.ButtonGroup buttonGroup2; + private javax.swing.JCheckBox filterEnabledCheckbox; + private javax.swing.JTable filterTable; + private javax.swing.JButton jButtonApply; + private javax.swing.JButton jButtonCancle; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel jPanel5; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JRadioButton narrowResultRadioButton; + private javax.swing.JRadioButton widenResultsRadioButton; + // End of variables declaration//GEN-END:variables + + private void initColumnSizes(JTable table) { + + // Disable auto resizing + // table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + + // Set the first visible column to 100 pixels wide + TableColumn col = table.getColumnModel().getColumn(COL_0); + col.setPreferredWidth(COL_0_WIDTH); + + col = table.getColumnModel().getColumn(COL_1); + col.setPreferredWidth(COL_1_WIDTH); + + col = table.getColumnModel().getColumn(COL_2); + col.setPreferredWidth(COL_2_WIDTH); + + col = table.getColumnModel().getColumn(COL_3); + col.setPreferredWidth(COL_3_WIDTH); + + } + + /** + * @return the filterDomain + */ + public FilterDomain getFilterDomain() { + return filterDomain; + } + + /** + * @return the droidContext + */ + public DroidUIContext getDroidContext() { + return droidContext; + } + + /** + * @return the jTable1 + */ + public javax.swing.JTable getFilterTable() { + return filterTable; + } + + /** + * @return the profileManager + */ + public ProfileManager getProfileManager() { + return profileManager; + } +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.form b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.form index 284c1fa67..85ad2a7c1 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.form +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.form @@ -57,9 +57,9 @@ - - - + + + diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.java index 75d53c6a0..5200c0c20 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportDialog.java @@ -1,432 +1,430 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.report; - -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import javax.swing.DefaultCellEditor; -import javax.swing.DefaultComboBoxModel; -import javax.swing.GroupLayout; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.ListCellRenderer; -import javax.swing.SwingConstants; -import javax.swing.GroupLayout.Alignment; -import javax.swing.LayoutStyle.ComponentPlacement; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableCellRenderer; - -import org.openide.util.NbBundle; - -import uk.gov.nationalarchives.droid.gui.DroidMainFrame; -import uk.gov.nationalarchives.droid.gui.ProfileForm; -import uk.gov.nationalarchives.droid.report.interfaces.ReportSpec; - -/** - * - * @author rflitcroft - */ -public class ReportDialog extends JDialog { - - private static final long serialVersionUID = -4598078880004073202L; - - private DroidMainFrame droidMain; - private DefaultTableModel tableModel; - private List profilesRowData; - private boolean approved; - - /** - * Creates new form ReportDialog. - * @param parent the dialog's parent - */ - public ReportDialog(final DroidMainFrame parent) { - super(parent); - droidMain = parent; - setModal(true); - - initComponents(); - jScrollPane1.getViewport().setBackground(profileSelectTable.getBackground()); - pack(); - setLocationRelativeTo(getParent()); - - } - - /** - * Shows the dialog in modal mode. - */ - public void showDialog() { - - profilesRowData = new ArrayList(); - Collection profiles = droidMain.getDroidContext().allProfiles(); - for (ProfileForm profile : profiles) { - profilesRowData.add(new ProfileWrapper(profile)); - } - - tableModel = new DefaultTableModel(0, 1) { - @Override - public Class getColumnClass(int columnIndex) { - return ProfileForm.class; - } - - @Override - public boolean isCellEditable(int row, int column) { - return profilesRowData.get(row).getProfile().getProfile().getState().isReportable(); - } - }; - - for (ProfileWrapper profile : profilesRowData) { - Object[] row = new Object[] {profile}; - tableModel.addRow(row); - } - - profileSelectTable.setModel(tableModel); - - profileSelectTable.setDefaultEditor(ProfileForm.class, new CheckBoxEditor()); - profileSelectTable.setDefaultRenderer(ProfileForm.class, new CheckBoxRenderer()); - - jScrollPane1.setColumnHeaderView(null); - profileSelectTable.setCellSelectionEnabled(false); - - reportSelectCombo.setEditable(false); - ListCellRenderer renderer = new ReportSpecRenderer(); - reportSelectCombo.setRenderer(renderer); - - DefaultComboBoxModel model = new DefaultComboBoxModel(); - - final List reports = droidMain.getGlobalContext().getReportManager().listReportSpecs(); - for (ReportSpec reportSpec : reports) { - model.addElement(reportSpec); - } - reportSelectCombo.setModel(model); - enableGenerateButton(); - approved = false; - setVisible(true); - } - - /** - * @return the profilesRowData - */ - public List getSelectedProfileIds() { - List selectedProfiles = new ArrayList(); - - for (ProfileWrapper profileWrapper : profilesRowData) { - if (profileWrapper.isSelected()) { - selectedProfiles.add(profileWrapper.getProfile().getProfile().getUuid()); - } - } - - return selectedProfiles; - } - - private void cancelButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed - - setVisible(false); - dispose(); - - }//GEN-LAST:event_cancelButtonActionPerformed - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - - - cancelButton = new JButton(); - generateButton = new JButton(); - profileSelectLabel = new JLabel(); - jScrollPane1 = new JScrollPane(); - profileSelectTable = new JTable(); - reportSelectLabel = new JLabel(); - reportSelectCombo = new JComboBox(); - - setTitle(NbBundle.getMessage(ReportDialog.class, "ReportDialog.title_1")); // NOI18N - cancelButton.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.cancelButton.text")); // NOI18N - cancelButton.setVerticalAlignment(SwingConstants.BOTTOM); - cancelButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - cancelButtonActionPerformed(evt); - } - }); - - generateButton.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.generateButton.text")); // NOI18N - generateButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - generateButtonActionPerformed(evt); - } - }); - - profileSelectLabel.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.profileSelectLabel.text_1")); // NOI18N - profileSelectTable.setModel(new DefaultTableModel( - new Object [][] { - - }, - new String [] { - "Title 1" - } - )); - profileSelectTable.setRowHeight(20); - profileSelectTable.setRowSelectionAllowed(false); - profileSelectTable.setShowHorizontalLines(false); - profileSelectTable.setShowVerticalLines(false); - profileSelectTable.setTableHeader(null); - jScrollPane1.setViewportView(profileSelectTable); - - - reportSelectLabel.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.reportSelectLabel.text")); // NOI18N - reportSelectCombo.setModel(new DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(Alignment.LEADING) - .addGroup(Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(Alignment.TRAILING) - .addComponent(jScrollPane1, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) - .addComponent(profileSelectLabel, Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(generateButton) - .addPreferredGap(ComponentPlacement.UNRELATED) - .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE)) - .addGroup(layout.createSequentialGroup() - .addComponent(reportSelectLabel) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(reportSelectCombo, 0, 384, Short.MAX_VALUE))) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(profileSelectLabel) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 143, Short.MAX_VALUE) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(Alignment.BASELINE) - .addComponent(reportSelectCombo, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) - .addComponent(reportSelectLabel)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(Alignment.BASELINE) - .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, 23, GroupLayout.PREFERRED_SIZE) - .addComponent(generateButton)) - .addContainerGap()) - ); - }// //GEN-END:initComponents - - private void generateButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed - approved = true; - setVisible(false); - }//GEN-LAST:event_jButton2ActionPerformed - -// private File getSuggestedReportFile() { -// File suggestedFile = null; -// ReportSpec spec = getSelectedReportSpec(); -// if (spec != null) { -// File dir = saveReportFileChooser.getCurrentDirectory(); -// suggestedFile = new File(dir, spec.getName() + ".xml"); -// } -// return suggestedFile; -// } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private JButton cancelButton; - private JButton generateButton; - private JScrollPane jScrollPane1; - private JLabel profileSelectLabel; - private JTable profileSelectTable; - private JComboBox reportSelectCombo; - private JLabel reportSelectLabel; - // End of variables declaration//GEN-END:variables - - private void enableGenerateButton() { - boolean profileSelected = false; - for (ProfileWrapper profileWrapper : profilesRowData) { - if (profileWrapper.isSelected()) { - profileSelected = true; - break; - } - } - - generateButton.setEnabled(profileSelected); - } - - /** - * @return the selectedReportSpec - */ - public ReportSpec getSelectedReportSpec() { - return (ReportSpec) reportSelectCombo.getSelectedItem(); - } - - private final class CheckBoxRenderer extends JCheckBox implements TableCellRenderer { - - private static final long serialVersionUID = -4078523535790396904L; - - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, - boolean hasFocus, int row, int column) { - ProfileWrapper profile = (ProfileWrapper) value; - - setSelected(profile.isSelected()); - setText(profile.getProfile().getName()); - setOpaque(false); - - boolean enabled = profilesRowData.get(row).getProfile() - .getProfile().getState().isReportable(); - setEnabled(enabled); - return this; - } - } - - private final class CheckBoxEditor extends DefaultCellEditor { - - private static final long serialVersionUID = 8023412072260282004L; - private ProfileWrapper profile; - - /** - * @param checkBox - */ - public CheckBoxEditor() { - super(new JCheckBox()); - } - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, - boolean isSelected, int row, int column) { - - profile = (ProfileWrapper) value; - - final JCheckBox checkBox = (JCheckBox) getComponent(); - - checkBox.setText(profile.getProfile().getName()); - checkBox.setSelected(profile.isSelected()); - checkBox.setOpaque(false); - - return checkBox; - } - - /** - * @see javax.swing.CellEditor#getCellEditorValue() - */ - @Override - public Object getCellEditorValue() { - profile.setSelected(((JCheckBox) getComponent()).isSelected()); - return profile; - } - } - - private final class ProfileWrapper { - - private ProfileForm profile; - private boolean selected; - - ProfileWrapper(ProfileForm profile) { - this.profile = profile; - } - - /** - * @param selected the selected to set - */ - public void setSelected(boolean selected) { - this.selected = selected; - enableGenerateButton(); - } - - /** - * @return the selected - */ - public boolean isSelected() { - return selected; - } - - /** - * @return the profile - */ - public ProfileForm getProfile() { - return profile; - } - } - - private final class ReportSpecRenderer extends JLabel implements ListCellRenderer { - - private static final long serialVersionUID = 6009453525457078052L; - - public ReportSpecRenderer() { - setOpaque(true); - } - - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, - boolean cellHasFocus) { - - if (isSelected) { - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - } else { - setBackground(list.getBackground()); - setForeground(list.getForeground()); - } - //FIXME: if there are no reports defined, value is not a ReportSpec - // and we get an invalid cast operation here. There must be a better - // fix than testing for instance of ReportSpec...? - if (value instanceof ReportSpec) { - ReportSpec spec = (ReportSpec) value; - setText(spec.getName()); - } else { - setText(""); - } - return this; - } - } - - /** - * @return true if the user approved the report generation; false otherwise. - */ - public boolean isApproved() { - return approved; - } -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.report; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.swing.DefaultCellEditor; +import javax.swing.DefaultComboBoxModel; +import javax.swing.GroupLayout; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.ListCellRenderer; +import javax.swing.SwingConstants; +import javax.swing.GroupLayout.Alignment; +import javax.swing.LayoutStyle.ComponentPlacement; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableCellRenderer; + +import org.openide.util.NbBundle; + +import uk.gov.nationalarchives.droid.gui.DroidMainFrame; +import uk.gov.nationalarchives.droid.gui.ProfileForm; +import uk.gov.nationalarchives.droid.report.interfaces.ReportSpec; + +/** + * + * @author rflitcroft + */ +public class ReportDialog extends JDialog { + + private static final long serialVersionUID = -4598078880004073202L; + + private DroidMainFrame droidMain; + private DefaultTableModel tableModel; + private List profilesRowData; + private boolean approved; + + /** + * Creates new form ReportDialog. + * @param parent the dialog's parent + */ + public ReportDialog(final DroidMainFrame parent) { + super(parent); + droidMain = parent; + setModal(true); + + initComponents(); + jScrollPane1.getViewport().setBackground(profileSelectTable.getBackground()); + pack(); + setLocationRelativeTo(getParent()); + + } + + /** + * Shows the dialog in modal mode. + */ + public void showDialog() { + + profilesRowData = new ArrayList(); + Collection profiles = droidMain.getDroidContext().allProfiles(); + for (ProfileForm profile : profiles) { + profilesRowData.add(new ProfileWrapper(profile)); + } + + tableModel = new DefaultTableModel(0, 1) { + @Override + public Class getColumnClass(int columnIndex) { + return ProfileForm.class; + } + + @Override + public boolean isCellEditable(int row, int column) { + return profilesRowData.get(row).getProfile().getProfile().getState().isReportable(); + } + }; + + for (ProfileWrapper profile : profilesRowData) { + Object[] row = new Object[] {profile}; + tableModel.addRow(row); + } + + profileSelectTable.setModel(tableModel); + + profileSelectTable.setDefaultEditor(ProfileForm.class, new CheckBoxEditor()); + profileSelectTable.setDefaultRenderer(ProfileForm.class, new CheckBoxRenderer()); + + jScrollPane1.setColumnHeaderView(null); + profileSelectTable.setCellSelectionEnabled(false); + + reportSelectCombo.setEditable(false); + ListCellRenderer renderer = new ReportSpecRenderer(); + reportSelectCombo.setRenderer(renderer); + + DefaultComboBoxModel model = new DefaultComboBoxModel(); + + final List reports = droidMain.getGlobalContext().getReportManager().listReportSpecs(); + for (ReportSpec reportSpec : reports) { + model.addElement(reportSpec); + } + reportSelectCombo.setModel(model); + enableGenerateButton(); + approved = false; + setVisible(true); + } + + /** + * @return the profilesRowData + */ + public List getSelectedProfileIds() { + List selectedProfiles = new ArrayList(); + + for (ProfileWrapper profileWrapper : profilesRowData) { + if (profileWrapper.isSelected()) { + selectedProfiles.add(profileWrapper.getProfile().getProfile().getUuid()); + } + } + + return selectedProfiles; + } + + private void cancelButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed + + setVisible(false); + dispose(); + + }//GEN-LAST:event_cancelButtonActionPerformed + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + cancelButton = new JButton(); + generateButton = new JButton(); + profileSelectLabel = new JLabel(); + jScrollPane1 = new JScrollPane(); + profileSelectTable = new JTable(); + reportSelectLabel = new JLabel(); + reportSelectCombo = new JComboBox(); + + setTitle(NbBundle.getMessage(ReportDialog.class, "ReportDialog.title_1")); // NOI18N + + cancelButton.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.cancelButton.text")); // NOI18N + cancelButton.setVerticalAlignment(SwingConstants.BOTTOM); + cancelButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + cancelButtonActionPerformed(evt); + } + }); + + generateButton.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.generateButton.text")); // NOI18N + generateButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + generateButtonActionPerformed(evt); + } + }); + + profileSelectLabel.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.profileSelectLabel.text_1")); // NOI18N + + profileSelectTable.setModel(new DefaultTableModel( + new Object [][] { + + }, + new String [] { + "Title 1" + } + )); + profileSelectTable.setRowHeight(20); + profileSelectTable.setRowSelectionAllowed(false); + profileSelectTable.setShowHorizontalLines(false); + profileSelectTable.setShowVerticalLines(false); + profileSelectTable.setTableHeader(null); + jScrollPane1.setViewportView(profileSelectTable); + + reportSelectLabel.setText(NbBundle.getMessage(ReportDialog.class, "ReportDialog.reportSelectLabel.text")); // NOI18N + + reportSelectCombo.setModel(new DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + + GroupLayout layout = new GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING) + .addGroup(Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(Alignment.TRAILING) + .addComponent(jScrollPane1, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addComponent(profileSelectLabel, Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(generateButton) + .addPreferredGap(ComponentPlacement.UNRELATED) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addComponent(reportSelectLabel) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(reportSelectCombo, 0, 384, Short.MAX_VALUE))) + .addContainerGap()) + ); + layout.setVerticalGroup(layout.createParallelGroup(Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(profileSelectLabel) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 143, Short.MAX_VALUE) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(Alignment.BASELINE) + .addComponent(reportSelectCombo, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) + .addComponent(reportSelectLabel)) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(Alignment.LEADING, false) + .addComponent(cancelButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(generateButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void generateButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + approved = true; + setVisible(false); + }//GEN-LAST:event_jButton2ActionPerformed + +// private File getSuggestedReportFile() { +// File suggestedFile = null; +// ReportSpec spec = getSelectedReportSpec(); +// if (spec != null) { +// File dir = saveReportFileChooser.getCurrentDirectory(); +// suggestedFile = new File(dir, spec.getName() + ".xml"); +// } +// return suggestedFile; +// } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private JButton cancelButton; + private JButton generateButton; + private JScrollPane jScrollPane1; + private JLabel profileSelectLabel; + private JTable profileSelectTable; + private JComboBox reportSelectCombo; + private JLabel reportSelectLabel; + // End of variables declaration//GEN-END:variables + + private void enableGenerateButton() { + boolean profileSelected = false; + for (ProfileWrapper profileWrapper : profilesRowData) { + if (profileWrapper.isSelected()) { + profileSelected = true; + break; + } + } + + generateButton.setEnabled(profileSelected); + } + + /** + * @return the selectedReportSpec + */ + public ReportSpec getSelectedReportSpec() { + return (ReportSpec) reportSelectCombo.getSelectedItem(); + } + + private final class CheckBoxRenderer extends JCheckBox implements TableCellRenderer { + + private static final long serialVersionUID = -4078523535790396904L; + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, + boolean hasFocus, int row, int column) { + ProfileWrapper profile = (ProfileWrapper) value; + + setSelected(profile.isSelected()); + setText(profile.getProfile().getName()); + setOpaque(false); + + boolean enabled = profilesRowData.get(row).getProfile() + .getProfile().getState().isReportable(); + setEnabled(enabled); + return this; + } + } + + private final class CheckBoxEditor extends DefaultCellEditor { + + private static final long serialVersionUID = 8023412072260282004L; + private ProfileWrapper profile; + + /** + * @param checkBox + */ + public CheckBoxEditor() { + super(new JCheckBox()); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, int row, int column) { + + profile = (ProfileWrapper) value; + + final JCheckBox checkBox = (JCheckBox) getComponent(); + + checkBox.setText(profile.getProfile().getName()); + checkBox.setSelected(profile.isSelected()); + checkBox.setOpaque(false); + + return checkBox; + } + + /** + * @see javax.swing.CellEditor#getCellEditorValue() + */ + @Override + public Object getCellEditorValue() { + profile.setSelected(((JCheckBox) getComponent()).isSelected()); + return profile; + } + } + + private final class ProfileWrapper { + + private ProfileForm profile; + private boolean selected; + + ProfileWrapper(ProfileForm profile) { + this.profile = profile; + } + + /** + * @param selected the selected to set + */ + public void setSelected(boolean selected) { + this.selected = selected; + enableGenerateButton(); + } + + /** + * @return the selected + */ + public boolean isSelected() { + return selected; + } + + /** + * @return the profile + */ + public ProfileForm getProfile() { + return profile; + } + } + + private final class ReportSpecRenderer extends JLabel implements ListCellRenderer { + + private static final long serialVersionUID = 6009453525457078052L; + + public ReportSpecRenderer() { + setOpaque(true); + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, + boolean cellHasFocus) { + + if (isSelected) { + setBackground(list.getSelectionBackground()); + setForeground(list.getSelectionForeground()); + } else { + setBackground(list.getBackground()); + setForeground(list.getForeground()); + } + //FIXME: if there are no reports defined, value is not a ReportSpec + // and we get an invalid cast operation here. There must be a better + // fix than testing for instance of ReportSpec...? + if (value instanceof ReportSpec) { + ReportSpec spec = (ReportSpec) value; + setText(spec.getName()); + } else { + setText(""); + } + return this; + } + } + + /** + * @return true if the user approved the report generation; false otherwise. + */ + public boolean isApproved() { + return approved; + } +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportViewFrame.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportViewFrame.java index 25bbb0a45..38b2f0a2e 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportViewFrame.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/report/ReportViewFrame.java @@ -1,273 +1,272 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.report; - -import java.awt.Component; -import java.awt.Frame; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.io.IOException; -import java.io.Reader; -import java.io.StringWriter; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; - -import static java.nio.charset.StandardCharsets.UTF_8; - -import javax.swing.GroupLayout; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.SwingConstants; -import javax.swing.WindowConstants; -import javax.swing.GroupLayout.Alignment; -import javax.swing.LayoutStyle.ComponentPlacement; -import javax.xml.transform.TransformerException; - -import org.openide.util.NbBundle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xhtmlrenderer.simple.FSScrollPane; -import org.xhtmlrenderer.simple.XHTMLPanel; - -import uk.gov.nationalarchives.droid.report.ReportTransformer; - -/** - * - * @author rflitcroft - */ -//CHECKSTYLE:OFF -// FIXME: Data Abstraction Coupling is too high (max 9, this has 10) -// Gotta say - I don't see that this is a particularly complex form, but -// maybe some refactoring could be done. -// Turning checkstyle off temporarily to make this next release. -public class ReportViewFrame extends JFrame { -//CHECKSTYLE:ON - private static final long serialVersionUID = 9212026527186933180L; - private static final String UTF8 = "UTF-8"; - - private ReportTransformer reportTransformer; - private ExportReportAction exportAction; - - private Path reportFile; - private List xslTransforms; - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - /** - * Creates new form ReportViewDialog. - * - * @param parent this dialog's parent - * - */ - public ReportViewFrame(final Frame parent) { - //super(parent); - //setModal(true); - initComponents(); - URL icon = getClass().getResource("/uk/gov/nationalarchives/droid/icons/DROID16.gif"); - setIconImage(new ImageIcon(icon).getImage()); - - addWindowListener(new WindowAdapter() { - @Override - public void windowClosed(final WindowEvent e) { - if (reportFile != null) { - if (Files.exists(reportFile)) { - try { - Files.deleteIfExists(reportFile); - } catch (final IOException ex) { - String message = String.format("Could not delete report file: %s. " - + "Will try to delete on exit.", - reportFile.toAbsolutePath().toString()); - log.warn(message); - reportFile.toFile().deleteOnExit(); - } - } - } - } - }); - } - - /** - * Renders the report xml in the dialog. - * - * @param reportXml the report to render - * @param transforms a list of xsl files that can transform the report xml. - */ - public void renderReport(final Path reportXml, final List transforms) { - - this.reportFile = reportXml; - this.xslTransforms = transforms; - - // BNO, Nov 2016: Now we use a specific decoder and InputStreamReader to force UTF-8 encoding - // (previously we used a FileWriter uses OS default encoding - this could lead to XML that was non UTF8 - // despite the declaration saying it was, and a SAXParseException when processing the report) - try (final Reader reader = Files.newBufferedReader(reportXml, UTF_8); - final StringWriter out = new StringWriter()) { - //Reader sourceReader = new FileReader(reportXml); - reportTransformer.transformUsingXsl(reader, "Web page.html.xsl", out); - - //CHECKSTYLE:OFF - need to catch Exception - try (final InputStream in = new ByteArrayInputStream(out.getBuffer().toString().getBytes(UTF8))) { - xHTMLPanel1.setDocument(in, ""); - } catch (final Exception e) { - log.error(e.getMessage(), e); - throw new RuntimeException(e); - } - //CHECKSTYLE:ON - - } catch (final IOException | TransformerException e) { - log.error(e.getMessage(), e); - throw new RuntimeException(e); - } - - pack(); - setLocationRelativeTo(getParent()); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - - exportButton = new JButton(); - closeButton = new JButton(); - fSScrollPane1 = new FSScrollPane(); - xHTMLPanel1 = new XHTMLPanel(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - setTitle(NbBundle.getMessage(ReportViewFrame.class, "ReportViewDialog.title")); // NOI18N - exportButton.setText(NbBundle.getMessage(ReportViewFrame.class, "ReportViewDialog.exportButton.text")); // NOI18N - exportButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - exportButtonActionPerformed(evt); - } - }); - - closeButton.setText(NbBundle.getMessage(ReportViewFrame.class, "ReportViewDialog.closeButton.text")); // NOI18N - closeButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - closeButtonActionPerformed(evt); - } - }); - - GroupLayout xHTMLPanel1Layout = new GroupLayout(xHTMLPanel1); - xHTMLPanel1.setLayout(xHTMLPanel1Layout); - xHTMLPanel1Layout.setHorizontalGroup( - xHTMLPanel1Layout.createParallelGroup(Alignment.LEADING) - .addGap(0, 627, Short.MAX_VALUE) - ); - xHTMLPanel1Layout.setVerticalGroup( - xHTMLPanel1Layout.createParallelGroup(Alignment.LEADING) - .addGap(0, 505, Short.MAX_VALUE) - ); - - fSScrollPane1.setViewportView(xHTMLPanel1); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(Alignment.LEADING) - .addGroup(Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(fSScrollPane1, GroupLayout.DEFAULT_SIZE, 646, Short.MAX_VALUE) - .addContainerGap()) - .addGroup(Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(exportButton) - .addGap(18, 18, 18) - .addComponent(closeButton, GroupLayout.PREFERRED_SIZE, 78, GroupLayout.PREFERRED_SIZE) - .addGap(9, 9, 9)))) - ); - - layout.linkSize(SwingConstants.HORIZONTAL, new Component[] {closeButton, exportButton}); - - layout.setVerticalGroup( - layout.createParallelGroup(Alignment.LEADING) - .addGroup(Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(fSScrollPane1, GroupLayout.DEFAULT_SIZE, 524, Short.MAX_VALUE) - .addPreferredGap(ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(Alignment.BASELINE) - .addComponent(exportButton) - .addComponent(closeButton)) - .addContainerGap()) - ); - - layout.linkSize(SwingConstants.VERTICAL, new Component[] {closeButton, exportButton}); - - }// //GEN-END:initComponents - - private void closeButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed - setVisible(false); - dispose(); - }//GEN-LAST:event_closeButtonActionPerformed - - private void exportButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_exportButtonActionPerformed - exportAction.setDroidReportXml(reportFile); - exportAction.execute(this, xslTransforms); - }//GEN-LAST:event_exportButtonActionPerformed - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private JButton closeButton; - private JButton exportButton; - private FSScrollPane fSScrollPane1; - private XHTMLPanel xHTMLPanel1; - // End of variables declaration//GEN-END:variables - - /** - * @param reportTransformer the reportTransformer to set - */ - public void setReportTransformer(ReportTransformer reportTransformer) { - this.reportTransformer = reportTransformer; - } - - /** - * @param exportAction the exportAction to set - */ - public void setExportAction(ExportReportAction exportAction) { - this.exportAction = exportAction; - } - -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.report; + +import java.awt.Component; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.IOException; +import java.io.Reader; +import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import static java.nio.charset.StandardCharsets.UTF_8; + +import javax.swing.GroupLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.SwingConstants; +import javax.swing.WindowConstants; +import javax.swing.GroupLayout.Alignment; +import javax.swing.LayoutStyle.ComponentPlacement; +import javax.xml.transform.TransformerException; + +import org.openide.util.NbBundle; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xhtmlrenderer.simple.FSScrollPane; +import org.xhtmlrenderer.simple.XHTMLPanel; + +import uk.gov.nationalarchives.droid.report.ReportTransformer; + +/** + * + * @author rflitcroft + */ +//CHECKSTYLE:OFF +// FIXME: Data Abstraction Coupling is too high (max 9, this has 10) +// Gotta say - I don't see that this is a particularly complex form, but +// maybe some refactoring could be done. +// Turning checkstyle off temporarily to make this next release. +public class ReportViewFrame extends JFrame { + //CHECKSTYLE:ON + private static final long serialVersionUID = 9212026527186933180L; + private static final String UTF8 = "UTF-8"; + + private ReportTransformer reportTransformer; + private ExportReportAction exportAction; + + private Path reportFile; + private List xslTransforms; + + private Logger log = LoggerFactory.getLogger(this.getClass()); + + /** + * Creates new form ReportViewDialog. + * + * @param parent this dialog's parent + * + */ + public ReportViewFrame(final Frame parent) { + //super(parent); + //setModal(true); + initComponents(); + setIconImage(new ImageIcon(getClass().getResource("/uk/gov/nationalarchives/droid/icons/96x96-DROID.png")).getImage()); + + + addWindowListener(new WindowAdapter() { + @Override + public void windowClosed(final WindowEvent e) { + if (reportFile != null) { + if (Files.exists(reportFile)) { + try { + Files.deleteIfExists(reportFile); + } catch (final IOException ex) { + String message = String.format("Could not delete report file: %s. " + + "Will try to delete on exit.", + reportFile.toAbsolutePath().toString()); + log.warn(message); + reportFile.toFile().deleteOnExit(); + } + } + } + } + }); + } + + /** + * Renders the report xml in the dialog. + * + * @param reportXml the report to render + * @param transforms a list of xsl files that can transform the report xml. + */ + public void renderReport(final Path reportXml, final List transforms) { + + this.reportFile = reportXml; + this.xslTransforms = transforms; + + // BNO, Nov 2016: Now we use a specific decoder and InputStreamReader to force UTF-8 encoding + // (previously we used a FileWriter uses OS default encoding - this could lead to XML that was non UTF8 + // despite the declaration saying it was, and a SAXParseException when processing the report) + try (final Reader reader = Files.newBufferedReader(reportXml, UTF_8); + final StringWriter out = new StringWriter()) { + //Reader sourceReader = new FileReader(reportXml); + reportTransformer.transformUsingXsl(reader, "Web page.html.xsl", out); + + //CHECKSTYLE:OFF - need to catch Exception + try (final InputStream in = new ByteArrayInputStream(out.getBuffer().toString().getBytes(UTF8))) { + xHTMLPanel1.setDocument(in, ""); + } catch (final Exception e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e); + } + //CHECKSTYLE:ON + + } catch (final IOException | TransformerException e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e); + } + + pack(); + setLocationRelativeTo(getParent()); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + + exportButton = new JButton(); + closeButton = new JButton(); + fSScrollPane1 = new FSScrollPane(); + xHTMLPanel1 = new XHTMLPanel(); + + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + setTitle(NbBundle.getMessage(ReportViewFrame.class, "ReportViewDialog.title")); // NOI18N + exportButton.setText(NbBundle.getMessage(ReportViewFrame.class, "ReportViewDialog.exportButton.text")); // NOI18N + exportButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + exportButtonActionPerformed(evt); + } + }); + + closeButton.setText(NbBundle.getMessage(ReportViewFrame.class, "ReportViewDialog.closeButton.text")); // NOI18N + closeButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + closeButtonActionPerformed(evt); + } + }); + + GroupLayout xHTMLPanel1Layout = new GroupLayout(xHTMLPanel1); + xHTMLPanel1.setLayout(xHTMLPanel1Layout); + xHTMLPanel1Layout.setHorizontalGroup( + xHTMLPanel1Layout.createParallelGroup(Alignment.LEADING) + .addGap(0, 627, Short.MAX_VALUE) + ); + xHTMLPanel1Layout.setVerticalGroup( + xHTMLPanel1Layout.createParallelGroup(Alignment.LEADING) + .addGap(0, 505, Short.MAX_VALUE) + ); + + fSScrollPane1.setViewportView(xHTMLPanel1); + + GroupLayout layout = new GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(Alignment.LEADING) + .addGroup(Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(fSScrollPane1, GroupLayout.DEFAULT_SIZE, 646, Short.MAX_VALUE) + .addContainerGap()) + .addGroup(Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(exportButton) + .addGap(18, 18, 18) + .addComponent(closeButton, GroupLayout.PREFERRED_SIZE, 78, GroupLayout.PREFERRED_SIZE) + .addGap(9, 9, 9)))) + ); + + layout.linkSize(SwingConstants.HORIZONTAL, new Component[] {closeButton, exportButton}); + + layout.setVerticalGroup( + layout.createParallelGroup(Alignment.LEADING) + .addGroup(Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addComponent(fSScrollPane1, GroupLayout.DEFAULT_SIZE, 524, Short.MAX_VALUE) + .addPreferredGap(ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(Alignment.BASELINE) + .addComponent(exportButton) + .addComponent(closeButton)) + .addContainerGap()) + ); + + layout.linkSize(SwingConstants.VERTICAL, new Component[] {closeButton, exportButton}); + + }// //GEN-END:initComponents + + private void closeButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed + setVisible(false); + dispose(); + }//GEN-LAST:event_closeButtonActionPerformed + + private void exportButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_exportButtonActionPerformed + exportAction.setDroidReportXml(reportFile); + exportAction.execute(this, xslTransforms); + }//GEN-LAST:event_exportButtonActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private JButton closeButton; + private JButton exportButton; + private FSScrollPane fSScrollPane1; + private XHTMLPanel xHTMLPanel1; + // End of variables declaration//GEN-END:variables + + /** + * @param reportTransformer the reportTransformer to set + */ + public void setReportTransformer(ReportTransformer reportTransformer) { + this.reportTransformer = reportTransformer; + } + + /** + * @param exportAction the exportAction to set + */ + public void setExportAction(ExportReportAction exportAction) { + this.exportAction = exportAction; + } + +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/DefaultCellRenderer.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/DefaultCellRenderer.java index e80106514..57936e4d4 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/DefaultCellRenderer.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/DefaultCellRenderer.java @@ -1,163 +1,148 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.treemodel; - -import java.awt.Color; -import java.awt.Component; -import java.net.URL; - -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.SwingConstants; -import javax.swing.table.TableCellRenderer; - - - -/** - * @author a-mpalmer - * - */ -public class DefaultCellRenderer implements TableCellRenderer { - - private JLabel renderer = new JLabel(); - private Color backColor; - private Color darkerColor; - - /** - * - * @param backColor The default background color to render in - */ - public DefaultCellRenderer(Color backColor) { - renderer.setOpaque(true); - renderer.setHorizontalAlignment(SwingConstants.CENTER); - this.backColor = backColor; - this.darkerColor = TreeUtils.getDarkerColor(backColor); - } - - /** - * Overloaded constructor for the default cell renderer taking an alignment. - * @param backColor - the default background color for the cell - * @param alignment - the alignment (SwingConstants) of the cell contents. - */ - public DefaultCellRenderer(Color backColor, int alignment) { - this(backColor); - renderer.setHorizontalAlignment(alignment); - } - - /** - * {@inheritDoc} - * - */ - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, - int row, int column) { - if (isSelected) { - renderer.setBackground(table.getSelectionBackground()); - renderer.setForeground(table.getSelectionForeground()); - } else { - renderer.setBackground(getBackgroundColor(table, row, column)); - renderer.setForeground(table.getForeground()); - } - if (getFilterStatus(value) == 1) { - renderer.setText(getDisplayValue(value)); - renderer.setIcon(getIcon(value)); - } else { - renderer.setText(""); - renderer.setIcon(null); - } - return renderer; - } - - /** - * getDisplayValue returns the display value for an object in the - * renderer. This can be overridden by subclasses to provide for - * more specialised display values (e.g. the HyperLinkRenderer). - * @param value The object to get a display value for. - * @return String the display value of the object. - */ - public String getDisplayValue(Object value) { - return value.toString(); - } - - /** - * - * @param value the value being rendererd - * @return An icon to render. - */ - public Icon getIcon(Object value) { - return null; - } - - /** - * - * @return The renderer component. - */ - protected JLabel getRenderer() { - return renderer; - } - - - /** - * - * @param resourceName the name of the icon resource to load. - * @return An icon containing the loaded icon resource. - */ - protected Icon getIconResource(String resourceName) { - String resourcePath = String.format("uk/gov/nationalarchives/droid/icons/%s.gif", resourceName); - URL imgURL = getClass().getClassLoader().getResource(resourcePath); - return imgURL == null ? null : new ImageIcon(imgURL); - } - - - /** - * - * @param value The value being displayed - * @return A filter status - 0 - does not meet filter, 1 meets filter, 2 children meets filter - */ - public int getFilterStatus(Object value) { - DirectoryComparableObject o = (DirectoryComparableObject) value; - return o.getFilterStatus(); - } - - private Color getBackgroundColor(JTable table, int row, int column) { - Color theColor; - if (row % 2 == 0) { - theColor = this.backColor; - } else { - theColor = this.darkerColor; - } - return theColor; - } - -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.treemodel; + +import java.awt.Color; +import java.awt.Component; + +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.table.TableCellRenderer; + + +/** + * @author a-mpalmer + * + */ +public class DefaultCellRenderer implements TableCellRenderer { + + private JLabel renderer = new JLabel(); + private Color backColor; + private Color darkerColor; + + /** + * + * @param backColor The default background color to render in + */ + public DefaultCellRenderer(Color backColor) { + renderer.setOpaque(true); + renderer.setHorizontalAlignment(SwingConstants.CENTER); + this.backColor = backColor; + this.darkerColor = TreeUtils.getDarkerColor(backColor); + } + + /** + * Overloaded constructor for the default cell renderer taking an alignment. + * @param backColor - the default background color for the cell + * @param alignment - the alignment (SwingConstants) of the cell contents. + */ + public DefaultCellRenderer(Color backColor, int alignment) { + this(backColor); + renderer.setHorizontalAlignment(alignment); + } + + /** + * {@inheritDoc} + * + */ + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + if (isSelected) { + renderer.setBackground(table.getSelectionBackground()); + renderer.setForeground(table.getSelectionForeground()); + } else { + renderer.setBackground(getBackgroundColor(table, row, column)); + renderer.setForeground(table.getForeground()); + } + if (getFilterStatus(value) == 1) { + renderer.setText(getDisplayValue(value)); + renderer.setIcon(getIcon(value)); + } else { + renderer.setText(""); + renderer.setIcon(null); + } + return renderer; + } + + /** + * getDisplayValue returns the display value for an object in the + * renderer. This can be overridden by subclasses to provide for + * more specialised display values (e.g. the HyperLinkRenderer). + * @param value The object to get a display value for. + * @return String the display value of the object. + */ + public String getDisplayValue(Object value) { + return value.toString(); + } + + /** + * + * @param value the value being rendererd + * @return An icon to render. + */ + public Icon getIcon(Object value) { + return null; + } + + /** + * + * @return The renderer component. + */ + protected JLabel getRenderer() { + return renderer; + } + + + /** + * + * @param value The value being displayed + * @return A filter status - 0 - does not meet filter, 1 meets filter, 2 children meets filter + */ + public int getFilterStatus(Object value) { + DirectoryComparableObject o = (DirectoryComparableObject) value; + return o.getFilterStatus(); + } + + private Color getBackgroundColor(JTable table, int row, int column) { + Color theColor; + if (row % 2 == 0) { + theColor = this.backColor; + } else { + theColor = this.darkerColor; + } + return theColor; + } + +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FileExtensionRenderer.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FileExtensionRenderer.java index 51be9f64f..10113a531 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FileExtensionRenderer.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FileExtensionRenderer.java @@ -1,71 +1,74 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.treemodel; - -import java.awt.Color; - -import javax.swing.Icon; -import javax.swing.SwingConstants; - -/** - * @author a-mpalmer - * - */ -public class FileExtensionRenderer extends DefaultCellRenderer { - - private Icon warningIcon; - - /** - * @param backColor the background color to render in. - */ - public FileExtensionRenderer(Color backColor) { - super(backColor); - getRenderer().setHorizontalTextPosition(SwingConstants.LEFT); - warningIcon = getIconResource("warning_extension_mismatch"); - } - - - @Override - /** - * @param Object the object being rendered. - * @return Icon the icon for a file extension mismatch. - * @see uk.gov.nationalarchives.droid.gui.treemodel.DefaultCellRenderer#getIcon(java.lang.Object) - */ - public Icon getIcon(Object value) { - DirectoryComparableObject o = (DirectoryComparableObject) value; - if (o.getExtensionMismatch()) { - return warningIcon; - } - return null; - } - -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.treemodel; + +import java.awt.Color; + +import javax.swing.Icon; +import javax.swing.SwingConstants; + +import uk.gov.nationalarchives.droid.gui.util.DroidImageUtils; +import uk.gov.nationalarchives.droid.gui.util.IconType; + +/** + * @author a-mpalmer + * + */ +public class FileExtensionRenderer extends DefaultCellRenderer { + + private Icon warningIcon; + + /** + * @param backColor the background color to render in. + */ + public FileExtensionRenderer(Color backColor) { + super(backColor); + getRenderer().setHorizontalTextPosition(SwingConstants.LEFT); + warningIcon = DroidImageUtils.createBaseMultiResolutionImage("/uk/gov/nationalarchives/droid/icons/", "warning_extension_mismatch.png", IconType.SMALL); + } + + + @Override + /** + * @param Object the object being rendered. + * @return Icon the icon for a file extension mismatch. + * @see uk.gov.nationalarchives.droid.gui.treemodel.DefaultCellRenderer#getIcon(java.lang.Object) + */ + public Icon getIcon(Object value) { + DirectoryComparableObject o = (DirectoryComparableObject) value; + if (o.getExtensionMismatch()) { + return warningIcon; + } + return null; + } + +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FormatCountRenderer.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FormatCountRenderer.java index 74994e8c5..8e8229142 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FormatCountRenderer.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/FormatCountRenderer.java @@ -1,157 +1,159 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.treemodel; - -import java.awt.Color; -import java.awt.Component; -import java.net.URL; - -import javax.swing.ImageIcon; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.SwingConstants; -import javax.swing.table.TableCellRenderer; - -/** - * @author rflitcroft - * - */ -public class FormatCountRenderer implements TableCellRenderer { - - /** */ - private static final String ICON_URL_PATTERN = "uk/gov/nationalarchives/droid/icons/format_count_small_%s.png"; - - /** - * Cached Internal labels used to render the different types of format counts. - */ - private JLabel nullFormatCount = new JLabel(); - private JLabel zeroFormatCount = new JLabel(); - private JLabel oneFormatCount = new JLabel(); - private JLabel manyFormatCount = new JLabel(); - private Color backColor; - private Color darkerColor; - /** - * Creates a format count renderer and initialises the internal labels and icons - * used to render the different counts. - * @param backColor the background color to render cells in. - */ - public FormatCountRenderer(Color backColor) { - setLabelProperties(nullFormatCount, null); - setLabelProperties(zeroFormatCount, 0); - setLabelProperties(oneFormatCount, 1); - setLabelProperties(manyFormatCount, null); - this.backColor = backColor; - this.darkerColor = TreeUtils.getDarkerColor(backColor); - } - - /** - * {@inheritDoc} - */ - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, - int row, int column) { - DirectoryComparableLong count = (DirectoryComparableLong) value; - JLabel renderer = getRenderer(count); - final Long sourceCount = count.getSource(); - boolean displayAsLink = sourceCount != null && sourceCount > 1; - if (displayAsLink && count.getFilterStatus() == 1) { - renderer.setText("(" + sourceCount + ")"); - } else { - renderer.setText(null); - } - if (isSelected) { - renderer.setBackground(table.getSelectionBackground()); - renderer.setForeground(table.getSelectionForeground()); - } else { - renderer.setBackground(getBackgroundColor(table, row, column)); - renderer.setForeground(displayAsLink ? Color.BLUE : table.getForeground()); - } - return renderer; - } - - - private Color getBackgroundColor(JTable table, int row, int column) { - Color theColor; - if (row % 2 == 0) { - theColor = this.backColor; - } else { - theColor = this.darkerColor; - } - return theColor; - } - - - private JLabel getRenderer(DirectoryComparableLong count) { - JLabel result = null; - final Long source = count.getSource(); - if (source != null && count.getFilterStatus() == 1) { - if (source == 1) { - result = oneFormatCount; - } else if (source > 1) { - result = manyFormatCount; - } else { - result = zeroFormatCount; - } - } else { - result = nullFormatCount; - } - return result; - } - - private void setLabelProperties(JLabel label, Integer count) { - label.setOpaque(true); - label.setHorizontalAlignment(SwingConstants.CENTER); - label.setIcon(createImageIcon(count)); - } - - /** - * Returns an ImageIcon for the count given. - */ - private ImageIcon createImageIcon(Integer count) { - String iconSuffix; - if (count != null) { - if (count == 1) { - iconSuffix = "ONE"; - } else if (count > 1) { - iconSuffix = "MULTIPLE"; - } else { - iconSuffix = "ZERO"; - } - - URL imgURL = getClass().getClassLoader().getResource(String.format(ICON_URL_PATTERN, iconSuffix)); - return imgURL == null ? null : new ImageIcon(imgURL, iconSuffix); - } - return null; - } - - -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.treemodel; + +import java.awt.Color; +import java.awt.Component; + +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.table.TableCellRenderer; + +import uk.gov.nationalarchives.droid.gui.util.DroidImageUtils; +import uk.gov.nationalarchives.droid.gui.util.IconType; + +/** + * @author rflitcroft + * + */ +public class FormatCountRenderer implements TableCellRenderer { + + /** */ + private static final String ICON_NAME_PATTERN = "format_count_%s.png"; + + /** + * Cached Internal labels used to render the different types of format counts. + */ + private JLabel nullFormatCount = new JLabel(); + private JLabel zeroFormatCount = new JLabel(); + private JLabel oneFormatCount = new JLabel(); + private JLabel manyFormatCount = new JLabel(); + private Color backColor; + private Color darkerColor; + /** + * Creates a format count renderer and initialises the internal labels and icons + * used to render the different counts. + * @param backColor the background color to render cells in. + */ + public FormatCountRenderer(Color backColor) { + setLabelProperties(nullFormatCount, null); + setLabelProperties(zeroFormatCount, 0); + setLabelProperties(oneFormatCount, 1); + setLabelProperties(manyFormatCount, null); + this.backColor = backColor; + this.darkerColor = TreeUtils.getDarkerColor(backColor); + } + + /** + * {@inheritDoc} + */ + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + DirectoryComparableLong count = (DirectoryComparableLong) value; + JLabel renderer = getRenderer(count); + final Long sourceCount = count.getSource(); + boolean displayAsLink = sourceCount != null && sourceCount > 1; + if (displayAsLink && count.getFilterStatus() == 1) { + renderer.setText("(" + sourceCount + ")"); + } else { + renderer.setText(null); + } + if (isSelected) { + renderer.setBackground(table.getSelectionBackground()); + renderer.setForeground(table.getSelectionForeground()); + } else { + renderer.setBackground(getBackgroundColor(table, row, column)); + renderer.setForeground(displayAsLink ? Color.BLUE : table.getForeground()); + } + return renderer; + } + + + private Color getBackgroundColor(JTable table, int row, int column) { + Color theColor; + if (row % 2 == 0) { + theColor = this.backColor; + } else { + theColor = this.darkerColor; + } + return theColor; + } + + + private JLabel getRenderer(DirectoryComparableLong count) { + JLabel result = null; + final Long source = count.getSource(); + if (source != null && count.getFilterStatus() == 1) { + if (source == 1) { + result = oneFormatCount; + } else if (source > 1) { + result = manyFormatCount; + } else { + result = zeroFormatCount; + } + } else { + result = nullFormatCount; + } + return result; + } + + private void setLabelProperties(JLabel label, Integer count) { + label.setOpaque(true); + label.setHorizontalAlignment(SwingConstants.CENTER); + label.setIcon(createImageIcon(count)); + } + + /** + * Returns an ImageIcon for the count given. + */ + private ImageIcon createImageIcon(Integer count) { + String iconSuffix; + if (count != null) { + if (count == 1) { + iconSuffix = "ONE"; + } else if (count > 1) { + iconSuffix = "MULTIPLE"; + } else { + iconSuffix = "ZERO"; + } + + final String imageName = String.format(ICON_NAME_PATTERN, iconSuffix); + return DroidImageUtils.createBaseMultiResolutionImage("/uk/gov/nationalarchives/droid/icons/", imageName, IconType.SMALL); + } + return null; + } + + +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/NodeRenderer.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/NodeRenderer.java index f80fc8cc8..708e86059 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/NodeRenderer.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/treemodel/NodeRenderer.java @@ -1,258 +1,263 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.treemodel; - -import java.awt.Color; -import java.awt.Component; -import java.io.File; -import java.net.URL; - -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.tree.DefaultMutableTreeNode; - -import org.netbeans.swing.outline.DefaultOutlineCellRenderer; - -import uk.gov.nationalarchives.droid.core.interfaces.NodeStatus; -import uk.gov.nationalarchives.droid.core.interfaces.ResourceType; -import uk.gov.nationalarchives.droid.profile.NodeMetaData; -import uk.gov.nationalarchives.droid.profile.ProfileResourceNode; - -/** - * @author a-mpalmer - * - */ -public class NodeRenderer extends DefaultOutlineCellRenderer { - - private static final long serialVersionUID = -574370296768932560L; - - private Icon folderResourceTypeIcon; - private Icon folderResourceTypeNotDoneIcon; - private Icon folderResourceTypeNotFoundIcon; - private Icon folderResourceTypeAccessDeniedIcon; - private Icon folderResourceTypeEmptyIcon; - private Icon folderResourceTypeErrorIcon; - private Icon containerResourceTypeIcon; - private Icon containerResourceTypeNotDoneIcon; - private Icon containerResourceTypeNotFoundIcon; - private Icon containerResourceTypeAccessDeniedIcon; - private Icon containerResourceTypeErrorIcon; - private Icon fileResourceTypeIcon; - private Icon fileResourceTypeNotDoneIcon; - private Icon fileResourceTypeNotFoundIcon; - private Icon fileResourceTypeAccessDeniedIcon; - private Icon fileResourceTypeErrorIcon; - private Color backColor; - private Color darkerColor; - - /** - * @param backColor the default background color for the node. - */ - public NodeRenderer(Color backColor) { - super(); - folderResourceTypeIcon = getIconResource("folderResourceType"); - containerResourceTypeIcon = getIconResource("containerResourceType"); - fileResourceTypeIcon = getIconResource("fileResourceType"); - - folderResourceTypeNotDoneIcon = getIconResource("folderResourceType_NOT_DONE"); - containerResourceTypeNotDoneIcon = getIconResource("containerResourceType_NOT_DONE"); - fileResourceTypeNotDoneIcon = getIconResource("fileResourceType_NOT_DONE"); - - folderResourceTypeNotFoundIcon = getIconResource("folderResourceType_NOTFOUND"); - containerResourceTypeNotFoundIcon = getIconResource("containerResourceType_NOTFOUND"); - fileResourceTypeNotFoundIcon = getIconResource("fileResourceType_NOTFOUND"); - - folderResourceTypeEmptyIcon = getIconResource("folderResourceType_EMPTY"); - folderResourceTypeAccessDeniedIcon = getIconResource("folderResourceType_ACCESSDENIED"); - containerResourceTypeAccessDeniedIcon = getIconResource("containerResourceType_ACCESSDENIED"); - fileResourceTypeAccessDeniedIcon = getIconResource("fileResourceType_ACCESSDENIED"); - - folderResourceTypeErrorIcon = getIconResource("folderResourceType_ERROR"); - containerResourceTypeErrorIcon = getIconResource("containerResourceType_ERROR"); - fileResourceTypeErrorIcon = getIconResource("fileResourceType_ERROR"); - - this.backColor = backColor; - this.darkerColor = TreeUtils.getDarkerColor(backColor); - } - - private Icon getIconResource(String resourceName) { - String resourcePath = String.format("uk/gov/nationalarchives/droid/icons/%s.gif", resourceName); - URL imgURL = getClass().getClassLoader().getResource(resourcePath); - return imgURL == null ? null : new ImageIcon(imgURL); - } - - /** - * {@inheritDoc} - */ - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, - int row, int column) { - JLabel renderer = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - if (isSelected) { - renderer.setBackground(table.getSelectionBackground()); - renderer.setForeground(table.getSelectionForeground()); - } else { - renderer.setBackground(getBackgroundColor(table, row, column)); - renderer.setForeground(getForegroundColor(value, table)); - } - renderer.setText(getDisplayName(value)); - renderer.setIcon(getIcon(value)); - return renderer; - } - - /** - * Returns the fully-qualified path of a node which is a root node, and the - * name of any node which is not. - * @param node the node - * @return the display name - */ - public String getDisplayName(Object node) { - - ProfileResourceNode profileNode = (ProfileResourceNode) ((DefaultMutableTreeNode) node) - .getUserObject(); - return profileNode.getParentId() == null ? new File(profileNode.getUri()).getPath() - : profileNode.getMetaData().getName(); - //return profileNode.getParent() == null ? new File(profileNode.getUri()).getPath() - // : profileNode.getMetaData().getName(); - } - - /** - * Gets the correct icon for the node. - * @param node the node - * @return the icon for the node - */ - // CHECKSTYLE:OFF cyclomatic complexity caused by switch statement. - public Icon getIcon(Object node) { - // CHECKSTYLE:ON - - ProfileResourceNode profileNode = getNode(node); - NodeMetaData metadata = profileNode.getMetaData(); - ResourceType nodeType = metadata.getResourceType(); - NodeStatus status = metadata.getNodeStatus(); - Icon icon = null; - switch (nodeType) { - case FOLDER: - if (profileNode.getFilterStatus() != 1) { - icon = folderResourceTypeNotDoneIcon; - } else { - switch (status) { - case NOT_DONE: - icon = folderResourceTypeNotDoneIcon; - break; - case ACCESS_DENIED: - icon = folderResourceTypeAccessDeniedIcon; - break; - case EMPTY: - icon = folderResourceTypeEmptyIcon; - break; - case NOT_FOUND: - icon = folderResourceTypeNotFoundIcon; - break; - case ERROR: - icon = folderResourceTypeErrorIcon; - break; - default: - icon = folderResourceTypeIcon; - break; - } - } - break; - case FILE: - if (profileNode.getFilterStatus() != 1) { - icon = fileResourceTypeNotDoneIcon; - } else { - switch (status) { - case NOT_DONE: - icon = fileResourceTypeNotDoneIcon; - break; - case ACCESS_DENIED: - icon = fileResourceTypeAccessDeniedIcon; - break; - case NOT_FOUND: - icon = fileResourceTypeNotFoundIcon; - break; - case ERROR: - icon = fileResourceTypeErrorIcon; - break; - default: - icon = fileResourceTypeIcon; - } - } - break; - case CONTAINER: - if (profileNode.getFilterStatus() != 1) { - icon = containerResourceTypeNotDoneIcon; - } else { - switch (status) { - case NOT_DONE: // should be impossible, but implemented anyway. - icon = containerResourceTypeNotDoneIcon; - break; - case ACCESS_DENIED: - icon = containerResourceTypeAccessDeniedIcon; - break; - case NOT_FOUND: - icon = containerResourceTypeNotFoundIcon; - break; - case ERROR: - icon = containerResourceTypeErrorIcon; - break; - default: - icon = containerResourceTypeIcon; - } - } - break; - default: - } - return icon; - } - - - private Color getBackgroundColor(JTable table, int row, int column) { - Color theColor; - if (row % 2 == 0) { - theColor = this.backColor; - } else { - theColor = this.darkerColor; - } - return theColor; - } - - private Color getForegroundColor(Object obj, JTable table) { - return table.getForeground(); - } - - private ProfileResourceNode getNode(Object node) { - return (ProfileResourceNode) ((DefaultMutableTreeNode) node).getUserObject(); - } -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.treemodel; + +import java.awt.Color; +import java.awt.Component; +import java.io.File; + +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.tree.DefaultMutableTreeNode; + +import org.netbeans.swing.outline.DefaultOutlineCellRenderer; + +import uk.gov.nationalarchives.droid.core.interfaces.NodeStatus; +import uk.gov.nationalarchives.droid.core.interfaces.ResourceType; +import uk.gov.nationalarchives.droid.gui.util.DroidImageUtils; +import uk.gov.nationalarchives.droid.gui.util.IconType; +import uk.gov.nationalarchives.droid.profile.NodeMetaData; +import uk.gov.nationalarchives.droid.profile.ProfileResourceNode; + +/** + * @author a-mpalmer + * + */ +public class NodeRenderer extends DefaultOutlineCellRenderer { + + private static final long serialVersionUID = -574370296768932560L; + + private Icon folderResourceTypeIcon; + private Icon folderResourceTypeNotDoneIcon; + private Icon folderResourceTypeNotFoundIcon; + private Icon folderResourceTypeAccessDeniedIcon; + private Icon folderResourceTypeEmptyIcon; + private Icon folderResourceTypeErrorIcon; + private Icon containerResourceTypeIcon; + private Icon containerResourceTypeNotDoneIcon; + private Icon containerResourceTypeNotFoundIcon; + private Icon containerResourceTypeAccessDeniedIcon; + private Icon containerResourceTypeErrorIcon; + private Icon fileResourceTypeIcon; + private Icon fileResourceTypeNotDoneIcon; + private Icon fileResourceTypeNotFoundIcon; + private Icon fileResourceTypeAccessDeniedIcon; + private Icon fileResourceTypeErrorIcon; + private Color backColor; + private Color darkerColor; + + /** + * @param backColor the default background color for the node. + */ + public NodeRenderer(Color backColor) { + super(); + folderResourceTypeIcon = getIconResource("folderResourceType"); + containerResourceTypeIcon = getIconResource("containerResourceType"); + fileResourceTypeIcon = getIconResource("fileResourceType"); + + folderResourceTypeNotDoneIcon = getIconResource("folderResourceType_NOT_DONE"); + containerResourceTypeNotDoneIcon = getIconResource("containerResourceType_NOT_DONE"); + fileResourceTypeNotDoneIcon = getIconResource("fileResourceType_NOT_DONE"); + + folderResourceTypeNotFoundIcon = getIconResource("folderResourceType_NOTFOUND"); + containerResourceTypeNotFoundIcon = getIconResource("containerResourceType_NOTFOUND"); + fileResourceTypeNotFoundIcon = getIconResource("fileResourceType_NOTFOUND"); + + folderResourceTypeEmptyIcon = getIconResource("folderResourceType_EMPTY"); + folderResourceTypeAccessDeniedIcon = getIconResource("folderResourceType_ACCESSDENIED"); + containerResourceTypeAccessDeniedIcon = getIconResource("containerResourceType_ACCESSDENIED"); + fileResourceTypeAccessDeniedIcon = getIconResource("fileResourceType_ACCESSDENIED"); + + folderResourceTypeErrorIcon = getIconResource("folderResourceType_ERROR"); + containerResourceTypeErrorIcon = getIconResource("containerResourceType_ERROR"); + fileResourceTypeErrorIcon = getIconResource("fileResourceType_ERROR"); + + this.backColor = backColor; + this.darkerColor = TreeUtils.getDarkerColor(backColor); + } + + /** + * get Icon from resource name + * @param resourceName name of the resource + * @return the Icon + */ + protected Icon getIconResource(String resourceName) { + String resourceFilename = String.format("%s.png", resourceName); + return DroidImageUtils.createBaseMultiResolutionImage("/uk/gov/nationalarchives/droid/icons/", resourceFilename, + IconType.SMALL); + } + + /** + * {@inheritDoc} + */ + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + JLabel renderer = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + if (isSelected) { + renderer.setBackground(table.getSelectionBackground()); + renderer.setForeground(table.getSelectionForeground()); + } else { + renderer.setBackground(getBackgroundColor(table, row, column)); + renderer.setForeground(getForegroundColor(value, table)); + } + renderer.setText(getDisplayName(value)); + renderer.setIcon(getIcon(value)); + return renderer; + } + + /** + * Returns the fully-qualified path of a node which is a root node, and the + * name of any node which is not. + * @param node the node + * @return the display name + */ + public String getDisplayName(Object node) { + + ProfileResourceNode profileNode = (ProfileResourceNode) ((DefaultMutableTreeNode) node) + .getUserObject(); + return profileNode.getParentId() == null ? new File(profileNode.getUri()).getPath() + : profileNode.getMetaData().getName(); + //return profileNode.getParent() == null ? new File(profileNode.getUri()).getPath() + // : profileNode.getMetaData().getName(); + } + + /** + * Gets the correct icon for the node. + * @param node the node + * @return the icon for the node + */ + // CHECKSTYLE:OFF cyclomatic complexity caused by switch statement. + public Icon getIcon(Object node) { + // CHECKSTYLE:ON + + ProfileResourceNode profileNode = getNode(node); + NodeMetaData metadata = profileNode.getMetaData(); + ResourceType nodeType = metadata.getResourceType(); + NodeStatus status = metadata.getNodeStatus(); + Icon icon = null; + switch (nodeType) { + case FOLDER: + if (profileNode.getFilterStatus() != 1) { + icon = folderResourceTypeNotDoneIcon; + } else { + switch (status) { + case NOT_DONE: + icon = folderResourceTypeNotDoneIcon; + break; + case ACCESS_DENIED: + icon = folderResourceTypeAccessDeniedIcon; + break; + case EMPTY: + icon = folderResourceTypeEmptyIcon; + break; + case NOT_FOUND: + icon = folderResourceTypeNotFoundIcon; + break; + case ERROR: + icon = folderResourceTypeErrorIcon; + break; + default: + icon = folderResourceTypeIcon; + break; + } + } + break; + case FILE: + if (profileNode.getFilterStatus() != 1) { + icon = fileResourceTypeNotDoneIcon; + } else { + switch (status) { + case NOT_DONE: + icon = fileResourceTypeNotDoneIcon; + break; + case ACCESS_DENIED: + icon = fileResourceTypeAccessDeniedIcon; + break; + case NOT_FOUND: + icon = fileResourceTypeNotFoundIcon; + break; + case ERROR: + icon = fileResourceTypeErrorIcon; + break; + default: + icon = fileResourceTypeIcon; + } + } + break; + case CONTAINER: + if (profileNode.getFilterStatus() != 1) { + icon = containerResourceTypeNotDoneIcon; + } else { + switch (status) { + case NOT_DONE: // should be impossible, but implemented anyway. + icon = containerResourceTypeNotDoneIcon; + break; + case ACCESS_DENIED: + icon = containerResourceTypeAccessDeniedIcon; + break; + case NOT_FOUND: + icon = containerResourceTypeNotFoundIcon; + break; + case ERROR: + icon = containerResourceTypeErrorIcon; + break; + default: + icon = containerResourceTypeIcon; + } + } + break; + default: + } + return icon; + } + + + private Color getBackgroundColor(JTable table, int row, int column) { + Color theColor; + if (row % 2 == 0) { + theColor = this.backColor; + } else { + theColor = this.darkerColor; + } + return theColor; + } + + private Color getForegroundColor(Object obj, JTable table) { + return table.getForeground(); + } + + private ProfileResourceNode getNode(Object node) { + return (ProfileResourceNode) ((DefaultMutableTreeNode) node).getUserObject(); + } +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/DroidImageUtils.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/DroidImageUtils.java new file mode 100644 index 000000000..38573017a --- /dev/null +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/DroidImageUtils.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.util; + +import java.awt.Image; +import java.awt.image.BaseMultiResolutionImage; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.imageio.ImageIO; +import javax.swing.ImageIcon; + +/** + * Some bespoke image utils. + * + */ +public final class DroidImageUtils { + + /** + * Default width and height for small icons. + */ + public static final int SMALL_ICON_WIDTH_HEIGHT = 16; + + /** + * Default width and height for large icons. + */ + public static final int LARGE_ICON_WIDTH_HEIGHT = 24; + + private DroidImageUtils() { } + + /** + * Create image based on all existing resolutions (to manage high screen res screens). + * @param path path of the image + * @param baseName base name of the image + * @param type type of icon SMALL/LARGE + * @return the scaled image + */ + public static ImageIcon createBaseMultiResolutionImage(String path, String baseName, IconType type) { + java.util.List imageLocations; + switch (type) { + case SMALL: + imageLocations = List.of( + path + "16x16-" + baseName, + path + "32x32-" + baseName, + path + "64x64-" + baseName + ); + break; + case LARGE: + default: + imageLocations = List.of( + path + "24x24-" + baseName, + path + "48x48-" + baseName, + path + "96x96-" + baseName + ); + break; + } + + List imgList = new ArrayList(); + for (String location: imageLocations) { + Image currentImg = null; + try { + currentImg = ImageIO.read(DroidImageUtils.class.getResource(location)); + } catch (IOException e) { + throw new RuntimeException(e); + } + imgList.add(currentImg); + } + + return new ImageIcon(new BaseMultiResolutionImage(imgList.toArray(new Image[0]))); + } + +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/DroidStringUtils.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/DroidStringUtils.java index 2d343ef23..0612a7f99 100644 --- a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/DroidStringUtils.java +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/DroidStringUtils.java @@ -1,119 +1,120 @@ -/** - * Copyright (c) 2016, The National Archives - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following - * conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of the The National Archives nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package uk.gov.nationalarchives.droid.gui.util; - -import java.awt.FontMetrics; -import java.awt.Graphics; - -import javax.swing.JComponent; -import javax.swing.SwingUtilities; - -/** - * Some bespoke string utils. - * @author rflitcroft - * - */ -public final class DroidStringUtils { - - private static final String ELIPSES = "..."; - - private DroidStringUtils() { } - - - - /** - * Abbreviates a String by replacing a chunk in the middle by ellipses (...). - * @param str the string to abbreviate. - * @param minLeft preserves a minimum number of characters at the start - * @param maxLength the length of the abbreviated String - * This will be ignored if less than minLeft + minRight + 3 - * @return the abbreviated string - */ - public static String abbreviate(String str, int minLeft, int maxLength) { - if (str.length() <= maxLength) { - return str; - } - int left = maxLength - ELIPSES.length(); - left = (left >= 0) ? left : 0; - if (left > minLeft && minLeft >= 0) { - left = minLeft; - } - - int length = str.length(); - if (left > length) { - left = length; - } - - StringBuilder sb = new StringBuilder(); - sb.append(str.substring(0, left)); - sb.append(ELIPSES); - - int removeCount = length - maxLength + sb.length(); - if (removeCount > 0 && removeCount < length) { - sb.append(str.substring(removeCount, length)); - } - - return sb.toString(); - - } - /** - * Returns a string abbreviated according to the length of the available space - * in a component. - * @param str A string which may need abbreviating. - * @param component The component the string will be rendered in. - * @return a string abbreviated according to the length of the available space - */ - public static String abbreviate(String str, JComponent component) { - String result = ""; - if (component != null) { - Graphics g = component.getGraphics(); - FontMetrics fm = g.getFontMetrics(component.getFont()); - int stringSize = SwingUtilities.computeStringWidth(fm, str); - final int border = 48; - int availableWidth = component.getWidth() - border; - if (stringSize > availableWidth) { - final int avCharWidth = fm.charWidth('x'); - final int alwaysChop = 5; - final int charsToChop = alwaysChop + ((stringSize - availableWidth) / avCharWidth); - final int leftPos = (str.length() - charsToChop) / 2; - final int maxLength = str.length() - charsToChop; - final int left = leftPos > 0 ? leftPos : 0; - final int len = maxLength > left ? maxLength : left + 1; - result = abbreviate(str, left, len); - } else { - result = str; - } - } - return result; - } - -} +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.util; + +import java.awt.FontMetrics; +import java.awt.Graphics; + +import javax.swing.JComponent; +import javax.swing.SwingUtilities; + + +/** + * Some bespoke string utils. + * @author rflitcroft + * + */ +public final class DroidStringUtils { + + private static final String ELIPSES = "..."; + + private DroidStringUtils() { } + + + + /** + * Abbreviates a String by replacing a chunk in the middle by ellipses (...). + * @param str the string to abbreviate. + * @param minLeft preserves a minimum number of characters at the start + * @param maxLength the length of the abbreviated String + * This will be ignored if less than minLeft + minRight + 3 + * @return the abbreviated string + */ + public static String abbreviate(String str, int minLeft, int maxLength) { + if (str.length() <= maxLength) { + return str; + } + int left = maxLength - ELIPSES.length(); + left = (left >= 0) ? left : 0; + if (left > minLeft && minLeft >= 0) { + left = minLeft; + } + + int length = str.length(); + if (left > length) { + left = length; + } + + StringBuilder sb = new StringBuilder(); + sb.append(str.substring(0, left)); + sb.append(ELIPSES); + + int removeCount = length - maxLength + sb.length(); + if (removeCount > 0 && removeCount < length) { + sb.append(str.substring(removeCount, length)); + } + + return sb.toString(); + + } + /** + * Returns a string abbreviated according to the length of the available space + * in a component. + * @param str A string which may need abbreviating. + * @param component The component the string will be rendered in. + * @return a string abbreviated according to the length of the available space + */ + public static String abbreviate(String str, JComponent component) { + String result = ""; + if (component != null) { + Graphics g = component.getGraphics(); + FontMetrics fm = g.getFontMetrics(component.getFont()); + int stringSize = SwingUtilities.computeStringWidth(fm, str); + final int border = 48; + int availableWidth = component.getWidth() - border; + if (stringSize > availableWidth) { + final int avCharWidth = fm.charWidth('x'); + final int alwaysChop = 5; + final int charsToChop = alwaysChop + ((stringSize - availableWidth) / avCharWidth); + final int leftPos = (str.length() - charsToChop) / 2; + final int maxLength = str.length() - charsToChop; + final int left = leftPos > 0 ? leftPos : 0; + final int len = maxLength > left ? maxLength : left + 1; + result = abbreviate(str, left, len); + } else { + result = str; + } + } + return result; + } + +} diff --git a/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/IconType.java b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/IconType.java new file mode 100644 index 000000000..f472a94a4 --- /dev/null +++ b/droid-swing-ui/src/main/java/uk/gov/nationalarchives/droid/gui/util/IconType.java @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2016, The National Archives + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the The National Archives nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package uk.gov.nationalarchives.droid.gui.util; + +/** + * Type of icon in the GUI: large for main menu, small when inline or sub menus. + */ +public enum IconType { + /** + * Small Icons. + */ + SMALL, + + /** + * Large Icons. + */ + LARGE +} diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add disabled.png deleted file mode 100644 index 493e3606b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add small disabled.png deleted file mode 100644 index bb2cb16b1..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add small.png deleted file mode 100644 index ae47e430b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add.png deleted file mode 100644 index 39040a9e3..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Add.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clear All Results small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clear All Results small.png deleted file mode 100644 index e8ef4455d..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clear All Results small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clear All Results.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clear All Results.png deleted file mode 100644 index 2ab4e3556..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clear All Results.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clipboard small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clipboard small.png deleted file mode 100644 index 1682142c1..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Clipboard small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/DROID settings small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/DROID settings small.png deleted file mode 100644 index 22807329c..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/DROID settings small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/DROID settings.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/DROID settings.png deleted file mode 100644 index ae821ef25..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/DROID settings.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export disabled.png deleted file mode 100644 index 50e4c3410..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export small disabled.png deleted file mode 100644 index 795e5fa01..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export small.png deleted file mode 100644 index 6f756b8f5..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export.png deleted file mode 100644 index 9b2d2bf4c..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Export.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter disabled.png deleted file mode 100644 index 6d886671a..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter small disabled.png deleted file mode 100644 index f440e20ce..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter small.png deleted file mode 100644 index 3f207b7c0..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter.png deleted file mode 100644 index 9c21c52e1..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Filter.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find disabled.png deleted file mode 100644 index 5de71bb05..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find small disabled.png deleted file mode 100644 index 522796dfa..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find small.png deleted file mode 100644 index 36ae292a4..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find.png deleted file mode 100644 index 9c098b785..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Find.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New disabled.png deleted file mode 100644 index 7401a22a7..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New small disabled.png deleted file mode 100644 index 6327b027d..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New small.png deleted file mode 100644 index 49387edbf..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New.png deleted file mode 100644 index cfd608fa3..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/New.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file disabled.png deleted file mode 100644 index a83532a75..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file small disabled.png deleted file mode 100644 index 31c63061c..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file small.png deleted file mode 100644 index b1fe628f4..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file.png deleted file mode 100644 index e65457d64..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Open file.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause disabled.png deleted file mode 100644 index a3512807b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause small disabled.png deleted file mode 100644 index fb3da4322..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause small.png deleted file mode 100644 index d3acbd499..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause.png deleted file mode 100644 index 758b0b080..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Pause.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play disabled.png deleted file mode 100644 index ae0567bb2..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play small disabled.png deleted file mode 100644 index 4f344c4d4..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play small.png deleted file mode 100644 index 0b9e92cac..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play.png deleted file mode 100644 index 6066a425b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Play.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Quit Small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Quit Small.png deleted file mode 100644 index dc073539d..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Quit Small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Quit.png deleted file mode 100644 index 50dca64cc..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Quit.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove disabled.png deleted file mode 100644 index 7b53b8628..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove small disabled.png deleted file mode 100644 index 818ce14cc..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove small.png deleted file mode 100644 index c1c4d70d3..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove.png deleted file mode 100644 index b84260d70..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Remove.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report disabled.png deleted file mode 100644 index a960d5f1c..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report small disabled.png deleted file mode 100644 index 85f69a202..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report small.png deleted file mode 100644 index 22192f082..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report.png deleted file mode 100644 index 0e6b51653..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Report.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save As small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save As small disabled.png deleted file mode 100644 index 20e1204ec..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save As small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save As small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save As small.png deleted file mode 100644 index 7b3ead0ba..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save As small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save disabled.png deleted file mode 100644 index 0bc7bd903..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save small disabled.png deleted file mode 100644 index 83d1c875f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save small.png deleted file mode 100644 index f005f704c..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save.png deleted file mode 100644 index 4d39a4d1e..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Save.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Access Denied Small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Access Denied Small.png deleted file mode 100644 index d6509dc90..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Access Denied Small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Access Denied.png deleted file mode 100644 index a3179b38f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Access Denied.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence High small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence High small.png deleted file mode 100644 index c3d7a7546..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence High small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence High.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence High.png deleted file mode 100644 index eb1b91be3..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence High.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Low small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Low small.png deleted file mode 100644 index e57b98ca5..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Low small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Low.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Low.png deleted file mode 100644 index a13eaeff5..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Low.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Medium small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Medium small.png deleted file mode 100644 index e868d50d3..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Medium small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Medium.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Medium.png deleted file mode 100644 index e670e830d..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Confidence Medium.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Error small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Error small.png deleted file mode 100644 index 0d6d934fa..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Error small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Error.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Error.png deleted file mode 100644 index 0cf424ecb..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Error.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Identified small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Identified small.png deleted file mode 100644 index d85225a7f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Identified small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Identified.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Identified.png deleted file mode 100644 index 38383191e..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Identified.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Undecided small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Undecided small.png deleted file mode 100644 index d96d577d5..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Undecided small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Undecided.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Undecided.png deleted file mode 100644 index face71a55..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Undecided.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Unidentified small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Unidentified small.png deleted file mode 100644 index e9b147995..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Unidentified small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Unidentified.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Unidentified.png deleted file mode 100644 index 939a102c9..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Status Unidentified.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop disabled.png deleted file mode 100644 index 2bc487290..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop small disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop small disabled.png deleted file mode 100644 index 24cf09c46..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop small disabled.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop small.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop small.png deleted file mode 100644 index 15944db34..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop small.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop.png deleted file mode 100644 index ea2ade44d..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Stop.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Thumbs.db b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Thumbs.db deleted file mode 100644 index 2ab040533..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/OldIcons/Thumbs.db and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/gui/config/Bundle.properties b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/gui/config/Bundle.properties index 15707a677..1c18e2566 100644 --- a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/gui/config/Bundle.properties +++ b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/gui/config/Bundle.properties @@ -112,4 +112,4 @@ ConfigDialog.containerSigFileLabel.text_1=Container Signature File ConfigDialog.processArcCheckBox.text=arc ConfigDialog.processWarcCheckBox.text=warc ConfigDialog.toggleWebArchivesButton.text=Check / Uncheck all -ConfigDialog.webArchivesLabel.text=Analyse contents of archive files +ConfigDialog.webArchivesLabel.text=Analyse contents of web archive files diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Add disabled.png new file mode 100644 index 000000000..129d39555 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Add disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Add.png new file mode 100644 index 000000000..0d836bd18 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Add.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Clipboard.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Clipboard.png new file mode 100644 index 000000000..de603a323 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Clipboard.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-DROID.png new file mode 100644 index 000000000..ada491db6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Expand 3 levels.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Expand 3 levels.png new file mode 100644 index 000000000..a56f9b7c4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Expand 3 levels.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Expand.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Expand.png new file mode 100644 index 000000000..e85a1bc4f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Expand.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Export disabled.png new file mode 100644 index 000000000..64db79e20 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Export disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Export.png new file mode 100644 index 000000000..e6d0e008a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Export.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Filter disabled.png new file mode 100644 index 000000000..ee1abc330 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Filter disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Filter.png new file mode 100644 index 000000000..3c0247427 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Filter.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Find disabled.png new file mode 100644 index 000000000..693c3849d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Find disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Find.png new file mode 100644 index 000000000..e15d018fc Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Find.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Icon_External_Link.png new file mode 100644 index 000000000..9da8158c8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Icon_External_Link.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-New disabled.png new file mode 100644 index 000000000..34685e5a8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-New disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-New.png new file mode 100644 index 000000000..5b592d94d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-New.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open containing folder.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open containing folder.png new file mode 100644 index 000000000..aff83c9cd Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open containing folder.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open file disabled.png new file mode 100644 index 000000000..0b9d1c667 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open file disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open file.png new file mode 100644 index 000000000..f2677d280 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Open file.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Pause disabled.png new file mode 100644 index 000000000..73892af28 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Pause disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Pause.png new file mode 100644 index 000000000..8e696c066 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Pause.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Play disabled.png new file mode 100644 index 000000000..c38634605 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Play disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Play.png new file mode 100644 index 000000000..7d0f29c92 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Play.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Quit.png new file mode 100644 index 000000000..8ba5b3458 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Quit.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Remove disabled.png new file mode 100644 index 000000000..da919f78c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Remove disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Remove.png new file mode 100644 index 000000000..024a6a08e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Remove.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Report disabled.png new file mode 100644 index 000000000..12586b5b8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Report disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Report.png new file mode 100644 index 000000000..e3a897980 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Report.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save As disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save As disabled.png new file mode 100644 index 000000000..39ad1cbce Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save As disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save As.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save As.png new file mode 100644 index 000000000..585e67576 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save As.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save disabled.png new file mode 100644 index 000000000..ba2e7bed2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save.png new file mode 100644 index 000000000..9aa8fd902 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Save.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Status Access Denied.png new file mode 100644 index 000000000..0d5507fce Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Status Access Denied.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Stop disabled.png new file mode 100644 index 000000000..59a9647d4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Stop disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Stop.png new file mode 100644 index 000000000..acf0f7f91 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-Stop.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType.png new file mode 100644 index 000000000..59eb70085 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..091acff16 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_ERROR.png new file mode 100644 index 000000000..6df814b3d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_NOTFOUND.png new file mode 100644 index 000000000..4d1ed9c46 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_NOT_DONE.png new file mode 100644 index 000000000..fcfbaa360 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-containerResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType.png new file mode 100644 index 000000000..497bc02fa Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..a75d0fcb1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_ERROR.png new file mode 100644 index 000000000..b8e4719e6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_NOTFOUND.png new file mode 100644 index 000000000..8356af580 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_NOT_DONE.png new file mode 100644 index 000000000..0a2009408 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-fileResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType.png new file mode 100644 index 000000000..f0c3baed0 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..8ba793847 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_EMPTY.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_EMPTY.png new file mode 100644 index 000000000..1870b1c69 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_EMPTY.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_ERROR.png new file mode 100644 index 000000000..29d9a1380 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_NOTFOUND.png new file mode 100644 index 000000000..c90189046 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_NOT_DONE.png new file mode 100644 index 000000000..222c030da Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-folderResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_MULTIPLE.png new file mode 100644 index 000000000..db29cb8de Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_MULTIPLE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ONE.DROID.png new file mode 100644 index 000000000..ed19244cc Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ONE.DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ONE.png new file mode 100644 index 000000000..fea230f23 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ZERO.png new file mode 100644 index 000000000..6eae710a4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-format_count_ZERO.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-severity_small_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-severity_small_WARN.png new file mode 100644 index 000000000..eab4f0111 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-severity_small_WARN.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-warning_extension_mismatch.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-warning_extension_mismatch.png new file mode 100644 index 000000000..ddc5f85f9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/16x16-warning_extension_mismatch.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Add disabled.png new file mode 100644 index 000000000..194b55810 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Add disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Add.png new file mode 100644 index 000000000..b15b93505 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Add.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Clipboard.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Clipboard.png new file mode 100644 index 000000000..a5331b7eb Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Clipboard.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-DROID.png new file mode 100644 index 000000000..b6d572ea7 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Expand 3 levels.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Expand 3 levels.png new file mode 100644 index 000000000..bd6ffdad2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Expand 3 levels.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Expand.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Expand.png new file mode 100644 index 000000000..24fc2c538 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Expand.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Export disabled.png new file mode 100644 index 000000000..4a9532e80 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Export disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Export.png new file mode 100644 index 000000000..4a43dcb25 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Export.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Filter disabled.png new file mode 100644 index 000000000..c677f815c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Filter disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Filter.png new file mode 100644 index 000000000..1413a6c43 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Filter.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Find disabled.png new file mode 100644 index 000000000..8eb2683f7 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Find disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Find.png new file mode 100644 index 000000000..12f78ea5c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Find.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Icon_External_Link.png new file mode 100644 index 000000000..dfc0dad58 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Icon_External_Link.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-New disabled.png new file mode 100644 index 000000000..640a6f4b9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-New disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-New.png new file mode 100644 index 000000000..8e997ec0e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-New.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open containing folder.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open containing folder.png new file mode 100644 index 000000000..dbf0c2bf4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open containing folder.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open file disabled.png new file mode 100644 index 000000000..1fdc3fff6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open file disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open file.png new file mode 100644 index 000000000..2199d6900 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Open file.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Pause disabled.png new file mode 100644 index 000000000..256340d70 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Pause disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Pause.png new file mode 100644 index 000000000..cf699f692 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Pause.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Play disabled.png new file mode 100644 index 000000000..577a88d5f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Play disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Play.png new file mode 100644 index 000000000..4498cd07e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Play.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Quit.png new file mode 100644 index 000000000..6fccd4078 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Quit.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Remove disabled.png new file mode 100644 index 000000000..f0854a259 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Remove disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Remove.png new file mode 100644 index 000000000..3fb9591e4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Remove.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Report disabled.png new file mode 100644 index 000000000..2ab6d7b60 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Report disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Report.png new file mode 100644 index 000000000..e26913e05 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Report.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save As disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save As disabled.png new file mode 100644 index 000000000..42f939048 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save As disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save As.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save As.png new file mode 100644 index 000000000..5e02cc4e7 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save As.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save disabled.png new file mode 100644 index 000000000..d12ebaf85 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save.png new file mode 100644 index 000000000..3f22831c9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Save.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Status Access Denied.png new file mode 100644 index 000000000..8a99c070a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Status Access Denied.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Stop disabled.png new file mode 100644 index 000000000..b2d3538e2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Stop disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Stop.png new file mode 100644 index 000000000..4373389ea Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-Stop.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType.png new file mode 100644 index 000000000..3ee5bc8c1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..8c62a6739 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_ERROR.png new file mode 100644 index 000000000..d868cbf89 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_NOTFOUND.png new file mode 100644 index 000000000..7d95d4701 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_NOT_DONE.png new file mode 100644 index 000000000..8438ac410 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-containerResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType.png new file mode 100644 index 000000000..8e08870d0 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..fbd341d5c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_ERROR.png new file mode 100644 index 000000000..e30584b53 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_NOTFOUND.png new file mode 100644 index 000000000..2ffbe9c00 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_NOT_DONE.png new file mode 100644 index 000000000..429a29ae0 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-fileResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType.png new file mode 100644 index 000000000..0d6fe3e02 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..fd96536e8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_EMPTY.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_EMPTY.png new file mode 100644 index 000000000..342926438 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_EMPTY.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_ERROR.png new file mode 100644 index 000000000..4494325e4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_NOTFOUND.png new file mode 100644 index 000000000..ef8a79df9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_NOT_DONE.png new file mode 100644 index 000000000..d8289a97b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-folderResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_MULTIPLE.png new file mode 100644 index 000000000..dc5615d66 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_MULTIPLE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ONE.DROID.png new file mode 100644 index 000000000..54dd34cd5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ONE.DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ONE.png new file mode 100644 index 000000000..b28c57763 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ZERO.png new file mode 100644 index 000000000..776a79c80 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-format_count_ZERO.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-severity_small_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-severity_small_WARN.png new file mode 100644 index 000000000..ec103acda Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-severity_small_WARN.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-warning_extension_mismatch.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-warning_extension_mismatch.png new file mode 100644 index 000000000..08ceaccc8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/24x24-warning_extension_mismatch.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Add disabled.png new file mode 100644 index 000000000..f1b78a964 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Add disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Add.png new file mode 100644 index 000000000..1cb035392 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Add.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Clipboard.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Clipboard.png new file mode 100644 index 000000000..9a55df2ea Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Clipboard.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-DROID.png new file mode 100644 index 000000000..19cbf353b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Expand 3 levels.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Expand 3 levels.png new file mode 100644 index 000000000..e63f5e833 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Expand 3 levels.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Expand.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Expand.png new file mode 100644 index 000000000..93af4ce43 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Expand.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Export disabled.png new file mode 100644 index 000000000..7375f94ff Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Export disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Export.png new file mode 100644 index 000000000..44e598b3f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Export.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Filter disabled.png new file mode 100644 index 000000000..af0ddeb95 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Filter disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Filter.png new file mode 100644 index 000000000..960ac5757 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Filter.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Find disabled.png new file mode 100644 index 000000000..ba929f72b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Find disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Find.png new file mode 100644 index 000000000..7ffd31581 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Find.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Icon_External_Link.png new file mode 100644 index 000000000..203157212 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Icon_External_Link.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-New disabled.png new file mode 100644 index 000000000..344f1e917 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-New disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-New.png new file mode 100644 index 000000000..b21a5f5c1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-New.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open containing folder.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open containing folder.png new file mode 100644 index 000000000..23c3c0ee1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open containing folder.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open file disabled.png new file mode 100644 index 000000000..1ba728a6f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open file disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open file.png new file mode 100644 index 000000000..d4aecc7f9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Open file.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Pause disabled.png new file mode 100644 index 000000000..8910675be Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Pause disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Pause.png new file mode 100644 index 000000000..9d9461cec Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Pause.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Play disabled.png new file mode 100644 index 000000000..bdd536792 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Play disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Play.png new file mode 100644 index 000000000..49d0e9df6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Play.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Quit.png new file mode 100644 index 000000000..942c92dd2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Quit.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Remove disabled.png new file mode 100644 index 000000000..e713e2f9b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Remove disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Remove.png new file mode 100644 index 000000000..4f966df9c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Remove.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Report disabled.png new file mode 100644 index 000000000..8e338d66e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Report disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Report.png new file mode 100644 index 000000000..56328354d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Report.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save As disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save As disabled.png new file mode 100644 index 000000000..fe313cbe7 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save As disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save As.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save As.png new file mode 100644 index 000000000..618a8a610 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save As.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save disabled.png new file mode 100644 index 000000000..ad91bec75 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save.png new file mode 100644 index 000000000..0f4401e99 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Save.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Status Access Denied.png new file mode 100644 index 000000000..2dd5ed20f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Status Access Denied.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Stop disabled.png new file mode 100644 index 000000000..050d920ee Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Stop disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Stop.png new file mode 100644 index 000000000..bb417c5f2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-Stop.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType.png new file mode 100644 index 000000000..09391789b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..ea77affc5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_ERROR.png new file mode 100644 index 000000000..a461ad3e6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_NOTFOUND.png new file mode 100644 index 000000000..1ed96a3aa Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_NOT_DONE.png new file mode 100644 index 000000000..ec2a424f3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-containerResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType.png new file mode 100644 index 000000000..66fcfeb32 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..b57203f68 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_ERROR.png new file mode 100644 index 000000000..af84ccb36 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_NOTFOUND.png new file mode 100644 index 000000000..166a5413f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_NOT_DONE.png new file mode 100644 index 000000000..0d749dece Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-fileResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType.png new file mode 100644 index 000000000..cf9923f84 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..09c2894e5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_EMPTY.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_EMPTY.png new file mode 100644 index 000000000..924a0ecd2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_EMPTY.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_ERROR.png new file mode 100644 index 000000000..9a251e7c5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_NOTFOUND.png new file mode 100644 index 000000000..7426a184d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_NOT_DONE.png new file mode 100644 index 000000000..61e2b9030 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-folderResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_MULTIPLE.png new file mode 100644 index 000000000..4d5ad2678 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_MULTIPLE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ONE.DROID.png new file mode 100644 index 000000000..3638ec7c5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ONE.DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ONE.png new file mode 100644 index 000000000..5d3f72ffe Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ZERO.png new file mode 100644 index 000000000..dfbb877c8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-format_count_ZERO.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-severity_small_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-severity_small_WARN.png new file mode 100644 index 000000000..60dfa6d0f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-severity_small_WARN.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-warning_extension_mismatch.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-warning_extension_mismatch.png new file mode 100644 index 000000000..2df6b8282 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/32x32-warning_extension_mismatch.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Add disabled.png new file mode 100644 index 000000000..457f3e7ef Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Add disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Add.png new file mode 100644 index 000000000..3c0e2e763 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Add.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Clipboard.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Clipboard.png new file mode 100644 index 000000000..994d56a6a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Clipboard.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-DROID.png new file mode 100644 index 000000000..9cfcb671b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Expand 3 levels.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Expand 3 levels.png new file mode 100644 index 000000000..4ff07559a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Expand 3 levels.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Expand.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Expand.png new file mode 100644 index 000000000..36ac70655 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Expand.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Export disabled.png new file mode 100644 index 000000000..4fb57dd3a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Export disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Export.png new file mode 100644 index 000000000..e8a6d4fab Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Export.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Filter disabled.png new file mode 100644 index 000000000..b49f8a2a0 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Filter disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Filter.png new file mode 100644 index 000000000..bff97b296 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Filter.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Find disabled.png new file mode 100644 index 000000000..980d5f4da Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Find disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Find.png new file mode 100644 index 000000000..f33f3e615 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Find.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Icon_External_Link.png new file mode 100644 index 000000000..3c8c0ef80 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Icon_External_Link.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-New disabled.png new file mode 100644 index 000000000..ded0b1e9d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-New disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-New.png new file mode 100644 index 000000000..eca19ee64 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-New.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open containing folder.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open containing folder.png new file mode 100644 index 000000000..605ecc090 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open containing folder.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open file disabled.png new file mode 100644 index 000000000..f2a778d3f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open file disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open file.png new file mode 100644 index 000000000..2313d23f3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Open file.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Pause disabled.png new file mode 100644 index 000000000..f706a877d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Pause disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Pause.png new file mode 100644 index 000000000..9932305bb Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Pause.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Play disabled.png new file mode 100644 index 000000000..a86be620d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Play disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Play.png new file mode 100644 index 000000000..55a3cd81d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Play.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Quit.png new file mode 100644 index 000000000..ea8a67397 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Quit.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Remove disabled.png new file mode 100644 index 000000000..6ca6f391a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Remove disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Remove.png new file mode 100644 index 000000000..dce43bf09 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Remove.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Report disabled.png new file mode 100644 index 000000000..76943758d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Report disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Report.png new file mode 100644 index 000000000..948502eed Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Report.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save As disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save As disabled.png new file mode 100644 index 000000000..40dbf3d11 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save As disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save As.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save As.png new file mode 100644 index 000000000..cb0eee1d2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save As.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save disabled.png new file mode 100644 index 000000000..68acb7c1a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save.png new file mode 100644 index 000000000..3646fb440 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Save.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Status Access Denied.png new file mode 100644 index 000000000..072ae810b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Status Access Denied.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Stop disabled.png new file mode 100644 index 000000000..6a4f98e77 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Stop disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Stop.png new file mode 100644 index 000000000..62b1ec410 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-Stop.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType.png new file mode 100644 index 000000000..af58f9fc9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..2c1af9515 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_ERROR.png new file mode 100644 index 000000000..eb9ab0bb3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_NOTFOUND.png new file mode 100644 index 000000000..69a55bdfc Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_NOT_DONE.png new file mode 100644 index 000000000..f8b6c4908 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-containerResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType.png new file mode 100644 index 000000000..6e27ac1e6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..4d0be9a79 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_ERROR.png new file mode 100644 index 000000000..e5377e1d6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_NOTFOUND.png new file mode 100644 index 000000000..1ef2804a1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_NOT_DONE.png new file mode 100644 index 000000000..bd7dcf740 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-fileResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType.png new file mode 100644 index 000000000..1825b5e19 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..4d146481a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_EMPTY.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_EMPTY.png new file mode 100644 index 000000000..e5f92bd40 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_EMPTY.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_ERROR.png new file mode 100644 index 000000000..0c654e4d4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_NOTFOUND.png new file mode 100644 index 000000000..b4e97f7d6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_NOT_DONE.png new file mode 100644 index 000000000..70f267250 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-folderResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_MULTIPLE.png new file mode 100644 index 000000000..df7413ade Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_MULTIPLE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ONE.DROID.png new file mode 100644 index 000000000..a9fa20571 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ONE.DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ONE.png new file mode 100644 index 000000000..373dd57bc Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ZERO.png new file mode 100644 index 000000000..4a47520b6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-format_count_ZERO.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-severity_small_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-severity_small_WARN.png new file mode 100644 index 000000000..75aa184a1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-severity_small_WARN.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-warning_extension_mismatch.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-warning_extension_mismatch.png new file mode 100644 index 000000000..63bb778d1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/48x48-warning_extension_mismatch.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Add disabled.png new file mode 100644 index 000000000..0c4e07991 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Add disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Add.png new file mode 100644 index 000000000..e8b769b83 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Add.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Clipboard.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Clipboard.png new file mode 100644 index 000000000..58240d5dd Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Clipboard.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-DROID.png new file mode 100644 index 000000000..111f9ba82 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Expand 3 levels.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Expand 3 levels.png new file mode 100644 index 000000000..933e1de0b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Expand 3 levels.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Expand.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Expand.png new file mode 100644 index 000000000..08b436b83 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Expand.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Export disabled.png new file mode 100644 index 000000000..9adc3d3a1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Export disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Export.png new file mode 100644 index 000000000..aa0ec7f02 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Export.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Filter disabled.png new file mode 100644 index 000000000..ace516e4b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Filter disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Filter.png new file mode 100644 index 000000000..a2478b462 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Filter.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Find disabled.png new file mode 100644 index 000000000..d714b869d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Find disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Find.png new file mode 100644 index 000000000..c79245fc4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Find.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Icon_External_Link.png new file mode 100644 index 000000000..dad2fc7fa Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Icon_External_Link.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-New disabled.png new file mode 100644 index 000000000..c2c839ccb Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-New disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-New.png new file mode 100644 index 000000000..8e197f4f3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-New.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open containing folder.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open containing folder.png new file mode 100644 index 000000000..fcdcc9173 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open containing folder.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open file disabled.png new file mode 100644 index 000000000..619cfbd78 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open file disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open file.png new file mode 100644 index 000000000..e3db41b61 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Open file.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Pause disabled.png new file mode 100644 index 000000000..eb9fa73fa Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Pause disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Pause.png new file mode 100644 index 000000000..adb435b67 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Pause.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Play disabled.png new file mode 100644 index 000000000..0155695b4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Play disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Play.png new file mode 100644 index 000000000..6bce10c1c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Play.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Quit.png new file mode 100644 index 000000000..b4a0435bc Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Quit.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Remove disabled.png new file mode 100644 index 000000000..e7bb25847 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Remove disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Remove.png new file mode 100644 index 000000000..243b84490 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Remove.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Report disabled.png new file mode 100644 index 000000000..60464fe48 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Report disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Report.png new file mode 100644 index 000000000..fafa2b271 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Report.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save As disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save As disabled.png new file mode 100644 index 000000000..f200cebea Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save As disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save As.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save As.png new file mode 100644 index 000000000..8b8fd9281 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save As.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save disabled.png new file mode 100644 index 000000000..38e9646a9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save.png new file mode 100644 index 000000000..b07963dc4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Save.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Status Access Denied.png new file mode 100644 index 000000000..4cd13b1ff Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Status Access Denied.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Stop disabled.png new file mode 100644 index 000000000..9f5384746 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Stop disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Stop.png new file mode 100644 index 000000000..bf17902d1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-Stop.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType.png new file mode 100644 index 000000000..e75d740df Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..cc4615b8b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_ERROR.png new file mode 100644 index 000000000..96d0b7dcd Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_NOTFOUND.png new file mode 100644 index 000000000..413620901 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_NOT_DONE.png new file mode 100644 index 000000000..c342e6816 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-containerResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType.png new file mode 100644 index 000000000..66a86ded7 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..a96fdf8d1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_ERROR.png new file mode 100644 index 000000000..29bb8892b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_NOTFOUND.png new file mode 100644 index 000000000..c0902458b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_NOT_DONE.png new file mode 100644 index 000000000..b7f50054b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-fileResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType.png new file mode 100644 index 000000000..2c5d5f047 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..d4d460237 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_EMPTY.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_EMPTY.png new file mode 100644 index 000000000..02a037e1c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_EMPTY.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_ERROR.png new file mode 100644 index 000000000..87aba569e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_NOTFOUND.png new file mode 100644 index 000000000..b51d8d2be Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_NOT_DONE.png new file mode 100644 index 000000000..30fb8df0b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-folderResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_MULTIPLE.png new file mode 100644 index 000000000..813356e39 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_MULTIPLE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ONE.DROID.png new file mode 100644 index 000000000..68aae5924 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ONE.DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ONE.png new file mode 100644 index 000000000..975ccc850 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ZERO.png new file mode 100644 index 000000000..a81e7c835 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-format_count_ZERO.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-severity_small_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-severity_small_WARN.png new file mode 100644 index 000000000..cc6dd8c21 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-severity_small_WARN.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-warning_extension_mismatch.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-warning_extension_mismatch.png new file mode 100644 index 000000000..90e049116 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/64x64-warning_extension_mismatch.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Add disabled.png new file mode 100644 index 000000000..fa392b29e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Add disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Add.png new file mode 100644 index 000000000..35b8aa6d8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Add.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Clipboard.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Clipboard.png new file mode 100644 index 000000000..5632b7e04 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Clipboard.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-DROID.png new file mode 100644 index 000000000..8b7847423 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Expand 3 levels.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Expand 3 levels.png new file mode 100644 index 000000000..d7cab3921 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Expand 3 levels.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Expand.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Expand.png new file mode 100644 index 000000000..246eb4fc3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Expand.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Export disabled.png new file mode 100644 index 000000000..2b8ea3f40 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Export disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Export.png new file mode 100644 index 000000000..158ba49ee Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Export.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Filter disabled.png new file mode 100644 index 000000000..84ad70dea Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Filter disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Filter.png new file mode 100644 index 000000000..b90ee3970 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Filter.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Find disabled.png new file mode 100644 index 000000000..2644876a0 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Find disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Find.png new file mode 100644 index 000000000..c6e358c11 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Find.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Icon_External_Link.png new file mode 100644 index 000000000..fdec2ee8c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Icon_External_Link.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-New disabled.png new file mode 100644 index 000000000..fede514db Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-New disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-New.png new file mode 100644 index 000000000..e4584ec38 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-New.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open containing folder.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open containing folder.png new file mode 100644 index 000000000..2dfd6d416 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open containing folder.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open file disabled.png new file mode 100644 index 000000000..c663df041 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open file disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open file.png new file mode 100644 index 000000000..bec4807e9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Open file.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Pause disabled.png new file mode 100644 index 000000000..188697aa5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Pause disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Pause.png new file mode 100644 index 000000000..0f94a02b3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Pause.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Play disabled.png new file mode 100644 index 000000000..3f2a2b1d3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Play disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Play.png new file mode 100644 index 000000000..f56be6656 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Play.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Quit.png new file mode 100644 index 000000000..8b30c614d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Quit.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Remove disabled.png new file mode 100644 index 000000000..561536016 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Remove disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Remove.png new file mode 100644 index 000000000..0bccc8252 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Remove.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Report disabled.png new file mode 100644 index 000000000..d574d6950 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Report disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Report.png new file mode 100644 index 000000000..1a088de24 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Report.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save As disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save As disabled.png new file mode 100644 index 000000000..748b6cd02 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save As disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save As.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save As.png new file mode 100644 index 000000000..f68206483 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save As.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save disabled.png new file mode 100644 index 000000000..2148c66b2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save.png new file mode 100644 index 000000000..fc9917a05 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Save.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Status Access Denied.png new file mode 100644 index 000000000..3bab58bb8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Status Access Denied.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Stop disabled.png new file mode 100644 index 000000000..a3ea4e6dd Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Stop disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Stop.png new file mode 100644 index 000000000..24260067d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-Stop.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType.png new file mode 100644 index 000000000..087a66064 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..5547da2b2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_ERROR.png new file mode 100644 index 000000000..b7db2e8ee Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_NOTFOUND.png new file mode 100644 index 000000000..1d73c5233 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_NOT_DONE.png new file mode 100644 index 000000000..0d114ccd5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-containerResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType.png new file mode 100644 index 000000000..75cbe300a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..83a61f91a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_ERROR.png new file mode 100644 index 000000000..c82aacd37 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_NOTFOUND.png new file mode 100644 index 000000000..dc13779d2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_NOT_DONE.png new file mode 100644 index 000000000..d06030e60 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-fileResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType.png new file mode 100644 index 000000000..6a529311e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..68bd9751c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_EMPTY.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_EMPTY.png new file mode 100644 index 000000000..30503ea0d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_EMPTY.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_ERROR.png new file mode 100644 index 000000000..18266ec84 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_NOTFOUND.png new file mode 100644 index 000000000..ef28411ac Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_NOT_DONE.png new file mode 100644 index 000000000..77ad08840 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-folderResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_MULTIPLE.png new file mode 100644 index 000000000..54357bf19 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_MULTIPLE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ONE.DROID.png new file mode 100644 index 000000000..7bfaeb3a6 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ONE.DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ONE.png new file mode 100644 index 000000000..6227a956c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ZERO.png new file mode 100644 index 000000000..db8ffdf2c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-format_count_ZERO.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-severity_small_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-severity_small_WARN.png new file mode 100644 index 000000000..2ce2c2e4a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-severity_small_WARN.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-warning_extension_mismatch.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-warning_extension_mismatch.png new file mode 100644 index 000000000..8c00ab2c8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/96x96-warning_extension_mismatch.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Add Document 2 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Add Document 2 16 d g.gif deleted file mode 100644 index c875de0cd..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Add Document 2 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Add Document 2 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Add Document 2 16 h g.gif deleted file mode 100644 index fe98f921f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Add Document 2 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Alert or Warning 1 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Alert or Warning 1 16 d g.gif deleted file mode 100644 index 8a73000de..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Alert or Warning 1 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Alert or Warning 1 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Alert or Warning 1 16 h g.gif deleted file mode 100644 index f7d82ee8f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Alert or Warning 1 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Cog 2 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Cog 2 16 d g.gif deleted file mode 100644 index e255041da..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Cog 2 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Cog 2 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Cog 2 16 h g.gif deleted file mode 100644 index f61bdae40..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Cog 2 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/DROID16.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/DROID16.gif deleted file mode 100644 index 780796c3b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/DROID16.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Delete Document 2 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Delete Document 2 16 d g.gif deleted file mode 100644 index fed318581..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Delete Document 2 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Delete Document 2 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Delete Document 2 16 h g.gif deleted file mode 100644 index 36a602ee3..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Delete Document 2 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Error Round Red 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Error Round Red 16 h g.gif deleted file mode 100644 index b8e8974a2..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Error Round Red 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Error Round Red 16 n g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Error Round Red 16 n g.gif deleted file mode 100644 index 381277ec7..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Error Round Red 16 n g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Filter.png deleted file mode 100644 index 9c21c52e1..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Filter.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 d g.gif deleted file mode 100644 index 50e8e6728..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 h g.gif deleted file mode 100644 index bac3150ba..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 n g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 n g.gif deleted file mode 100644 index 2b8c56365..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Forward or Next 16 n g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Help Green 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Help Green 16 d g.gif deleted file mode 100644 index df4176975..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Help Green 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Help Green 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Help Green 16 h g.gif deleted file mode 100644 index b0cca1dae..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Help Green 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Icon_External_Link.png deleted file mode 100644 index ba4f2059d..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Icon_External_Link.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Info Round Blue 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Info Round Blue 16 d g.gif deleted file mode 100644 index ebcec4c1f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Info Round Blue 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Info Round Blue 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Info Round Blue 16 h g.gif deleted file mode 100644 index 695d5abd8..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Info Round Blue 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/J0115834.GIF b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/J0115834.GIF deleted file mode 100644 index 88183de5b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/J0115834.GIF and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Next Track 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Next Track 16 d g.gif deleted file mode 100644 index 1090236b5..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Next Track 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Next Track 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Next Track 16 h g.gif deleted file mode 100644 index 9e1c94b5f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Next Track 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Open File or Folder 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Open File or Folder 16 d g.gif deleted file mode 100644 index cacb13491..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Open File or Folder 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Open File or Folder 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Open File or Folder 16 h g.gif deleted file mode 100644 index 20d0932e8..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Open File or Folder 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Save Blue 16 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Save Blue 16 d g.gif deleted file mode 100644 index c144265e1..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Save Blue 16 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Save Blue 16 h g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Save Blue 16 h g.gif deleted file mode 100644 index c603ad32a..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Save Blue 16 h g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Stop Play 24 d g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Stop Play 24 d g.gif deleted file mode 100644 index d16012820..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Stop Play 24 d g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Stop Play Red 24 n g.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Stop Play Red 24 n g.gif deleted file mode 100644 index 6915e53a6..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Stop Play Red 24 n g.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Thumbs.db b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Thumbs.db deleted file mode 100644 index dea0e3c06..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Thumbs.db and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Xformat_count_small_ONE.X.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Xformat_count_small_ONE.X.png deleted file mode 100644 index 4d2eea47e..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/Xformat_count_small_ONE.X.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType.gif deleted file mode 100644 index 131c28da4..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_ACCESSDENIED.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_ACCESSDENIED.gif deleted file mode 100644 index 33c118fdf..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_ACCESSDENIED.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_ERROR.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_ERROR.gif deleted file mode 100644 index 338446fbb..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_ERROR.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_NOTFOUND.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_NOTFOUND.gif deleted file mode 100644 index 36e69de01..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_NOTFOUND.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_NOT_DONE.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_NOT_DONE.gif deleted file mode 100644 index 22ec04cef..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/containerResourceType_NOT_DONE.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType.gif deleted file mode 100644 index bc325ff7f..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_ACCESSDENIED.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_ACCESSDENIED.gif deleted file mode 100644 index 29a9c941c..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_ACCESSDENIED.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_ERROR.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_ERROR.gif deleted file mode 100644 index c142a8081..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_ERROR.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_NOTFOUND.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_NOTFOUND.gif deleted file mode 100644 index 9f8a852d2..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_NOTFOUND.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_NOT_DONE.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_NOT_DONE.gif deleted file mode 100644 index 37ea16b16..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/fileResourceType_NOT_DONE.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType.gif deleted file mode 100644 index 190d0254d..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_ACCESSDENIED.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_ACCESSDENIED.gif deleted file mode 100644 index 882a84710..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_ACCESSDENIED.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_EMPTY.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_EMPTY.gif deleted file mode 100644 index a25f37496..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_EMPTY.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_ERROR.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_ERROR.gif deleted file mode 100644 index 9890696ee..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_ERROR.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_NOTFOUND.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_NOTFOUND.gif deleted file mode 100644 index 81fbb08c8..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_NOTFOUND.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_NOT_DONE.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_NOT_DONE.gif deleted file mode 100644 index e01d96e2e..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/folderResourceType_NOT_DONE.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_MULTIPLE.png deleted file mode 100644 index 2eca1cd95..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_MULTIPLE.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ONE.DROID.png deleted file mode 100644 index 7780103e3..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ONE.DROID.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ONE.png deleted file mode 100644 index 22807329c..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ONE.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ZERO.png deleted file mode 100644 index 350d4c592..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/format_count_small_ZERO.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/job_status_small_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/job_status_small_DONE.png deleted file mode 100644 index 07eccfc51..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/job_status_small_DONE.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/job_status_small_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/job_status_small_ERROR.png deleted file mode 100644 index 6bf1991c8..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/job_status_small_ERROR.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_ERROR.png deleted file mode 100644 index 7970bf0c5..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_ERROR.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_INFO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_INFO.png deleted file mode 100644 index 7d22e0a98..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_INFO.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_WARN.png deleted file mode 100644 index 0cea5484b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/severity_small_WARN.png and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/tpause.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/tpause.gif deleted file mode 100644 index 69c8228af..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/tpause.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/tplay.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/tplay.gif deleted file mode 100644 index cfbe1a6af..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/tplay.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/trash.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/trash.gif deleted file mode 100644 index 1a7d7c42b..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/trash.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/warning_extension_mismatch.gif b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/warning_extension_mismatch.gif deleted file mode 100644 index 7139ae9f4..000000000 Binary files a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons/warning_extension_mismatch.gif and /dev/null differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Add disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Add disabled.png new file mode 100644 index 000000000..ed114f1e3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Add disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Add.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Add.png new file mode 100644 index 000000000..ecbdf166c Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Add.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Clipboard.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Clipboard.png new file mode 100644 index 000000000..e019c718f Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Clipboard.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/DROID.png new file mode 100644 index 000000000..e1faa8fa8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Expand 3 levels.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Expand 3 levels.png new file mode 100644 index 000000000..eb3c0cb76 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Expand 3 levels.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Expand.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Expand.png new file mode 100644 index 000000000..ea742859e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Expand.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Export disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Export disabled.png new file mode 100644 index 000000000..e0083abbb Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Export disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Export.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Export.png new file mode 100644 index 000000000..fc14e7917 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Export.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Filter disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Filter disabled.png new file mode 100644 index 000000000..7950843d5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Filter disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Filter.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Filter.png new file mode 100644 index 000000000..f18307d7d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Filter.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Find disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Find disabled.png new file mode 100644 index 000000000..6b260027e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Find disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Find.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Find.png new file mode 100644 index 000000000..99d79d5fc Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Find.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Icon_External_Link.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Icon_External_Link.png new file mode 100644 index 000000000..656494a0a Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Icon_External_Link.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/New disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/New disabled.png new file mode 100644 index 000000000..498c020b1 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/New disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/New.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/New.png new file mode 100644 index 000000000..bc9a43901 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/New.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open containing folder.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open containing folder.png new file mode 100644 index 000000000..016c5c228 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open containing folder.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open file disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open file disabled.png new file mode 100644 index 000000000..1fd0e31b9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open file disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open file.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open file.png new file mode 100644 index 000000000..83ad763c7 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Open file.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Pause disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Pause disabled.png new file mode 100644 index 000000000..646b15682 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Pause disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Pause.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Pause.png new file mode 100644 index 000000000..05759797d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Pause.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Play disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Play disabled.png new file mode 100644 index 000000000..fe86f27a2 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Play disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Play.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Play.png new file mode 100644 index 000000000..d8e0559e5 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Play.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Quit.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Quit.png new file mode 100644 index 000000000..8b81d3253 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Quit.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Remove disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Remove disabled.png new file mode 100644 index 000000000..53bdaa2da Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Remove disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Remove.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Remove.png new file mode 100644 index 000000000..2629c5f00 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Remove.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Report disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Report disabled.png new file mode 100644 index 000000000..9a702f0b4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Report disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Report.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Report.png new file mode 100644 index 000000000..c793a6ac4 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Report.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save As disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save As disabled.png new file mode 100644 index 000000000..d8b39b39e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save As disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save As.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save As.png new file mode 100644 index 000000000..b4550d258 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save As.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save disabled.png new file mode 100644 index 000000000..bb90d4909 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save.png new file mode 100644 index 000000000..fa4ef7df0 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Save.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Status Access Denied.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Status Access Denied.png new file mode 100644 index 000000000..f7e15866e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Status Access Denied.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Stop disabled.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Stop disabled.png new file mode 100644 index 000000000..8c18d64f7 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Stop disabled.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Stop.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Stop.png new file mode 100644 index 000000000..d8e6ee234 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/Stop.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType.png new file mode 100644 index 000000000..c46a4abf3 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..96a23a7cf Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_ERROR.png new file mode 100644 index 000000000..033f4c807 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_NOTFOUND.png new file mode 100644 index 000000000..c03cc4171 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_NOT_DONE.png new file mode 100644 index 000000000..b49f02694 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/containerResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType.png new file mode 100644 index 000000000..884a90fb9 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..f36b1a7ea Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_ERROR.png new file mode 100644 index 000000000..84d119848 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_NOTFOUND.png new file mode 100644 index 000000000..dc4076167 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_NOT_DONE.png new file mode 100644 index 000000000..606335f3e Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/fileResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType.png new file mode 100644 index 000000000..bb7cc2062 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_ACCESSDENIED.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_ACCESSDENIED.png new file mode 100644 index 000000000..a4f146d95 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_ACCESSDENIED.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_EMPTY.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_EMPTY.png new file mode 100644 index 000000000..98e34d640 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_EMPTY.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_ERROR.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_ERROR.png new file mode 100644 index 000000000..da0b3848d Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_ERROR.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_NOTFOUND.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_NOTFOUND.png new file mode 100644 index 000000000..5b87bdeab Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_NOTFOUND.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_NOT_DONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_NOT_DONE.png new file mode 100644 index 000000000..25a72e19b Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/folderResourceType_NOT_DONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_MULTIPLE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_MULTIPLE.png new file mode 100644 index 000000000..7fcfe9a80 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_MULTIPLE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ONE.DROID.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ONE.DROID.png new file mode 100644 index 000000000..e1faa8fa8 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ONE.DROID.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ONE.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ONE.png new file mode 100644 index 000000000..5d381fb07 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ONE.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ZERO.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ZERO.png new file mode 100644 index 000000000..64c259999 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/format_count_ZERO.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/severity_WARN.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/severity_WARN.png new file mode 100644 index 000000000..f0fc42c53 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/severity_WARN.png differ diff --git a/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/warning_extension_mismatch.png b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/warning_extension_mismatch.png new file mode 100644 index 000000000..f0fc42c53 Binary files /dev/null and b/droid-swing-ui/src/main/resources/uk/gov/nationalarchives/droid/icons_512x512/warning_extension_mismatch.png differ