Monday Sep 24, 2012

Deploy from NetBeans IDE by Twisting an External Dial

Via this code in a NetBeans module, i.e., a registered NetBeans ModuleInstall class, you can twist the Tinkerforge Rotary Poti Bricklet to deploy the current application in the IDE:
import com.tinkerforge.BrickMaster;
import com.tinkerforge.BrickletLCD20x4;
import com.tinkerforge.BrickletRotaryPoti;
import com.tinkerforge.IPConnection;
import javax.swing.Action;
import javax.swing.JMenuItem;
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectUtils;
import org.openide.awt.Actions;
import org.openide.modules.ModuleInstall;
import org.openide.util.Utilities;

public class Installer extends ModuleInstall {

    private static final String HOST = "localhost";
    private static final int PORT = 4223;
    private static final String MASTERBRICKUID = "abc";
    private static final String LCDUID = "abc";
    private static final String ROTIUID = "abc";
    private static IPConnection ipc;
    private static BrickMaster master = new BrickMaster(MASTERBRICKUID);
    private static BrickletLCD20x4 lcd = new BrickletLCD20x4(LCDUID);
    private static BrickletRotaryPoti poti = new BrickletRotaryPoti(ROTIUID);

    @Override
    public void restored() {

        try {
            ipc = new IPConnection(HOST, PORT);
            ipc.addDevice(master);
            ipc.addDevice(lcd);
            ipc.addDevice(poti);
            poti.setPositionCallbackPeriod(50);
            poti.addListener(new BrickletRotaryPoti.PositionListener() {
                @Override
                public void position(final short position) {
                    lcd.backlightOn();
                    lcd.clearDisplay();
                    final Action runAction = 
                            Actions.forID("Project","org.netbeans.modules.project.ui.RunMainProject");
                    //The action must be invoked from menu item or toolbar button,
                    //see line 147 in org.netbeans.modules.project.ui.actions.LookupSensitiveAction:
                    JMenuItem jmi = new JMenuItem(runAction);
                    //When position is 100 (range is -150 to 150), deploy the app
                    //and print info about the project to the LCD display:
                    if (position == 100) {
                        jmi.doClick();
                        Project p = Utilities.actionsGlobalContext().lookup(Project.class);
                        lcd.writeLine((short) 0, (short) 0, "Deployed:");
                        lcd.writeLine((short) 1, (short) 0, ProjectUtils.getInformation(p).getDisplayName());
                    } else {
                        lcd.writeLine((short) 0, (short) 0, "Position: " + position);
                    }
                }
            });
        } catch (Exception e) {
        }

    }

}
About

Geertjan Wielenga (@geertjanw) is a Principal Product Manager in the Oracle Developer Tools group living & working in Amsterdam. He is a Java technology enthusiast, evangelist, trainer, speaker, and writer. He blogs here daily.

The focus of this blog is mostly on NetBeans (a development tool primarily for Java programmers), with an occasional reference to NetBeans, and sometimes diverging to topics relating to NetBeans. And then there are days when NetBeans is mentioned, just for a change.

Search

Archives
« September 2012 »
SunMonTueWedThuFriSat
      
2
16
19
      
Today