# This patch file was generated by NetBeans IDE # This patch can be applied using context Tools: Apply Diff Patch action on respective folder. # It uses platform neutral UTF-8 encoding. # Above lines and this line are ignored by the patching process. Index: ide/welcome/src/org/netbeans/modules/welcome/content/RecentProjectsPanel.java --- ide/welcome/src/org/netbeans/modules/welcome/content/RecentProjectsPanel.java Base (1.2) +++ ide/welcome/src/org/netbeans/modules/welcome/content/RecentProjectsPanel.java Locally Modified (Based On 1.2) @@ -20,6 +20,7 @@ package org.netbeans.modules.welcome.content; import java.awt.BorderLayout; +import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; @@ -45,10 +46,9 @@ * * @author S. Aubrecht */ -public class RecentProjectsPanel extends JPanel implements Constants { +public class RecentProjectsPanel extends JPanel implements Constants, Runnable, PropertyChangeListener { private static final int MAX_PROJECTS = 10; - private PropertyChangeListener changeListener; /** Creates a new instance of RecentProjectsPanel */ public RecentProjectsPanel() { @@ -61,31 +61,33 @@ super.addNotify(); removeAll(); add( rebuildContent(), BorderLayout.CENTER ); - RecentProjects.getDefault().addPropertyChangeListener( getPropertyChangeListener() ); + RecentProjects.getDefault().addPropertyChangeListener( this ); + //With deferred project loading, need to listen on this as well + OpenProjects.getDefault().addPropertyChangeListener( this ); } @Override public void removeNotify() { super.removeNotify(); - RecentProjects.getDefault().removePropertyChangeListener( getPropertyChangeListener() ); + RecentProjects.getDefault().removePropertyChangeListener( this ); } - private PropertyChangeListener getPropertyChangeListener() { - if( null == changeListener ) { - changeListener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { - if( RecentProjects.PROP_RECENT_PROJECT_INFO.equals( e.getPropertyName() ) ) { + System.err.println("PROP CHANGE " + e.getPropertyName() + + " from " + e.getSource()); + if( RecentProjects.PROP_RECENT_PROJECT_INFO.equals( e.getPropertyName() ) || + OpenProjects.PROPERTY_OPEN_PROJECTS.equals (e.getPropertyName() )) { + EventQueue.invokeLater(this); + } + } + + public void run() { removeAll(); add( rebuildContent(), BorderLayout.CENTER ); invalidate(); revalidate(); repaint(); } - } - }; - } - return changeListener; - } private JPanel rebuildContent() { JPanel panel = new JPanel( new GridBagLayout() );