123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /* *******************************************************************
- * Copyright (c) 1999-2001 Xerox Corporation,
- * 2002 Palo Alto Research Center, Incorporated (PARC).
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v 2.0
- * which accompanies this distribution and is available at
- * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
- *
- * Contributors:
- * Xerox/PARC initial implementation
- * Helen Hawkins Converted to new interface (bug 148190)
- * ******************************************************************/
-
-
-
- package org.aspectj.ajde.ui.swing;
-
- import javax.swing.SwingUtilities;
-
- import org.aspectj.ajde.Ajde;
- import org.aspectj.ajde.EditorAdapter;
- import org.aspectj.bridge.IMessage;
- import org.aspectj.bridge.Message;
-
- /**
- * Used to ensure that a source line has been seeked to. Will repeatedly attempt
- * to seek to the line until this has succeeded.
- *
- * @author Mik Kersten
- */
- public class GoToLineThread extends Thread {
- private EditorAdapter editorAdapter = null;
-
- private int lineNumber = 0;
- private String fileToSeekTo = "";
- private boolean finished = false;
-
- public boolean isFinished() {
- return finished;
- }
-
- public boolean needsRetry() {
- return !this.isAlive() && !finished;
- }
-
- public GoToLineThread(String fileToSeekTo, int lineNumber, EditorAdapter editorAdapter) {
- this.lineNumber = lineNumber;
- this.fileToSeekTo = fileToSeekTo;
- this.editorAdapter = editorAdapter;
- }
-
- public void run() {
-
- while(true) {
- String file = editorAdapter.getCurrFile();
- if (file != null) {
- if (file.equals(this.fileToSeekTo)) {
- try {
- SwingUtilities.invokeAndWait( new Runnable() {
- public void run() {
- editorAdapter.showSourceLine(lineNumber, true);
- }
- });
- } catch (Exception e) {
- Message msg = new Message("Could not seek to line.",IMessage.ERROR,e,null);
- Ajde.getDefault().getMessageHandler().handleMessage(msg);
- }
- finished = true;
- break;
- }
- shortPause();
- }
- }
- }
-
- private void shortPause() {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- throw new RuntimeException(e.getMessage());
- }
- }
- }
|