/[schmitzm]/branches/1.0-gt2-2.6/src/skrueger/geotools/XMapPane.java
ViewVC logotype

Diff of /branches/1.0-gt2-2.6/src/skrueger/geotools/XMapPane.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 523 by alfonx, Tue Nov 17 12:51:37 2009 UTC revision 524 by alfonx, Wed Nov 18 09:56:47 2009 UTC
# Line 174  public class XMapPane extends JPanel imp Line 174  public class XMapPane extends JPanel imp
174           * @see #setState(int)           * @see #setState(int)
175           */           */
176          public static final int SELECT_ONE_FROM_TOP = 104;          public static final int SELECT_ONE_FROM_TOP = 104;
177  //  
178  //      /**          /**
179  //       * While threads are working, we call {@link XMapPane#updateFinalImage()}           * While threads are working, we call {@link XMapPane#updateFinalImage()}
180  //       * regularly and repaint(). This {@link Timer} is stopped when all renderers           * regularly and repaint(). This {@link Timer} is stopped when all renderers
181  //       * have finished.           * have finished.
182  //       */           */
183  //      final private Timer repainterTimer;          final private Timer repainterTimer;
184  //  
185  //      /**          /**
186  //       * While the {@link #bgExecuter} and {@link #localExecuter} are rendering,           * While the {@link #bgExecuter} and {@link #localExecuter} are rendering,
187  //       * the {@link #repainterTimer} is regularly updating the {@link #finalImage}           * the {@link #repainterTimer} is regularly updating the {@link #finalImage}
188  //       * with previews.           * with previews.
189  //       */           */
190  //      public static final long REPEATING_REPAINT_DELAY = 500;          public static final long REPEATING_REPAINT_DELAY = 500;
191  //                
192  //      /**          /**
193  //       * The initial delay in milliseconds until the {@link #finalImage} is updated the first time.             * The initial delay in milliseconds until the {@link #finalImage} is updated the first time.  
194  //       */           */
195  //      public static final long INITIAL_REPAINT_DELAY = 333;          public static final long INITIAL_REPAINT_DELAY = 1000;
196    
197          protected RenderingExecutor bgExecuter;          protected RenderingExecutor bgExecuter;
198    
# Line 415  public class XMapPane extends JPanel imp Line 415  public class XMapPane extends JPanel imp
415    
416                  });                  });
417    
418  //              repainterTimer = new Timer((int) REPEATING_REPAINT_DELAY,                  repainterTimer = new Timer((int) REPEATING_REPAINT_DELAY,
419  //                              new ActionListener() {                                  new ActionListener() {
 //  
 //                                      @Override  
 //                                      public void actionPerformed(ActionEvent e) {  
 //                                              updateFinalImage();  
 //                                              XMapPane.this.repaint();  
 //                                      }  
 //                              });  
 //              repainterTimer.setInitialDelay(300);  
 //              repainterTimer.setRepeats(true);  
420    
421                  startRenderThreadsTimer = new Timer(200, new ActionListener() {                                          @Override
422                                            public void actionPerformed(ActionEvent e) {
423                                                    updateFinalImage();
424                                                    XMapPane.this.repaint();
425                                            }
426                                    });
427                    repainterTimer.setInitialDelay(300);
428                    repainterTimer.setRepeats(true);
429    
430                    startRenderThreadsTimer = new Timer(100, new ActionListener() {
431    
432                          @Override                          @Override
433                          public void actionPerformed(ActionEvent e) {                          public void actionPerformed(ActionEvent e) {
434                                  synchronized (requestStartRendering) {                                  synchronized (requestStartRendering) {
435                                          if (requestStartRendering && isValid())                                          if (requestStartRendering && isWellDefined()) {
436                                                  startRendering();                                                  
437                                          requestStartRendering = false;                                                  if (localExecuter.isRunning()){
438                                                            localExecuter.cancelTask();
439                                                    } else {
440                                                            requestStartRendering = false;
441                                                            startRendering();
442                                                    }
443                                            }
444                                  }                                  }
445                          }                          }
446                  });                  });
# Line 620  public class XMapPane extends JPanel imp Line 626  public class XMapPane extends JPanel imp
626                          setCursor(WAIT_CURSOR);                          setCursor(WAIT_CURSOR);
627                          return;                          return;
628                  } else {                  } else {
629  //                      // Allow one last rendering                          // Allow one last rendering
630  //                      if (repainterTimer.isRunning()) {                          if (repainterTimer.isRunning()) {
631  //                              repainterTimer.stop();                                  repainterTimer.stop();
632  //                              updateFinalImage();                                  updateFinalImage();
633  //                              repaint();                                  repaint();
634  //                      }                          }
635                  }                  }
636    
637                  // wenn manueller Cursor gesetzt ist, dann diesen verwenden (unabhaengig                  // wenn manueller Cursor gesetzt ist, dann diesen verwenden (unabhaengig
# Line 1109  public class XMapPane extends JPanel imp Line 1115  public class XMapPane extends JPanel imp
1115    
1116          public static final int NONE = -123;          public static final int NONE = -123;
1117    
1118          private RenderingExecutor localExecuter;          private RenderingExecutor localExecuter = new RenderingExecutor(this, 150l);
1119    
1120          private BufferedImage finalImage;          private BufferedImage finalImage;
1121    
# Line 1196  public class XMapPane extends JPanel imp Line 1202  public class XMapPane extends JPanel imp
1202                  if (localExecuter != null)                  if (localExecuter != null)
1203                          localExecuter.cancelTask();                          localExecuter.cancelTask();
1204                  requestStartRendering = true;                  requestStartRendering = true;
1205                    
1206          }          }
1207    
1208          /**          /**
# Line 1346  public class XMapPane extends JPanel imp Line 1353  public class XMapPane extends JPanel imp
1353                  finalG.setBackground(getMapBackgroundColor());                  finalG.setBackground(getMapBackgroundColor());
1354    
1355                  // Render the two map images first, into the preFinalImage                  // Render the two map images first, into the preFinalImage
1356                    if (bgExecuter != null)
1357                  {                  {
1358                          final Graphics2D preFinalG = (Graphics2D) getPreFinalImage()                          final Graphics2D preFinalG = (Graphics2D) getPreFinalImage()
1359                                          .getGraphics();                                          .getGraphics();
# Line 1357  public class XMapPane extends JPanel imp Line 1365  public class XMapPane extends JPanel imp
1365                          // // Draw the local layers image                          // // Draw the local layers image
1366                          preFinalG.drawImage(getLocalImage(), 0, 0, null);                          preFinalG.drawImage(getLocalImage(), 0, 0, null);
1367                          preFinalG.dispose();                          preFinalG.dispose();
1368                    } else {
1369                            preFinalImage = getLocalImage();
1370                  }                  }
1371    
1372                  finalG.drawImage(getPreFinalImage(), imageOrigin.x, imageOrigin.y,                  finalG.drawImage(getPreFinalImage(), imageOrigin.x, imageOrigin.y,
# Line 1416  public class XMapPane extends JPanel imp Line 1426  public class XMapPane extends JPanel imp
1426                  if (!isWellDefined())                  if (!isWellDefined())
1427                          return;                          return;
1428    
1429                  if (bgExecuter != null)                  if (bgExecuter != null){
1430                          // Stop all renderers                          // Stop all renderers
1431                          bgExecuter.cancelTask();                          bgExecuter.cancelTask();
1432                    }
1433    
1434                  if (localExecuter != null)                  if (localExecuter != null){
1435                          localExecuter.cancelTask();                          localExecuter.cancelTask();
1436                    }
1437                    
1438                  Rectangle curPaintArea = getVisibleRect();                  Rectangle curPaintArea = getVisibleRect();
1439    
# Line 1436  public class XMapPane extends JPanel imp Line 1448  public class XMapPane extends JPanel imp
1448                          LOGGER.debug("starting bg renderer:");                          LOGGER.debug("starting bg renderer:");
1449                          // /* System.out.println("rendering"); */                          // /* System.out.println("rendering"); */
1450                          final GTRenderer createGTRenderer = GTUtil.createGTRenderer(                          final GTRenderer createGTRenderer = GTUtil.createGTRenderer(
1451                                          localContext, getRendererHints());                                          bgContext, getRendererHints());
1452                          createGTRenderer.setJava2DHints(getJava2dHints());                          createGTRenderer.setJava2DHints(getJava2dHints());
1453                          bgExecuter.submit(getBgContext().getAreaOfInterest(), curPaintArea,                          bgExecuter.submit(getBgContext().getAreaOfInterest(), curPaintArea,
1454                                          (Graphics2D) getBgImage().getGraphics(), createGTRenderer);                                          (Graphics2D) getBgImage().getGraphics(), createGTRenderer);
1455                  }                  }
1456    
1457                  if (getContext() != null) {                  if (getContext() != null) {
1458                          localExecuter = new RenderingExecutor(this, 150l);  //                      localExecuter = new RenderingExecutor(this, 150l);
1459                          LOGGER.debug("starting local renderer:");                          LOGGER.debug("starting local renderer:");
1460                          final GTRenderer createGTRenderer = GTUtil.createGTRenderer(                          final GTRenderer createGTRenderer = GTUtil.createGTRenderer(
1461                                          localContext, getRendererHints());                                          localContext, getRendererHints());
# Line 1522  public class XMapPane extends JPanel imp Line 1534  public class XMapPane extends JPanel imp
1534           * @see MapPaneListener#onRenderingStopped(org.geotools.swing.event.MapPaneEvent)           * @see MapPaneListener#onRenderingStopped(org.geotools.swing.event.MapPaneEvent)
1535           */           */
1536          public void onRenderingCompleted() {          public void onRenderingCompleted() {
1537                    repainterTimer.stop();
1538                  updateFinalImage();                  updateFinalImage();
1539                  repaint();                  repaint();
1540          }          }
# Line 1534  public class XMapPane extends JPanel imp Line 1547  public class XMapPane extends JPanel imp
1547           * @see MapPaneListener#onRenderingStopped(org.geotools.swing.event.MapPaneEvent)           * @see MapPaneListener#onRenderingStopped(org.geotools.swing.event.MapPaneEvent)
1548           */           */
1549          public void onRenderingCancelled() {          public void onRenderingCancelled() {
1550                    repainterTimer.stop();
1551                  LOGGER.debug("Rendering cancelled");                  LOGGER.debug("Rendering cancelled");
1552          }          }
1553    
# Line 1548  public class XMapPane extends JPanel imp Line 1562  public class XMapPane extends JPanel imp
1562           * @see MapPaneListener#onRenderingStopped(org.geotools.swing.event.MapPaneEvent)           * @see MapPaneListener#onRenderingStopped(org.geotools.swing.event.MapPaneEvent)
1563           */           */
1564          public void onRenderingFailed(Exception renderingError) {          public void onRenderingFailed(Exception renderingError) {
1565                    repainterTimer.stop();
1566                  LOGGER.warn("Rendering failed", renderingError);                  LOGGER.warn("Rendering failed", renderingError);
1567                  updateFinalImage();                  updateFinalImage();
1568                  repaint();                  repaint();
1569    
1570          }          }
1571    
         /**  
          * Called when a rendering request has been rejected. This will be common,  
          * such as when the user pauses during drag-resizing fo the map pane. The  
          * base implementation does nothing. It is provided for sub-classes to  
          * override if required.  
          */  
         public void onRenderingRejected() {  
                 LOGGER.warn("Rendering rejected");  
                 repaint();  
         }  
1572    
1573          @Override          @Override
1574          public void propertyChange(final PropertyChangeEvent evt) {          public void propertyChange(final PropertyChangeEvent evt) {
# Line 1930  public class XMapPane extends JPanel imp Line 1935  public class XMapPane extends JPanel imp
1935                  if (isDisposed())                  if (isDisposed())
1936                          return;                          return;
1937                                    
1938                    
1939                  setPainting(false);                  setPainting(false);
1940    
1941                  disposed = true;                  disposed = true;
1942    
1943                  if (bgExecuter != null) {                  if (bgExecuter != null) {
1944                          bgExecuter.cancelTask();                          bgExecuter.cancelTask();
1945                            bgExecuter.dispose();
1946                  }                  }
1947    
1948                  if (localExecuter != null) {                  if (localExecuter != null) {
1949                          localExecuter.cancelTask();                          localExecuter.cancelTask();
1950                            localExecuter.dispose();
1951                  }                  }
1952    
1953                  startRenderThreadsTimer.stop();                  startRenderThreadsTimer.stop();

Legend:
Removed from v.523  
changed lines
  Added in v.524

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26