| /**************************************************************************** |
| * Tuning and Analysis Utilities |
| * http://www.cs.uoregon.edu/research/paracomp/tau |
| **************************************************************************** |
| * Copyright (c) 1997-2006 |
| * Department of Computer and Information Science, University of Oregon |
| * Advanced Computing Laboratory, Los Alamos National Laboratory |
| * Research Center Juelich, ZAM Germany |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Wyatt Spear - initial API and implementation |
| ****************************************************************************/ |
| package org.eclipse.ptp.etfw.tau.selinstfort.popup.actions; |
| |
| import java.util.LinkedHashSet; |
| |
| import org.eclipse.jface.action.IAction; |
| import org.eclipse.jface.text.ITextSelection; |
| import org.eclipse.jface.viewers.ISelection; |
| import org.eclipse.ptp.etfw.tau.selinst.Selector; |
| import org.eclipse.ptp.etfw.tau.selinstfort.messages.Messages; |
| import org.eclipse.ui.IEditorActionDelegate; |
| import org.eclipse.ui.IEditorPart; |
| import org.eclipse.ui.IFileEditorInput; |
| import org.eclipse.ui.editors.text.TextEditor; |
| |
| /** |
| * Action for adding selective instrumentation of monotonically increasing events to a Photran source file via selection of source code in the editor |
| */ |
| public class IncrementInstrument implements IEditorActionDelegate { |
| |
| TextEditor textEditor; |
| |
| /** |
| * Saves a reference to the current active editor |
| * |
| * @see org.eclipse.ui.IEditorActionDelegate#setActiveEditor(IAction, |
| * IEditorPart) |
| */ |
| public void setActiveEditor(IAction action, IEditorPart targetEditor) { |
| textEditor = (TextEditor) targetEditor; |
| } |
| |
| /** |
| * Takes the position of the selected text and creates a user-defined selective instrumentation entry |
| * |
| * @see org.eclipse.ui.IActionDelegate#run(IAction) |
| */ |
| public void run(IAction action) { |
| IFileEditorInput input = (IFileEditorInput)textEditor.getEditorInput(); |
| if (input != null) { |
| input.getFile().getProject().getLocation().toOSString(); |
| String location = input.getFile().getProject().getLocation().toOSString(); |
| |
| int insertregs=0; |
| int insertstops=0; |
| ITextSelection ts = (ITextSelection) textEditor.getSelectionProvider().getSelection(); |
| if(ts.getLength()<=0) |
| { |
| System.out.println(Messages.IncrementInstrument_SelectAreaToInstrument); |
| } |
| insertregs = ts.getStartLine()+1; |
| insertstops= ts.getEndLine()+1; |
| |
| LinkedHashSet<String> instlines = new LinkedHashSet<String>(); |
| |
| String mainLine=org.eclipse.ptp.etfw.tau.selinst.popup.actions.IncrementInstrument.getPhaseTimeLine(input.getFile().getName(),insertregs,insertstops); |
| |
| if(mainLine==null) |
| { |
| return; |
| } |
| |
| instlines.add(mainLine); |
| Selector selectinst = new Selector(location); |
| selectinst.addInst(instlines); |
| } |
| } |
| |
| /** |
| * Enables the action if text has been selected, otherwise, the action is |
| * disabled. |
| * |
| * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) |
| */ |
| public void selectionChanged(IAction action, ISelection selection) { |
| |
| action.setEnabled(true); |
| } |
| } |