1 /*******************************************************************************
2 * Copyhacked (H) 2012-2025.
3 * This program and the accompanying materials
4 * are made available under no term at all, use it like
5 * you want, but share and discuss it
6 * every time possible with every body.
7 *
8 * Contributors:
9 * ron190 at ymail dot com - initial implementation
10 ******************************************************************************/
11 package com.jsql.view.swing.dialog;
12
13 import com.jsql.util.I18nUtil;
14 import com.jsql.view.swing.util.MediatorHelper;
15
16 import javax.swing.*;
17
18 /**
19 * File chooser for supporting 'file already exists'.
20 */
21 public class ReplaceFileChooser extends JFileChooser {
22
23 /**
24 * Create a file chooser with a replace confirm dialog.
25 */
26 public ReplaceFileChooser(String currentDirectoryPath) {
27 // Unhandled NoSuchMethodError #82561 on constructor: NoSuchMethodError
28 // Unhandled InternalError #93015 on constructor: InvocationTargetException
29 super(currentDirectoryPath);
30 }
31
32 @Override
33 public void approveSelection() {
34 if (this.getDialogType() == JFileChooser.SAVE_DIALOG) {
35 var file = this.getSelectedFile();
36 if (file.exists()) {
37 int result = JOptionPane.showConfirmDialog(
38 MediatorHelper.frame(),
39 String.format(
40 "%s %s",
41 this.getSelectedFile().getName(),
42 I18nUtil.valueByKey("SAVE_TAB_CONFIRM_LABEL")
43 ),
44 I18nUtil.valueByKey("SAVE_TAB_CONFIRM_TITLE"),
45 JOptionPane.YES_NO_OPTION
46 );
47 if (result == JOptionPane.YES_OPTION) {
48 super.approveSelection();
49 }
50 } else {
51 super.approveSelection();
52 }
53 }
54 }
55 }