1 19 package org.netbeans.modules.refactoring.spi.impl; 20 21 import java.util.Collection ; 22 import java.util.Collections ; 23 import java.util.HashSet ; 24 import java.util.Iterator ; 25 import org.netbeans.modules.refactoring.api.RefactoringElement; 26 import org.netbeans.modules.refactoring.api.RefactoringSession; 27 import org.netbeans.modules.refactoring.spi.impl.UndoManager; 28 import org.openide.cookies.EditorCookie; 29 import org.openide.loaders.DataObject; 30 import org.openide.text.CloneableEditorSupport; 31 import org.openide.text.PositionBounds; 32 33 37 public class UndoWatcher { 38 39 private static Collection extractCES(Collection elements) { 40 HashSet result = new HashSet (); 41 for (Iterator it = elements.iterator(); it.hasNext();) { 42 RefactoringElement e = (RefactoringElement) it.next(); 43 PositionBounds pb = e.getPosition(); 44 if (pb != null) { 45 CloneableEditorSupport ces = pb.getBegin().getCloneableEditorSupport(); 46 result.add(ces); 47 } 48 } 49 return result; 50 } 51 52 public static void watch(RefactoringSession session, InvalidationListener l) { 53 UndoManager.getDefault().watch(extractCES(session.getRefactoringElements()), l); 54 } 55 56 public static void stopWatching(InvalidationListener l) { 57 UndoManager.getDefault().stopWatching(l); 58 } 59 60 public static void watch(DataObject o) { 61 EditorCookie ces = o.getCookie(EditorCookie.class); 62 assert ces instanceof CloneableEditorSupport; 63 UndoManager.getDefault().watch(Collections.singleton((CloneableEditorSupport)ces), null); 64 } 65 } 66 | Popular Tags |