From f0d40d695e6c14db5a4cbe69f08c35d273c7439f Mon Sep 17 00:00:00 2001 From: VogelT Date: Fri, 7 Feb 2025 12:08:15 +0100 Subject: [PATCH] Update Matirx --- pom.xml | 2 +- .../nanoleaf/panelconfig/NanoPANENode.java | 74 +++++++++++++ .../nanoleaf/panelconfig/PanelConfigBean.java | 100 ++++++++++++++++-- .../nanoleaf/panelconfig/panelconfig.xml | 11 +- src/main/webapp/workplace/home.xml | 8 +- 5 files changed, 181 insertions(+), 14 deletions(-) create mode 100644 src/main/java/de/games/nanoleaf/panelconfig/NanoPANENode.java diff --git a/pom.xml b/pom.xml index 1cfd457..1af7c46 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ - 20240910 + 20250128 diff --git a/src/main/java/de/games/nanoleaf/panelconfig/NanoPANENode.java b/src/main/java/de/games/nanoleaf/panelconfig/NanoPANENode.java new file mode 100644 index 0000000..2abdffa --- /dev/null +++ b/src/main/java/de/games/nanoleaf/panelconfig/NanoPANENode.java @@ -0,0 +1,74 @@ +package de.games.nanoleaf.panelconfig; + +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.ROWDISTANCENode; +import org.eclnt.jsfserver.elements.componentnodes.ROWNode; + +public class NanoPANENode extends PANENode { + + private PanelInfo m_panelInfo = null; + + public PanelInfo getPanelInfo() { + return m_panelInfo; + } + + public void setPanelInfo(PanelInfo panelInfo) { + m_panelInfo = panelInfo; + } + + public NanoPANENode(PanelInfo panelInfo) { + this.m_panelInfo = panelInfo; + + createInnerPane(); + } + + private void createInnerPane() { + + this.setDragsend("NANOLEAF:ID_" + getPanelInfo().getPanelID()); + this.setHeight(80); + this.setWidth(80); + this.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000"); + ROWDISTANCENode rowdistanceNode = new ROWDISTANCENode(); + this.addSubNode(rowdistanceNode); + + ROWNode row = new ROWNode(); + + COLDISTANCENode coldistanceNode = new COLDISTANCENode(); + row.addSubNode(coldistanceNode); + + LABELNode labelPaneID = new LABELNode(); + labelPaneID.setText("ID: " + getPanelInfo().getPanelID()); + + row.addSubNode(labelPaneID); + + this.addSubNode(row); + + row = new ROWNode(); + coldistanceNode = new COLDISTANCENode(); + row.addSubNode(coldistanceNode); + labelPaneID = new LABELNode(); + labelPaneID.setText("Nano ID: "); + + row.addSubNode(labelPaneID); + + this.addSubNode(row); + + row = new ROWNode(); + coldistanceNode = new COLDISTANCENode(); + row.addSubNode(coldistanceNode); + labelPaneID = new LABELNode(); + if (getPanelInfo().getPanelNanoleafID() == null) { + labelPaneID.setText("unbek."); + } else { + labelPaneID.setText(getPanelInfo().getPanelNanoleafID()); + } + + row.addSubNode(labelPaneID); + + this.addSubNode(row); + + } + +} diff --git a/src/main/java/de/games/nanoleaf/panelconfig/PanelConfigBean.java b/src/main/java/de/games/nanoleaf/panelconfig/PanelConfigBean.java index 84ce7ae..9ba6bd1 100644 --- a/src/main/java/de/games/nanoleaf/panelconfig/PanelConfigBean.java +++ b/src/main/java/de/games/nanoleaf/panelconfig/PanelConfigBean.java @@ -1,17 +1,27 @@ package de.games.nanoleaf.panelconfig; import java.io.Serializable; +import java.util.ArrayList; +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.componentnodes.COLDISTANCENode; 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.pagebean.PageBean; @CCGenClass (expressionBase="#{d.PanelConfigBean}") public class PanelConfigBean extends PageBean implements Serializable { + ROWDYNAMICCONTENTBinding m_dynMatrixPanels = new ROWDYNAMICCONTENTBinding(); + public ROWDYNAMICCONTENTBinding getDynMatrixPanels() { return m_dynMatrixPanels; } + String m_nanoleafToken = "LAG28BQWrXK2p79NbHMQsvcYYCN1TcD4"; public String getNanoleafToken() { return m_nanoleafToken; } @@ -38,10 +48,68 @@ public class PanelConfigBean extends PageBean implements Serializable { } public void onCheckAndCreate(org.eclnt.jsfserver.base.faces.event.ActionEvent event) { - + createPanelMatrix(getAnzahlPanels(), getMatrixX(), getMatrixY()); } - int m_matrixY = 3; + private void createPanelMatrix(int anzahlPanels, int matrixX, int matrixY) { + + int anzahlPanelMatrix = 0; + + anzahlPanelMatrix = matrixX * matrixY; + + //List componentNodeList = new ArrayList(); + 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 void setMatrixY(int value) { this.m_matrixY = value; } @@ -80,26 +148,38 @@ public class PanelConfigBean extends PageBean implements Serializable { public PanelConfigBean() { createPanelsList(1); } + + private List m_nanoPaneNodeList = null; + public List getNanoPaneNodeList() { + if (m_nanoPaneNodeList == null) { + m_nanoPaneNodeList = new ArrayList(); + } + 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(); COLDISTANCENode coldistanceNode = null; - PANENode paneNode = null; + NanoPANENode paneNode = null; PanelInfo panelInfo = null; for (int p = 0; p < countPanels; p++) { panelInfo = new PanelInfo(p); - paneNode = new PANENode(); - paneNode.setHeight(80); - paneNode.setWidth(80); - paneNode.setBorder("left:2;right:2;top:2;bottom:2;color:#ff0000"); + paneNode = new NanoPANENode(panelInfo); + row.addSubNode(paneNode); coldistanceNode = new COLDISTANCENode(); - coldistanceNode.setWidth(20); - paneNode.addSubNode(coldistanceNode); + coldistanceNode.setWidth(10); + + row.addSubNode(coldistanceNode); } getDynPanelList().setContentNode(row); diff --git a/src/main/webapp/games/nanoleaf/panelconfig/panelconfig.xml b/src/main/webapp/games/nanoleaf/panelconfig/panelconfig.xml index bc7e139..caab100 100644 --- a/src/main/webapp/games/nanoleaf/panelconfig/panelconfig.xml +++ b/src/main/webapp/games/nanoleaf/panelconfig/panelconfig.xml @@ -5,7 +5,7 @@ - + @@ -90,7 +90,14 @@ - + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/workplace/home.xml b/src/main/webapp/workplace/home.xml index da144c0..878febe 100644 --- a/src/main/webapp/workplace/home.xml +++ b/src/main/webapp/workplace/home.xml @@ -4,6 +4,12 @@ - + + + + + + + \ No newline at end of file