45,46c45 < implements DrawingView, < DNDInterface, java.awt.dnd.Autoscroll { --- > implements DrawingView, DNDInterface, java.awt.dnd.Autoscroll { 82c81,86 < private Dimension fViewSize; --- > /* > * ricardo_padilha: this was removed because it interferes with proper > * handling of sizes in Swing. For example, it prevents JScrollPane to receive > * events about the changes of preferred and minimum sizes. > */ > //private Dimension fViewSize; 147,148c151,153 < fViewSize = new Dimension(width,height); < setSize(width, height); --- > // ricardo_padilha: changed from setSize(int, int) because it is not > // JScrollPane-friendly. > setPreferredSize(new Dimension(width, height)); 279c284,288 < public FigureEnumeration insertFigures(FigureEnumeration fe, int dx, int dy, boolean bCheck) { --- > public FigureEnumeration insertFigures( > FigureEnumeration fe, > int dx, > int dy, > boolean bCheck) { 291,292c300 < } < else if (figure != null) { --- > } else if (figure != null) { 305,307c313,315 < if (figureExists(sf, drawing().figures()) && < figureExists(ef, drawing().figures()) && < (!bCheck || cf.canConnect(sf, ef))) { --- > if (figureExists(sf, drawing().figures()) > && figureExists(ef, drawing().figures()) > && (!bCheck || cf.canConnect(sf, ef))) { 352,353c360 < if (cf.startFigure().includes(inFigure) || < cf.endFigure().includes(inFigure)) { --- > if (cf.startFigure().includes(inFigure) || cf.endFigure().includes(inFigure)) { 363,376d369 < * Gets the minimum dimension of the drawing. < */ < public Dimension getMinimumSize() { < return fViewSize; < } < < /** < * Gets the preferred dimension of the drawing.. < */ < public Dimension getPreferredSize() { < return getMinimumSize(); < } < < /** 411c404,406 < FigureEnumeration figures = drawing().figures(); --- > > // why do this? why not just take the vector fSelection? > /*FigureEnumeration figures = drawing().figures(); 418c413,415 < } --- > }*/ > > result.addAll(fSelection); 484,485c481 < } < else { --- > } else { 649,650c645 < } < else { --- > } else { 820c815,816 < fSelection = CollectionsFactory.current().createList(); // could use lazy initialization instead --- > fSelection = CollectionsFactory.current().createList(); > // could use lazy initialization instead 828a825 > Dimension v = getPreferredSize(); 830,833c827,830 < if (fViewSize.height < d.height || fViewSize.width < d.width) { < fViewSize.height = d.height + SCROLL_OFFSET; < fViewSize.width = d.width + SCROLL_OFFSET; < setSize(fViewSize); --- > if (v.height < d.height || v.width < d.width) { > v.height = d.height + SCROLL_OFFSET; > v.width = d.width + SCROLL_OFFSET; > setPreferredSize(v); 842d838 < FigureEnumeration fe = drawing().figures(); 843a840,843 > // ricardo_padilha: this test had to be introduced because a drawing view > // can be assigned a null drawing (see setDrawing() ). > if (drawing() != null) { > FigureEnumeration fe = drawing().figures(); 848a849 > } 864,865c865,868 < public void keyTyped(KeyEvent e) {} < public void keyReleased(KeyEvent e) {} --- > public void keyTyped(KeyEvent e) { > } > public void keyReleased(KeyEvent e) { > } 887d889 < 922c924,925 < JOptionPane.showMessageDialog(this, --- > JOptionPane.showMessageDialog( > this, 924c927,928 < "Error", JOptionPane.ERROR_MESSAGE); --- > "Error", > JOptionPane.ERROR_MESSAGE); 940,941c944 < } < catch (Throwable t) { --- > } catch (Throwable t) { 955,956c958 < } < catch (Throwable t) { --- > } catch (Throwable t) { 972,973c974 < } < catch (Throwable t) { --- > } catch (Throwable t) { 985,986c986 < } < catch (Throwable t) { --- > } catch (Throwable t) { 1011,1013c1011,1015 < } < else if ((code == KeyEvent.VK_DOWN) || (code == KeyEvent.VK_UP) < || (code == KeyEvent.VK_RIGHT) || (code == KeyEvent.VK_LEFT)) { --- > } else if ( > (code == KeyEvent.VK_DOWN) > || (code == KeyEvent.VK_UP) > || (code == KeyEvent.VK_RIGHT) > || (code == KeyEvent.VK_LEFT)) { 1015,1016c1017 < } < else { --- > } else {