deweese 2005/02/20 13:59:10 Modified: lib pdf-transcoder.jar sources/org/apache/batik/bridge UpdateManager.java sources/org/apache/batik/swing/gvt JGVTComponent.java TextSelectionManager.java Log: 1) Fixed a race condition in the UpdateManager. 2) Fixed a stray System.out in pdf-transcoder. 3) Started exposure of TextSelection interfaces on Canvas (not fully done). Revision Changes Path 1.8 +173 -160 xml-batik/lib/pdf-transcoder.jar <<Binary file>> 1.37 +39 -17 xml-batik/sources/org/apache/batik/bridge/UpdateManager.java Index: UpdateManager.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/UpdateManager.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- UpdateManager.java 17 Feb 2005 11:47:05 -0000 1.36 +++ UpdateManager.java 20 Feb 2005 21:59:10 -0000 1.37 @@ -76,6 +76,11 @@ protected RunnableQueue updateRunnableQueue; /** + * The RunHandler for the RunnableQueue. + */ + protected RunnableQueue.RunHandler runHandler; + + /** * Whether the update manager is running. */ protected boolean running; @@ -130,7 +135,7 @@ document = doc; updateRunnableQueue = RunnableQueue.createRunnableQueue(); - RunnableQueue.RunHandler runHandler = createRunHandler(); + runHandler = createRunHandler(); updateRunnableQueue.setRunHandler(runHandler); graphicsNode = gn; @@ -254,17 +259,27 @@ * Suspends the update manager. */ public synchronized void suspend() { - if (running) { - suspendCalled = true; + // System.err.println("Suspend: " + suspendCalled + " : " + running); + if (updateRunnableQueue.getQueueState() == RunnableQueue.RUNNING) { updateRunnableQueue.suspendExecution(false); } + suspendCalled = true; } /** * Resumes the update manager. */ public synchronized void resume() { - if (!running) { + // System.err.println("Resume: " + suspendCalled + " : " + running); + + // if (suspendCalled) { + // UpdateManagerEvent ev = new UpdateManagerEvent + // (this, null, null); + // // FIXX: Must happen in a different thread! + // fireEvent(suspendedDispatcher, ev); + // fireEvent(resumedDispatcher, ev); + // } + if (updateRunnableQueue.getQueueState() != RunnableQueue.RUNNING) { updateRunnableQueue.resumeExecution(); } } @@ -576,11 +591,14 @@ * Called when the execution of the queue has been suspended. */ public void executionSuspended(RunnableQueue rq) { - if (suspendCalled) { - running = false; - UpdateManagerEvent ev = new UpdateManagerEvent - (this, null, null); - fireEvent(suspendedDispatcher, ev); + synchronized (UpdateManager.this) { + // System.err.println("Suspended: " + suspendCalled); + if (suspendCalled) { + running = false; + UpdateManagerEvent ev = new UpdateManagerEvent + (this, null, null); + fireEvent(suspendedDispatcher, ev); + } } } @@ -588,13 +606,17 @@ * Called when the execution of the queue has been resumed. */ public void executionResumed(RunnableQueue rq) { - if (suspendCalled && !running) { - running = true; - suspendCalled = false; - - UpdateManagerEvent ev = new UpdateManagerEvent - (this, null, null); - fireEvent(resumedDispatcher, ev); + synchronized (UpdateManager.this) { + // System.err.println("Resumed: " + suspendCalled + + // " : " + running); + if (suspendCalled && !running) { + running = true; + suspendCalled = false; + + UpdateManagerEvent ev = new UpdateManagerEvent + (this, null, null); + fireEvent(resumedDispatcher, ev); + } } } } 1.49 +18 -3 xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java Index: JGVTComponent.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- JGVTComponent.java 12 Feb 2005 01:48:24 -0000 1.48 +++ JGVTComponent.java 20 Feb 2005 21:59:10 -0000 1.49 @@ -317,17 +317,32 @@ if (eventsEnabled) { eventDispatcher = new AWTEventDispatcher(); if (selectableText) { - textSelectionManager = - new TextSelectionManager(this, eventDispatcher); + textSelectionManager = createTextSelectionManager(); } } } + /** + * Creates the TextSelectionManager to be used by this + * JGVTComponent. Subclasses may override to provide a + * custom subclass. + */ + protected TextSelectionManager createTextSelectionManager() { + return new TextSelectionManager(this, eventDispatcher); + } + //////////////////////////////////////////////////////////////////////// // Selection methods //////////////////////////////////////////////////////////////////////// /** + * Returns the current Text selection manager for the Component. + */ + public TextSelectionManager getTextSelectionManager() { + return textSelectionManager; + } + + /** * Sets the color of the selection overlay to the specified color. * * @param color the new color of the selection overlay 1.22 +17 -1 xml-batik/sources/org/apache/batik/swing/gvt/TextSelectionManager.java Index: TextSelectionManager.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/gvt/TextSelectionManager.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- TextSelectionManager.java 30 Oct 2004 18:38:06 -0000 1.21 +++ TextSelectionManager.java 20 Feb 2005 21:59:10 -0000 1.22 @@ -116,6 +116,22 @@ } /** + * Add a selection listener to be notified when the + * text selection changes in the document. + */ + public void addSelectionListener(SelectionListener sl) { + textSelector.addSelectionListener(sl); + } + + /** + * Remove a selection listener to be notified when the + * text selection changes in the document. + */ + public void removeSelectionListener(SelectionListener sl) { + textSelector.removeSelectionListener(sl); + } + + /** * Sets the color of the selection overlay to the specified color. * * @param color the new color of the selection overlay
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]