diff --git a/pom.xml b/pom.xml
index 99051e151a..5a92ccd05f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
2.5.0
2.5.0
3.7.4
- 28.1-jre
+ 33.0.0-jre
2.8.0
2.10.4
3.12.0
@@ -61,7 +61,7 @@
1.9.0
2.10.1
2.1.1e
- 3.4.0
+ 3.5.3
1.4
0.8.7
1.0.3
@@ -78,9 +78,11 @@
3.4.1
0.7.2
1.4
- 3.4
+ 5.2.0
2.5.3
- 1.30
+ 2.2
+ 15.4
+ 2.15.3
yyyy-MM-dd
diff --git a/ugs-core/pom.xml b/ugs-core/pom.xml
index ac6186c4c0..bcf77eed90 100644
--- a/ugs-core/pom.xml
+++ b/ugs-core/pom.xml
@@ -117,7 +117,7 @@
org.openjdk.nashorn
nashorn-core
- 15.4
+ ${ugs.nashorn-core.version}
diff --git a/ugs-core/src/com/willwinder/universalgcodesender/StatusPollTimer.java b/ugs-core/src/com/willwinder/universalgcodesender/StatusPollTimer.java
index fec6151b81..d3bf8f3d49 100644
--- a/ugs-core/src/com/willwinder/universalgcodesender/StatusPollTimer.java
+++ b/ugs-core/src/com/willwinder/universalgcodesender/StatusPollTimer.java
@@ -118,7 +118,7 @@ public void receivedStatus() {
*/
public void setUpdateInterval(int updateInterval) {
this.updateInterval = Math.max(updateInterval, 10);
- if (timer.isRunning()) {
+ if (timer != null && timer.isRunning()) {
stop();
start();
}
diff --git a/ugs-core/src/com/willwinder/universalgcodesender/model/GUIBackend.java b/ugs-core/src/com/willwinder/universalgcodesender/model/GUIBackend.java
index 2f5d250297..914b1723a9 100644
--- a/ugs-core/src/com/willwinder/universalgcodesender/model/GUIBackend.java
+++ b/ugs-core/src/com/willwinder/universalgcodesender/model/GUIBackend.java
@@ -697,7 +697,7 @@ public void applySettingsToController(Settings settings, IController controller)
.append(Localization.getString("firmware.feature.linesToArc")).append(NEW_LINE)
.append(Localization.getString("firmware.feature.statusUpdates")).append(NEW_LINE)
.append(Localization.getString("firmware.feature.statusUpdateRate"));
-
+ logger.log(Level.SEVERE, "Could not load firmware settings", ex);
throw new Exception(message.toString(), ex);
}
}
diff --git a/ugs-core/test/com/willwinder/universalgcodesender/AbstractControllerTest.java b/ugs-core/test/com/willwinder/universalgcodesender/AbstractControllerTest.java
index 983ab5f83d..924cec28d1 100644
--- a/ugs-core/test/com/willwinder/universalgcodesender/AbstractControllerTest.java
+++ b/ugs-core/test/com/willwinder/universalgcodesender/AbstractControllerTest.java
@@ -33,8 +33,18 @@ This file is part of Universal Gcode Sender (UGS).
import com.willwinder.universalgcodesender.utils.SimpleGcodeStreamReader;
import org.apache.commons.io.FileUtils;
import org.easymock.EasyMock;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.or;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.verify;
import org.easymock.IMockBuilder;
import org.junit.AfterClass;
+import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -42,15 +52,12 @@ This file is part of Universal Gcode Sender (UGS).
import java.io.File;
import java.io.IOException;
-import static org.easymock.EasyMock.*;
-import static org.junit.Assert.assertEquals;
-
/**
*
* @author wwinder
*/
public class AbstractControllerTest {
-
+
private AbstractCommunicator mockCommunicator;
private ControllerListener mockListener;
private MessageService mockMessageService;
@@ -68,9 +75,8 @@ public void init() throws IllegalArgumentException {
mockMessageService = EasyMock.createMock(MessageService.class);
gcodeCreator = new DefaultCommandCreator();
- IMockBuilder instanceBuilder = EasyMock
- .createMockBuilder(AbstractController.class)
- .addMockedMethods(
+ IMockBuilder instanceBuilder = EasyMock.createMockBuilder(AbstractController.class);
+ instanceBuilder.addMockedMethods(
"closeCommBeforeEvent",
"closeCommAfterEvent",
"openCommAfterEvent",
@@ -134,7 +140,7 @@ private void streamInstanceExpectUtility() throws Exception {
private void startStreamExpectation(String port, int rate) throws Exception {
openInstanceExpectUtility(port, rate);
streamInstanceExpectUtility();
-
+
// Making sure the commands get queued.
mockCommunicator.queueStreamForComm(anyObject(IGcodeStreamReader.class));
expect(expectLastCall()).times(1);
@@ -172,7 +178,7 @@ public void testQueueCommand() throws Exception {
openInstanceExpectUtility(port, rate);
streamInstanceExpectUtility();
-
+
// Making sure the commands get queued.
mockCommunicator.queueStreamForComm(anyObject(IGcodeStreamReader.class));
expect(expectLastCall()).times(1);
@@ -200,7 +206,7 @@ public void testQueueCommands() throws Exception {
openInstanceExpectUtility(port, rate);
streamInstanceExpectUtility();
-
+
// Making sure the commands get queued.
mockCommunicator.queueStreamForComm(anyObject(IGcodeStreamReader.class));
expect(expectLastCall()).times(1);
diff --git a/ugs-core/test/com/willwinder/universalgcodesender/StatusPollTimerTest.java b/ugs-core/test/com/willwinder/universalgcodesender/StatusPollTimerTest.java
new file mode 100644
index 0000000000..4183bb3f36
--- /dev/null
+++ b/ugs-core/test/com/willwinder/universalgcodesender/StatusPollTimerTest.java
@@ -0,0 +1,26 @@
+package com.willwinder.universalgcodesender;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class StatusPollTimerTest {
+ private StatusPollTimer statusPollTimer;
+
+ @Mock
+ private IController controller;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ statusPollTimer = new StatusPollTimer(controller);
+ }
+
+ @Test
+ public void setUpdateIntervalShouldSetTheIntervalWhenTimerIsNotRunning() {
+ statusPollTimer.setUpdateInterval(100);
+ assertEquals(100, statusPollTimer.getUpdateInterval());
+ }
+}
\ No newline at end of file
diff --git a/ugs-pendant/pom.xml b/ugs-pendant/pom.xml
index 497bbf229d..d51de3b123 100644
--- a/ugs-pendant/pom.xml
+++ b/ugs-pendant/pom.xml
@@ -85,17 +85,17 @@
com.fasterxml.jackson.core
jackson-databind
- 2.15.3
+ ${ugs.jackson.version}
com.fasterxml.jackson.core
jackson-annotations
- 2.15.3
+ ${ugs.jackson.version}
com.fasterxml.jackson.core
jackson-core
- 2.15.3
+ ${ugs.jackson.version}
diff --git a/ugs-platform/ugs-platform-visualizer/src/main/java/com/willwinder/ugs/nbm/visualizer/JOGLGearsDemo.java b/ugs-platform/ugs-platform-visualizer/src/main/java/com/willwinder/ugs/nbm/visualizer/JOGLGearsDemo.java
deleted file mode 100644
index 3eaa70a559..0000000000
--- a/ugs-platform/ugs-platform-visualizer/src/main/java/com/willwinder/ugs/nbm/visualizer/JOGLGearsDemo.java
+++ /dev/null
@@ -1,340 +0,0 @@
-
-package com.willwinder.ugs.nbm.visualizer;
-
-import com.jogamp.opengl.GL;
-import com.jogamp.opengl.GL2;
-import static com.jogamp.opengl.GL2.GL_COMPILE;
-import static com.jogamp.opengl.GL2.GL_QUAD_STRIP;
-import static com.jogamp.opengl.GL2GL3.GL_QUADS;
-import com.jogamp.opengl.GLAutoDrawable;
-import com.jogamp.opengl.GLEventListener;
-import static com.jogamp.opengl.GLProfile.GL2;
-import com.jogamp.opengl.awt.GLCanvas;
-import static com.jogamp.opengl.fixedfunc.GLLightingFunc.GL_AMBIENT_AND_DIFFUSE;
-import static com.jogamp.opengl.fixedfunc.GLLightingFunc.GL_FLAT;
-import static com.jogamp.opengl.fixedfunc.GLLightingFunc.GL_LIGHT0;
-import static com.jogamp.opengl.fixedfunc.GLLightingFunc.GL_LIGHTING;
-import static com.jogamp.opengl.fixedfunc.GLLightingFunc.GL_NORMALIZE;
-import static com.jogamp.opengl.fixedfunc.GLLightingFunc.GL_SMOOTH;
-import static com.jogamp.opengl.fixedfunc.GLMatrixFunc.GL_MODELVIEW;
-import static com.jogamp.opengl.fixedfunc.GLMatrixFunc.GL_PROJECTION;
-import com.jogamp.opengl.util.Animator;
-import java.awt.Dimension;
-import java.awt.Frame;
-import java.awt.event.*;
-
-
-
-
-
-public class JOGLGearsDemo implements GLEventListener, MouseListener, MouseMotionListener {
- public static void main(String[] args) {
- Frame frame = new Frame("Gear Demo");
- GLCanvas canvas = new GLCanvas();
-
- canvas.addGLEventListener(new JOGLGearsDemo());
- frame.add(canvas);
- frame.setSize(300, 300);
- final Animator animator = new Animator(canvas);
- frame.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- // Run this on another thread than the AWT event queue to
- // make sure the call to Animator.stop() completes before
- // exiting
- new Thread(new Runnable() {
- public void run() {
- animator.stop();
- System.exit(0);
- }
- }).start();
- }
- });
- frame.show();
- animator.start();
- }
-
- private float view_rotx = 20.0f, view_roty = 30.0f, view_rotz = 0.0f;
- private int gear1, gear2, gear3;
- private float angle = 0.0f;
-
- private int prevMouseX, prevMouseY;
- private boolean mouseRButtonDown = false;
-
- public void init(GLAutoDrawable drawable) {
- // Use debug pipeline
- // drawable.setGL(new DebugGL(drawable.getGL()));
-
- GL2 gl = drawable.getGL().getGL2();
-
- System.err.println("INIT GL IS: " + gl.getClass().getName());
-
- System.err.println("Chosen GLCapabilities: " + drawable.getChosenGLCapabilities());
-
- gl.setSwapInterval(1);
-
- float pos[] = { 5.0f, 5.0f, 10.0f, 0.0f };
- float red[] = { 0.8f, 0.1f, 0.0f, 1.0f };
- float green[] = { 0.0f, 0.8f, 0.2f, 1.0f };
- float blue[] = { 0.2f, 0.2f, 1.0f, 1.0f };
-
- //gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, pos, 0);
- gl.glEnable(GL.GL_CULL_FACE);
- gl.glEnable(GL_LIGHTING);
- gl.glEnable(GL_LIGHT0);
- gl.glEnable(GL.GL_DEPTH_TEST);
-
- /* make the gears */
- gear1 = gl.glGenLists(1);
- gl.glNewList(gear1, GL_COMPILE);
- gl.glMaterialfv(GL.GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red, 0);
- gear(gl, 1.0f, 4.0f, 1.0f, 20, 0.7f);
- gl.glEndList();
-
- gear2 = gl.glGenLists(1);
- gl.glNewList(gear2, GL_COMPILE);
- gl.glMaterialfv(GL.GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green, 0);
- gear(gl, 0.5f, 2.0f, 2.0f, 10, 0.7f);
- gl.glEndList();
-
- gear3 = gl.glGenLists(1);
- gl.glNewList(gear3, GL_COMPILE);
- gl.glMaterialfv(GL.GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue, 0);
- gear(gl, 1.3f, 2.0f, 0.5f, 10, 0.7f);
- gl.glEndList();
-
- gl.glEnable(GL_NORMALIZE);
-
-
- //drawable.addMouseListener(this);
- //drawable.addMouseMotionListener(this);
- }
-
- public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
- GL2 gl = drawable.getGL().getGL2();
-
- float h = (float)height / (float)width;
-
- gl.glMatrixMode(GL_PROJECTION);
-
- System.err.println("GL_VENDOR: " + gl.glGetString(GL.GL_VENDOR));
- System.err.println("GL_RENDERER: " + gl.glGetString(GL.GL_RENDERER));
- System.err.println("GL_VERSION: " + gl.glGetString(GL.GL_VERSION));
- gl.glLoadIdentity();
- gl.glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);
- gl.glMatrixMode(GL_MODELVIEW);
- gl.glLoadIdentity();
- gl.glTranslatef(0.0f, 0.0f, -40.0f);
- }
-
- public void display(GLAutoDrawable drawable) {
- // Turn the gears' teeth
- angle += 2.0f;
-
- // Get the GL corresponding to the drawable we are animating
- GL2 gl = drawable.getGL().getGL2();
-
- // Special handling for the case where the GLJPanel is translucent
- // and wants to be composited with other Java 2D content
- //if ((drawable instanceof GLJPanel) &&
- // !((GLJPanel) drawable).isOpaque() &&
- // ((GLJPanel) drawable).shouldPreserveColorBufferIfTranslucent()) {
- // gl.glClear(GL.GL_DEPTH_BUFFER_BIT);
- //} else {
- gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
- //}
-
- // Rotate the entire assembly of gears based on how the user
- // dragged the mouse around
- gl.glPushMatrix();
- gl.glRotatef(view_rotx, 1.0f, 0.0f, 0.0f);
- gl.glRotatef(view_roty, 0.0f, 1.0f, 0.0f);
- gl.glRotatef(view_rotz, 0.0f, 0.0f, 1.0f);
-
- // Place the first gear and call its display list
- gl.glPushMatrix();
- gl.glTranslatef(-3.0f, -2.0f, 0.0f);
- gl.glRotatef(angle, 0.0f, 0.0f, 1.0f);
- gl.glCallList(gear1);
- gl.glPopMatrix();
-
- // Place the second gear and call its display list
- gl.glPushMatrix();
- gl.glTranslatef(3.1f, -2.0f, 0.0f);
- gl.glRotatef(-2.0f * angle - 9.0f, 0.0f, 0.0f, 1.0f);
- gl.glCallList(gear2);
- gl.glPopMatrix();
-
- // Place the third gear and call its display list
- gl.glPushMatrix();
- gl.glTranslatef(-3.1f, 4.2f, 0.0f);
- gl.glRotatef(-2.0f * angle - 25.0f, 0.0f, 0.0f, 1.0f);
- gl.glCallList(gear3);
- gl.glPopMatrix();
-
- // Remember that every push needs a pop; this one is paired with
- // rotating the entire gear assembly
- gl.glPopMatrix();
- }
-
- public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
-
- public static void gear(GL2 gl,
- float inner_radius,
- float outer_radius,
- float width,
- int teeth,
- float tooth_depth)
- {
- int i;
- float r0, r1, r2;
- float angle, da;
- float u, v, len;
-
- r0 = inner_radius;
- r1 = outer_radius - tooth_depth / 2.0f;
- r2 = outer_radius + tooth_depth / 2.0f;
-
- da = 2.0f * (float) Math.PI / teeth / 4.0f;
-
- gl.glShadeModel(GL_FLAT);
-
- gl.glNormal3f(0.0f, 0.0f, 1.0f);
-
- /* draw front face */
- gl.glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++)
- {
- angle = i * 2.0f * (float) Math.PI / teeth;
- gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f);
- if(i < teeth)
- {
- gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f);
- }
- }
- gl.glEnd();
-
- /* draw front sides of teeth */
- gl.glBegin(GL_QUADS);
- for (i = 0; i < teeth; i++)
- {
- angle = i * 2.0f * (float) Math.PI / teeth;
- gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + 2.0f * da), r2 * (float)Math.sin(angle + 2.0f * da), width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f);
- }
- gl.glEnd();
-
- /* draw back face */
- gl.glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++)
- {
- angle = i * 2.0f * (float) Math.PI / teeth;
- gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f);
- gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f);
- gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f);
- }
- gl.glEnd();
-
- /* draw back sides of teeth */
- gl.glBegin(GL_QUADS);
- for (i = 0; i < teeth; i++)
- {
- angle = i * 2.0f * (float) Math.PI / teeth;
- gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f);
- }
- gl.glEnd();
-
- /* draw outward faces of teeth */
- gl.glBegin(GL_QUAD_STRIP);
- for (i = 0; i < teeth; i++)
- {
- angle = i * 2.0f * (float) Math.PI / teeth;
- gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f);
- u = r2 * (float)Math.cos(angle + da) - r1 * (float)Math.cos(angle);
- v = r2 * (float)Math.sin(angle + da) - r1 * (float)Math.sin(angle);
- len = (float)Math.sqrt(u * u + v * v);
- u /= len;
- v /= len;
- gl.glNormal3f(v, -u, 0.0f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f);
- gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), width * 0.5f);
- gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f);
- u = r1 * (float)Math.cos(angle + 3 * da) - r2 * (float)Math.cos(angle + 2 * da);
- v = r1 * (float)Math.sin(angle + 3 * da) - r2 * (float)Math.sin(angle + 2 * da);
- gl.glNormal3f(v, -u, 0.0f);
- gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f);
- gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f);
- }
- gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), width * 0.5f);
- gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), -width * 0.5f);
- gl.glEnd();
-
- gl.glShadeModel(GL_SMOOTH);
-
- /* draw inside radius cylinder */
- gl.glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++)
- {
- angle = i * 2.0f * (float) Math.PI / teeth;
- gl.glNormal3f(-(float)Math.cos(angle), -(float)Math.sin(angle), 0.0f);
- gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f);
- gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f);
- }
- gl.glEnd();
- }
-
- // Methods required for the implementation of MouseListener
- public void mouseEntered(MouseEvent e) {}
- public void mouseExited(MouseEvent e) {}
-
- public void mousePressed(MouseEvent e) {
- prevMouseX = e.getX();
- prevMouseY = e.getY();
- if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) {
- mouseRButtonDown = true;
- }
- }
-
- public void mouseReleased(MouseEvent e) {
- if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) {
- mouseRButtonDown = false;
- }
- }
-
- public void mouseClicked(MouseEvent e) {}
-
- // Methods required for the implementation of MouseMotionListener
- public void mouseDragged(MouseEvent e) {
- int x = e.getX();
- int y = e.getY();
- Dimension size = e.getComponent().getSize();
-
- float thetaY = 360.0f * ( (float)(x-prevMouseX)/(float)size.width);
- float thetaX = 360.0f * ( (float)(prevMouseY-y)/(float)size.height);
-
- prevMouseX = x;
- prevMouseY = y;
-
- view_rotx += thetaX;
- view_roty += thetaY;
- }
-
- public void mouseMoved(MouseEvent e) {}
-
- @Override
- public void dispose(GLAutoDrawable glad) {
- //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
-}
-