Search in sources :

Example 1 with MZmineRunnableModule

use of net.sf.mzmine.modules.MZmineRunnableModule in project mzmine2 by mzmine.

the class MZmineCore method main.

/**
 * Main method
 */
@SuppressWarnings("unchecked")
public static void main(String[] args) {
    // In the beginning, set the default locale to English, to avoid
    // problems with conversion of numbers etc. (e.g. decimal separator may
    // be . or , depending on the locale)
    Locale.setDefault(new Locale("en", "US"));
    logger.info("Starting MZmine " + getMZmineVersion());
    // Remove old temporary files, if we find any
    TmpFileCleanup.removeOldTemporaryFiles();
    logger.fine("Loading core classes..");
    // create instance of configuration
    configuration = new MZmineConfigurationImpl();
    // create instances of core modules
    projectManager = new ProjectManagerImpl();
    taskController = new TaskControllerImpl();
    logger.fine("Initializing core classes..");
    projectManager.initModule();
    taskController.initModule();
    logger.fine("Loading modules");
    for (Class<?> moduleClass : MZmineModulesList.MODULES) {
        try {
            logger.finest("Loading module " + moduleClass.getName());
            // Create instance and init module
            MZmineModule moduleInstance = (MZmineModule) moduleClass.newInstance();
            // Add to the module list
            initializedModules.put(moduleClass, moduleInstance);
            // Create an instance of parameter set
            Class<? extends ParameterSet> parameterSetClass = moduleInstance.getParameterSetClass();
            ParameterSet parameterSetInstance = parameterSetClass.newInstance();
            // Add the parameter set to the configuration
            configuration.setModuleParameters((Class<MZmineModule>) moduleClass, parameterSetInstance);
        } catch (Throwable e) {
            logger.log(Level.SEVERE, "Could not load module " + moduleClass, e);
            e.printStackTrace();
            continue;
        }
    }
    // If we have no arguments, run in GUI mode, otherwise run in batch mode
    if (args.length == 0) {
        // Create the Swing GUI in the event-dispatching thread, as is
        // generally recommended
        Runnable desktopInit = new Runnable() {

            @Override
            public void run() {
                logger.fine("Initializing GUI");
                MainWindow mainWindow = new MainWindow();
                desktop = mainWindow;
                mainWindow.initModule();
                // Activate project - bind it to the desktop's project tree
                MZmineProjectImpl currentProject = (MZmineProjectImpl) projectManager.getCurrentProject();
                currentProject.activateProject();
                // add desktop menu icon
                for (Class<?> moduleClass : MZmineModulesList.MODULES) {
                    MZmineModule module = initializedModules.get(moduleClass);
                    if (module instanceof MZmineRunnableModule) {
                        mainWindow.getMainMenu().addMenuItemForModule((MZmineRunnableModule) module);
                    }
                }
            }
        };
        try {
            SwingUtilities.invokeAndWait(desktopInit);
        } catch (Exception e) {
            logger.log(Level.SEVERE, "Could not initialize GUI", e);
            e.printStackTrace();
            System.exit(1);
        }
    } else {
        desktop = new HeadLessDesktop();
    }
    // load configuration
    if (MZmineConfiguration.CONFIG_FILE.exists() && MZmineConfiguration.CONFIG_FILE.canRead()) {
        try {
            configuration.loadConfiguration(MZmineConfiguration.CONFIG_FILE);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // if we have GUI, show it now
    if (desktop.getMainWindow() != null && !(desktop instanceof HeadLessDesktop)) {
        // update the size and position of the main window
        ParameterSet paramSet = configuration.getPreferences();
        WindowSettingsParameter settings = paramSet.getParameter(MZminePreferences.windowSetttings);
        settings.applySettingsToWindow(desktop.getMainWindow());
        // add last project menu items
        if (desktop instanceof MainWindow) {
            ((MainWindow) desktop).createLastUsedProjectsMenu(configuration.getLastProjects());
            // listen for changes
            configuration.getLastProjectsParameter().addFileListChangedListener(list -> {
                // new list of last used projects
                Desktop desk = getDesktop();
                if (desk instanceof MainWindow) {
                    ((MainWindow) desk).createLastUsedProjectsMenu(list);
                }
            });
        }
        // show the GUI
        logger.info("Showing main window");
        desktop.getMainWindow().setVisible(true);
        // show the welcome message
        desktop.setStatusBarText("Welcome to MZmine 2!");
        // Check for updated version
        NewVersionCheck NVC = new NewVersionCheck(CheckType.DESKTOP);
        Thread nvcThread = new Thread(NVC);
        nvcThread.setPriority(Thread.MIN_PRIORITY);
        nvcThread.start();
        // Tracker
        GoogleAnalyticsTracker GAT = new GoogleAnalyticsTracker("MZmine Loaded (GUI mode)", "/JAVA/Main/GUI");
        Thread gatThread = new Thread(GAT);
        gatThread.setPriority(Thread.MIN_PRIORITY);
        gatThread.start();
        // register shutdown hook only if we have GUI - we don't want to
        // save configuration on exit if we only run a batch
        ShutDownHook shutDownHook = new ShutDownHook();
        Runtime.getRuntime().addShutdownHook(shutDownHook);
    }
    // mode
    if (args.length > 0 && desktop instanceof HeadLessDesktop) {
        // Tracker
        GoogleAnalyticsTracker GAT = new GoogleAnalyticsTracker("MZmine Loaded (Headless mode)", "/JAVA/Main/GUI");
        Thread gatThread = new Thread(GAT);
        gatThread.setPriority(Thread.MIN_PRIORITY);
        gatThread.start();
        File batchFile = new File(args[0]);
        if ((!batchFile.exists()) || (!batchFile.canRead())) {
            logger.severe("Cannot read batch file " + batchFile);
            System.exit(1);
        }
        ExitCode exitCode = BatchModeModule.runBatch(projectManager.getCurrentProject(), batchFile);
        if (exitCode == ExitCode.OK)
            System.exit(0);
        else
            System.exit(1);
    }
}
Also used : Locale(java.util.Locale) ParameterSet(net.sf.mzmine.parameters.ParameterSet) MZmineRunnableModule(net.sf.mzmine.modules.MZmineRunnableModule) ExitCode(net.sf.mzmine.util.ExitCode) MZmineConfigurationImpl(net.sf.mzmine.main.impl.MZmineConfigurationImpl) TaskControllerImpl(net.sf.mzmine.taskcontrol.impl.TaskControllerImpl) IOException(java.io.IOException) ProjectManagerImpl(net.sf.mzmine.project.impl.ProjectManagerImpl) HeadLessDesktop(net.sf.mzmine.desktop.impl.HeadLessDesktop) WindowSettingsParameter(net.sf.mzmine.parameters.parametertypes.WindowSettingsParameter) HeadLessDesktop(net.sf.mzmine.desktop.impl.HeadLessDesktop) Desktop(net.sf.mzmine.desktop.Desktop) MainWindow(net.sf.mzmine.desktop.impl.MainWindow) File(java.io.File) MZmineModule(net.sf.mzmine.modules.MZmineModule) MZmineProjectImpl(net.sf.mzmine.project.impl.MZmineProjectImpl)

Example 2 with MZmineRunnableModule

use of net.sf.mzmine.modules.MZmineRunnableModule in project mzmine2 by mzmine.

the class MainMenu method actionPerformed.

/**
 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
 */
@Override
public void actionPerformed(ActionEvent e) {
    Object src = e.getSource();
    MZmineRunnableModule module = moduleMenuItems.get(src);
    if (module != null) {
        ParameterSet moduleParameters = MZmineCore.getConfiguration().getModuleParameters(module.getClass());
        RawDataFile[] selectedFiles = MZmineCore.getDesktop().getSelectedDataFiles();
        if (selectedFiles.length > 0) {
            for (Parameter<?> p : moduleParameters.getParameters()) {
                if (p instanceof RawDataFilesParameter) {
                    RawDataFilesParameter rdp = (RawDataFilesParameter) p;
                    rdp.setValue(RawDataFilesSelectionType.GUI_SELECTED_FILES);
                }
            }
        }
        PeakList[] selectedPeakLists = MZmineCore.getDesktop().getSelectedPeakLists();
        if (selectedPeakLists.length > 0) {
            for (Parameter<?> p : moduleParameters.getParameters()) {
                if (p instanceof PeakListsParameter) {
                    PeakListsParameter plp = (PeakListsParameter) p;
                    plp.setValue(PeakListsSelectionType.GUI_SELECTED_PEAKLISTS);
                }
            }
        }
        logger.finest("Setting parameters for module " + module.getName());
        ExitCode exitCode = moduleParameters.showSetupDialog(MZmineCore.getDesktop().getMainWindow(), true);
        if (exitCode == ExitCode.OK) {
            ParameterSet parametersCopy = moduleParameters.cloneParameterSet();
            logger.finest("Starting module " + module.getName() + " with parameters " + parametersCopy);
            ArrayList<Task> tasks = new ArrayList<Task>();
            MZmineProject project = MZmineCore.getProjectManager().getCurrentProject();
            module.runModule(project, parametersCopy, tasks);
            MZmineCore.getTaskController().addTasks(tasks.toArray(new Task[0]));
        }
        return;
    }
    if (src == projectExit) {
        MZmineCore.getDesktop().exitMZmine();
    }
    if (src == projectSaveParameters) {
        JFileChooser chooser = new JFileChooser();
        int returnVal = chooser.showSaveDialog(MZmineCore.getDesktop().getMainWindow());
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File configFile = chooser.getSelectedFile();
            try {
                MZmineCore.getConfiguration().saveConfiguration(configFile);
            } catch (Exception ex) {
                MZmineCore.getDesktop().displayException(MZmineCore.getDesktop().getMainWindow(), ex);
            }
        }
    }
    if (src == projectLoadParameters) {
        JFileChooser chooser = new JFileChooser();
        int returnVal = chooser.showOpenDialog(MZmineCore.getDesktop().getMainWindow());
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File configFile = chooser.getSelectedFile();
            try {
                MZmineCore.getConfiguration().loadConfiguration(configFile);
            } catch (Exception ex) {
                MZmineCore.getDesktop().displayException(MZmineCore.getDesktop().getMainWindow(), ex);
            }
        }
    }
    if (src == projectSampleParameters) {
        ProjectParametersSetupDialog dialog = new ProjectParametersSetupDialog();
        dialog.setVisible(true);
    }
    if (src == projectPreferences) {
        MZminePreferences preferences = MZmineCore.getConfiguration().getPreferences();
        preferences.showSetupDialog(MZmineCore.getDesktop().getMainWindow(), true);
    }
    if (src == showAbout) {
        MainWindow mainWindow = (MainWindow) MZmineCore.getDesktop();
        mainWindow.showAboutDialog();
    }
    if (src == checkUpdate) {
        // Check for updated version
        NewVersionCheck NVC = new NewVersionCheck(CheckType.MENU);
        new Thread(NVC).start();
    }
}
Also used : ParameterSet(net.sf.mzmine.parameters.ParameterSet) ProjectOpeningTask(net.sf.mzmine.modules.projectmethods.projectload.ProjectOpeningTask) Task(net.sf.mzmine.taskcontrol.Task) MZmineRunnableModule(net.sf.mzmine.modules.MZmineRunnableModule) ProjectParametersSetupDialog(net.sf.mzmine.project.parameterssetup.ProjectParametersSetupDialog) ExitCode(net.sf.mzmine.util.ExitCode) ArrayList(java.util.ArrayList) NewVersionCheck(net.sf.mzmine.main.NewVersionCheck) MZminePreferences(net.sf.mzmine.desktop.preferences.MZminePreferences) JFileChooser(javax.swing.JFileChooser) RawDataFile(net.sf.mzmine.datamodel.RawDataFile) MZmineProject(net.sf.mzmine.datamodel.MZmineProject) PeakListsParameter(net.sf.mzmine.parameters.parametertypes.selectors.PeakListsParameter) PeakList(net.sf.mzmine.datamodel.PeakList) RawDataFile(net.sf.mzmine.datamodel.RawDataFile) File(java.io.File) RawDataFilesParameter(net.sf.mzmine.parameters.parametertypes.selectors.RawDataFilesParameter)

