This brings up a file chooser allows the user to select the location that a character should be saved to. @param character the character to be saved
(CharacterFacade character)
| 821 | * @param character the character to be saved |
| 822 | */ |
| 823 | boolean showSaveCharacterChooser(CharacterFacade character) |
| 824 | { |
| 825 | PCGenSettings context = PCGenSettings.getInstance(); |
| 826 | String parentPath = lastCharacterPath; |
| 827 | if (parentPath == null) |
| 828 | { |
| 829 | parentPath = context.getProperty(PCGenSettings.PCG_SAVE_PATH); |
| 830 | } |
| 831 | |
| 832 | FileChooser fileChooser = new FileChooser(); |
| 833 | fileChooser.setTitle("Save PCGen Character File"); |
| 834 | FileChooser.ExtensionFilter extensionFilter = new FileChooser.ExtensionFilter( |
| 835 | "character files only", '*' + Constants.EXTENSION_CHARACTER_FILE |
| 836 | ); |
| 837 | fileChooser.getExtensionFilters().add(extensionFilter); |
| 838 | fileChooser.setSelectedExtensionFilter(extensionFilter); |
| 839 | |
| 840 | File prevFile = character.getFileRef().get(); |
| 841 | if (prevFile == null || StringUtils.isEmpty(prevFile.getName())) |
| 842 | { |
| 843 | fileChooser.setInitialDirectory(new File(parentPath)); |
| 844 | fileChooser.setInitialFileName(character.getNameRef().get() + Constants.EXTENSION_CHARACTER_FILE); |
| 845 | } |
| 846 | |
| 847 | File file = GuiUtility.runOnJavaFXThreadNow(() -> |
| 848 | fileChooser.showSaveDialog(null)); |
| 849 | |
| 850 | if (file != null) |
| 851 | { |
| 852 | UIDelegate delegate = character.getUIDelegate(); |
| 853 | if (file.isDirectory()) |
| 854 | { |
| 855 | delegate.showErrorMessage(Constants.APPLICATION_NAME, |
| 856 | LanguageBundle.getString("in_savePcDirOverwrite")); //$NON-NLS-1$ |
| 857 | return showSaveCharacterChooser(character); |
| 858 | } |
| 859 | |
| 860 | if (file.exists() && (prevFile == null || !file.getName().equals(prevFile.getName()))) |
| 861 | { |
| 862 | boolean overwrite = delegate.showWarningConfirm( |
| 863 | LanguageBundle.getFormattedString("in_savePcConfirmOverTitle", //$NON-NLS-1$ |
| 864 | file.getName()), |
| 865 | LanguageBundle.getFormattedString("in_savePcConfirmOverMsg", //$NON-NLS-1$ |
| 866 | file.getName())); |
| 867 | |
| 868 | if (!overwrite) |
| 869 | { |
| 870 | return showSaveCharacterChooser(character); |
| 871 | } |
| 872 | } |
| 873 | |
| 874 | try |
| 875 | { |
| 876 | character.setFile(file); |
| 877 | prepareForSave(character, false); |
| 878 | if (!reallySaveCharacter(character)) |
| 879 | { |
| 880 | return showSaveCharacterChooser(character); |
no test coverage detected