Snapshot of new files
This commit is contained in:
32
java/base/src/main/java/base/work/ReflectiveListen.java
Normal file
32
java/base/src/main/java/base/work/ReflectiveListen.java
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package base.work;
|
||||||
|
|
||||||
|
import java.lang.invoke.MethodHandle;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.lang.invoke.MethodType;
|
||||||
|
|
||||||
|
import base.worker.Worker;
|
||||||
|
|
||||||
|
public class ReflectiveListen extends Listen<Object> {
|
||||||
|
public ReflectiveListen() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReflectiveListen(Worker.Type workerType) {
|
||||||
|
super(workerType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void input(Object object) {
|
||||||
|
Class<?> clazz = object.getClass();
|
||||||
|
MethodType methodType = MethodType.methodType(void.class, clazz);
|
||||||
|
MethodHandles.Lookup lookup = MethodHandles.lookup();
|
||||||
|
MethodHandle methodHandle;
|
||||||
|
try {
|
||||||
|
methodHandle = lookup.findVirtual(getClass(), "input", methodType);
|
||||||
|
methodHandle.invoke(this, object);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("", e);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (C) 2015 Rik Veenboer <rik.veenboer@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package mimis.application.cmd.windows.lightroom;
|
||||||
|
|
||||||
|
import mimis.application.cmd.windows.WindowsApplication;
|
||||||
|
import mimis.input.Task;
|
||||||
|
import mimis.value.Action;
|
||||||
|
import winapi.Amount;
|
||||||
|
import winapi.Slider;
|
||||||
|
import winapi.Test;
|
||||||
|
import base.exception.worker.ActivateException;
|
||||||
|
import base.util.ArrayCycle;
|
||||||
|
|
||||||
|
public class LightroomApplication extends WindowsApplication {
|
||||||
|
protected final static String PROGRAM = "lightroom.exe";
|
||||||
|
protected final static String TITLE = "Lightroom";
|
||||||
|
protected final static String WINDOW = "";
|
||||||
|
|
||||||
|
protected static Test test;
|
||||||
|
protected ArrayCycle<Slider> sliderCycle;
|
||||||
|
|
||||||
|
public LightroomApplication() {
|
||||||
|
super(PROGRAM, TITLE, WINDOW);
|
||||||
|
detect = false;
|
||||||
|
running = true;
|
||||||
|
test = new Test();
|
||||||
|
try {
|
||||||
|
test.start();
|
||||||
|
sliderCycle = new ArrayCycle<Slider>(Slider.values());
|
||||||
|
test.moveSlider(sliderCycle.current(), Amount.INCREASE_LITTLE);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("", e);
|
||||||
|
//throw new ActivateException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new LightroomApplication();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*public boolean active() {
|
||||||
|
return true;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public void activate() throws ActivateException {
|
||||||
|
listen(Task.class);
|
||||||
|
super.activate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void begin(Action action) {
|
||||||
|
logger.trace("LightroomApplication begin: " + action);
|
||||||
|
try {
|
||||||
|
switch (action) {
|
||||||
|
case NEXT:
|
||||||
|
test.moveSlider(sliderCycle.current(), Amount.INCREASE_LITTLE);
|
||||||
|
break;
|
||||||
|
case PREVIOUS:
|
||||||
|
test.moveSlider(sliderCycle.current(), Amount.DECREASE_LITTLE);
|
||||||
|
break;
|
||||||
|
case VOLUME_UP:
|
||||||
|
sliderCycle.previous();
|
||||||
|
break;
|
||||||
|
case VOLUME_DOWN:
|
||||||
|
sliderCycle.next();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
logger.debug("Slider = " + test.getValue(sliderCycle.current()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void end(Action action) {
|
||||||
|
logger.trace("LightroomApplication end: " + action);
|
||||||
|
switch (action) {
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,291 @@
|
|||||||
|
//**********************************************************************************************
|
||||||
|
// Dipl. Phys. Joerg Plewe, HARDCODE Development
|
||||||
|
// Created on 27. Dezember 2001, 01:15
|
||||||
|
//**********************************************************************************************
|
||||||
|
|
||||||
|
package mimis.device.javainput;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
import javax.swing.Timer;
|
||||||
|
|
||||||
|
import de.hardcode.jxinput.Axis;
|
||||||
|
import de.hardcode.jxinput.Button;
|
||||||
|
import de.hardcode.jxinput.JXInputDevice;
|
||||||
|
import de.hardcode.jxinput.JXInputManager;
|
||||||
|
import de.hardcode.jxinput.keyboard.JXKeyboardInputDevice;
|
||||||
|
import de.hardcode.jxinput.test.JXInputDevicePanel;
|
||||||
|
import de.hardcode.jxinput.virtual.JXVirtualInputDevice;
|
||||||
|
import de.hardcode.jxinput.virtual.VirtualAxis;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test dialog showing some features of JXInput.
|
||||||
|
* @author Herkules
|
||||||
|
*/
|
||||||
|
public class JXInputTestDialog extends javax.swing.JDialog
|
||||||
|
implements ActionListener
|
||||||
|
{
|
||||||
|
|
||||||
|
private JXKeyboardInputDevice mKeyboardDevice = null;
|
||||||
|
private JXVirtualInputDevice mVirtualDevice = null;
|
||||||
|
|
||||||
|
Button mButtonUp;
|
||||||
|
Button mButtonDown;
|
||||||
|
Button mButtonLeft;
|
||||||
|
Button mButtonRight;
|
||||||
|
Button mButtonFire;
|
||||||
|
Button mButtonSpace;
|
||||||
|
|
||||||
|
/** Creates new form JXInputTestDialog */
|
||||||
|
public JXInputTestDialog(java.awt.Frame parent, boolean modal)
|
||||||
|
{
|
||||||
|
super(parent, modal);
|
||||||
|
initComponents();
|
||||||
|
configureKeyboardInputDevice();
|
||||||
|
configureVirtualInputDevice();
|
||||||
|
initDevicePanels();
|
||||||
|
pack();
|
||||||
|
|
||||||
|
// Request the focus so that the keyboarddevice can work
|
||||||
|
mMainPanel.requestFocus();
|
||||||
|
|
||||||
|
new Timer( 50, this ).start();
|
||||||
|
|
||||||
|
// Uncomment this line as an alternative to the Timer above.
|
||||||
|
// Don't use both!!
|
||||||
|
//JXInputEventManager.setTriggerIntervall( 50 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implement ActionListener#actionPerformed().
|
||||||
|
* This is called by the Timer.
|
||||||
|
*/
|
||||||
|
public void actionPerformed( ActionEvent e )
|
||||||
|
{
|
||||||
|
JXInputManager.updateFeatures();
|
||||||
|
SwingUtilities.invokeLater(
|
||||||
|
new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
for ( int i = 0; i < mDevicesTabbedPane.getComponentCount(); ++i )
|
||||||
|
{
|
||||||
|
((JXInputDevicePanel)mDevicesTabbedPane.getComponent( i )).update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure a test JXKeyboardInputdevice.
|
||||||
|
*/
|
||||||
|
void configureKeyboardInputDevice()
|
||||||
|
{
|
||||||
|
mKeyboardDevice = JXInputManager.createKeyboardDevice();
|
||||||
|
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_ESCAPE );
|
||||||
|
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_F1 );
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_F2 );
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_F3 );
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_F4 );
|
||||||
|
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_LEFT );
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_RIGHT );
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_UP );
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_DOWN );
|
||||||
|
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_PAGE_UP );
|
||||||
|
mKeyboardDevice.createButton( KeyEvent.VK_PAGE_DOWN );
|
||||||
|
|
||||||
|
mButtonSpace = mKeyboardDevice.createButton( KeyEvent.VK_SPACE );
|
||||||
|
mButtonLeft = mKeyboardDevice.createButton( KeyEvent.VK_A );
|
||||||
|
mButtonRight = mKeyboardDevice.createButton( KeyEvent.VK_D );
|
||||||
|
mButtonDown = mKeyboardDevice.createButton( KeyEvent.VK_S );
|
||||||
|
mButtonUp = mKeyboardDevice.createButton( KeyEvent.VK_W );
|
||||||
|
|
||||||
|
// Configure it to make it listen to the main panel.
|
||||||
|
// I try to keep the kbd focus on it.
|
||||||
|
mKeyboardDevice.listenTo( mMainPanel );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure a test JXVirtualInputdevice.
|
||||||
|
*/
|
||||||
|
void configureVirtualInputDevice()
|
||||||
|
{
|
||||||
|
mVirtualDevice = JXInputManager.createVirtualDevice();
|
||||||
|
|
||||||
|
Button firebutton;
|
||||||
|
//
|
||||||
|
// Remember 'fire' button of first device for use
|
||||||
|
// in the virtual device.
|
||||||
|
// For we ran configureKeyboardInputDevice() before,
|
||||||
|
// getJXInputDevice( 0 ) should not return null
|
||||||
|
//
|
||||||
|
firebutton = JXInputManager.getJXInputDevice( 0 ).getButton( 0 );
|
||||||
|
|
||||||
|
VirtualAxis x = mVirtualDevice.createAxis( Axis.ID_X );
|
||||||
|
x.setButtons( mButtonRight, mButtonLeft );
|
||||||
|
x.setName( "x: A-D" );
|
||||||
|
|
||||||
|
VirtualAxis y = mVirtualDevice.createAxis( Axis.ID_Y );
|
||||||
|
y.setButtons( mButtonUp, mButtonDown );
|
||||||
|
y.setSpringSpeed( 0.0 );
|
||||||
|
y.setName( "y: S|W" );
|
||||||
|
|
||||||
|
VirtualAxis slider = mVirtualDevice.createAxis( Axis.ID_SLIDER0 );
|
||||||
|
slider.setIncreaseButton( mButtonSpace );
|
||||||
|
slider.setTimeFor0To1( 2000 );
|
||||||
|
slider.setName( "<space>" );
|
||||||
|
slider.setType( Axis.SLIDER );
|
||||||
|
|
||||||
|
if ( null != firebutton )
|
||||||
|
{
|
||||||
|
slider = mVirtualDevice.createAxis( Axis.ID_SLIDER1 );
|
||||||
|
slider.setIncreaseButton( firebutton );
|
||||||
|
slider.setTimeFor0To1( 2000 );
|
||||||
|
slider.setName( "JoyButton 0" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize one panel for each device available.
|
||||||
|
*/
|
||||||
|
void initDevicePanels()
|
||||||
|
{
|
||||||
|
int cnt = JXInputManager.getNumberOfDevices();
|
||||||
|
|
||||||
|
mLabelNoDevice.setVisible( cnt == 0 );
|
||||||
|
mDevicesTabbedPane.setVisible( cnt != 0 );
|
||||||
|
|
||||||
|
for ( int i = 0; i < cnt; ++i )
|
||||||
|
{
|
||||||
|
JXInputDevice dev = JXInputManager.getJXInputDevice( i );
|
||||||
|
if ( null != dev )
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Setup an own panel for each device.
|
||||||
|
//
|
||||||
|
JPanel panel = new JXInputDevicePanel( dev );
|
||||||
|
mDevicesTabbedPane.addTab( dev.getName(), panel );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** This method is called from within the constructor to
|
||||||
|
* initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is
|
||||||
|
* always regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents()
|
||||||
|
{
|
||||||
|
mMainPanel = new javax.swing.JPanel();
|
||||||
|
mLabelNoDevice = new javax.swing.JLabel();
|
||||||
|
mDevicesTabbedPane = new javax.swing.JTabbedPane();
|
||||||
|
mButtonReset = new javax.swing.JButton();
|
||||||
|
|
||||||
|
setTitle("JXInput (C) 2001-2006 HARDCODE Dev.");
|
||||||
|
addWindowListener(new java.awt.event.WindowAdapter()
|
||||||
|
{
|
||||||
|
public void windowClosing(java.awt.event.WindowEvent evt)
|
||||||
|
{
|
||||||
|
closeDialog(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mMainPanel.setLayout(new java.awt.BorderLayout(10, 0));
|
||||||
|
|
||||||
|
mLabelNoDevice.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
|
mLabelNoDevice.setText("No JXInputDevice available!");
|
||||||
|
mLabelNoDevice.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
|
||||||
|
mMainPanel.add(mLabelNoDevice, java.awt.BorderLayout.NORTH);
|
||||||
|
|
||||||
|
mDevicesTabbedPane.addFocusListener(new java.awt.event.FocusAdapter()
|
||||||
|
{
|
||||||
|
public void focusGained(java.awt.event.FocusEvent evt)
|
||||||
|
{
|
||||||
|
mDevicesTabbedPaneFocusGained(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mMainPanel.add(mDevicesTabbedPane, java.awt.BorderLayout.CENTER);
|
||||||
|
|
||||||
|
mButtonReset.setText("Reset ");
|
||||||
|
mButtonReset.addActionListener(new java.awt.event.ActionListener()
|
||||||
|
{
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt)
|
||||||
|
{
|
||||||
|
mButtonResetActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mMainPanel.add(mButtonReset, java.awt.BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
getContentPane().add(mMainPanel, java.awt.BorderLayout.CENTER);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void mButtonResetActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_mButtonResetActionPerformed
|
||||||
|
{//GEN-HEADEREND:event_mButtonResetActionPerformed
|
||||||
|
|
||||||
|
while ( this.mDevicesTabbedPane.getTabCount() > 0 )
|
||||||
|
this.mDevicesTabbedPane.removeTabAt( 0 );
|
||||||
|
|
||||||
|
JXInputManager.reset();
|
||||||
|
configureKeyboardInputDevice();
|
||||||
|
configureVirtualInputDevice();
|
||||||
|
initDevicePanels();
|
||||||
|
pack();
|
||||||
|
|
||||||
|
// Request the focus so that the keyboarddevice can work
|
||||||
|
mMainPanel.requestFocus();
|
||||||
|
|
||||||
|
}//GEN-LAST:event_mButtonResetActionPerformed
|
||||||
|
|
||||||
|
private void mDevicesTabbedPaneFocusGained(java.awt.event.FocusEvent evt)//GEN-FIRST:event_mDevicesTabbedPaneFocusGained
|
||||||
|
{//GEN-HEADEREND:event_mDevicesTabbedPaneFocusGained
|
||||||
|
// Switch focus back to main panel!
|
||||||
|
this.mMainPanel.requestFocus();
|
||||||
|
}//GEN-LAST:event_mDevicesTabbedPaneFocusGained
|
||||||
|
|
||||||
|
/** Closes the dialog */
|
||||||
|
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
|
||||||
|
setVisible(false);
|
||||||
|
dispose();
|
||||||
|
System.exit( 0 );
|
||||||
|
}//GEN-LAST:event_closeDialog
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow the dialog to run standalone.
|
||||||
|
* @param args the command line arguments
|
||||||
|
*/
|
||||||
|
public static void main(String args[])
|
||||||
|
{
|
||||||
|
new JXInputTestDialog(new javax.swing.JFrame(), true).setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JButton mButtonReset;
|
||||||
|
private javax.swing.JTabbedPane mDevicesTabbedPane;
|
||||||
|
private javax.swing.JLabel mLabelNoDevice;
|
||||||
|
private javax.swing.JPanel mMainPanel;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (C) 2015 Rik Veenboer <rik.veenboer@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package mimis.device.javainput.xbox360;
|
||||||
|
|
||||||
|
import mimis.exception.button.UnknownButtonException;
|
||||||
|
import mimis.input.Button;
|
||||||
|
import de.hardcode.jxinput.event.JXInputButtonEvent;
|
||||||
|
|
||||||
|
public enum Xbox360Button implements Button {
|
||||||
|
GREEN ("Button 0"), // A
|
||||||
|
RED ("Button 1"), // B
|
||||||
|
BLUE ("Button 2"), // X
|
||||||
|
YELLOW ("Button 3"), // Y
|
||||||
|
LB ("Button 4"),
|
||||||
|
RB ("Button 5"),
|
||||||
|
BACK ("Button 6"),
|
||||||
|
START ("Button 7"),
|
||||||
|
LEFT_STICK ("Button 8"),
|
||||||
|
RIGHT_STICK ("Button 9");
|
||||||
|
|
||||||
|
protected String code;
|
||||||
|
|
||||||
|
private Xbox360Button(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Xbox360Button create(String code) throws UnknownButtonException {
|
||||||
|
for (Xbox360Button button : Xbox360Button.values()) {
|
||||||
|
if (button.getCode().equals(code)) {
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new UnknownButtonException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Xbox360Button create(JXInputButtonEvent event) throws UnknownButtonException {
|
||||||
|
return create(event.getButton().getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (C) 2015 Rik Veenboer <rik.veenboer@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package mimis.device.javainput.xbox360;
|
||||||
|
|
||||||
|
import mimis.device.javainput.DirectionButton;
|
||||||
|
import mimis.device.javainput.JavaInputDevice;
|
||||||
|
import mimis.exception.button.UnknownButtonException;
|
||||||
|
import mimis.exception.button.UnknownDirectionException;
|
||||||
|
import mimis.input.Button;
|
||||||
|
import mimis.router.Router;
|
||||||
|
import mimis.value.Action;
|
||||||
|
import base.exception.worker.ActivateException;
|
||||||
|
import de.hardcode.jxinput.event.JXInputButtonEvent;
|
||||||
|
import de.hardcode.jxinput.event.JXInputDirectionalEvent;
|
||||||
|
|
||||||
|
public class Xbox360Device extends JavaInputDevice {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Xbox360Device device = new Xbox360Device();
|
||||||
|
Router router = new Router();
|
||||||
|
router.start();
|
||||||
|
device.setRouter(router);
|
||||||
|
device.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static final String TITLE = "Xbox360";
|
||||||
|
protected static final String NAME = "Controller (XBOX 360 For Windows)";
|
||||||
|
|
||||||
|
protected static Xbox360TaskMapCycle taskMapCycle;
|
||||||
|
|
||||||
|
public Xbox360Device() {
|
||||||
|
super(TITLE, NAME);
|
||||||
|
taskMapCycle = new Xbox360TaskMapCycle();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void activate() throws ActivateException {
|
||||||
|
super.activate();
|
||||||
|
parser(Action.ADD, taskMapCycle.mimis);
|
||||||
|
parser(Action.ADD, taskMapCycle.player);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Button getButton(JXInputButtonEvent event) throws UnknownButtonException {
|
||||||
|
return Xbox360Button.create(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Button getButton(JXInputDirectionalEvent event) throws UnknownDirectionException {
|
||||||
|
return DirectionButton.create(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (C) 2015 Rik Veenboer <rik.veenboer@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package mimis.device.javainput.xbox360;
|
||||||
|
|
||||||
|
import mimis.device.javainput.DirectionButton;
|
||||||
|
import mimis.input.Task;
|
||||||
|
import mimis.input.state.Press;
|
||||||
|
import mimis.state.TaskMap;
|
||||||
|
import mimis.state.TaskMapCycle;
|
||||||
|
import mimis.value.Action;
|
||||||
|
import mimis.value.Target;
|
||||||
|
|
||||||
|
public class Xbox360TaskMapCycle extends TaskMapCycle {
|
||||||
|
protected static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public TaskMap mimis, player;
|
||||||
|
|
||||||
|
public Xbox360TaskMapCycle() {
|
||||||
|
/* Mimis */
|
||||||
|
mimis = new TaskMap();
|
||||||
|
mimis.add(
|
||||||
|
new Press(Xbox360Button.GREEN),
|
||||||
|
new Task(Action.PREVIOUS, Target.MAIN));
|
||||||
|
mimis.add(
|
||||||
|
new Press(Xbox360Button.RED),
|
||||||
|
new Task(Action.NEXT, Target.MAIN));
|
||||||
|
add(mimis);
|
||||||
|
|
||||||
|
/* Player */
|
||||||
|
player = new TaskMap();
|
||||||
|
player.add(
|
||||||
|
new Press(DirectionButton.WEST),
|
||||||
|
new Task(Action.PREVIOUS, Target.CURRENT));
|
||||||
|
player.add(
|
||||||
|
new Press(DirectionButton.EAST),
|
||||||
|
new Task(Action.NEXT, Target.CURRENT));
|
||||||
|
player.add(
|
||||||
|
new Press(DirectionButton.SOUTH),
|
||||||
|
new Task(Action.VOLUME_DOWN, Target.CURRENT));
|
||||||
|
player.add(
|
||||||
|
new Press(DirectionButton.NORTH),
|
||||||
|
new Task(Action.VOLUME_UP, Target.CURRENT));
|
||||||
|
add(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
15
java/test/src/main/java/jna/HelloTest.java
Normal file
15
java/test/src/main/java/jna/HelloTest.java
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package jna;
|
||||||
|
import com.sun.jna.Library;
|
||||||
|
import com.sun.jna.Native;
|
||||||
|
|
||||||
|
|
||||||
|
public class HelloTest {
|
||||||
|
public interface HelloLibrary extends Library {
|
||||||
|
public void helloFromC();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
HelloLibrary ctest = (HelloLibrary) Native.loadLibrary("ctest", HelloLibrary.class);
|
||||||
|
ctest.helloFromC();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user