package gui;
import gui.sysadmin.SysadminTab;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeListener;
import util.ActiveSearchPanel;
import util.AnnotationDataType;
import util.AnnotationDataValue;
import util.ExperimentData;
import util.FileData;
import util.GenomeReleaseData;
import util.ProcessFeedbackData;
import communication.DownloadHandler;
import communication.HTTPURLUpload;
import controller.SysadminController;
/**
* A interface for the view part of an application used by genome researcher to
* make their daily job easier.<br>
* ahaha, what does that even mean<br>
* how could an interface even help the client?
*
* @author
*/
// TODO: Huge uncommented interface... Seems to fill literally no purpose
// whatsoever. OO
public interface GenomizerView {
/**
* Set a new statusmessage
*
* @param status
* New status
* @author JH
*/
public void setStatusPanel(String status); // used~ish, can't be delegated
/**
* Method adding a listener to the analyze selected button.
*
* @param listener
* The listener
*/
public void addUploadToListener(ActionListener listener); // unused commented
public void refreshSearch(); // unused commented
LoginWindow getLoginWindow(); // used N/A
public void addLoginListener(ActionListener listener); // unused commented
public void addSearchToWorkspaceListener(ActionListener listener); // unused commented
public void addLogoutListener(ActionListener listener); // used N/A
public void addSearchListener(ActionListener listener); // unimplemented unused N/A
public void addProcessFileListener(ActionListener listener); // unused commented
public void addDownloadFileListener(ActionListener listener); // unused commented
public void addQuerySearchListener(ActionListener listener); // unused commented
public void addRawToProfileDataListener(ActionListener listener); // unused good enough
public void addAddToExistingExpButtonListener(
ActionListener addToExistingExpButtonListener); // unused commented
public void addUploadToExperimentButtonListener(ActionListener listener); // unused commented
// TODO unimplemented listener-assigning method
public void addSearchResultsDownloadListener(ActionListener listener); // unused N/A? sort of
public void addSelectFilesToUploadButtonListener(ActionListener listener); // unused commented
public void addUpdateSearchAnnotationsListener(ActionListener listener); // unused commented
public void addNewExpButtonListener(ActionListener listener); // unused commented
public void addSelectButtonListener(ActionListener listener); // unused commented
public void addDeleteFromDatabaseListener(ActionListener listener); // unused commented
public void addProcessFeedbackListener(ActionListener listener); // unused commented
public void addUploadButtonListener(ActionListener listener); // unused commented
public void addToWorkspace(ArrayList<ExperimentData> experiments); // unused commented
public ArrayList<FileData> getAllMarkedFiles(); // unused
public String getPassword(); // unused commented-collision
public String getUsername(); // unused commented-collision
public JFrame getFrame(); //used commented
public String getQuerySearchString(); // unused commented
public String getIp(); // unused commented-collision
public ArrayList<ExperimentData> getSelectedDataInSearch(); // unused commented
public UploadTab getUploadTab(); // used commented
public QuerySearchTab getQuerySearchTab(); // used commented
public SysadminTab getSysAdminTab(); // used commented
public WorkspaceTab getWorkSpaceTab(); // used commented
public ProcessTab getProcessTab(); // used commented
//TODO unimplemented getter of...?
public int getSelectedRowAtAnnotationTable(); // unused N/A
public void updateLoginAccepted(String username, String pwd, String name); // used commented
public void updateLoginNeglected(String errorMessage); // unused commented
public void updateLogout(); // used commented
public void setSearchAnnotationTypes(AnnotationDataType[] annotationTypes); // unused commented
public void setProcessFileList(ArrayList<FileData> arrayList); // used TODO unfinished
public void printToConsole(String message); // unused commented
public void setSysadminController(SysadminController sysadminController); // unused commented
public ArrayList<ExperimentData> getSelectedDataInWorkspace(); // unused commented-collision
public ArrayList<ExperimentData> getSelectedExperimentsInWorkspace(); // unused commented
/**
* Creates a new experiment to upload to using the provided annotations.
*
* @param annotations
* The annotations of the new experiment.
*/
public void createNewExp(AnnotationDataType[] annotations); // unused commented-collision
public String[] getParameters(); // unused commented
/**
* Add the selected files as UploadFileRow to the NewExp Panel.
*
* @param files
* [] for each to add
*/
public void selectFilesToNewExp(File[] files); // unused commented-collision
public void selectFilesToExistingExp(File[] files); // unused commented
public ArrayList<File> getFilesToUpload(); // unused commented
public AnnotationDataValue[] getUploadAnnotations(); // unused commented
public void setBowtieParameters(); // unused commented
public JList getfileList(); // unused commented~
public String getNewExpName(); // unused commented
public HashMap<String, String> getFilesToUploadTypes(); // unused commented
public void updateQuerySearchResults(ArrayList<ExperimentData> searchResults); // unused commented
/**
* Calls the uploadPanel's enableUploadButton method to try to either make
* the upload button enabled or disabled. If all of the required annotation
* fields are NOT filled, this method won't set it to true.
*
* @param b
* Whether it should try to make the button enabled (true) or
* disabled (false).
*/
public void enableUploadButton(boolean b); // unused commented-collision
public String[] getRatioCalcParameters(); // unused commented
/**
* Deletes a file row.
*
* @param f
* Used to identify which fileRow to be deleted.
*/
public void deleteUploadFileRow(File f); // unused commented-collision
public void addRatioCalcListener(ActionListener listener); // unused commented
public void setDefaultRatioPar(); // unused not commented
public void setUnusedRatioPar(); // unused not commented
public void showRatioPopup(); // unused commented
public void showProcessFeedback(ProcessFeedbackData[] processFeedbackData); // unused commented~
public void setOngoingDownloads(
CopyOnWriteArrayList<DownloadHandler> ongoingDownloads); // unused commented
public void addOkListener(ActionListener listener); // unused commented
public RatioCalcPopup getRatioCalcPopup(); // used commented
public void setGenomeFileList(GenomeReleaseData[] genome); // unused commented
public ArrayList<File> getSelectedFilesToUpload(); // unused commented~
public void addUploadSelectedFilesListener(ActionListener listener); // unused commented
public void removeUploadExpName(); // unused
public void removeSelectedFromWorkspace(); // unused
public boolean isCorrectToProcess(); // used not commented
public boolean isRatioCorrectToProcess(); // used not commented
public void setProfileButton(boolean bool); // unused doesn't do anything
public boolean useRatio(); // unused commented
public ActiveSearchPanel getActiveSearchPanel(); // unused not commented
public JButton getBackButton(); // used commented
/**
* Remove and re-add each tab in the GUI. For now **ONLY TABS** are reset:
* If this changes some other methods will need updating (logoutlistener)
*/
public void resetGUI(); // used commented
public void changeTabInWorkspace(int tabIndex); // unused commented
public JTabbedPane getTabbedPane(); // used commented~
public String getSelectedSpecies(); // unused commented
public void addSpeciesSelectedListener(ActionListener listener); // unused commented
public void setGenomeReleases(GenomeReleaseData[] grd); // unused not commented
public String getGenomeVersion(File f); // unused not commented
public void addDeleteSelectedListener(ActionListener listener); // unused commented
public ArrayList<ExperimentData> getFileInfo(); // unused commented~
public void setFileInfo(ArrayList<ExperimentData> fileInfo); // unused commented~
public void clearSearchSelection(); // unused not commented
public int getSelectedIndex(); // unused commented~
public Class<?> getSelectedTabClass();
public void addChangedTabListener(ChangeListener listener); // unused N/A
public void addAddToExistingExpButtonListenerInSearch(
ActionListener listener); // unused commented
public void addUploadToListenerSearchTab(ActionListener listener); // unused commented
public void addConvertFileListener(ActionListener listener); //unused N/A
boolean getIsNewExp(); //unused commented
public void setConvertFileList(ArrayList<FileData> selectedFiles);
public ConvertTab getConvertTab();
public void convertSelectedButtonListener(ActionListener listener);
public void deleteSelectedButtonListener(ActionListener listener);
}