/**
*
*/
package org.signalml.plugin.loader;
import java.awt.Window;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JComponent;
import org.signalml.app.view.common.dialogs.AbstractDialog;
import org.signalml.plugin.export.SignalMLException;
/**
* This {@link AbstractDialog dialog} allows to manage plug-in options.
* Contains one {@link PluginPanel panel} in border layout.
* @see PluginPanel the funtion of this dialog
* @author Marcin Szumski
*/
public class PluginDialog extends AbstractDialog {
/**
* an array of plug-in {@link PluginState states}
*/
private ArrayList<PluginState> descriptions;
/**
* an array of directories in which plug-ins are
* stored
*/
private ArrayList<File> pluginDirs;
/**
* Constructor.
* @param w the parent window
* @param isModal specifies whether dialog blocks input to other
* windows when shown. <code>null</code> value and unsupported modality
* types are equivalent to <code>MODELESS</code>
* @param descriptions an array of plug-in {@link PluginState states}
* @param pluginDirs an array of directories in which plug-ins are
* stored
*/
public PluginDialog(Window w, boolean isModal, ArrayList<PluginState> descriptions,
ArrayList<File> pluginDirs) {
super(w, isModal);
this.descriptions = descriptions;
this.pluginDirs = pluginDirs;
}
private static final long serialVersionUID = 1L;
/**
* the actual panel with options
*/
private PluginPanel pluginPanel = null;
/* (non-Javadoc)
* @see AbstractDialog#createInterface()
*/
@Override
protected JComponent createInterface() {
if (pluginPanel == null)
pluginPanel = new PluginPanel(descriptions, pluginDirs);
return pluginPanel;
}
/* (non-Javadoc)
* @see AbstractDialog#supportsModelClass(java.lang.Class)
*/
@Override
public boolean supportsModelClass(Class<?> clazz) {
return ArrayList.class.isAssignableFrom(clazz);
}
/* (non-Javadoc)
* @see AbstractDialog#fillDialogFromModel(java.lang.Object)
*/
@Override
public void fillDialogFromModel(Object model) throws SignalMLException {
ArrayList<PluginState> descriptions = (ArrayList<PluginState>) model;
pluginPanel.fillPanelFromModel(descriptions);
}
/* (non-Javadoc)
* @see AbstractDialog#fillModelFromDialog(java.lang.Object)
*/
@Override
public void fillModelFromDialog(Object model) throws SignalMLException {
ArrayList<PluginState> descriptions = (ArrayList<PluginState>) model;
pluginPanel.fillModelFromPanel(descriptions);
}
}