/*
 * This file is a part of EpnTAPClient.
 * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer.
 * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861
 * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planétologie.
 *
 * 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/>.
 */

package eu.omp.irap.vespa.epntapclient.gui.resultpanel;

import java.util.List;

import javax.swing.JTabbedPane;

import eu.omp.irap.vespa.votable.gui.VOTablePanelView;
import eu.omp.irap.vespa.votable.votabledata.VOTableData;

/**
 * @author N. Jourdane
 */
public class ResultsPanelView extends JTabbedPane {

	/** The default serial version UID. */
	private static final long serialVersionUID = 1L;


	/**
	 * Method constructor which customize the result panel, but don't build it from scratch since
	 * VOTableView is already created by ResultController.
	 */
	public ResultsPanelView() {
	}

	/**
	 * @return The panel inside the current active tab.
	 */
	public VOTablePanelView getCurrentTablePanel() {
		return (VOTablePanelView) getComponentAt(getSelectedTab());
	}

	/** @return the VOTable view of each tab in the result panel. */
	public VOTablePanelView[] getPanels() {
		return (VOTablePanelView[]) getComponents();
	}

	/**
	 * @return The index of the selected tab.
	 */
	public List<Integer> getSelectedRows() {
		return getCurrentTablePanel().getSelectedRows();
	}

	/**
	 * @return The index of the selected tab.
	 */
	public int getSelectedTab() {
		return getSelectedIndex();
	}

	/**
	 * Append data to the current tab.
	 *
	 * @param voTableData The VOTable data to add in the current tab.
	 */
	public void updateTable(VOTableData voTableData) {
		getCurrentTablePanel().fillTable(voTableData);
	}

	/**
	 * Remove previous results.
	 */
	public void clearResult() {
		removeAll();
	}
}
