private void loadScene()
    {
        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.openButtonText", LOCALIZER.getString(L_OPEN));
        UIManager.put("FileChooser.openButtonToolTipText", LOCALIZER.getString(L_OPEN));
        
        JFileChooser dlgOpen = new JFileChooser();
        dlgOpen.setCurrentDirectory(stdSceneDir);
        dlgOpen.setSelectedFile(new File("scene.scnx"));
        
        // remove all standard filters
        while (dlgOpen.getChoosableFileFilters().length > 0)
        {
            dlgOpen.removeChoosableFileFilter(dlgOpen.getChoosableFileFilters()[0]);
        }
        
        dlgOpen.addChoosableFileFilter(new QuickFileFilter(    "Scene Files (*.scnx)", ".scnx"));
        dlgOpen.addChoosableFileFilter(new QuickFileFilter("Animation Files (*.anix)", ".anix"));
        
        dlgOpen.setDialogTitle(LOCALIZER.getString(L_TITLE_OPEN));
        
        if (dlgOpen.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
        {
            String extension = ((QuickFileFilter) dlgOpen.getFileFilter()).getFileExtension();
            
            File file = dlgOpen.getSelectedFile();
            
            switch (extension)
            {
                case ".scnx":
                    Scene scene = sceneManager.loadScene(file);
                    
                    if (scene != null)
                    {
                        pModel.setProperty(PRP_CURRENT_FILE, file.getPath());
                        
                        pModel.setScene(scene);
                        pModel.fireEventListeners(EVT_SCENE_LOADED);
                        pModel.fireRepaint();
                    }
                    break;
                    
                case ".anix":
                    Recorder recorder = sceneManager.loadAnimation(file);
                    
                    if (recorder != null)
                    {
                        // TODO
                        Recorder.overrideInstance(recorder);
                        pModel.fireEventListeners(EVT_ANIMATION_LOADED);
                    }
                    break;
                    
                default:
                    // ignore
            }
        }
    }