Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4059619

Compiler hangs (no output) on given source code (anon. inner classes + serial?)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.1.2
    • tools
    • None
    • x86
    • windows_nt



      Name: tb29552 Date: 06/18/97


      Compiling the given source code hangs the compiler (no output,
      no nothing!). Will stay hung for hours.

      Additional classes can be provided upon request.

      ---8<---

      import java.awt.*;
      import java.awt.event.*;
      import java.util.*;
      import java.io.*;

      class DiagramComponent extends Canvas implements Serializable
      {
        Vector views;
        boolean tracking, sized;
        int dX, dY, cViews;
        FontMetrics fm;
        ClasView selected;

        public DiagramComponent()
        {
          views = new Vector();
          tracking = false;
          selected = null;
          sized = false;

          cViews = 1;

          addMouseListener( new MouseAdapter() {

            public void mousePressed( MouseEvent e ) {

      int x = e.getX();
      int y = e.getY();

      boolean foundOne = false;

      for ( int i = views.size() - 1; i >= 0; i-- ) {
      ClasView cv = (ClasView) views.elementAt(i);

      if ( cv.contains( x, y ) ) {
      select( cv );

      foundOne = true;
      break;
      }
      }

      if ( !foundOne ) {
      if ( selected != null ) unselect( selected );
      }
      else {
      tracking = true;

      dX = selected.x - x;
      dY = selected.y - y;

      repaint( selected.x, selected.y, selected.width, selected.height );
      }
            }

            public void mouseReleased( MouseEvent e ) {

      if ( tracking ) {
      tracking = false;
      }
            }
          } );

          addMouseMotionListener( new MouseMotionAdapter() {
            
            public void mouseDragged( MouseEvent e ) {

      int x = e.getX();
      int y = e.getY();

      if ( tracking && selected != null ) {
      Rectangle old = selected.bounds();
      Rectangle vGap, hGap;

      selected.setLocation( x + dX, y + dY );

      Graphics g = getGraphics( );

      g.copyArea( old.x, old.y, old.width, old.height, (selected.x - old.x),
      ( selected.y - old.y ) );
            
      g.dispose();

      vGap = new Rectangle( );

      vGap.x = ( selected.x < old.x ) ? selected.x + selected.width : old.x;
      vGap.y = ( selected.y < old.y ) ? selected.y : old.y;

      vGap.width = Math.abs( selected.x - old.x );
      vGap.height = Math.abs( selected.y - old.y ) + selected.height;

      hGap = new Rectangle( );

      hGap.x = ( selected.x < old.x ) ? selected.x : old.x;
      hGap.y = ( selected.y < old.y ) ? selected.y + selected.height : old.y;

      hGap.width = selected.width;
      hGap.height = Math.abs( selected.y - old.y );

      repaint( vGap.x, vGap.y, vGap.width, vGap.height );
      repaint( hGap.x, hGap.y, hGap.width, hGap.height );
      }
            }
          } );

        }
          
        public void addNewClas( String newName )
        {
          Clas theClas = new Clas( newName );
          ClasView cv = new ClasView( theClas );

          views.addElement( cv );

          if ( sized )
          {
            cv.resize( cv.size( fm ) );

            Dimension sz = getSize();
            Dimension vsz = cv.size();
            
            cv.setLocation( ( sz.width - vsz.width ) / 2, ( sz.height - vsz.height ) / 2 );

            repaint( cv.x, cv.y, cv.width, cv.height );
          }

          select( cv );
        }
        
        public void addNewClas( )
        {
          addNewClas( "Class" + cViews++ );
        }
        
        public void delete( )
        {
          if ( selected != null )
          {
            ClasView cv = selected;

            unselect( cv );
            
            views.removeElement( cv );

            repaint( cv.x, cv.y, cv.width, cv.height );
          }
        }
         
        public void paint( Graphics g )
        {
          if ( !sized )
          {
             getSizes( g );
             sized = true;
          }
          
          Rectangle clip = g.getClipBounds();

          for ( int i = 0; i < views.size(); i++ )
          {
            ClasView cv = (ClasView) views.elementAt( i );

            if ( cv.intersects( clip ) )
            {
              g.translate( cv.x, cv.y );

              cv.paint( g );

              g.translate( -cv.x, -cv.y );
            }
          }
        }

        private void getSizes( Graphics g )
        {
          fm = g.getFontMetrics();

          for ( Enumeration e = views.elements(); e.hasMoreElements(); )
          {
            ClasView cv = (ClasView) e.nextElement();
            
            cv.resize( cv.size( fm ) );
          }
        }

        private void select( ClasView cv )
        {
          if ( selected != null ) unselect( selected );

          selected = cv;
          
          views.removeElement( cv );
          views.addElement( cv );

          cv.selected = true;
        }

        private void unselect( ClasView cv )
        {
          cv.selected = false;
          selected = null;
          repaint( cv.x, cv.y, cv.width, cv.height );
        }

      }



      company - End of the Continent Software, Inc. , email - ###@###.###
      ======================================================================

            wmaddoxsunw William Maddox (Inactive)
            tbell Tim Bell
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: