2010-06-11 21 views
8

Existe-t-il un moyen de connaître le type d'un projet sélectionné? Je voudrais faire des actions spécifiques en fonction du type de projet comme un projet J2SE.Comment puis-je obtenir un type de projet sur Netbeans Platform?

ci-dessous est la seule façon que je trouve à faire:

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; 

}} 

Répondre

2

simple, nouvelle -> Action -> conditionaly activé (Projet) et il est tout.

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 
} 
} 

Jirka