46public final class PromptDialogManager {
50 @NbBundle.Messages(
"PrompDialogManager.buttonType.showTimeline=Continue")
51 private static final ButtonType
CONTINUE =
new ButtonType(Bundle.PrompDialogManager_buttonType_showTimeline(), ButtonBar.ButtonData.OK_DONE);
53 @NbBundle.Messages(
"PrompDialogManager.buttonType.continueNoUpdate=Continue Without Updating")
54 private static final ButtonType
CONTINUE_NO_UPDATE =
new ButtonType(Bundle.PrompDialogManager_buttonType_continueNoUpdate(), ButtonBar.ButtonData.CANCEL_CLOSE);
56 @NbBundle.Messages(
"PrompDialogManager.buttonType.update=Update DB")
57 private static final ButtonType
UPDATE =
new ButtonType(Bundle.PrompDialogManager_buttonType_update(), ButtonBar.ButtonData.OK_DONE);
65 tempImg =
new Image(
new URL(
"nbresloc:/org/netbeans/core/startup/frame.gif").openStream());
66 }
catch (IOException ex) {
67 logger.log(Level.WARNING,
"Failed to load branded icon for progress dialog.", ex);
93 boolean bringCurrentDialogToFront() {
95 ((Stage) currentDialog.getDialogPane().getScene().getWindow()).toFront();
106 @NbBundle.Messages({
"PromptDialogManager.progressDialog.title=Populating Timeline Data"})
107 @ThreadConfined(type = ThreadConfined.ThreadType.JFX)
108 void showDBPopulationProgressDialog(CancellationProgressTask<?> task) {
111 currentDialog.setTitle(Bundle.PromptDialogManager_progressDialog_title());
113 currentDialog.headerTextProperty().bind(task.titleProperty());
116 dialogPane.setPrefSize(400, 200);
123 dialogPane.getButtonTypes().setAll(ButtonType.CANCEL);
124 final Node cancelButton = dialogPane.lookupButton(ButtonType.CANCEL);
125 cancelButton.disableProperty().bind(task.cancellableProperty().not());
127 if (task.isRunning()) {
128 closeRequest.consume();
130 if (task.isCancellable() && task.isCancelRequested() ==
false) {
131 task.requestCancel();
143 @ThreadConfined(type = ThreadConfined.ThreadType.JFX)
145 ((Stage) dialog.getDialogPane().getScene().getWindow()).getIcons().setAll(
AUTOPSY_ICON);
155 "PromptDialogManager.confirmDuringIngest.headerText=Ingest is still going, and the Timeline may be incomplete.",
156 "PromptDialogManager.confirmDuringIngest.contentText=Do you want to continue?"})
157 @ThreadConfined(type = ThreadConfined.ThreadType.JFX)
158 boolean confirmDuringIngest() {
159 currentDialog =
new Alert(Alert.AlertType.CONFIRMATION, Bundle.PromptDialogManager_confirmDuringIngest_contentText(),
CONTINUE, ButtonType.CANCEL);
163 currentDialog.setHeaderText(Bundle.PromptDialogManager_confirmDuringIngest_headerText());
166 return currentDialog.showAndWait().map(CONTINUE::equals).orElse(
false);
178 "PromptDialogManager.rebuildPrompt.headerText=The Timeline DB is incomplete and/or out of date."
179 +
" Some events may be missing or inaccurate and some features may be unavailable.",
180 "PromptDialogManager.rebuildPrompt.details=Details"})
181 @ThreadConfined(type = ThreadConfined.ThreadType.JFX)
182 boolean confirmRebuild(List<String> rebuildReasons) {
188 currentDialog.setHeaderText(Bundle.PromptDialogManager_rebuildPrompt_headerText());
191 ListView<String> listView =
new ListView<>(FXCollections.observableArrayList(rebuildReasons));
192 listView.setCellFactory(lstView ->
new WrappingListCell());
193 listView.setMaxHeight(75);
196 Node wrappedListView = Borders.wrap(listView)
198 .title(Bundle.PromptDialogManager_rebuildPrompt_details())
202 dialogPane.setExpandableContent(wrappedListView);
203 dialogPane.setMaxWidth(500);
206 return currentDialog.showAndWait().map(UPDATE::equals).orElse(
false);
210 "PromptDialogManager.showTooManyFiles.contentText="
211 +
"There are too many files in the DB to ensure reasonable performance."
212 +
" Timeline will be disabled. ",
213 "PromptDialogManager.showTooManyFiles.headerText="})
214 static void showTooManyFiles() {
215 Alert dialog =
new Alert(Alert.AlertType.INFORMATION,
216 Bundle.PromptDialogManager_showTooManyFiles_contentText(), ButtonType.OK);
217 dialog.initModality(Modality.APPLICATION_MODAL);
218 dialog.setTitle(Bundle.Timeline_dialogs_title());
220 dialog.setHeaderText(Bundle.PromptDialogManager_showTooManyFiles_headerText());
221 dialog.showAndWait();
225 "PromptDialogManager.showTimeLineDisabledMessage.contentText="
226 +
"Timeline functionality is not available yet."
227 +
" Timeline will be disabled. ",
228 "PromptDialogManager.showTimeLineDisabledMessage.headerText="})
229 static void showTimeLineDisabledMessage() {
230 Alert dialog =
new Alert(Alert.AlertType.INFORMATION,
231 Bundle.PromptDialogManager_showTimeLineDisabledMessage_contentText(), ButtonType.OK);
232 dialog.initModality(Modality.APPLICATION_MODAL);
233 dialog.setTitle(Bundle.Timeline_dialogs_title());
235 dialog.setHeaderText(Bundle.PromptDialogManager_showTimeLineDisabledMessage_headerText());
236 dialog.showAndWait();