2010-06-11 49 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 
} 
} 

爾卡