package net.bioclipse.spectrum.action.contribution; import java.net.URL; import net.bioclipse.core.util.LogUtils; import net.bioclipse.spectrum.editor.ChartPage; import net.bioclipse.spectrum.editor.PeakTablePage; import net.bioclipse.spectrum.editor.SpectrumEditor; import org.apache.log4j.Logger; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.editors.text.TextEditor; import org.xmlcml.cml.element.CMLPeakList; import org.xmlcml.cml.element.CMLSpectrum; import org.xmlcml.cml.element.CMLSpectrumData; import spok.utils.PeakPicker; import spok.utils.SpectrumUtils; /** * Action for the toolbar and popdown menu item "Pick Peaks" of the * ContinuousSpectrumView. Realises the peak picking and notifies the * PeakSpectrumView, that the SpectrumItem/CMLItem has changed and therefor the * chart must be rebuilt. * * @author Tobias Helmus * @created 19. Dezember 2005 * */ public class PeakPickingAction extends Action { private SpectrumEditor view; private static final Logger logger = Logger.getLogger(PeakPickingAction.class); /** * @param view */ public PeakPickingAction() { URL url = Platform.getBundle( "net.bioclipse.spectrum").getEntry("/icons/peaks.gif"); ImageDescriptor imageDesc = ImageDescriptor.createFromURL(url); this.setImageDescriptor(imageDesc); } public void setActiveEditor(SpectrumEditor view) { this.view = view; CMLSpectrum spectrum = view.getSpectrum(); if (spectrum != null) { CMLSpectrumData spectrumData = SpectrumUtils .getSpectrumData(spectrum); if(spectrumData==null){ this.setEnabled(false); }else{ this.setEnabled(true); } } } /** * @param action */ public void run() { CMLSpectrum spectrum = view.getSpectrum(); if (spectrum != null) { CMLSpectrumData spectrumData = SpectrumUtils .getSpectrumData(spectrum); PeakPicker picker = new PeakPicker(spectrumData); CMLPeakList peaks = picker.getPeakArray(); spectrum.addPeakList(peaks); view.getPeakTablePage().setDirty(true); try { if(view.getActiveEditor() instanceof PeakTablePage) view.getPeakTablePage().update(); if(view.getActiveEditor() instanceof ChartPage) view.getChartPage().update(); if(view.getActiveEditor() instanceof TextEditor) view.updateTextEditor(); } catch (Exception e) { LogUtils.handleException(e,logger); } } } @Override public String getToolTipText() { return "Pick Peaks"; } }