public MappingChoice( String[] columnsToBeMappedTo, boolean lastInList, ISAField preExistingMapping) { this(columnsToBeMappedTo, lastInList, preExistingMapping, MappingEntryGUI.getInitialData()); }
/** * Create JPanel allowing users to map a column to an ISATAB column in the sample or assay files. * * @param sequence - which sequence we are currently in with respect to defining the mappings. -1 * = defining sample file. * @param tableReference - TableReferenceObject to be used for the definition. * @param columnsToBeMappedTo - array of strings representing header value to be mapped to. * @param fileName - name of file being mapped * @param readerToUse - type of reader to use, @see FileLoader.CSV_READER_TXT, * FileLoader.CSV_READER_CSV or FileLoader.SHEET_READER * @return JPanel containing the GUI to allow for mappings! */ private JLayeredPane createMappings( final int sequence, final TableReferenceObject tableReference, final String[] columnsToBeMappedTo, final String fileName, final int readerToUse) throws BiffException, IOException, NoAvailableLoaderException { fixedMappings = sequence == -1 ? new HashMap<String, MappedElement>() : fixedMappings; final MappingEntryGUI mappingTableGUI = new MappingEntryGUI( tableReference, columnsToBeMappedTo, fileName, readerToUse, preExistingMapping, fixedMappings); mappingTableGUI.performPreliminaryLoading(); mappingTableGUI.createGUI(); mappingTableGUI.setSize( new Dimension((int) (menuPanels.getWidth() * 0.80), (int) (menuPanels.getHeight() * 0.90))); mappingTableGUI.setBorder(null); ImageIcon crumb = sequence == -1 ? breadcrumb3 : breadcrumb5; final JLayeredPane finalPanel = getGeneralLayout( performMappingHeader, crumb, getDescriptiveStringForFile(fileBeingMapped, sequence), mappingTableGUI, getHeight()); final MouseListener[] listeners = new MouseListener[2]; listeners[0] = new MouseAdapter() { public void mouseEntered(MouseEvent mouseEvent) { backButton.setIcon(backOver); } public void mouseExited(MouseEvent mouseEvent) { backButton.setIcon(back); } public void mousePressed(MouseEvent mouseEvent) { backButton.setIcon(back); HistoryComponent hc = previousPage.pop(); setCurrentPage(hc.getDisplayComponent()); assignListenerToLabel(backButton, hc.getListeners()[0]); assignListenerToLabel(nextButton, hc.getListeners()[1]); } }; assignListenerToLabel(backButton, listeners[0]); listeners[1] = new MouseAdapter() { public void mouseEntered(MouseEvent mouseEvent) { nextButton.setIcon(nextOver); } public void mouseExited(MouseEvent mouseEvent) { nextButton.setIcon(next); } public void mousePressed(MouseEvent mouseEvent) { // call mapping function! Thread mappingThread = new Thread( new Runnable() { public void run() { final MappingLogic mu = new MappingLogic( mappingTableGUI.getTreeInfo(), tableReference, readerToUse, mapToBlankFields); TableReferenceObject populatedTRO = mu.doMapping(fileName, readerToUse); // whenever we create the mappings now, we now add the mappings in a Map // which // point to the populated TROs for each of the assays to be defined and the // study // sample file to be defined! if (sequence == -1) { fixedMappings.put( "Sample Name", mappingTableGUI.getMappingNodeForField("Sample Name")); definitions.put(MappingObject.STUDY_SAMPLE, populatedTRO); } else { assaySelections.put( populatedTRO.getTableName(), assaysToBeDefined.get(sequence)); definitions.put(populatedTRO.getTableName(), populatedTRO); } // at this point, we want to populate a Map relating field names // with ISAFieldMappings for output at a later stage in XML format. mappingsToSave.putAll(mappingTableGUI.createMappingRefs()); nextButton.setIcon(next); previousPage.push(new HistoryComponent(finalPanel, listeners)); SwingUtilities.invokeLater( new Runnable() { public void run() { setCurrentPage( createMappingVisualization( sequence + 1, fileName, mu.getVisMapping())); } }); } }); setCurrentPage(workingProgressScreen); mappingThread.start(); } }; assignListenerToLabel(nextButton, listeners[1]); return finalPanel; }