/* * #%L * gitools-ui-app * %% * Copyright (C) 2013 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.ui.app.analysis.wizard; import org.gitools.api.PersistenceException; import org.gitools.api.persistence.FileFormat; import org.gitools.matrix.FileFormats; import org.gitools.matrix.format.CmatrixMatrixFormat; import org.gitools.matrix.format.TdmMatrixFormat; import org.gitools.ui.platform.IconUtils; import org.gitools.ui.platform.dialog.MessageStatus; import org.gitools.ui.platform.icons.IconNames; public class DataFilePage extends SelectFilePage { private static final FileFormat[] formats = new FileFormat[]{FileFormats.GENE_MATRIX, FileFormats.GENE_MATRIX_TRANSPOSED, FileFormats.DOUBLE_MATRIX, FileFormats.DOUBLE_BINARY_MATRIX, FileFormats.MULTIVALUE_DATA_MATRIX, FileFormats.COMPRESSED_MATRIX, FileFormats.MODULES_2C_MAP, FileFormats.MODULES_INDEXED_MAP}; public DataFilePage() { this(formats); } public DataFilePage(FileFormat[] formats) { super(formats); setTitle("Select data source"); setLogo(IconUtils.getImageIconResourceScaledByHeight(IconNames.LOGO_DATA, 96)); } @Override protected void updateState() { FileFormat ff = getFileFormat(); super.updateState(); if (isComplete() && (ff.getExtension().equals(FileFormats.MULTIVALUE_DATA_MATRIX.getExtension()))) { activateValueSelection(); String[] headers = new String[0]; try { headers = TdmMatrixFormat.readHeader(getFile()); } catch (PersistenceException e) { setMessage(MessageStatus.ERROR, "Error reading headers of " + getFile().getName()); setComplete(false); deactivateValueSelection(); } setValues(headers); return; } if (isComplete() && (ff.getExtension().equals(FileFormats.COMPRESSED_MATRIX.getExtension()))) { activateValueSelection(); String[] headers = new String[0]; try { headers = CmatrixMatrixFormat.readHeader(getFile()); } catch (PersistenceException e) { setMessage(MessageStatus.ERROR, "Error reading headers of " + getFile().getName()); setComplete(false); deactivateValueSelection(); } setValues(headers); return; } deactivateValueSelection(); } }