From: Slava P. <sp...@gj...> - 2000-08-03 04:29:55
|
Dan, First of all, don't call openFile() (or most other jEdit APIs, for that matter) from any thread except for the event dispatch thread. Keep in mind that the actual file loading is done in background thread (or threads, in the case of jEdit 2.6) so stuff like: buffer = jEdit.openFile(...) buffer.getText(...) will fail, because the buffer won't be loaded yet. To wait until the buffer is loaded, you have three choices: - call the static VFSManager.waitForRequests() method. Doing this is HIGHLY DISCOURAGED because it blocks the AWT thread and as a result the user will not be able to abort the I/O request if it hangs (this can happen when dealing with slow FTP servers, for example) - wait for the BufferUpdate.LOADED message on the EditBus. - call the static VFSManager.runInAWTThread(Runnable r) method. The specified runnable will be run in the AWT thread once all pending I/O is complete. I hope this helps, Slava Dan Terrill wrote: > > Hello all. > > I'm attempting to write a plugin that needs to open many files. However, I > can't seem to get more than one to load. I can't quite tell where the > problem is. > > I keep the file names in a Vector, and enumerate through it to get each > file. I then call jEdit.openFile on each one. However, only the first loads, > and I don't seem to get to the rest. However, the plugin is still alive. > > I've tried many things: making a background thread to load each one, > separate docAdder classes, etc. I know the Vector is full, as when I take > out the openFile part I can log everything I expect. > > Any advice would be greatly appreciated! |