package jas2.jds.module;

import jas2.util.*;
import java.util.*;

import hepjas.analysis.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import jas2.swingstudio.MultiFilePanel;
import javax.swing.filechooser.FileFilter;

/**
 * A basic implementation of a LocalDIM which allows one of more files to be
 * appended together.
 */
public abstract class MultiFileLocalDIM extends BasicLocalDIM
{
	/**
	 * Create a BasicLocalDIM. 
	 * 
	 * Specify a FileFilter that describes the type of files you want
	 * to open.
	 */
	public MultiFileLocalDIM(FileFilter f)
	{
		super(f);
	}
	/**
	 * Create a BasicLocalDIM.
	 * 
	 * Specify a description of the files, and a filetype (e.g. .hbook)
	 * @param description Description of the files
	 * @param filetype The file type 
	 */
	public MultiFileLocalDIM(String description, String filetype)
	{
		super(description,filetype);
	}
	public JASWizardPage getSetupPage()
	{
		return new MultiFileWizardPage();
	}
	class MultiFileWizardPage extends BasicWizardPage implements ActionListener
	{
		MultiFileWizardPage()
		{
			super();
			remove(m_filePanel);
			card = new JPanel(layout);
			card.add(m_filePanel,SINGLE);
			multiFilePanel = new MultiFilePanel(getFileFilter(),null,"Files to Open",key);
			card.add(multiFilePanel,MULTI);
			add(card,BorderLayout.CENTER);
			multi = new JCheckBox("Append multiple files together to form one logical dataset");
			add(multi,BorderLayout.SOUTH);
			boolean isMulti = prop.getBoolean(key+".multi",false);
			layout.show(card,isMulti ? MULTI : SINGLE);
			multi.setSelected(isMulti);
			multi.addActionListener(this);
		}
		public void onFinish()
		{
			if (!multi.isSelected()) super.onFinish();
			else
			{
				int count = multiFilePanel.getNFiles();
				if (count == 0)
				{
					JOptionPane.showMessageDialog(this, "You must add at least one file.",
						"Error...", JOptionPane.ERROR_MESSAGE);
					return; // dispose not called, so wizard stays open
				}
				m_ljb.createJob(multiFilePanel.getFilePath());
				multiFilePanel.saveState(); // only if successfully opened file
				dispose();				
			}
			prop.setBoolean(key+".multi",multi.isSelected());
		}
		public void actionPerformed(ActionEvent e)
		{
			layout.show(card,multi.isSelected() ? MULTI : SINGLE);
		}
		private JPanel card;
		private CardLayout layout = new CardLayout();
		private JCheckBox multi;
		private MultiFilePanel multiFilePanel;
	}
	private UserProperties prop = Application.getApplication().getUserProperties();
	private final String key = getClass().getName();
	private static final String MULTI = "MULTI";
	private static final String SINGLE = "SINGLE";
}

 

Ads help maintain this website.