Last Version

Nano/Server
VogelT 11 months ago
parent 1e19e5aed8
commit 878a44b78d

@ -1,4 +1,4 @@
package de.games.nanoleaf.tictactoe;
package de.examples.components;
import java.io.Serializable;
import org.eclnt.editor.annotations.CCGenClass;
@ -6,12 +6,38 @@ import org.eclnt.jsfserver.pagebean.PageBean;
import org.eclnt.jsfserver.base.faces.event.ActionEvent;
@CCGenClass (expressionBase="#{d.TicTacToeBean}")
@CCGenClass (expressionBase="#{d.DragDropPaneBean}")
public class TicTacToeBean
public class DragDropPaneBean
extends PageBean
implements Serializable
{
public void onPaneSource(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
System.out.println("Hier");
}
public class PaneInfo {
int i_paneNr;
public int getPaneNr() { return i_paneNr; }
public void setPaneNr(int value) { this.i_paneNr = value; }
int i_nanoleafID;
public int getNanoleafID() { return i_nanoleafID; }
public void setNanoleafID(int value) { this.i_nanoleafID = value; }
String i_drangsendSource;
public String getDrangsendSource() { return i_drangsendSource; }
public void setDrangsendSource(String value) { this.i_drangsendSource = value; }
}
// ------------------------------------------------------------------------
// inner classes
// ------------------------------------------------------------------------
@ -31,12 +57,12 @@ public class TicTacToeBean
// constructors & initialization
// ------------------------------------------------------------------------
public TicTacToeBean()
public DragDropPaneBean()
{
}
public String getPageName() { return "/games/nanoleaf/tictactoe/tictactoe.xml"; }
public String getRootExpressionUsedInPage() { return "#{d.TicTacToeBean}"; }
public String getPageName() { return "/examples/componets/dragDropPane.xml"; }
public String getRootExpressionUsedInPage() { return "#{d.DragDropPaneBean}"; }
// ------------------------------------------------------------------------
// public usage

@ -2,8 +2,11 @@
<managedpackage name="de.examples.nanoleaf"/>
<managedpackage name="de.examples.matrixboard"/>
<managedpackage name="de.examples.components"/>
<!--
<managedpackage name="de.examples.matrixboard"/>
-->
</dispatcherinfo>

@ -1,12 +0,0 @@
<dispatcherinfo>
<managedpackage name="de.games.nanoleaf.lightsswitch"/>
<managedpackage name="de.games.nanoleaf.panelconfig"/>
<managedpackage name="de.games.nanoleaf.tictactoe"/>
</dispatcherinfo>

@ -1,4 +1,4 @@
package de.games.nanoleaf.lightsswitch;
package de.nanoleaf.games.lightswitch;
import java.io.Serializable;
import java.util.ArrayList;
@ -76,7 +76,7 @@ public class LightsOnOffBean
random = null;
m_countSteps = 0;
m_colorButton1 = null;
m_colorButton2= null;
m_colorButton2 = null;
m_colorButton3 = null;
m_colorButton4 = null;
m_colorButton5 = null;
@ -397,7 +397,7 @@ public class LightsOnOffBean
}
@Override
public String getPageName() { return "/games/nanoleaf/lightswitch/lightsOnOff.jsp"; }
public String getPageName() { return "/nanoleaf/games/lightswitch/lightsOnOff.jsp"; }
@Override
public String getRootExpressionUsedInPage() { return "#{d.LightsOnOffBean}"; }

@ -0,0 +1,119 @@
package de.nanoleaf.games.tictactoe;
import java.util.ArrayList;
import java.util.List;
public class CheckTicTacToe {
private class Fields {
List<Integer> fieldsList = null;
public List<Integer> getFieldsList() {
return fieldsList;
}
public Fields(int field1, int field2, int field3) {
fieldsList = new ArrayList<Integer>();
fieldsList.add(field1);
fieldsList.add(field2);
fieldsList.add(field3);
}
}
List<Fields> m_checkList = null;
public List<Fields> getCheckList() {
if (m_checkList == null) {
m_checkList = new ArrayList<Fields>();
}
return m_checkList;
}
public CheckTicTacToe() {
initCheckList();
}
private void initCheckList() {
/**
* ###
* ###
* ###
*
*/
getCheckList().add(new Fields(1, 2, 3));
getCheckList().add(new Fields(4, 5, 6));
getCheckList().add(new Fields(7, 8, 9));
getCheckList().add(new Fields(1, 4, 7));
getCheckList().add(new Fields(2, 5, 6));
getCheckList().add(new Fields(3, 6, 9));
getCheckList().add(new Fields(1, 5, 9));
getCheckList().add(new Fields(3, 5, 7));
}
public boolean checkFinal(int[] playerArray) {
boolean finish = false;
Integer playerlast = 0;
boolean next = false;
//System.out.println("Start Check...");
List<Integer> playerList = new ArrayList<Integer>();
for (Fields fields: getCheckList()) {
next = false;
finish = false;
playerList = new ArrayList<Integer>();
//System.out.println("List: " + fields.getFieldsList().toString());
for (int f = 0; f < fields.getFieldsList().size(); f++) {
int field = fields.getFieldsList().get(f).intValue();
int player = playerArray[field];
//System.out.println("Find Player: " + player);
if (player == 0) {
next = true;
finish = false;
//System.out.println("NEXT");
} else {
if (f == 0) {
playerlast = player;
playerList.add(playerlast);
} else {
if (playerlast == player) {
playerList.add(playerlast);
} else {
next = true;
}
}
}
if (next) {
break;
}
}
if (next == false) {
//System.out.println("FINISH");
finish = true;
//System.out.println("List: " + fields.getFieldsList().toString());
break;
}
}
return finish;
}
}

