Lines 42-48
Link Here
|
42 |
package org.netbeans.modules.project.ui.actions; |
42 |
package org.netbeans.modules.project.ui.actions; |
43 |
|
43 |
|
44 |
import java.awt.Dialog; |
44 |
import java.awt.Dialog; |
45 |
import java.awt.EventQueue; |
|
|
46 |
import java.awt.Toolkit; |
45 |
import java.awt.Toolkit; |
47 |
import java.awt.event.MouseEvent; |
46 |
import java.awt.event.MouseEvent; |
48 |
import java.beans.PropertyChangeEvent; |
47 |
import java.beans.PropertyChangeEvent; |
Lines 54-60
Link Here
|
54 |
import javax.swing.event.ChangeEvent; |
53 |
import javax.swing.event.ChangeEvent; |
55 |
import javax.swing.event.ChangeListener; |
54 |
import javax.swing.event.ChangeListener; |
56 |
import org.netbeans.api.project.Project; |
55 |
import org.netbeans.api.project.Project; |
57 |
import org.netbeans.api.project.ProjectManager; |
|
|
58 |
import org.netbeans.api.project.ProjectUtils; |
56 |
import org.netbeans.api.project.ProjectUtils; |
59 |
import org.netbeans.api.project.ui.OpenProjects; |
57 |
import org.netbeans.api.project.ui.OpenProjects; |
60 |
import org.netbeans.modules.project.ui.NoMainProjectWarning; |
58 |
import org.netbeans.modules.project.ui.NoMainProjectWarning; |
Lines 69-74
Link Here
|
69 |
import org.openide.util.Lookup; |
67 |
import org.openide.util.Lookup; |
70 |
import org.openide.util.Mutex; |
68 |
import org.openide.util.Mutex; |
71 |
import org.openide.util.NbBundle; |
69 |
import org.openide.util.NbBundle; |
|
|
70 |
import org.openide.util.RequestProcessor; |
72 |
import org.openide.util.WeakListeners; |
71 |
import org.openide.util.WeakListeners; |
73 |
|
72 |
|
74 |
/** Invokes command on the main project. |
73 |
/** Invokes command on the main project. |
Lines 80-85
Link Here
|
80 |
private String command; |
79 |
private String command; |
81 |
private ProjectActionPerformer performer; |
80 |
private ProjectActionPerformer performer; |
82 |
private String name; |
81 |
private String name; |
|
|
82 |
static final RequestProcessor RP = new RequestProcessor(MainProjectAction.class); |
83 |
|
83 |
|
84 |
public MainProjectAction(ProjectActionPerformer performer, String name, Icon icon) { |
84 |
public MainProjectAction(ProjectActionPerformer performer, String name, Icon icon) { |
85 |
this( null, performer, name, icon ); |
85 |
this( null, performer, name, icon ); |
Lines 178-192
Link Here
|
178 |
public void propertyChange( PropertyChangeEvent evt ) { |
178 |
public void propertyChange( PropertyChangeEvent evt ) { |
179 |
if ( evt.getPropertyName() == OpenProjectList.PROPERTY_MAIN_PROJECT || |
179 |
if ( evt.getPropertyName() == OpenProjectList.PROPERTY_MAIN_PROJECT || |
180 |
evt.getPropertyName() == OpenProjectList.PROPERTY_OPEN_PROJECTS ) { |
180 |
evt.getPropertyName() == OpenProjectList.PROPERTY_OPEN_PROJECTS ) { |
181 |
Mutex.EVENT.readAccess(new Runnable() { |
181 |
refreshView(null); |
182 |
public void run() { |
|
|
183 |
refreshView(null); |
184 |
} |
185 |
}); |
186 |
} |
182 |
} |
187 |
} |
183 |
} |
188 |
|
184 |
|
189 |
private void refreshView(Lookup context) { |
185 |
private void refreshView(final Lookup context) { |
|
|
186 |
RP.post(new Runnable() { |
187 |
public @Override void run() { |
190 |
|
188 |
|
191 |
Project p = OpenProjectList.getDefault().getMainProject(); |
189 |
Project p = OpenProjectList.getDefault().getMainProject(); |
192 |
Lookup theContext = context; |
190 |
Lookup theContext = context; |
Lines 211-238
Link Here
|
211 |
} |
209 |
} |
212 |
|
210 |
|
213 |
boolean noOpenProject = OpenProjectList.getDefault ().getOpenProjects ().length == 0; |
211 |
boolean noOpenProject = OpenProjectList.getDefault ().getOpenProjects ().length == 0; |
|
|
212 |
Project mainProject = OpenProjectList.getDefault().getMainProject(); |
213 |
|
214 |
final String presenterName = getPresenterName(name, mainProject, p); |
215 |
final boolean enabled; |
214 |
|
216 |
|
215 |
if ( command == null ) { |
217 |
if ( command == null ) { |
216 |
enable( performer.enable( p ) ); |
218 |
enabled = performer.enable(p); |
217 |
} |
219 |
} |
218 |
else { |
220 |
else { |
219 |
if ( p == null ) { |
221 |
if ( p == null ) { |
220 |
enable(false); |
222 |
enabled = false; |
221 |
} |
223 |
} |
222 |
else if ( ActionsUtil.commandSupported ( p, command, Lookup.EMPTY ) ) { |
224 |
else if ( ActionsUtil.commandSupported ( p, command, Lookup.EMPTY ) ) { |
223 |
enable( !noOpenProject ); |
225 |
enabled = !noOpenProject; |
224 |
} |
226 |
} |
225 |
else { |
227 |
else { |
226 |
enable( false ); |
228 |
enabled = false; |
227 |
} |
229 |
} |
228 |
} |
230 |
} |
229 |
|
231 |
|
230 |
Project mainProject = OpenProjectList.getDefault().getMainProject(); |
232 |
Mutex.EVENT.writeAccess(new Runnable() { |
231 |
|
233 |
public void run() { |
232 |
String presenterName = getPresenterName(name, mainProject, p); |
|
|
233 |
putValue("menuText", presenterName); |
234 |
putValue("menuText", presenterName); |
234 |
putValue(SHORT_DESCRIPTION, Actions.cutAmpersand(presenterName)); |
235 |
putValue(SHORT_DESCRIPTION, Actions.cutAmpersand(presenterName)); |
235 |
|
236 |
setEnabled(enabled); |
|
|
237 |
} |
238 |
}); |
239 |
} |
240 |
}); |
236 |
} |
241 |
} |
237 |
|
242 |
|
238 |
private String getPresenterName(String name, Project mPrj, Project cPrj) { |
243 |
private String getPresenterName(String name, Project mPrj, Project cPrj) { |
Lines 253-270
Link Here
|
253 |
return toReturn; |
258 |
return toReturn; |
254 |
} |
259 |
} |
255 |
|
260 |
|
256 |
private void enable(final boolean enable) { |
|
|
257 |
if (!EventQueue.isDispatchThread()) { |
258 |
EventQueue.invokeLater(new Runnable() { |
259 |
public void run() { |
260 |
setEnabled(enable); |
261 |
} |
262 |
}); |
263 |
} else { |
264 |
setEnabled(enable); |
265 |
} |
266 |
} |
267 |
|
268 |
private boolean showNoMainProjectWarning(Project[] projects, String action) { |
261 |
private boolean showNoMainProjectWarning(Project[] projects, String action) { |
269 |
boolean canceled; |
262 |
boolean canceled; |
270 |
final JButton okButton = new JButton (NbBundle.getMessage (NoMainProjectWarning.class, "LBL_NoMainClassWarning_ChooseMainProject_OK")); // NOI18N |
263 |
final JButton okButton = new JButton (NbBundle.getMessage (NoMainProjectWarning.class, "LBL_NoMainClassWarning_ChooseMainProject_OK")); // NOI18N |