view src/samer/core_/viewers/swing/FileChooserViewer.java @ 5:b67a33c44de7

Remove some crap, etc
author samer
date Fri, 05 Apr 2019 21:34:25 +0100
parents bf79fb79ee13
children
line wrap: on
line source
/*
 *	FileViewer.java	
 *
 *	Copyright (c) 2000, Samer Abdallah, King's College London.
 *	All rights reserved.
 *
 *	This software is provided AS iS and WITHOUT ANY WARRANTY; 
 *	without even the implied warranty of MERCHANTABILITY or 
 *	FITNESS FOR A PARTICULAR PURPOSE.
 */

package samer.core.viewers.swing;
import  samer.core.types.*;
import  samer.core.util.*;
import  samer.core.*;

import  java.io.*;
import  java.util.*;
import  javax.swing.*;
import  javax.swing.event.*;
import  java.beans.*;

public class FileChooserViewer extends VariableViewer
	implements PropertyChangeListener
{
	JFileChooser	chooser;
	VFile				vfile;

	public FileChooserViewer(Viewable v) { this((VFile)v); }
	public FileChooserViewer(VFile vfile) {
		super(vfile); this.vfile=vfile;

		setLayout(new BoxLayout(panel(),BoxLayout.Y_AXIS));
		chooser = new JFileChooser(vfile.getFile());
		chooser.setSelectedFile(vfile.getFile().getAbsoluteFile());
		chooser.setControlButtonsAreShown(false);
		chooser.addPropertyChangeListener(
			JFileChooser.SELECTED_FILE_CHANGED_PROPERTY, this
		);

		try { if (vfile.getFile().isDirectory()) setDirectorySelection(); }
		catch (Exception  ex) {}

		add(chooser);
	}

	public void update(Observable o, Object source)
	{
		if (source!=this) {
			chooser.setSelectedFile(vfile.getFile().getAbsoluteFile());
		}
		super.update(o,source);
	}

    public void propertyChange(PropertyChangeEvent e)
	{
		String prop = e.getPropertyName();
		if(prop == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) {
			vfile.setFile(chooser.getSelectedFile());
			vfile.changed();
		}
	}

	public void setMultiSelectionEnabled(boolean f) {
		chooser.setMultiSelectionEnabled(f);
	}

	public void setDirectorySelection() {
		chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
	}

	public void setFileSelection() {
		chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
	}
}