Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/IterateControlMediator.java @ 520:1ee452f31187
Experimental support for inverse direction history walking. Refactored/streamlined cancellation in HgLogCommand and down the stack
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Fri, 21 Dec 2012 21:20:26 +0100 |
| parents | f9f3e9b67ccc |
| children |
comparison
equal
deleted
inserted
replaced
| 519:934037edbea0 | 520:1ee452f31187 |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011 TMate Software Ltd | 2 * Copyright (c) 2011-2012 TMate Software Ltd |
| 3 * | 3 * |
| 4 * This program is free software; you can redistribute it and/or modify | 4 * This program is free software; you can redistribute it and/or modify |
| 5 * it under the terms of the GNU General Public License as published by | 5 * it under the terms of the GNU General Public License as published by |
| 6 * the Free Software Foundation; version 2 of the License. | 6 * the Free Software Foundation; version 2 of the License. |
| 7 * | 7 * |
| 26 * @author TMate Software Ltd. | 26 * @author TMate Software Ltd. |
| 27 */ | 27 */ |
| 28 public class IterateControlMediator { | 28 public class IterateControlMediator { |
| 29 | 29 |
| 30 private final CancelSupport src; | 30 private final CancelSupport src; |
| 31 private Callback receiver; | 31 private final Callback receiver; |
| 32 private CancelledException cancellation; | |
| 32 | 33 |
| 33 public IterateControlMediator(CancelSupport source, Lifecycle.Callback target) { | 34 public IterateControlMediator(CancelSupport source, Lifecycle.Callback target) { |
| 34 assert target != null; | 35 assert target != null; |
| 35 src = source; | 36 src = source; |
| 36 receiver = target; | 37 receiver = target; |
| 38 | 39 |
| 39 public boolean checkCancelled() { | 40 public boolean checkCancelled() { |
| 40 if (src == null) { | 41 if (src == null) { |
| 41 return false; | 42 return false; |
| 42 } | 43 } |
| 44 if (cancellation != null) { | |
| 45 return true; | |
| 46 } | |
| 43 try { | 47 try { |
| 44 src.checkCancelled(); | 48 src.checkCancelled(); |
| 45 return false; | 49 return false; |
| 46 } catch (CancelledException ex) { | 50 } catch (CancelledException ex) { |
| 47 receiver.stop(); | 51 receiver.stop(); |
| 52 cancellation = ex; | |
| 48 return true; | 53 return true; |
| 49 } | 54 } |
| 50 } | 55 } |
| 51 | 56 |
| 52 public void stop() { | 57 public void stop() { |
| 53 receiver.stop(); | 58 receiver.stop(); |
| 54 } | 59 } |
| 60 | |
| 61 public CancelledException getCancelException() { | |
| 62 return cancellation; | |
| 63 } | |
| 55 } | 64 } |
