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.