From: <tho...@us...> - 2013-04-22 11:44:47
|
Revision: 22943 http://jedit.svn.sourceforge.net/jedit/?rev=22943&view=rev Author: thomasmey Date: 2013-04-22 11:44:40 +0000 (Mon, 22 Apr 2013) Log Message: ----------- TaskManager: Refactor IoTask - Make IoTask a subclass of Task and remove the code of the special case. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/Buffer.java jEdit/trunk/org/gjt/sp/jedit/browser/VFSFileChooserDialog.java jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferIORequest.java jEdit/trunk/org/gjt/sp/jedit/io/VFSManager.java jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java jEdit/trunk/org/gjt/sp/util/Task.java jEdit/trunk/org/gjt/sp/util/TaskManager.java Modified: jEdit/trunk/org/gjt/sp/jedit/Buffer.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2013-04-22 11:27:52 UTC (rev 22942) +++ jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2013-04-22 11:44:40 UTC (rev 22943) @@ -34,6 +34,7 @@ import java.util.Vector; import javax.swing.*; +import javax.swing.SwingWorker.StateValue; import javax.swing.text.Segment; import org.gjt.sp.jedit.browser.VFSBrowser; @@ -42,6 +43,7 @@ import org.gjt.sp.jedit.buffer.JEditBuffer; import org.gjt.sp.jedit.bufferio.BufferAutosaveRequest; import org.gjt.sp.jedit.bufferio.BufferIORequest; +import org.gjt.sp.jedit.bufferio.IoTask; import org.gjt.sp.jedit.bufferio.MarkersSaveRequest; import org.gjt.sp.jedit.bufferset.BufferSet; import org.gjt.sp.jedit.gui.DockableWindowManager; @@ -720,6 +722,19 @@ setFlag(AUTORELOAD, value); autoreloadOverridden = isAutoreloadPropertyOverriden(); } //}}} +// +// //{{{ getIoTask() method +// public IoTask getIoTask() +// { +// return ioTask; +// } //}}} +// +// //{{{ setIoTask() method +// public void setIoTask(IoTask task) +// { +// assert(ioTask == null || ioTask != null && ioTask.getState() == StateValue.DONE); +// this.ioTask = task; +// } //}}} //{{{ getAutoReloadDialog() method /** @@ -1841,6 +1856,9 @@ private Socket waitSocket; private List<BufferUndoListener> undoListeners; +// +// /** the current ioTask of this buffer */ +// private volatile IoTask ioTask; //}}} //{{{ setPath() method Modified: jEdit/trunk/org/gjt/sp/jedit/browser/VFSFileChooserDialog.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/VFSFileChooserDialog.java 2013-04-22 11:27:52 UTC (rev 22942) +++ jEdit/trunk/org/gjt/sp/jedit/browser/VFSFileChooserDialog.java 2013-04-22 11:44:40 UTC (rev 22943) @@ -38,6 +38,7 @@ import org.gjt.sp.jedit.io.*; import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.buffer.JEditBuffer; +import org.gjt.sp.jedit.bufferio.IoTask; import org.gjt.sp.util.*; //}}} @@ -583,7 +584,7 @@ } //}}} //{{{ GetFileTypeRequest class - private class GetFileTypeRequest extends Task + private class GetFileTypeRequest extends IoTask { VFS vfs; Object session; @@ -593,7 +594,7 @@ GetFileTypeRequest(VFS vfs, Object session, String path, int[] type) { - super(true); + super(); this.vfs = vfs; this.session = session; this.path = path; Modified: jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferIORequest.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferIORequest.java 2013-04-22 11:27:52 UTC (rev 22942) +++ jEdit/trunk/org/gjt/sp/jedit/bufferio/BufferIORequest.java 2013-04-22 11:44:40 UTC (rev 22943) @@ -44,7 +44,6 @@ import org.gjt.sp.jedit.io.EncodingServer; import org.gjt.sp.util.IntegerArray; import org.gjt.sp.util.SegmentBuffer; -import org.gjt.sp.util.Task; //}}} /** @@ -52,7 +51,7 @@ * @author Slava Pestov * @version $Id$ */ -public abstract class BufferIORequest extends Task +public abstract class BufferIORequest extends IoTask { //{{{ Constants @@ -97,7 +96,7 @@ protected BufferIORequest(View view, Buffer buffer, Object session, VFS vfs, String path) { - super(true); + super(); this.view = view; this.buffer = buffer; this.session = session; @@ -105,6 +104,7 @@ this.path = path; markersPath = Buffer.getMarkersPath(vfs, path); + //buffer.setIoTask(this); } //}}} //{{{ toString() method Modified: jEdit/trunk/org/gjt/sp/jedit/io/VFSManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/io/VFSManager.java 2013-04-22 11:27:52 UTC (rev 22942) +++ jEdit/trunk/org/gjt/sp/jedit/io/VFSManager.java 2013-04-22 11:44:40 UTC (rev 22943) @@ -31,6 +31,7 @@ import java.lang.reflect.InvocationTargetException; import java.util.*; +import org.gjt.sp.jedit.bufferio.IoTask; import org.gjt.sp.jedit.gui.ErrorListDialog; import org.gjt.sp.jedit.msg.VFSUpdate; import org.gjt.sp.jedit.*; @@ -228,7 +229,7 @@ @Deprecated public static void runInWorkThread(Task run) { - if(!run.getIoTask()) + if(!(run instanceof IoTask)) throw new IllegalArgumentException(); ThreadUtilities.runInBackground(run); Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java 2013-04-22 11:27:52 UTC (rev 22942) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java 2013-04-22 11:44:40 UTC (rev 22943) @@ -24,6 +24,7 @@ //{{{ Imports import org.gjt.sp.jedit.*; +import org.gjt.sp.jedit.bufferio.IoTask; import org.gjt.sp.jedit.bufferset.BufferSetManager; import org.gjt.sp.jedit.browser.VFSBrowser; import org.gjt.sp.jedit.io.FileVFS; @@ -31,7 +32,6 @@ import org.gjt.sp.jedit.io.VFSManager; import org.gjt.sp.util.AwtRunnableQueue; import org.gjt.sp.util.Log; -import org.gjt.sp.util.Task; import org.gjt.sp.util.ThreadUtilities; import javax.swing.*; @@ -484,14 +484,14 @@ } //}}} //{{{ DraggedURLLoader class - private static class DraggedURLLoader extends Task + private static class DraggedURLLoader extends IoTask { private final JEditTextArea textArea; private final String url; DraggedURLLoader(JEditTextArea textArea, String url) { - super(true); + super(); this.textArea = textArea; this.url = url; } Modified: jEdit/trunk/org/gjt/sp/util/Task.java =================================================================== --- jEdit/trunk/org/gjt/sp/util/Task.java 2013-04-22 11:27:52 UTC (rev 22942) +++ jEdit/trunk/org/gjt/sp/util/Task.java 2013-04-22 11:44:40 UTC (rev 22943) @@ -41,22 +41,15 @@ * It is set automatically when the task starts. */ private volatile Thread thread; - private final boolean ioTask; - private SwingWorker.StateValue state; + private volatile SwingWorker.StateValue state; private volatile boolean cancellable = true; //{{{ Task Constructor protected Task() { - this(false); - } - - protected Task(boolean ioTask) - { state = SwingWorker.StateValue.PENDING; - this.ioTask = ioTask; } //}}} //{{{ run() method @@ -121,11 +114,6 @@ return maximum; } - public boolean getIoTask() - { - return ioTask; - } - public SwingWorker.StateValue getState() { return state; Modified: jEdit/trunk/org/gjt/sp/util/TaskManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/util/TaskManager.java 2013-04-22 11:27:52 UTC (rev 22942) +++ jEdit/trunk/org/gjt/sp/util/TaskManager.java 2013-04-22 11:44:40 UTC (rev 22943) @@ -25,6 +25,8 @@ import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import org.gjt.sp.jedit.bufferio.IoTask; + /** * The TaskManager manage Tasks in the Threadpool, it knows all of them, and * sends events to TaskListeners. @@ -39,14 +41,12 @@ private final List<TaskListener> listeners; private final List<Task> tasks; - private final List<Task> ioTasks; private final Object ioWaitLock; private TaskManager() { listeners = new CopyOnWriteArrayList<TaskListener>(); tasks = Collections.synchronizedList(new ArrayList<Task>()); - ioTasks = Collections.synchronizedList(new ArrayList<Task>()); ioWaitLock = new Object(); } @@ -69,7 +69,13 @@ */ public int countIoTasks() { - return ioTasks.size(); + int size = 0; + synchronized (tasks) { + for(Task task : tasks) + if(task instanceof IoTask) + size++; + } + return size; } public void addTaskListener(TaskListener listener) @@ -90,10 +96,7 @@ void fireWaiting(Task task) { - if(task.getIoTask()) - ioTasks.add(task); - else - tasks.add(task); + tasks.add(task); List<TaskListener> listeners = this.listeners; for (TaskListener listener : listeners) @@ -113,10 +116,7 @@ void fireDone(Task task) { - if(task.getIoTask()) - ioTasks.remove(task); - else - tasks.remove(task); + tasks.remove(task); List<TaskListener> listeners = this.listeners; for (TaskListener listener : listeners) @@ -124,7 +124,7 @@ listener.done(task); } - if(task.getIoTask()) + if(task instanceof IoTask) { AwtRunnableQueue.INSTANCE.queueAWTRunner(false); @@ -214,14 +214,6 @@ task.cancel(); } } - synchronized (ioTasks) - { - for(Task task: ioTasks) - { - if(task.getClass().equals(clazz)) - task.cancel(); - } - } } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |