1 19 20 package org.netbeans.modules.project.ui.actions; 21 22 import java.beans.PropertyChangeEvent ; 23 import java.beans.PropertyChangeListener ; 24 import javax.swing.Action ; 25 import javax.swing.JMenuItem ; 26 import org.netbeans.api.project.Project; 27 import org.netbeans.modules.project.ui.OpenProjectList; 28 import org.netbeans.modules.project.ui.ProjectUtilities; 29 import org.openide.util.Lookup; 30 import org.openide.util.NbBundle; 31 import org.openide.util.WeakListeners; 32 import org.openide.util.actions.Presenter; 33 34 36 public class CloseProject extends ProjectAction implements PropertyChangeListener , Presenter.Popup { 37 38 private static final String namePattern = NbBundle.getMessage( CloseProject.class, "LBL_CloseProjectAction_Name" ); private static final String namePatternPopup = NbBundle.getMessage( CloseProject.class, "LBL_CloseProjectAction_Popup_Name" ); 41 private String popupName; 42 43 private PropertyChangeListener wpcl; 44 45 46 public CloseProject() { 47 this( null ); 48 } 49 50 public CloseProject( Lookup context ) { 51 super( (String )null, namePattern, null, context ); 52 wpcl = WeakListeners.propertyChange( this, OpenProjectList.getDefault() ); 53 OpenProjectList.getDefault().addPropertyChangeListener( wpcl ); 54 refresh( getLookup() ); 55 } 56 57 protected void actionPerformed( Lookup context ) { 58 Project[] projects = ActionsUtil.getProjectsFromLookup( context, null ); 59 OpenProjectList.getDefault().close( projects, true ); 61 } 62 63 public void refresh( Lookup context ) { 64 65 super.refresh( context ); 66 67 Project[] projects = ActionsUtil.getProjectsFromLookup( context, null ); 68 if ( projects.length == 0 || !OpenProjectList.getDefault().isOpen( projects[0] ) ) { 70 setEnabled( false ); 71 popupName = ActionsUtil.formatProjectSensitiveName( namePatternPopup, new Project[0] ); 73 } 74 else { 75 setEnabled( true ); 76 popupName = ActionsUtil.formatProjectSensitiveName( namePatternPopup, projects ); 78 } 79 } 80 81 public Action createContextAwareInstance( Lookup actionContext ) { 82 return new CloseProject( actionContext ); 83 } 84 85 public void propertyChange( PropertyChangeEvent evt ) { 86 refresh( getLookup() ); 87 } 88 89 91 public JMenuItem getPopupPresenter() { 92 JMenuItem popupPresenter = new JMenuItem ( this ); 93 94 popupPresenter.setIcon( null ); 95 popupPresenter.setText( popupName ); 96 97 return popupPresenter; 98 } 99 100 } 101 | Popular Tags |