2010-06-11 47 views
8

有没有办法知道所选项目的类型?我想根据项目类型做一些特定的操作,如J2SE项目。如何在Netbeans平台上获得项目类型?

下面是我发现这样做的唯一方法:

public final class MyAction extends CookieAction { 

@Override 
public boolean isEnabled() { 
    if(this.getActivatedNodes() == null || this.getActivatedNodes().length != 1) { 
     return false; 
    } 

    Lookup lookup = this.getActivatedNodes()[0].getLookup(); 

    // gets the selected project 
    Project currentProject = lookup.lookup(Project.class); 

    // checks if the selected project is a J2SE Project or a Maven Project 
    if(currentProject != null && (currentProject.getClass().getSimpleName().equals("J2SEProject") 
      || currentProject.getClass().getSimpleName().equals("NbMavenProjectImpl"))) { 
     return true; 
    } 

    return false; 

}} 

回答

2

简单的新 - >操作 - > conditionaly启用(项目),它是一切。

package project.action; 

import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import org.netbeans.api.project.Project; 

import org.openide.awt.ActionRegistration; 
import org.openide.awt.ActionReference; 
import org.openide.awt.ActionReferences; 
import org.openide.awt.ActionID; 
import org.openide.util.NbBundle.Messages; 

@ActionID(category = "Build", 
id = "project.action.SomeAction") 
@ActionRegistration(displayName = "#CTL_SomeAction") 
@ActionReferences({ 
    @ActionReference(path = "Menu/File", position = 0) 
}) 
@Messages("CTL_SomeAction=SomeAction") 
public final class SomeAction implements ActionListener { 

private final Project context; 

public SomeAction(Project context) { // this is enable !! 
    this.context = context; 
} 

public void actionPerformed(ActionEvent ev) { 
    // TODO use context 
} 
} 

尔卡