Aggregations

File (java.io.File)2 MZmineRunnableModule (net.sf.mzmine.modules.MZmineRunnableModule)2 ParameterSet (net.sf.mzmine.parameters.ParameterSet)2 ExitCode (net.sf.mzmine.util.ExitCode)2 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Locale (java.util.Locale)1 JFileChooser (javax.swing.JFileChooser)1 MZmineProject (net.sf.mzmine.datamodel.MZmineProject)1 PeakList (net.sf.mzmine.datamodel.PeakList)1 RawDataFile (net.sf.mzmine.datamodel.RawDataFile)1 Desktop (net.sf.mzmine.desktop.Desktop)1 HeadLessDesktop (net.sf.mzmine.desktop.impl.HeadLessDesktop)1 MainWindow (net.sf.mzmine.desktop.impl.MainWindow)1 MZminePreferences (net.sf.mzmine.desktop.preferences.MZminePreferences)1 NewVersionCheck (net.sf.mzmine.main.NewVersionCheck)1 MZmineConfigurationImpl (net.sf.mzmine.main.impl.MZmineConfigurationImpl)1 MZmineModule (net.sf.mzmine.modules.MZmineModule)1 ProjectOpeningTask (net.sf.mzmine.modules.projectmethods.projectload.ProjectOpeningTask)1 WindowSettingsParameter (net.sf.mzmine.parameters.parametertypes.WindowSettingsParameter)1