// Path: node-projects/src/main/java/org/netbeans/modules/nodejs/api/NodeJSExecutable.java
// @Messages("UNKNOWN_VERSION=(unknown version)")
// public abstract class NodeJSExecutable {
// 
//     public String name () {
//         return getClass().getSimpleName();
//     }
//     
//     public String displayName() {
//         return name();
//     }
// 
//     public boolean isValid () {
//         return true;
//     }
//     
//     public String version() {
//         return Bundle.UNKNOWN_VERSION();
//     }
//     
//     public abstract String path();
//     
//     public ExecutionDescriptor.LineConvertorFactory newLineConverter() {
//         return new LineConverter(this.getSourcesLocation());
//     }
// 
//     public static NodeJSExecutable getDefault () {
//         NodeJSExecutable exe = Lookup.getDefault().lookup( NodeJSExecutable.class );
//         if (exe == null) {
//             exe = new NodeJSExecutable.DummyExectable();
//         }
//         return exe;
//     }
// 
//     public final Future<Integer>  run ( FileObject targetFile, String args ) throws IOException {
//         if (!targetFile.isValid() || !targetFile.isData()) {
//             StatusDisplayer.getDefault().setStatusText( NbBundle.getMessage(
//                     NodeJSExecutable.class, "MSG_CANNOT_RUN", targetFile.getPath() ) );
//             Toolkit.getDefaultToolkit().beep();
//         }
//         assert !EventQueue.isDispatchThread();
//         LifecycleManager.getDefault().saveAll();
//         return doRun( targetFile, args );
//     }
// 
//     protected abstract Future<Integer> doRun ( FileObject file, String args ) throws IOException;
// 
//     public abstract String getSourcesLocation ();
// 
//     public abstract void stopRunningProcesses ( Lookup.Provider owner );
// 
//     static final class DummyExectable extends NodeJSExecutable {
//         @Override
//         protected Future<Integer> doRun ( FileObject file, String args ) throws IOException {
//             return new Future<Integer>() {
//                 @Override
//                 public boolean cancel ( boolean bln ) {
//                     return false;
//                 }
// 
//                 @Override
//                 public boolean isCancelled () {
//                     return false;
//                 }
// 
//                 @Override
//                 public boolean isDone () {
//                     return true;
//                 }
// 
//                 @Override
//                 public Integer get () throws InterruptedException, ExecutionException {
//                     return 1;
//                 }
// 
//                 @Override
//                 public Integer get ( long l, TimeUnit tu ) throws InterruptedException, ExecutionException, TimeoutException {
//                     return 1;
//                 }
//             };
//         }
// 
//         @Override
//         public String getSourcesLocation () {
//             return null;
//         }
// 
//         @Override
//         public void stopRunningProcesses ( Lookup.Provider owner ) {
// 
//         }
// 
//         @Override
//         public String path () {
//             return "";
//         }
//     }
// }


import java.awt.Color;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.UIManager;
import org.netbeans.modules.nodejs.api.NodeJSExecutable;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.netbeans.modules.nodejs.platform;


/**
 *
 * @author Tim Boudreau
 */
public final class PlatformListCellRenderer extends DefaultListCellRenderer {

    @Override
    public Component getListCellRendererComponent ( JList<?> jlist, Object o, int i, boolean bln, boolean bln1 ) {
// Path: node-projects/src/main/java/org/netbeans/modules/nodejs/api/NodeJSExecutable.java
// @Messages("UNKNOWN_VERSION=(unknown version)")
// public abstract class NodeJSExecutable {
// 
//     public String name () {
//         return getClass().getSimpleName();
//     }
//     
//     public String displayName() {
//         return name();
//     }
// 
//     public boolean isValid () {
//         return true;
//     }
//     
//     public String version() {
//         return Bundle.UNKNOWN_VERSION();
//     }
//     
//     public abstract String path();
//     
//     public ExecutionDescriptor.LineConvertorFactory newLineConverter() {
//         return new LineConverter(this.getSourcesLocation());
//     }
// 
//     public static NodeJSExecutable getDefault () {
//         NodeJSExecutable exe = Lookup.getDefault().lookup( NodeJSExecutable.class );
//         if (exe == null) {
//             exe = new NodeJSExecutable.DummyExectable();
//         }
//         return exe;
//     }
// 
//     public final Future<Integer>  run ( FileObject targetFile, String args ) throws IOException {
//         if (!targetFile.isValid() || !targetFile.isData()) {
//             StatusDisplayer.getDefault().setStatusText( NbBundle.getMessage(
//                     NodeJSExecutable.class, "MSG_CANNOT_RUN", targetFile.getPath() ) );
//             Toolkit.getDefaultToolkit().beep();
//         }
//         assert !EventQueue.isDispatchThread();
//         LifecycleManager.getDefault().saveAll();
//         return doRun( targetFile, args );
//     }
// 
//     protected abstract Future<Integer> doRun ( FileObject file, String args ) throws IOException;
// 
//     public abstract String getSourcesLocation ();
// 
//     public abstract void stopRunningProcesses ( Lookup.Provider owner );
// 
//     static final class DummyExectable extends NodeJSExecutable {
//         @Override
//         protected Future<Integer> doRun ( FileObject file, String args ) throws IOException {
//             return new Future<Integer>() {
//                 @Override
//                 public boolean cancel ( boolean bln ) {
//                     return false;
//                 }
// 
//                 @Override
//                 public boolean isCancelled () {
//                     return false;
//                 }
// 
//                 @Override
//                 public boolean isDone () {
//                     return true;
//                 }
// 
//                 @Override
//                 public Integer get () throws InterruptedException, ExecutionException {
//                     return 1;
//                 }
// 
//                 @Override
//                 public Integer get ( long l, TimeUnit tu ) throws InterruptedException, ExecutionException, TimeoutException {
//                     return 1;
//                 }
//             };
//         }
// 
//         @Override
//         public String getSourcesLocation () {
//             return null;
//         }
// 
//         @Override
//         public void stopRunningProcesses ( Lookup.Provider owner ) {
// 
//         }
// 
//         @Override
//         public String path () {
//             return "";
//         }
//     }
// }


// Path: node-projects/src/main/java/org/netbeans/modules/nodejs/platform/PlatformListCellRenderer.java
import java.awt.Color;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.UIManager;
import org.netbeans.modules.nodejs.api.NodeJSExecutable;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.netbeans.modules.nodejs.platform;


/**
 *
 * @author Tim Boudreau
 */
public final class PlatformListCellRenderer extends DefaultListCellRenderer {

    @Override
    public Component getListCellRendererComponent ( JList<?> jlist, Object o, int i, boolean bln, boolean bln1 ) {
        if (o instanceof NodeJSExecutable) {