package gui.processing;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import util.ExperimentData;
import util.ProcessFeedbackData;
import controller.ProcessTabController;
@SuppressWarnings("serial")
public class ProcessTab extends JPanel {
private ProcessTabController processTabController;
private ExperimentData selectedExperiment;
private CommandChooser chooser;
private CommandScrollPane scrollPane;
private ProcessInfoPanel infoPanel;
private ProcessSouthPanel southPanel;
public ProcessTab() {
setPreferredSize(new Dimension(1225, 725));
setMinimumSize(new Dimension(20000, 20000));
this.setLayout(new BorderLayout());
this.chooser = new CommandChooser(CommandStrings.COMMAND_NAMES);
this.add(chooser, BorderLayout.NORTH);
this.scrollPane = new CommandScrollPane();
this.add(scrollPane, BorderLayout.CENTER);
this.infoPanel = new ProcessInfoPanel();
this.add(infoPanel, BorderLayout.EAST);
this.southPanel = new ProcessSouthPanel();
this.add(southPanel, BorderLayout.SOUTH);
}
public void setController(ProcessTabController processTabController) {
this.processTabController = processTabController;
}
public void reset(String experimentName) {
this.scrollPane.empty();
this.chooser.setExperiment(experimentName);
this.revalidate();
this.repaint();
}
public String getSelectedCommand() {
return chooser.getSelectedCommand();
}
public void addCommand(String selectedCommand, String[] fileNames, String[] genomeReleases ) {
CommandComponent commandComponent = null;
if (selectedCommand .equalsIgnoreCase(RawToProfileCommandComponent.COMMAND_NAME)) {
commandComponent = new RawToProfileCommandComponent(fileNames, genomeReleases);
} else if (selectedCommand.equalsIgnoreCase(RatioCommandComponent.COMMAND_NAME)) {
commandComponent = new RatioCommandComponent(fileNames);
} else if (selectedCommand.equalsIgnoreCase(SmoothingCommandComponent.COMMAND_NAME)) {
commandComponent = new SmoothingCommandComponent(fileNames);
} else if (selectedCommand.equalsIgnoreCase(StepCommandComponent.COMMAND_NAME)) {
commandComponent = new StepCommandComponent(fileNames);
} else if (commandComponent == null) {
return;
}
this.scrollPane.addCommandComponent(commandComponent);
this.revalidate();
this.repaint();
}
public void addChooserListener(ActionListener chooserListener) {
chooser.addChoiceListener(chooserListener);
}
public void addClearListener(ActionListener clearListener) {
southPanel.addClearButtonListener(clearListener);
}
public void clearCommands() {
this.scrollPane.empty();
}
public void showProcessFeedback(ProcessFeedbackData[] processFeedbackData) {
infoPanel.showProcessFeedback(processFeedbackData);
}
public void addFeedbackListener(ActionListener processFeedbackListener) {
infoPanel.addProcessFeedbackListener(processFeedbackListener);
}
public void addAbortProcessListener(ActionListener abortListener) {
infoPanel.addAbortProcessListener(abortListener);
}
public ProcessFeedbackData getSelectedProcessFeedback() {
return infoPanel.getSelectedProcess();
}
public CommandScrollPane getScrollPane() {
return this.scrollPane;
}
public void addProcessButtonListener(ActionListener processButtonListener) {
this.southPanel.addStartButtonListener(processButtonListener);
}
}