@ -0,0 +1,325 @@
package de.nanoleaf.games.tictactoe;
import java.io.Serializable;
import org.eclnt.editor.annotations.CCGenClass;
import org.eclnt.jsfserver.base.faces.event.ActionEvent;
import org.eclnt.jsfserver.pagebean.PageBean;
import de.tools.ReflectClass;
@CCGenClass (expressionBase="#{d.TicTacToeBean}")
public class TicTacToeBean extends PageBean implements Serializable {
int[] playerArray = new int[10];
String m_colorButton1;
public String getColorButton1() { return m_colorButton1; }
public void setColorButton1(String value) { this.m_colorButton1 = value; }
String m_colorButton2;
public String getColorButton2() { return m_colorButton2; }
public void setColorButton2(String value) { this.m_colorButton2 = value; }
String m_colorButton3;
public String getColorButton3() { return m_colorButton3; }
public void setColorButton3(String value) { this.m_colorButton3 = value; }
String m_colorButton4;
public String getColorButton4() { return m_colorButton4; }
public void setColorButton4(String value) { this.m_colorButton4 = value; }
String m_colorButton5;
public String getColorButton5() { return m_colorButton5; }
public void setColorButton5(String value) { this.m_colorButton5 = value; }
String m_colorButton6;
public String getColorButton6() { return m_colorButton6; }
public void setColorButton6(String value) { this.m_colorButton6 = value; }
String m_colorButton7;
public String getColorButton7() { return m_colorButton7; }
public void setColorButton7(String value) { this.m_colorButton7 = value; }
String m_colorButton8;
public String getColorButton8() { return m_colorButton8; }
public void setColorButton8(String value) { this.m_colorButton8 = value; }
String m_colorButton9;
public String getColorButton9() { return m_colorButton9; }
public void setColorButton9(String value) { this.m_colorButton9 = value; }
boolean m_enabledButton1;
public boolean getEnabledButton1() { return m_enabledButton1; }
public void setEnabledButton1(boolean value) { this.m_enabledButton1 = value; }
boolean m_enabledButton2;
public boolean getEnabledButton2() { return m_enabledButton2; }
public void setEnabledButton2(boolean value) { this.m_enabledButton2 = value; }
boolean m_enabledButton3;
public boolean getEnabledButton3() { return m_enabledButton3; }
public void setEnabledButton3(boolean value) { this.m_enabledButton3 = value; }
boolean m_enabledButton4;
public boolean getEnabledButton4() { return m_enabledButton4; }
public void setEnabledButton4(boolean value) { this.m_enabledButton4 = value; }
boolean m_enabledButton5;
public boolean getEnabledButton5() { return m_enabledButton5; }
public void setEnabledButton5(boolean value) { this.m_enabledButton5 = value; }
boolean m_enabledButton6;
public boolean getEnabledButton6() { return m_enabledButton6; }
public void setEnabledButton6(boolean value) { this.m_enabledButton6 = value; }
boolean m_enabledButton7;
public boolean getEnabledButton7() { return m_enabledButton7; }
public void setEnabledButton7(boolean value) { this.m_enabledButton7 = value; }
boolean m_enabledButton8;
public boolean getEnabledButton8() { return m_enabledButton8; }
public void setEnabledButton8(boolean value) { this.m_enabledButton8 = value; }
boolean m_enabledButton9;
public boolean getEnabledButton9() { return m_enabledButton9; }
public void setEnabledButton9(boolean value) { this.m_enabledButton9 = value; }
private void changeColor() {
if (getLightPlayerNext().equals(getLightPlayer1())) {
setLightPlayerNext(getLightPlayer2());
setNextPlayer(2);
} else {
setLightPlayerNext(getLightPlayer1());
setNextPlayer(1);
}
}
public void onButton1(ActionEvent event) {
if (getEnabledButton1() == true) {
setColorButton1(getLightPlayerNext());
setEnabledButton1(false);
playerArray[1] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton2(ActionEvent event) {
if (getEnabledButton2() == true) {
setColorButton2(getLightPlayerNext());
setEnabledButton2(false);
playerArray[2] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton3(ActionEvent event) {
if (getEnabledButton3() == true) {
setColorButton3(getLightPlayerNext());
setEnabledButton3(false);
playerArray[3] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton4(ActionEvent event) {
if (getEnabledButton4() == true) {
setColorButton4(getLightPlayerNext());
setEnabledButton4(false);
playerArray[4] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton5(ActionEvent event) {
if (getEnabledButton5() == true) {
setColorButton5(getLightPlayerNext());
setEnabledButton5(false);
playerArray[5] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton6(ActionEvent event) {
if (getEnabledButton6() == true) {
setColorButton6(getLightPlayerNext());
setEnabledButton6(false);
playerArray[6] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton7(ActionEvent event) {
if (getEnabledButton7() == true) {
setColorButton7(getLightPlayerNext());
setEnabledButton7(false);
playerArray[7] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton8(ActionEvent event) {
if (getEnabledButton8() == true) {
setColorButton8(getLightPlayerNext());
setEnabledButton8(false);
playerArray[8] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public void onButton9(ActionEvent event) {
if (getEnabledButton9() == true) {
setColorButton9(getLightPlayerNext());
setEnabledButton9(false);
playerArray[9] = getNextPlayer();
changeColor();
}
resultTextSetter();
}
public String m_lightPlayer1 = "#66FF00";
public String getLightPlayer1() { return m_lightPlayer1; }
public String m_lightPlayer2 = "#FF0000";
public String getLightPlayer2() { return m_lightPlayer2; }
public String m_lightPlayerNext = "#66FF00";
public void setLightPlayerNext(String lightPlayerNext) { m_lightPlayerNext = lightPlayerNext; }
public String getLightPlayerNext() { return m_lightPlayerNext; }
public int m_nextPlayer = 1;
public int getNextPlayer() { return m_nextPlayer; }
public void setNextPlayer(int nextPlayer) { m_nextPlayer = nextPlayer; }
String m_resultText;
public String getResultText() { return m_resultText; }
public void setResultText(String value) { this.m_resultText = value; }
public void onReset(ActionEvent event) {
enabledAllButtons(true);
playerArray = new int[10];
for (int i = 0; i < 10; i++) {
playerArray[i] = 0;
}
m_colorButton1 = null;
m_colorButton2 = null;
m_colorButton3 = null;
m_colorButton4 = null;
m_colorButton5 = null;
m_colorButton6 = null;
m_colorButton7 = null;
m_colorButton8 = null;
m_colorButton9 = null;
setNextPlayer(1);
setLightPlayerNext(getLightPlayer1());
resultTextSetter();
}
private void enabledAllButtons(boolean enabled) {
for (int i = 1; i <= 9; i++) {
getReflectClass().setMethod("setEnabledButton" + i, enabled);
}
}
CheckTicTacToe m_checkTicTacToe = new CheckTicTacToe();
public CheckTicTacToe getCheckTicTacToe() {
return m_checkTicTacToe;
}
private boolean checkFinish() {
boolean finish = false;
finish = getCheckTicTacToe().checkFinal(playerArray);
return finish;
}
ReflectClass m_reflectClass;
public ReflectClass getReflectClass() { return m_reflectClass; }
private void resultTextSetter() {
if (checkFinish()) {
m_resultText = " GEWONNEN. :-)";
enabledAllButtons(false);
} else {
m_resultText = "Player "+ getNextPlayer();
}
}
// ------------------------------------------------------------------------
// inner classes
// ------------------------------------------------------------------------
/* Listener to the user of the page bean. */
public interface IListener extends Serializable
{
}
// ------------------------------------------------------------------------
// members
// ------------------------------------------------------------------------
private IListener m_listener;
// ------------------------------------------------------------------------
// constructors & initialization
// ------------------------------------------------------------------------
public TicTacToeBean() {
m_reflectClass = new ReflectClass(this);
onReset(null);
}
public TicTacToeBean(String lightPlayer1, String lightPlayer2) {
this.m_lightPlayer1 = lightPlayer1;
this.m_lightPlayer2 = lightPlayer2;
m_reflectClass = new ReflectClass(this);
onReset(null);
}
public String getPageName() { return "/nanoleaf/games/tictactoe/tictactoe.xml"; }
public String getRootExpressionUsedInPage() { return "#{d.TicTacToeBean}"; }
// ------------------------------------------------------------------------
// public usage
// ------------------------------------------------------------------------
/* Initialization of the bean. Add any parameter that is required within your scenario. */
public void prepare(IListener listener)
{
m_listener = listener;
}
// ------------------------------------------------------------------------
// private usage
// ------------------------------------------------------------------------
}

@ -0,0 +1,10 @@
<dispatcherinfo>
<managedpackage name="de.nanoleaf.games.lightswitch"/>
<managedpackage name="de.nanoleaf.tools.panelconfig"/>
<managedpackage name="de.nanoleaf.games.tictactoe"/>
</dispatcherinfo>

@ -0,0 +1,9 @@
package de.nanoleaf.server;
public class ChangeColorMod {
public ChangeColorMod() {
// TODO Auto-generated constructor stub
}
}

@ -0,0 +1,45 @@
package de.nanoleaf.server;
import io.github.rowak.nanoleafapi.Color;
public enum ColorEnum {
BLACK(Color.BLACK),
WHITE(Color.WHITE),
RED(Color.RED),
GREEN(Color.GREEN),
BLUE(Color.BLUE),
MAGENTA(Color.MAGENTA),
YELLOW(Color.YELLOW),
CYAN(Color.CYAN),
GRAY(Color.GRAY),
LIGHT_GRAY(Color.LIGHT_GRAY),
DARK_GRAY(Color.DARK_GRAY),
PINK(Color.PINK),
ORANGE(Color.ORANGE),
;
private Color m_color;
public Color getColor() { return m_color; }
ColorEnum(Color color) {
this.m_color = color;
}
}

@ -0,0 +1,14 @@
package de.nanoleaf.server;
public enum ColorModEnum {
NANOLEAF_LIGHT_SWITCH_PANEL_9_GAME,
NANOLEAF_TIC_TAC_TOE_PANEL_9_GAME,
NANOLEAF_ON_OFF_TEST,
;
}

@ -0,0 +1,3 @@
Funktionen Nanoleaf Server
-

@ -0,0 +1,209 @@
package de.nanoleaf.server;
import java.io.IOException;
import java.util.List;
import io.github.rowak.nanoleafapi.Color;
import io.github.rowak.nanoleafapi.NanoleafDevice;
import io.github.rowak.nanoleafapi.NanoleafException;
import io.github.rowak.nanoleafapi.Panel;
import io.github.rowak.nanoleafapi.event.DetailedTouchEvent;
import io.github.rowak.nanoleafapi.event.NanoleafTouchEventListener;
import io.github.rowak.nanoleafapi.event.TouchEvent;
public class NanoleafDeviceServer {
private String m_nanoleafHostname = "Canvas-72FA.fritz.box";
public String getNanoleafHostname() { return m_nanoleafHostname; }
private String m_nanoleafHostIP = "";
public String getNanoleafHostIP() { return m_nanoleafHostIP; }
private int m_nanoleafPort = 16021;
public int getNanoleafPort() { return m_nanoleafPort; }
private String m_nanoleafApiLevel = "v1";
public String getNanoleafApiLevel() { return m_nanoleafApiLevel; }
private String m_nanoleafAccessToken = "LAG28BQWrXK2p79NbHMQsvcYYCN1TcD4";
public String getNanoleafAccessToken() { return m_nanoleafAccessToken; }
private NanoleafDevice m_nanoleafDevice = null;
public NanoleafDevice getNanoleafDevice() { return m_nanoleafDevice; }
private int m_nanoleafTouchTimer = 50;
public int getNanoleafTouchTimer() { return m_nanoleafTouchTimer; }
public void setNanoleafTouchTimer(int nanoleafTouchTimer) { m_nanoleafTouchTimer = nanoleafTouchTimer; }
private Integer m_nanoleafLastID = null;
public Integer getNanoleafLastID() { return m_nanoleafLastID; }
public void setNanoleafLastID(Integer nanoleafLastID) { m_nanoleafLastID = nanoleafLastID; }
private List<Panel> m_nanoLeafPanels = null;
public List<Panel> getNanoLeafPanels() { return m_nanoLeafPanels; }
public NanoleafDeviceServer() {
}
public NanoleafDeviceServer(String nanoleafHostname, String nanoleafHostIP, int nanoleafPort, String nanoleafAccessToken) {
this.m_nanoleafHostname = nanoleafHostname;
this.m_nanoleafHostIP = nanoleafHostIP;
this.m_nanoleafPort = nanoleafPort;
this.m_nanoleafAccessToken = nanoleafAccessToken;
}
public boolean deConnectNanoLeaf() throws NanoleafException, IOException {
boolean finish = false;
try {
getNanoleafDevice().closeEventListeners();
getNanoleafDevice().closeTouchEventListeners();
getNanoleafDevice().closeAsync();
m_nanoleafDevice = null;
getNanoLeafPanels().clear();
finish = true;
} catch (Exception e) {
throw e;
}
return finish;
}
public boolean connectNanoLeaf() throws NanoleafException, IOException {
boolean connected = false;
try {
m_nanoleafDevice = NanoleafDevice.createDevice(getNanoleafHostname(), getNanoleafPort(), getNanoleafAccessToken());
if (m_nanoleafDevice != null) {
connected = true;
refreshPanels();
}
} catch (Exception e) {
throw e;
}
return connected;
}
private void refreshPanels() throws NanoleafException, IOException {
if (getNanoleafDevice() != null) {
m_nanoLeafPanels = getNanoleafDevice().getPanels();
}
}
private boolean checkLastIdActiv(Integer lastID) {
if (getNanoleafLastID() == null) {
return false;
}
return getNanoleafLastID().equals(lastID);
}
public void startNanoLeafEvent() {
try {
getNanoleafDevice().setColor(Color.BLACK);
getNanoleafDevice().enableExternalStreaming();
getNanoleafDevice().enableTouchEventStreaming(getNanoleafPort()); // You need to specify a port to listen on
getNanoleafDevice().registerTouchEventStreamingListener(new NanoleafTouchEventListener() {
@Override
public void onOpen() {
// Called when the listener is created
}
@Override
public void onClosed() {
// Called when the listener is closed
}
@Override
public void onEvent(DetailedTouchEvent[] events) {
// Called when a touch event occurs
//System.out.println("Events: " + events.length);
DetailedTouchEvent event = events[0];
Integer lastID = event.getPanelId();
//TouchEvent touch = event.getTouchType();
switch (event.getTouchType()) {
case TouchEvent.DOUBLE_TAP:
//System.out.println("DOUBLE_TAP");
break;
case TouchEvent.SINGLE_TAP:
//System.out.println("SINGLE_TAP");
if (checkLastIdActiv(lastID)) {
return;
} else {
setNanoleafLastID(lastID);
try {
getNanoleafDevice().setPanelExternalStreaming(lastID, Color.RED, 1);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ID: " + event.getPanelId());
}
break;
case TouchEvent.HOLD:
//System.out.println("HOLD");
break;
case TouchEvent.UNKNOWN_ATTRIBUTE:
//System.out.println("UNKNOWN_ATTRIBUTE");
break;
default:
System.out.println("Unexpected value: " + event.getTouchType());
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
NanoleafDeviceServer nanoleafDeviceServer = new NanoleafDeviceServer();
try {
boolean nanoLeafActiv = nanoleafDeviceServer.connectNanoLeaf();
if (nanoLeafActiv) {
nanoleafDeviceServer.startNanoLeafEvent();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -1,4 +1,4 @@
package de.games.nanoleaf.server;
package de.nanoleaf.server.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;

@ -1,4 +1,4 @@
package de.games.nanoleaf.server;
package de.nanoleaf.server.test;
import java.util.List;

@ -1,4 +1,4 @@
package de.games.nanoleaf.server;
package de.nanoleaf.server.test;
import java.util.List;

@ -1,4 +1,4 @@
package de.games.nanoleaf.server;
package de.nanoleaf.server.test;
import io.github.rowak.nanoleafapi.Aurora;

@ -1,4 +1,4 @@
package de.games.nanoleaf.server;
package de.nanoleaf.server.test;
import java.util.HashMap;
import java.util.HashSet;
@ -51,7 +51,7 @@ public class NanoleafServer {
// for (Panel panel: panelList) {
// System.out.println("Panel: " + panel.getId());
// }
device.setColor(Color.WHITE);
device.setColor(Color.BLACK);
device.enableTouchEventStreaming(port); // You need to specify a port to listen on
device.registerTouchEventStreamingListener(new NanoleafTouchEventListener() {

@ -1,4 +1,4 @@
package de.games.nanoleaf.panelconfig;
package de.nanoleaf.tools.panelconfig;
public class MatrixInfo {

@ -1,4 +1,4 @@
package de.games.nanoleaf.panelconfig;
package de.nanoleaf.tools.panelconfig;
import org.eclnt.jsfserver.elements.componentnodes.COLDISTANCENode;
import org.eclnt.jsfserver.elements.componentnodes.LABELNode;
@ -13,6 +13,15 @@ public class NanoPANENode extends PANENode {
public PanelInfo getPanelInfo() {
return m_panelInfo;
}
public String getBorderColor() {
String color = "#e7e6e6";
if (getPanelInfo() != null && getPanelInfo().getPanelColor() != null) {
color = getPanelInfo().getPanelColor();
}
return color;
}
public void setPanelInfo(PanelInfo panelInfo) {
m_panelInfo = panelInfo;
@ -26,9 +35,9 @@ public class NanoPANENode extends PANENode {
private void createInnerPane() {
this.setDragsend("NANOLEAF:ID_" + getPanelInfo().getPanelID());
this.setHeight(80);
this.setWidth(80);
this.setDragsend("NANOLEAF:" + getPanelInfo().getPanelID());
this.setHeight(60);
this.setWidth(60);
this.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000");
ROWDISTANCENode rowdistanceNode = new ROWDISTANCENode();
this.addSubNode(rowdistanceNode);
@ -36,6 +45,7 @@ public class NanoPANENode extends PANENode {
ROWNode row = new ROWNode();
COLDISTANCENode coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth("50%");
row.addSubNode(coldistanceNode);
LABELNode labelPaneID = new LABELNode();
@ -46,23 +56,24 @@ public class NanoPANENode extends PANENode {
this.addSubNode(row);
row = new ROWNode();
coldistanceNode = new COLDISTANCENode();
row.addSubNode(coldistanceNode);
labelPaneID = new LABELNode();
labelPaneID.setText("Nano ID: ");
row.addSubNode(labelPaneID);
// coldistanceNode = new COLDISTANCENode();
// row.addSubNode(coldistanceNode);
// labelPaneID = new LABELNode();
// labelPaneID.setText("Nr: " + getPanelInfo().getPanelID());
//
// row.addSubNode(labelPaneID);
this.addSubNode(row);
row = new ROWNode();
coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth("50%");
row.addSubNode(coldistanceNode);
labelPaneID = new LABELNode();
if (getPanelInfo().getPanelNanoleafID() == null) {
if (getPanelInfo().getPanelNanoleafID() == 0) {
labelPaneID.setText("unbek.");
} else {
labelPaneID.setText(getPanelInfo().getPanelNanoleafID());
labelPaneID.setText(getPanelInfo().getPanelNanoleafID() +"");
}
row.addSubNode(labelPaneID);

@ -1,31 +1,122 @@
package de.games.nanoleaf.panelconfig;
package de.nanoleaf.tools.panelconfig;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import org.eclnt.editor.annotations.CCGenClass;
import org.eclnt.jsfserver.base.faces.event.ActionEvent;
import org.eclnt.jsfserver.defaultscreens.Statusbar;
import org.eclnt.jsfserver.elements.BaseActionEvent;
import org.eclnt.jsfserver.elements.componentnodes.COLDISTANCENode;
import org.eclnt.jsfserver.elements.componentnodes.LABELNode;
import org.eclnt.jsfserver.elements.componentnodes.PANENode;
import org.eclnt.jsfserver.elements.componentnodes.ROWNode;
import org.eclnt.jsfserver.elements.events.BaseActionEventDrop;
import org.eclnt.jsfserver.elements.events.BaseActionEventInvoke;
import org.eclnt.jsfserver.elements.impl.DYNAMICCONTENTBinding;
import org.eclnt.jsfserver.elements.impl.ROWDYNAMICCONTENTBinding;
import org.eclnt.jsfserver.elements.impl.ROWDYNAMICCONTENTBinding.ComponentNode;
import org.eclnt.jsfserver.elements.util.ValidValuesBinding;
import org.eclnt.jsfserver.pagebean.PageBean;
import de.nanoleaf.server.ColorEnum;
import de.nanoleaf.server.NanoleafDeviceServer;
import io.github.rowak.nanoleafapi.Panel;
import io.github.rowak.nanoleafapi.ShapeType;
@CCGenClass (expressionBase="#{d.PanelConfigBean}")
public class PanelConfigBean extends PageBean implements Serializable {
public class PanelConfigBean extends PageBean implements Serializable {
String m_color = "#000000";
public String getColor() { return m_color; }
public void setColor(String value) { this.m_color = value; }
ValidValuesBinding m_colorCombo = new ValidValuesBinding();
public ValidValuesBinding getColorCombo() { return m_colorCombo; }
public void onPanelSourceAction(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
//System.out.println(event);
BaseActionEventInvoke actionEvent = (BaseActionEventInvoke) event;
System.out.println("SourceAction: " + actionEvent.getSourceReference());
// PanelInfo panelInfo = getPanelIDNanoPANENodeSourceMap().get(actionEvent.getSourceReference());
//
// if (panelInfo != null) {
// Panel panel = panelInfo.getPanel();
//
// System.out.println("PanelID: " + panel.getId());
// }
}
boolean m_nanoleafConnected = false;
public boolean getNanoleafConnected() { return m_nanoleafConnected; }
public void setNanoleafConnected(boolean value) { this.m_nanoleafConnected = value; }
public void onNanoleafDeconnect(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
boolean deconnected = false;
// TODO: Pruefen: Host IP Tocken port
try {
if (getNanoleafDeviceServer() != null) {
deconnected = getNanoleafDeviceServer().deConnectNanoLeaf();
}
} catch (Exception e) {
e.printStackTrace();
}
setNanoleafConnected(false);
}
public void onNanoleafConnect(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
boolean connected = false;
// TODO: Pruefen: Host IP Tocken port
try {
m_nanoleafDeviceServer = new NanoleafDeviceServer(getHostname(), getIpAdresse(), getPort(), getNanoleafToken());
connected = m_nanoleafDeviceServer.connectNanoLeaf();
setAnzahlPanels(m_nanoleafDeviceServer.getNanoLeafPanels().size());
} catch (Exception e) {
e.printStackTrace();
}
setNanoleafConnected(true);
}
private NanoleafDeviceServer m_nanoleafDeviceServer = null;
public NanoleafDeviceServer getNanoleafDeviceServer() { return m_nanoleafDeviceServer; }
ROWDYNAMICCONTENTBinding m_dynMatrixPanels = new ROWDYNAMICCONTENTBinding();
public ROWDYNAMICCONTENTBinding getDynMatrixPanels() { return m_dynMatrixPanels; }
public void onPanelsOff(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {}
public void onPanelsOff(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
List<ComponentNode> componentNodes = getDynMatrixPanels().getContentNodes();
System.out.println("List: " + componentNodes.size());
List<PANENode> paneList = new ArrayList<PANENode>();
for (ComponentNode componentNode: componentNodes) {
System.out.println(componentNode);
if (componentNode instanceof PANENode) {
paneList.add((PANENode)componentNode);
}
}
}
public void onPanelsOn(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {}
public void onPanelsOn(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
}
String m_nanoleafToken = "LAG28BQWrXK2p79NbHMQsvcYYCN1TcD4";
@ -60,7 +151,12 @@ public class PanelConfigBean extends PageBean implements Serializable {
public DYNAMICCONTENTBinding getDynPanelList() { return m_dynPanelList; }
public void onPanelsCreate(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
createPanelsList(getAnzahlPanels());
List<Panel> panelList = null;
if (getNanoleafDeviceServer() != null) {
panelList = getNanoleafDeviceServer().getNanoLeafPanels();
}
createPanelsList(panelList);
}
public void onCheckAndCreate(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
@ -105,36 +201,87 @@ public class PanelConfigBean extends PageBean implements Serializable {
// ------------------------------------------------------------------------
public PanelConfigBean() {
createPanelsList(1);
initColorCombo();
}
private void createPanelsList(int countPanels) {
private void initColorCombo() {
for (ColorEnum colorEnum: ColorEnum.values()) {
getColorCombo().addValidValue(colorEnum.name(), colorEnum.name());
}
}
Hashtable<String, PanelInfo> m_panelIDPanelInfoSourceMap = null;
public Hashtable<String, PanelInfo> getPanelIDPanelInfoSourceMap() {
if (m_panelIDPanelInfoSourceMap == null) {
m_panelIDPanelInfoSourceMap = new Hashtable<String, PanelInfo>();
}
return m_panelIDPanelInfoSourceMap;
}
Hashtable<String, PanelInfo> m_panelIDPanelInfoTargetMap = null;
public Hashtable<String, PanelInfo> getPanelIDPanelInfoTargetMap() {
if (m_panelIDPanelInfoTargetMap == null) {
m_panelIDPanelInfoTargetMap = new Hashtable<String, PanelInfo>();
}
return m_panelIDPanelInfoTargetMap;
}
public NanoPANENode createNanoLeafNanoPANENode(int listNr, Panel panel) {
NanoPANENode nanoPANENode = null;
PanelInfo panelInfo = new PanelInfo(listNr, panel);
Integer panelID = panel.getId();
nanoPANENode = new NanoPANENode(panelInfo);
nanoPANENode.setActionListener("#{d.PanelConfigBean.onPanelSourceAction}");
nanoPANENode.setInvokeevent("click");
nanoPANENode.setHeight(60);
nanoPANENode.setWidth(60);
nanoPANENode.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000");
nanoPANENode.setDragsend("NANOLEAF:" + panelID);
nanoPANENode.setReference(panelID.toString());
return nanoPANENode;
}
private void createPanelsList(List<Panel> panelList) {
if (panelList != null && panelList.size() > 0) {
System.out.println("Panels: " + panelList.size());
} else {
panelList = new ArrayList<Panel>();
Panel panel = new Panel(58456, 1, 2, 2, ShapeType.rhythm());
panelList.add(panel);
panel = new Panel(43456, 1, 2, 2, ShapeType.rhythm());
panelList.add(panel);
}
setAnzahlPanels(panelList.size());
ROWNode row = new ROWNode();
COLDISTANCENode coldistanceNode = null;
PANENode paneNode = null;
PanelInfo panelInfo = null;
LABELNode labelNode = null;
for (int p = 0; p < countPanels; p++) {
panelInfo = new PanelInfo(p);
paneNode = new NanoPANENode(panelInfo);
paneNode.setHeight(60);
paneNode.setWidth(60);
paneNode.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000");
paneNode.setDragsend("Nanoleaf:" + panelInfo.getPanelID());
NanoPANENode paneNode = null;
int panelnr = 0;
for (int p = 0; p < panelList.size(); p++) {
Panel panel = panelList.get(p);
panelnr++;
paneNode = createNanoLeafNanoPANENode(panelnr, panel);
ROWNode rowInt = new ROWNode();
paneNode.addSubNode(rowInt);
coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth("50%");
rowInt.addSubNode(coldistanceNode);
labelNode = new LABELNode();
labelNode.setText(panelInfo.getPanelID() + "");
rowInt.addSubNode(labelNode);
row.addSubNode(paneNode);
coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth(20);
coldistanceNode.setWidth(10);
row.addSubNode(coldistanceNode);
}
@ -143,6 +290,7 @@ public class PanelConfigBean extends PageBean implements Serializable {
}
private void createPanelMatrix(int anzahlPanels, int matrixX, int matrixY) {
int anzahlPanelMatrix = 0;
@ -153,19 +301,22 @@ public class PanelConfigBean extends PageBean implements Serializable {
ROWNode row = null;
PANENode rootPaneNode = new PANENode();
rootPaneNode.setRowdistance("5");
PANENode paneNode = null;
NanoPANENode paneNode = null;
COLDISTANCENode coldistanceNode = null;
PanelInfo panelInfo = null;
for (int x = 0; x < matrixX; x++) {
row = new ROWNode();
for (int y = 0; y < matrixY; y++) {
paneNode = new PANENode();
panelInfo = new PanelInfo();
paneNode = new NanoPANENode(panelInfo);
paneNode.setWidth(50);
paneNode.setHeight(50);
paneNode.setBorder("left:2;right:2;top:2;bottom:2;color:#000000");
paneNode.setDropreceive("NANOLEAF");
paneNode.setReference("REF_XY:" + x + "|" + y);
paneNode.setActionListener("#{d.PanelConfigBean.onCashierActions}");
paneNode.setActionListener("#{d.PanelConfigBean.onDropPanelActions}");
coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth(5);
@ -180,12 +331,20 @@ public class PanelConfigBean extends PageBean implements Serializable {
}
public void onCashierActions(ActionEvent event) {
public void onDropPanelActions(ActionEvent event) {
if (event instanceof BaseActionEventDrop)
{
Statusbar.outputSuccess("Drop-Event was processed: " + event.getClass().getName());
BaseActionEventDrop baed = (BaseActionEventDrop)event;
String dragInfo = baed.getDragInfo();
System.out.println(baed.getSourceReference());
if (dragInfo.startsWith("NANOLEAF:"))
{
System.out.println("Ziel: ");
@ -198,7 +357,7 @@ public class PanelConfigBean extends PageBean implements Serializable {
}
}
public String getPageName() { return "/games/nanoleaf/panelconfig/panelconfig.xml"; }
public String getPageName() { return "/nanoleaf/tools/panelconfig/panelconfig.xml"; }
public String getRootExpressionUsedInPage() { return "#{d.PanelConfigBean}"; }
// ------------------------------------------------------------------------

@ -1,18 +1,28 @@
package de.games.nanoleaf.panelconfig;
package de.nanoleaf.tools.panelconfig;
import io.github.rowak.nanoleafapi.Panel;
public class PanelInfo {
int m_panelID = 0;
String m_panelNanoleafID = null;
int m_panelNanoleafID = 0;
int m_panelMatrixPosX = 0;
int m_panelMatrixPosY = 0;
String m_panelColor = null;
boolean m_panelActiv = true;
boolean m_panelInit = false;
Panel m_panel;
public PanelInfo() {
}
public PanelInfo(int panelID) {
this.m_panelID = panelID;
public PanelInfo(int panelnr, Panel panel) {
this.m_panelID = panelnr;
this.m_panel = panel;
this.m_panelNanoleafID = panel.getId();
this.m_panelMatrixPosX = panel.getX();
this.m_panelMatrixPosY = panel.getY();
}
@ -24,10 +34,10 @@ public class PanelInfo {
}
public String getPanelNanoleafID() {
public int getPanelNanoleafID() {
return m_panelNanoleafID;
}
public void setPanelNanoleafID(String panelNanoleafID) {
public void setPanelNanoleafID(int panelNanoleafID) {
m_panelNanoleafID = panelNanoleafID;
}
@ -70,6 +80,10 @@ public class PanelInfo {
public void setPanelInit(boolean panelInit) {
m_panelInit = panelInit;
}
public Panel getPanel() {
return m_panel;
}

@ -0,0 +1,33 @@
package de.nanoleaf.tools.panelconfig;
import java.util.List;
import de.tools.ReflectClass;
import io.github.rowak.nanoleafapi.Color;
public class TestClass {
public TestClass() {
Color color = new Color();
ReflectClass reflectClass = new ReflectClass(color);
List<String> fieldsList = reflectClass.getAllFields();
for (String field: fieldsList) {
System.out.println(field);
}
Color farbe = Color.BLUE;
System.out.println(farbe);
}
public static void main(String[] args) {
new TestClass();
}
}

@ -216,7 +216,7 @@ public class ReflectClass {
}
public List<String> getAllFields() {
public List<String> getAllDeclaredFields() {
List<String> resultList = new ArrayList<String>();
Field[] fields = getWorkObject().getClass().getDeclaredFields();
@ -226,6 +226,16 @@ public class ReflectClass {
return resultList;
}
public List<String> getAllFields() {
List<String> resultList = new ArrayList<String>();
Field[] fields = getWorkObject().getClass().getFields();
for (Field field : fields) {
resultList.add(field.getName());
}
return resultList;
}
public String getType(String fieldname) {
String result = null;
try {

@ -10,7 +10,7 @@ import org.eclnt.workplace.IWorkpageDispatcher;
import org.eclnt.workplace.WorkpageDispatchedPageBean;
import org.eclnt.workplace.WorkpageStarterFactory;
import de.geis.portal.workplace.layout.DefaultLayout;
import de.tvo.workplace.layout.DefaultLayout;
import jakarta.servlet.http.HttpSession;
@CCGenClass (expressionBase="#{d.DefaultWorkplaceBean}")

@ -9,8 +9,8 @@ import org.eclnt.jsfserver.util.HttpSessionAccess;
import org.eclnt.workplace.IWorkpageDispatcher;
import org.eclnt.workplace.WorkpageDispatchedPageBean;
import de.geis.portal.workplace.layout.DefaultLayout;
import de.geis.portal.workplace.layout.LayoutManager;
import de.tvo.workplace.layout.DefaultLayout;
import de.tvo.workplace.layout.LayoutManager;
import jakarta.servlet.http.HttpSession;
@CCGenClass (expressionBase="#{d.MainPage}")

@ -1,4 +1,4 @@
package de.geis.portal.workplace.layout;
package de.tvo.workplace.layout;
import java.io.Serializable;

@ -1,4 +1,4 @@
package de.geis.portal.workplace.layout;
package de.tvo.workplace.layout;
public interface LayoutInterface {

@ -1,4 +1,4 @@
package de.geis.portal.workplace.layout;
package de.tvo.workplace.layout;
import java.io.Serializable;

@ -2,7 +2,10 @@
<managedpackage name="de.tvo.workplace"/>
<dispatcherinfoextension resource="de/nanoleaf/managedbeans.xml"/>
<dispatcherinfoextension resource="de/examples/managedbeans.xml"/>
<dispatcherinfoextension resource="de/games/managedbeans.xml"/>
</dispatcherinfo>

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<t:layoutdefinition xmlns:t="http://www.CaptainCasa.com/controllibrary/t" >
<t:beanprocessing id="g_1" beanbinding="#{d.DragDropPaneBean}" />
<t:rowtitlebar id="g_2" />
<t:rowheader id="g_3" />
<t:rowbodypane id="g_4" >
<t:row id="g_6" >
<t:coldistance id="g_11" />
<t:pane id="g_8" actionListener="#{d.DragDropPaneBean.onPaneSource}" border="left:1;right:1;top:1;bottom:1;color:#a5a5a5" dragsend="NANO" height="60" invokeevent="click" width="60" >
<t:rowdistance id="g_9" />
<t:row id="g_17" >
<t:coldistance id="g_7" />
<t:label id="g_15" reference="584565" text="584565" />
</t:row>
</t:pane>
<t:coldistance id="g_13" />
<t:pane id="g_19" actionListener="#{d.DragDropPaneBean.onPaneSource}" border="left:1;right:1;top:1;bottom:1;color:#a5a5a5" height="60" invokeevent="click" width="60" >
<t:rowdistance id="g_20" />
<t:row id="g_21" >
<t:coldistance id="g_22" />
<t:label id="g_23" reference="484565" text="584565" />
</t:row>
</t:pane>
</t:row>
<t:rowdistance id="g_10" height="40" />
<t:row id="g_25" >
<t:coldistance id="g_12" />
<t:pane id="g_27" >
<t:row id="g_14" />
</t:pane>
</t:row>
</t:rowbodypane>
</t:layoutdefinition>

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<t:layoutdefinition xmlns:t="http://www.CaptainCasa.com/controllibrary/t" >
<t:beanprocessing id="g_1" beanbinding="#{d.TicTacToeBean}" />
<t:rowbodypane id="g_4" />
</t:layoutdefinition>

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<t:layoutdefinition xmlns:t="http://www.CaptainCasa.com/controllibrary/t" >
<t:beanprocessing id="g_1" beanbinding="#{d.TicTacToeBean}" />
<t:rowbodypane id="g_35" >
<t:rowdistance id="g_3" height="20%" />
<t:row id="g_4" >
<t:coldistance id="g_5" width="50%" />
<t:label id="g_6" font="size:24" text="TIC TAC TOE" />
<t:coldistance id="g_7" width="50%" />
</t:row>
<t:rowdistance id="g_8" height="10%" />
<t:row id="g_9" >
<t:coldistance id="g_10" width="20%" />
<t:button id="g_11" actionListener="#{d.TicTacToeBean.onButton1}" background="#{d.TicTacToeBean.colorButton1}" height="20%" reference="1" width="20%" />
<t:button id="g_12" actionListener="#{d.TicTacToeBean.onButton2}" background="#{d.TicTacToeBean.colorButton2}" height="20%" reference="2" width="20%" />
<t:button id="g_13" actionListener="#{d.TicTacToeBean.onButton3}" background="#{d.TicTacToeBean.colorButton3}" height="20%" reference="3" width="20%" />
</t:row>
<t:row id="g_14" >
<t:coldistance id="g_15" width="20%" />
<t:button id="g_16" actionListener="#{d.TicTacToeBean.onButton4}" background="#{d.TicTacToeBean.colorButton4}" height="20%" reference="4" width="20%" />
<t:button id="g_17" actionListener="#{d.TicTacToeBean.onButton5}" background="#{d.TicTacToeBean.colorButton5}" height="20%" reference="5" width="20%" />
<t:button id="g_18" actionListener="#{d.TicTacToeBean.onButton6}" background="#{d.TicTacToeBean.colorButton6}" height="20%" reference="6" width="20%" />
</t:row>
<t:row id="g_19" >
<t:coldistance id="g_20" width="20%" />
<t:button id="g_21" actionListener="#{d.TicTacToeBean.onButton7}" background="#{d.TicTacToeBean.colorButton7}" height="20%" reference="7" width="20%" />
<t:button id="g_22" actionListener="#{d.TicTacToeBean.onButton8}" background="#{d.TicTacToeBean.colorButton8}" height="20%" reference="8" width="20%" />
<t:button id="g_23" actionListener="#{d.TicTacToeBean.onButton9}" background="#{d.TicTacToeBean.colorButton9}" height="20%" reference="9" width="20%" />
</t:row>
<t:rowdistance id="g_24" height="20" />
<t:row id="g_25" >
<t:coldistance id="g_26" width="50%" />
<t:label id="g_27" font="size:18" text="#{d.TicTacToeBean.resultText}" />
<t:coldistance id="g_28" width="50%" />
</t:row>
<t:rowdistance id="g_29" height="10" />
<t:row id="g_30" >
<t:coldistance id="g_31" width="50%" />
<t:button id="g_32" actionListener="#{d.TicTacToeBean.onReset}" font="size:18" text="Neu beginnen" />
</t:row>
<t:rowdistance id="g_33" height="20%" />
</t:rowbodypane>
</t:layoutdefinition>

@ -20,7 +20,7 @@
<t:label id="g_11" text="Anzahl Panels:" width="100" />
<t:field id="g_12" actionListener="#{d.PanelConfigBean.onPanelsCreate}" align="center" flush="true" text="#{d.PanelConfigBean.anzahlPanels}" width="100" />
<t:coldistance id="g_30" width="15" />
<t:button id="g_31" text="Panels Auslesen" width="140" />
<t:button id="g_31" actionListener="#{d.PanelConfigBean.onPanelsCreate}" text="Panels Auslesen" width="140" />
</t:row>
<t:rowdistance id="g_24" />
<t:row id="g_25" >
@ -37,6 +37,13 @@
<t:button id="g_34" actionListener="#{d.PanelConfigBean.onCheckAndCreate}" text="Check And Create" width="140" />
</t:row>
<t:rowdistance id="g_27" height="15" />
<t:row id="g_99" >
<t:coldistance id="g_101" />
<t:label id="g_103" text="Color Setter:" width="100" />
<t:colorfield id="g_111" flush="true" value="#{d.PanelConfigBean.color}" width="100" />
<t:coldistance id="g_115" />
<t:label id="g_109" width="60" />
</t:row>
</t:splitpanesplit>
<t:splitpanesplit id="g_16" >
<t:rowdistance id="g_47" />
@ -72,7 +79,9 @@
<t:coldistance id="g_66" />
<t:field id="g_67" enabled="false" text="#{d.PanelConfigBean.nanoleafToken}" width="250" />
<t:coldistance id="g_74" />
<t:button id="g_46" text="Connect" width="80" />
<t:button id="g_46" actionListener="#{d.PanelConfigBean.onNanoleafConnect}" text="Connect" width="80" />
<t:coldistance id="g_93" />
<t:button id="g_95" actionListener="#{d.PanelConfigBean.onNanoleafDeconnect}" text="Deconnect" />
<t:coldistance id="g_83" />
<t:button id="g_84" actionListener="#{d.PanelConfigBean.onPanelsOn}" background="#00ff00" text="ON" width="60" />
<t:coldistance id="g_85" />
@ -93,7 +102,6 @@
</t:scrollpane>
</t:row>
<t:rowdistance id="g_71" height="15" />
<t:rowline id="g_72" />
<t:row id="g_51" >
<t:pane id="g_87" >
<t:row id="g_88" />
Loading…
Cancel
Save