/* * Copyright 2003-2010 Tufts University Licensed under the * Educational Community License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may * obtain a copy of the License at * * http://www.osedu.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS IS" * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing * permissions and limitations under the License. */ package tufts.vue; /** * * A thread from which the UndoManager can track asynchronous model updates. * * @version $Revision: 1.6 $ / $Date: 2010-02-03 19:17:41 $ / $Author: mike $ * @author Scott Fraize * */ public class UndoableThread extends Thread { private Object undoActionMarker; public UndoableThread(String name, UndoManager undoManager) { super("UndoableThread: " + name); setDaemon(true); if (undoManager != null) undoManager.attachThreadToNextMark(this); // it's okay if there was no UndoManger: this happens // during map loading. } // called back by undo manager during attach void setMarker(Object o) { this.undoActionMarker = o; } // called by undo manager Object getMarker() { return this.undoActionMarker; } public void start() { if (false && DEBUG.CASTOR) run(); // run synchronously else super.start(); } }