All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.cmu.tetradapp.editor.LoadDataAction Maven / Gradle / Ivy

The newest version!
///////////////////////////////////////////////////////////////////////////////
// For information as to what this class does, see the Javadoc, below.       //
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,       //
// 2007, 2008, 2009, 2010, 2014, 2015, 2022 by Peter Spirtes, Richard        //
// Scheines, Joseph Ramsey, and Clark Glymour.                               //
//                                                                           //
// 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 2 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, write to the Free Software               //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA //
///////////////////////////////////////////////////////////////////////////////
package edu.cmu.tetradapp.editor;

import edu.cmu.tetrad.data.DataModel;
import edu.cmu.tetrad.data.DataModelList;
import edu.cmu.tetrad.data.DataSet;
import edu.cmu.tetradapp.model.DataWrapper;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.Preferences;

/**
 * New data loading action.
 *
 * @author josephramsey
 */
final class LoadDataAction extends AbstractAction {

    private static final long serialVersionUID = 929333197876935694L;

    /**
     * The dataEditor into which data is loaded. -
     */
    private final DataEditor dataEditor;

    /**
     * Creates a new load data action for the given dataEditor.
     *
     * @param editor a {@link edu.cmu.tetradapp.editor.DataEditor} object
     */
    public LoadDataAction(DataEditor editor) {
        super("Load Data...");

        if (editor == null) {
            throw new NullPointerException("Data Editor must not be null.");
        }

        this.dataEditor = editor;
    }

    private static JFileChooser getJFileChooser() {
        JFileChooser chooser = new JFileChooser();
        String sessionSaveLocation
                = Preferences.userRoot().get("fileSaveLocation", "");
        chooser.setCurrentDirectory(new File(sessionSaveLocation));
        chooser.resetChoosableFileFilters();
        chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        return chooser;
    }

    //======================= private methods =========================//

    /**
     * {@inheritDoc}
     * 

* Performs the action of loading a session from a file. */ @Override public void actionPerformed(ActionEvent e) { JFileChooser chooser = LoadDataAction.getJFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); // Sets the file chooser to allow multiple file selections chooser.setMultiSelectionEnabled(true); // Customize dialog title bar text chooser.setDialogTitle("Choose data files (choose multiple files with Ctrl or Shift key)"); // The second argument sets both the title for the dialog window and the label for the approve button int _ret = chooser.showDialog(this.dataEditor, "Choose"); if (_ret == JFileChooser.CANCEL_OPTION) { return; } // Files array File[] files = chooser.getSelectedFiles(); Preferences.userRoot().put("fileSaveLocation", files[0].getParent()); DataModelList dataModelList; // Show the data loader dialog to preview data ata and set their parameters LoadDataDialog loadData = new LoadDataDialog(files); try { loadData.showDataLoaderDialog(); } catch (IOException ex) { Logger.getLogger(LoadDataAction.class.getName()).log(Level.SEVERE, null, ex); } boolean keepData = false; if (!isDataEmpty()) { final String message = "Would you like to replace the model data?"; int option = JOptionPane.showOptionDialog(this.dataEditor, message, "Data Replacement", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[]{"Replace", "Keep"}, "Replace"); keepData = option == 1; } DataModelList _dataModelList = loadData.getDataModels(); if (_dataModelList.isEmpty()) { return; } if (keepData) { dataModelList = this.dataEditor.getDataModelList(); } else { dataModelList = new DataModelList(); } dataModelList.addAll(_dataModelList); this.dataEditor.replace(dataModelList); this.dataEditor.selectFirstTab(); firePropertyChange("modelChanged", null, null); } /** * States whether the data is empty. */ private boolean isDataEmpty() { DataWrapper wrapper = this.dataEditor.getDataWrapper(); DataModelList dataModels = wrapper.getDataModelList(); for (DataModel model : dataModels) { if (model instanceof DataSet) { return ((DataSet) model).getNumRows() == 0; } else { // how do you know in this case? Just say false return false; } } return true; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy