private void saveScene()
    {
        File stdSceneDir = new File("scenes");
        
        if (!stdSceneDir.exists())
        {
            stdSceneDir.mkdir();
        }
        
        UIManager.put("FileChooser.cancelButtonText", LOCALIZER.getString(L_CANCEL));
        UIManager.put("FileChooser.cancelButtonToolTipText", LOCALIZER.getString(L_CANCEL));
        UIManager.put("FileChooser.saveButtonText", LOCALIZER.getString(L_SAVE));
        UIManager.put("FileChooser.saveButtonToolTipText", LOCALIZER.getString(L_SAVE));
        
        JFileChooser dlgSave = new JFileChooser("scene");
        dlgSave.setCurrentDirectory(stdSceneDir);
        
        if (pModel.getProperty(PRP_CURRENT_FILE) != null)
        {
            dlgSave.setSelectedFile(new File(pModel.getProperty(PRP_CURRENT_FILE)));
        }
        else
        {
            dlgSave.setSelectedFile(new File("scene"));
        }
        
        // remove all standard filters
        while (dlgSave.getChoosableFileFilters().length > 0)
        {
            dlgSave.removeChoosableFileFilter(dlgSave.getChoosableFileFilters()[0]);
        }
        
        dlgSave.addChoosableFileFilter(new QuickFileFilter(    "Scene Files (*.scnx)", ".scnx"));
        dlgSave.addChoosableFileFilter(new QuickFileFilter("Animation Files (*.anix)", ".anix"));
        
        dlgSave.setDialogTitle(LOCALIZER.getString(L_TITLE_SAVE));
        
        if (dlgSave.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
        {
            if (dlgSave.getSelectedFile().exists())
            {
                String[] options = new String[] { LOCALIZER.getString(L_YES), LOCALIZER.getString(L_NO) };
                
                if (JOptionPane.showOptionDialog(this.getTopLevelAncestor(), LOCALIZER.getString(L_OVERWRITE_FILE), 
                        LOCALIZER.getString(L_TITLE_EXPORT), JOptionPane.YES_NO_OPTION, 
                        JOptionPane.WARNING_MESSAGE, null, options, options[0]) != 0)
                {
                    return;
                }
            }
            
            String extension = ((QuickFileFilter) dlgSave.getFileFilter()).getFileExtension();
            
            File file = dlgSave.getSelectedFile();
            if (!file.getName().endsWith(extension))
            {
                file = new File(file.getAbsolutePath() + extension);
            }
            
            switch (extension)
            {
                case ".scnx":
                    sceneManager.saveScene(file, pModel.getScene());
                    break;
                    
                case ".anix":
                    sceneManager.saveAnimation(file, Recorder.getInstance());
                    break;
                    
                default:
                    // ignore
            }
            
        }
    }