@Override
	public boolean selectFileToOpen(DocumentInfo docInfo, int type) {
		// we'll customize the approve button
		// [srk] this is done here, rather than in configureForOpen/Import, to workaround a bug
		String approveButtonText = null;
		
		// make sure we're all set up
		lazyInstantiation();
		
		// Setup the File Chooser to open or import
		switch (type) {
			case FileProtocol.OPEN:
				chooser.configureForOpen(getName(), Preferences.getPreferenceString(Preferences.MOST_RECENT_OPEN_DIR).cur);
				approveButtonText = "Open";
				break;
				
			case FileProtocol.IMPORT:
				chooser.configureForImport(getName(), Preferences.getPreferenceString(Preferences.MOST_RECENT_OPEN_DIR).cur);
				approveButtonText = "Import";
				break;
				
			default:
				System.out.println("ERROR: invalid open/import type used. (" + type +")");
				return false;
		}
		
		// run the File Chooser
		int option = chooser.showDialog(Outliner.outliner, approveButtonText) ;
		
		// Update the most recent open dir preference
		// TBD [srk] set up a MOST_RECENT_IMPORT_DIR, then have this code act appropriately
		Preferences.getPreferenceString(Preferences.MOST_RECENT_OPEN_DIR).cur = chooser.getCurrentDirectory().getPath();
		Preferences.getPreferenceString(Preferences.MOST_RECENT_OPEN_DIR).restoreTemporaryToCurrent();
		
		// Handle User Input
		if (option == JFileChooser.APPROVE_OPTION) {
			String filename = chooser.getSelectedFile().getPath();
			
			String encoding;
			String fileFormat;
			
			// pull proper preference values from the file chooser
			switch (type) {
			
				case FileProtocol.OPEN:
					encoding = chooser.getOpenEncoding();
					fileFormat = chooser.getOpenFileFormat();
					break;
					
				case FileProtocol.IMPORT:
					encoding = chooser.getImportEncoding();
					fileFormat = chooser.getImportFileFormat();
					break;
					
				default:
					System.out.println("ERROR: invalid open/import type used. (" + type +")");
					return false;
			}
			
			
			// store data into docInfo structure
			PropertyContainerUtil.setPropertyAsString(docInfo, DocumentInfo.KEY_PATH, filename);
			PropertyContainerUtil.setPropertyAsString(docInfo, DocumentInfo.KEY_ENCODING_TYPE, encoding);
			PropertyContainerUtil.setPropertyAsString(docInfo, DocumentInfo.KEY_FILE_FORMAT, fileFormat);
			
			return true;
		} else {
			return false;
		}
	}