Compare commits

...

4 Commits

Author SHA1 Message Date
mail dacdae229b Merge branch 'master' of
11 months ago
mail be7cf3a015 erweitert
11 months ago
mail 5c8cf8e3c8 Update
11 months ago
mail a8469b0b22 Update
12 months ago

@ -1,17 +1,13 @@
package de.games.nanoleaf.panelconfig; package de.games.nanoleaf.panelconfig;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.Iterator;
import java.util.List;
import org.eclnt.editor.annotations.CCGenClass; 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.componentnodes.COLDISTANCENode; 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.PANENode;
import org.eclnt.jsfserver.elements.componentnodes.ROWNode; 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.DYNAMICCONTENTBinding;
import org.eclnt.jsfserver.elements.impl.ROWDYNAMICCONTENTBinding; import org.eclnt.jsfserver.elements.impl.ROWDYNAMICCONTENTBinding;
import org.eclnt.jsfserver.pagebean.PageBean; import org.eclnt.jsfserver.pagebean.PageBean;
@ -19,8 +15,12 @@ import org.eclnt.jsfserver.pagebean.PageBean;
@CCGenClass (expressionBase="#{d.PanelConfigBean}") @CCGenClass (expressionBase="#{d.PanelConfigBean}")
public class PanelConfigBean extends PageBean implements Serializable { public class PanelConfigBean extends PageBean implements Serializable {
ROWDYNAMICCONTENTBinding m_dynMatrixPanels = new ROWDYNAMICCONTENTBinding(); ROWDYNAMICCONTENTBinding m_dynNanoleafLayout = new ROWDYNAMICCONTENTBinding();
public ROWDYNAMICCONTENTBinding getDynMatrixPanels() { return m_dynMatrixPanels; } public ROWDYNAMICCONTENTBinding getDynNanoleafLayout() { return m_dynNanoleafLayout; }
public void onPanelsOff(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {}
public void onPanelsOn(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {}
String m_nanoleafToken = "LAG28BQWrXK2p79NbHMQsvcYYCN1TcD4"; String m_nanoleafToken = "LAG28BQWrXK2p79NbHMQsvcYYCN1TcD4";
@ -48,68 +48,11 @@ public class PanelConfigBean extends PageBean implements Serializable {
} }
public void onCheckAndCreate(org.eclnt.jsfserver.base.faces.event.ActionEvent event) { public void onCheckAndCreate(org.eclnt.jsfserver.base.faces.event.ActionEvent event) {
createPanelMatrix(getAnzahlPanels(), getMatrixX(), getMatrixY());
createNanoleafLayoutList(getMatrixX(), getMatrixY());
} }
private void createPanelMatrix(int anzahlPanels, int matrixX, int matrixY) { int m_matrixY = 3;
int anzahlPanelMatrix = 0;
anzahlPanelMatrix = matrixX * matrixY;
//List<ComponentNode> componentNodeList = new ArrayList<ComponentNode>();
ROWNode row = null;
PANENode rootPaneNode = new PANENode();
rootPaneNode.setRowdistance("5");
PANENode paneNode = null;
COLDISTANCENode coldistanceNode = null;
for (int x = 0; x < matrixX; x++) {
row = new ROWNode();
for (int y = 0; y < matrixY; y++) {
paneNode = new PANENode();
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}");
coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth(5);
row.addSubNode(paneNode);
row.addSubNode(coldistanceNode);
}
rootPaneNode.addSubNode(row);
}
getDynMatrixPanels().setContentNode(rootPaneNode);
}
public void onCashierActions(ActionEvent event)
{
if (event instanceof BaseActionEventDrop)
{
Statusbar.outputSuccess("Drop-Event was processed: " + event.getClass().getName());
BaseActionEventDrop baed = (BaseActionEventDrop)event;
String dragInfo = baed.getDragInfo();
if (dragInfo.startsWith("NANOLEAF:"))
{
System.out.println("Ziel: ");
System.out.println("Drop: " + dragInfo);
}
}
else if (event instanceof BaseActionEventInvoke)
{
Statusbar.outputSuccess("Cashier Icon was pressed!");
}
}
int m_matrixY = 3;
public int getMatrixY() { return m_matrixY; } public int getMatrixY() { return m_matrixY; }
public void setMatrixY(int value) { this.m_matrixY = value; } public void setMatrixY(int value) { this.m_matrixY = value; }
@ -133,7 +76,6 @@ public class PanelConfigBean extends PageBean implements Serializable {
/* Listener to the user of the page bean. */ /* Listener to the user of the page bean. */
public interface IListener extends Serializable { public interface IListener extends Serializable {
} }
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
@ -149,43 +91,87 @@ public class PanelConfigBean extends PageBean implements Serializable {
public PanelConfigBean() { public PanelConfigBean() {
createPanelsList(1); createPanelsList(1);
} }
private List<NanoPANENode> m_nanoPaneNodeList = null;
public List<NanoPANENode> getNanoPaneNodeList() {
if (m_nanoPaneNodeList == null) {
m_nanoPaneNodeList = new ArrayList<NanoPANENode>();
}
return m_nanoPaneNodeList;
}
public NanoPANENode getNanoPaneNode(int id) {
return getNanoPaneNodeList().get(id);
}
private void createPanelsList(int countPanels) {
private void createPanelsList(int countPanels) {
ROWNode row = new ROWNode(); ROWNode row = new ROWNode();
COLDISTANCENode coldistanceNode = null; COLDISTANCENode coldistanceNode = null;
NanoPANENode paneNode = null; PANENode paneNode = null;
PanelInfo panelInfo = null; PanelInfo panelInfo = null;
LABELNode labelNode = null;
for (int p = 0; p < countPanels; p++) { for (int p = 0; p < countPanels; p++) {
panelInfo = new PanelInfo(p); panelInfo = new PanelInfo(56253 + p);
paneNode = new NanoPANENode(panelInfo); paneNode = new PANENode();
paneNode.setHeight(60);
paneNode.setWidth(60);
paneNode.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000");
paneNode.setDragsend("Nanoleaf:" + panelInfo.getPanelID());
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); row.addSubNode(paneNode);
coldistanceNode = new COLDISTANCENode(); coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth(10); coldistanceNode.setWidth(20);
row.addSubNode(coldistanceNode); row.addSubNode(coldistanceNode);
} }
getDynPanelList().setContentNode(row); getDynPanelList().setContentNode(row);
} }
private void createNanoleafLayoutList(int xPanels, int yPanels) {
ROWNode row = new ROWNode();
COLDISTANCENode coldistanceNode = null;
PANENode paneNode = null;
PanelInfo panelInfo = null;
PANENode paneNodeRoot = new PANENode();
for (int x = 0; x < xPanels; x++) {
row = new ROWNode();
for (int y = 0; y < yPanels; y++) {
paneNode = new PANENode();
paneNode.setHeight(60);
paneNode.setWidth(60);
paneNode.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000");
paneNode.setDragsend("Nanoleaf:");
row.addSubNode(paneNode);
coldistanceNode = new COLDISTANCENode();
coldistanceNode.setWidth(5);
row.addSubNode(coldistanceNode);
}
paneNodeRoot.addSubNode(row);
}
getDynNanoleafLayout().setContentNode(paneNodeRoot);
// for (int p = 0; p < countPanels; p++) {
// panelInfo = new PanelInfo(p);
// paneNode = new PANENode();
// paneNode.setHeight(60);
// paneNode.setWidth(60);
// paneNode.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000");
// paneNode.setDragsend("Nanoleaf:");
//
// row.addSubNode(paneNode);
// coldistanceNode = new COLDISTANCENode();
// coldistanceNode.setWidth(20);
// row.addSubNode(coldistanceNode);
// }
getDynPanelList().setContentNode(row);
}
public String getPageName() { return "/games/nanoleaf/panelconfig/panelconfig.xml"; } public String getPageName() { return "/games/nanoleaf/panelconfig/panelconfig.xml"; }
public String getRootExpressionUsedInPage() { return "#{d.PanelConfigBean}"; } public String getRootExpressionUsedInPage() { return "#{d.PanelConfigBean}"; }

@ -1,10 +1,15 @@
package de.games.nanoleaf.server; package de.games.nanoleaf.server;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
import io.github.rowak.nanoleafapi.Aurora; import io.github.rowak.nanoleafapi.Aurora;
import io.github.rowak.nanoleafapi.Canvas; import io.github.rowak.nanoleafapi.Canvas;
import io.github.rowak.nanoleafapi.Color;
import io.github.rowak.nanoleafapi.NanoleafDevice; import io.github.rowak.nanoleafapi.NanoleafDevice;
import io.github.rowak.nanoleafapi.Panel; import io.github.rowak.nanoleafapi.Panel;
import io.github.rowak.nanoleafapi.event.DetailedTouchEvent; import io.github.rowak.nanoleafapi.event.DetailedTouchEvent;
@ -32,6 +37,8 @@ public class NanoleafServer {
Canvas nanoleafCanvas = null; Canvas nanoleafCanvas = null;
Set<Integer> lastIDSet = new HashSet<Integer>();
try { try {
//nanoleafCanvas = new Canvas(host, port, accessToken); //nanoleafCanvas = new Canvas(host, port, accessToken);
@ -39,6 +46,13 @@ public class NanoleafServer {
// Verbinde mit dem Gerät // Verbinde mit dem Gerät
NanoleafDevice device = NanoleafDevice.createDevice(host, port, accessToken); NanoleafDevice device = NanoleafDevice.createDevice(host, port, accessToken);
// List<Panel> panelList = device.getPanels();
//
// for (Panel panel: panelList) {
// System.out.println("Panel: " + panel.getId());
// }
device.setColor(Color.WHITE);
device.enableTouchEventStreaming(port); // You need to specify a port to listen on device.enableTouchEventStreaming(port); // You need to specify a port to listen on
device.registerTouchEventStreamingListener(new NanoleafTouchEventListener() { device.registerTouchEventStreamingListener(new NanoleafTouchEventListener() {
@Override @Override
@ -54,37 +68,78 @@ public class NanoleafServer {
@Override @Override
public void onEvent(DetailedTouchEvent[] events) { public void onEvent(DetailedTouchEvent[] events) {
// Called when a touch event occurs // Called when a touch event occurs
System.out.println("Events: " + events.length); //System.out.println("Events: " + events.length);
DetailedTouchEvent event = events[0]; DetailedTouchEvent event = events[0];
Integer lastID = event.getPanelId();
//TouchEvent touch = event.getTouchType(); //TouchEvent touch = event.getTouchType();
switch (event.getTouchType()) { switch (event.getTouchType()) {
case TouchEvent.DOUBLE_TAP: case TouchEvent.DOUBLE_TAP:
System.out.println("DOUBLE_TAP"); //System.out.println("DOUBLE_TAP");
break; break;
case TouchEvent.SINGLE_TAP: case TouchEvent.SINGLE_TAP:
System.out.println("SINGLE_TAP"); //System.out.println("SINGLE_TAP");
if (lastIDSet.contains(lastID)) {
return;
} else {
lastIDSet.clear();
lastIDSet.add(lastID);
try {
List<Panel> panels = device.getPanels();
device.enableExternalStreaming();
// enable external streaming
// for (int i = 0; i < 4; i++) {
// device.setPanelExternalStreaming(panels.get(i), "#FF00FF", 1); // set a few panels to purple
// }
device.setPanelExternalStreaming(lastID, Color.RED, 1);
// int panelID = event.getInitialPanelId();
//
// //device.setPanelColor(panelID, "#ff0000", 2);
//
// device.setPanelExternalStreaming(panelID, Color.RED, 1);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ID: " + event.getPanelId());
}
break; break;
case TouchEvent.HOLD: case TouchEvent.HOLD:
System.out.println("HOLD"); //System.out.println("HOLD");
break; break;
case TouchEvent.UNKNOWN_ATTRIBUTE: case TouchEvent.UNKNOWN_ATTRIBUTE:
System.out.println("UNKNOWN_ATTRIBUTE"); //System.out.println("UNKNOWN_ATTRIBUTE");
break; break;
default: default:
System.out.println("Unexpected value: " + event.getTouchType()); //System.out.println("Unexpected value: " + event.getTouchType());
} }
System.out.println("ID: " + event.getPanelId());
} }
}); });

@ -73,6 +73,10 @@
<t:field id="g_67" enabled="false" text="#{d.PanelConfigBean.nanoleafToken}" width="250" /> <t:field id="g_67" enabled="false" text="#{d.PanelConfigBean.nanoleafToken}" width="250" />
<t:coldistance id="g_74" /> <t:coldistance id="g_74" />
<t:button id="g_46" text="Connect" width="80" /> <t:button id="g_46" text="Connect" width="80" />
<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" />
<t:button id="g_86" actionListener="#{d.PanelConfigBean.onPanelsOff}" background="#ff0000" text="OFF" width="60" />
</t:row> </t:row>
</t:splitpanesplit> </t:splitpanesplit>
</t:splitpane> </t:splitpane>
@ -90,12 +94,11 @@
</t:row> </t:row>
<t:rowdistance id="g_71" height="15" /> <t:rowdistance id="g_71" height="15" />
<t:rowline id="g_72" /> <t:rowline id="g_72" />
<t:rowdistance id="g_86" height="15" />
<t:row id="g_51" > <t:row id="g_51" >
<t:pane id="g_83" height="100%" width="100%" > <t:pane id="g_87" >
<t:rowdistance id="g_88" height="50%" /> <t:row id="g_88" />
<t:rowdynamiccontent id="g_84" contentbinding="#{d.PanelConfigBean.dynMatrixPanels}" /> <t:rowdistance id="g_91" height="50%" />
<t:rowdistance id="g_89" height="50%" /> <t:rowdynamiccontent id="g_89" contentbinding="#{d.PanelConfigBean.dynNanoleafLayout}" />
</t:pane> </t:pane>
</t:row> </t:row>
</t:rowbodypane> </t:rowbodypane>

Loading…
Cancel
Save