diff --git a/config/devices-modbus.properties b/config/devices-modbus.properties
new file mode 100644
index 0000000..d46c089
--- /dev/null
+++ b/config/devices-modbus.properties
@@ -0,0 +1,50 @@
+wago=ch.psi.pshell.modbus.ModbusTCP|wago-mxsc-1:502|||
+led_ok_1=ch.psi.pshell.modbus.DigitalInput|wago 0||1000|
+led_ok_2=ch.psi.pshell.modbus.DigitalInput|wago 1||1000|
+led_ok_3=ch.psi.pshell.modbus.DigitalInput|wago 2||1000|
+feedback_local_safety=ch.psi.pshell.modbus.DigitalInput|wago 3||1000|
+feedback_psys_safety=ch.psi.pshell.modbus.DigitalInput|wago 4||1000|
+filling_phase_separator=ch.psi.pshell.modbus.DigitalInput|wago 5||1000|
+filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 6||1000|
+dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 7||1000|
+guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 8||1000|
+air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000|false
+n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 10||1000|
+#spare_di_1=ch.psi.pshell.modbus.DigitalInput|wago 11|||
+#spare_di_2=ch.psi.pshell.modbus.DigitalInput|wago 12|||
+#spare_di_3=ch.psi.pshell.modbus.DigitalInput|wago 13|||
+#spare_di_4=ch.psi.pshell.modbus.DigitalInput|wago 14|||
+he_chamber_valve_1=ch.psi.pshell.modbus.DigitalInput|wago 15||1000|
+he_chamber_valve_2=ch.psi.pshell.modbus.DigitalInput|wago 16||1000|
+smc_magnet_status=ch.psi.pshell.modbus.DigitalInput|wago 17||1000|
+smc_mounted_1=ch.psi.pshell.modbus.DigitalInput|wago 18||1000|
+smc_mounted_2=ch.psi.pshell.modbus.DigitalInput|wago 19||1000|
+relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000|
+release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0|||
+release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1|||
+ln2_main_power=ch.psi.pshell.modbus.DigitalOutput|wago 2|||
+rim_heater=ch.psi.pshell.modbus.DigitalOutput|wago 3|||
+phase_separator_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 4|||
+dewar_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 5|||false
+valve_he_chamber=ch.psi.pshell.modbus.DigitalOutput|wago 6|||
+gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 7|||
+valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 8|||
+valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 9|||
+valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 10|||
+valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 11|||
+#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 12|||
+smc_sup_det=ch.psi.pshell.modbus.DigitalOutput|wago 13|||
+#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 14|||
+#spare_do_4=ch.psi.pshell.modbus.DigitalOutput|wago 15|||
+phase_separator_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000|
+dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000|
+rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 2||10000|
+#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 3|||true
+smc_current_rb=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||1000|
+#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 5|||
+#spare_ai_4=ch.psi.pshell.modbus.AnalogInput|wago 6|||
+#spare_ai_5=ch.psi.pshell.modbus.AnalogInput|wago 7|||
+led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0|||
+led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1|||
+led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2|||
+smc_current=ch.psi.pshell.modbus.ProcessVariable|wago 3|||
diff --git a/config/setup-modbus.properties b/config/setup-modbus.properties
new file mode 100644
index 0000000..eb292c1
--- /dev/null
+++ b/config/setup-modbus.properties
@@ -0,0 +1,18 @@
+#Wed Sep 14 15:16:45 CEST 2016
+configFile={config}/config.properties
+configFileDevices={config}/devices-modbus.properties
+configFilePlugins={config}/plugins.properties
+configFileTasks={config}/tasks.properties
+configPath={home}/config
+contextPath={outp}/context
+dataPath={outp}/data
+devicesPath={home}/devices
+extensionsPath={home}/extensions
+imagesPath={outp}/images
+libraryPath={script}; {script}/Lib
+logPath={outp}/log
+pluginsPath={home}/plugins
+scriptPath={home}/script
+scriptType=py
+sessionsPath={outp}/sessions
+wwwPath={home}/www
diff --git a/devices/led_ctrl_1.properties b/devices/led_ctrl_1.properties
index c0cba8a..3307d85 100644
--- a/devices/led_ctrl_1.properties
+++ b/devices/led_ctrl_1.properties
@@ -1,4 +1,4 @@
-#Wed Aug 08 14:23:56 CEST 2018
+#Tue Aug 21 18:52:35 CEST 2018
maxValue=0.4
minValue=0.0
offset=0.0
diff --git a/devices/led_ctrl_2.properties b/devices/led_ctrl_2.properties
index c0cba8a..3307d85 100644
--- a/devices/led_ctrl_2.properties
+++ b/devices/led_ctrl_2.properties
@@ -1,4 +1,4 @@
-#Wed Aug 08 14:23:56 CEST 2018
+#Tue Aug 21 18:52:35 CEST 2018
maxValue=0.4
minValue=0.0
offset=0.0
diff --git a/devices/led_ctrl_3.properties b/devices/led_ctrl_3.properties
index c0cba8a..3307d85 100644
--- a/devices/led_ctrl_3.properties
+++ b/devices/led_ctrl_3.properties
@@ -1,4 +1,4 @@
-#Wed Aug 08 14:23:56 CEST 2018
+#Tue Aug 21 18:52:35 CEST 2018
maxValue=0.4
minValue=0.0
offset=0.0
diff --git a/plugins/Commands.form b/plugins/Commands.form
index f513673..97e6aa0 100644
--- a/plugins/Commands.form
+++ b/plugins/Commands.form
@@ -53,28 +53,32 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
-
+
@@ -117,20 +121,24 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -192,7 +200,7 @@
-
+
@@ -200,15 +208,15 @@
-
+
+
-
-
-
+
+
-
+
@@ -262,6 +270,9 @@
+
+
+
@@ -269,6 +280,9 @@
+
+
+
@@ -293,6 +307,9 @@
+
+
+
@@ -381,6 +398,9 @@
+
+
+
@@ -398,6 +418,9 @@
+
+
+
diff --git a/plugins/Commands.java b/plugins/Commands.java
index d9b42e2..eecc33f 100644
--- a/plugins/Commands.java
+++ b/plugins/Commands.java
@@ -2,6 +2,9 @@
* Copyright (c) 2014-2017 Paul Scherrer Institute. All rights reserved.
*/
+import ch.psi.pshell.device.Device;
+import ch.psi.pshell.device.DeviceAdapter;
+import ch.psi.pshell.device.GenericDevice;
import ch.psi.pshell.ui.Panel;
import ch.psi.utils.State;
import ch.psi.utils.swing.SwingUtils;
@@ -17,13 +20,32 @@ public class Commands extends Panel {
public Commands() {
initComponents();
- ((JSpinner.DefaultEditor)spinnerSegment.getEditor()).getTextField().setHorizontalAlignment(JTextField.RIGHT);
+ ((JSpinner.DefaultEditor)spinnerSegment.getEditor()).getTextField().setHorizontalAlignment(JTextField.CENTER);
+ ((JSpinner.DefaultEditor)spinnerPuck.getEditor()).getTextField().setHorizontalAlignment(JTextField.CENTER);
+ ((JSpinner.DefaultEditor)spinnerSample.getEditor()).getTextField().setHorizontalAlignment(JTextField.CENTER);
}
//Overridable callbacks
@Override
public void onInitialize(int runCount) {
-
+ GenericDevice basePlate = getDevice("BasePlate");
+ if (basePlate != null){
+ basePlate.addListener(new DeviceAdapter() {
+ @Override
+ public void onValueChanged(Device device, Object value, Object former) {
+ if (value!=null){
+ String segment = ((Object[])value)[0].toString();
+ spinnerSegment.setValue(segment);
+ Integer puck = (Integer) ((Object[])value)[1];
+ spinnerPuck.setValue(Integer.valueOf(puck));
+ Integer sample = (Integer) ((Object[])value)[2];
+ if (sample!=null){
+ spinnerSample.setValue(Integer.valueOf(sample));
+ }
+ }
+ }
+ });
+ }
}
@Override
@@ -101,11 +123,11 @@ public class Commands extends Panel {
jPanel5 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
checkForce = new javax.swing.JCheckBox();
- spinnerSample = new javax.swing.JSpinner();
- spinnerPuck = new javax.swing.JSpinner();
+ spinnerSample = new ch.psi.utils.swing.HorizontalSpinner();
+ spinnerPuck = new ch.psi.utils.swing.HorizontalSpinner();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
- spinnerSegment = new javax.swing.JSpinner();
+ spinnerSegment = new ch.psi.utils.swing.HorizontalSpinner();
jLabel3 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
checkDatamatrix = new javax.swing.JCheckBox();
@@ -117,10 +139,10 @@ public class Commands extends Panel {
buttonMoveScanner = new javax.swing.JButton();
buttonMoveHeater = new javax.swing.JButton();
buttonDry = new javax.swing.JButton();
- spinnerDryTime = new javax.swing.JSpinner();
+ spinnerDryTime = new ch.psi.utils.swing.HorizontalSpinner();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
- spinnerDrySpeed = new javax.swing.JSpinner();
+ spinnerDrySpeed = new ch.psi.utils.swing.HorizontalSpinner();
buttonRecover = new javax.swing.JButton();
buttonEnableAll = new javax.swing.JButton();
@@ -193,7 +215,7 @@ public class Commands extends Panel {
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
- .addContainerGap()
+ .addGap(0, 0, 0)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(jLabel2)
@@ -202,18 +224,16 @@ public class Commands extends Panel {
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(spinnerPuck)
.addComponent(checkForce)
- .addComponent(spinnerSample, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(spinnerPuck, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(spinnerSegment, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(checkDatamatrix))
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(checkDatamatrix)
+ .addComponent(spinnerSample, javax.swing.GroupLayout.DEFAULT_SIZE, 97, Short.MAX_VALUE)
+ .addComponent(spinnerSegment))
+ .addGap(0, 0, 0))
);
jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2, jLabel3});
- jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerPuck, spinnerSample, spinnerSegment});
-
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
@@ -336,24 +356,26 @@ public class Commands extends Panel {
.addComponent(buttonGetDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonPutDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonDry, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addGap(30, 30, 30)
- .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(buttonMoveScanner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonMoveHome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonMoveDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addGroup(panelCommandsLayout.createSequentialGroup()
- .addComponent(jLabel7)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(spinnerDrySpeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(panelCommandsLayout.createSequentialGroup()
+ .addGap(18, 18, Short.MAX_VALUE)
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelCommandsLayout.createSequentialGroup()
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(buttonMoveScanner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonMoveHome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonMoveDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonHomingHexiposi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGap(1, 1, 1))
+ .addComponent(jPanel5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(buttonEnableAll, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(panelCommandsLayout.createSequentialGroup()
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel6)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(spinnerDryTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addComponent(buttonHomingHexiposi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(buttonEnableAll, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(jLabel7))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(spinnerDrySpeed, javax.swing.GroupLayout.DEFAULT_SIZE, 92, Short.MAX_VALUE)
+ .addComponent(spinnerDryTime))))
+ .addContainerGap())
);
panelCommandsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonGetDewar, buttonGetGonio, buttonHomingHexiposi, buttonMount, buttonMoveDewar, buttonMoveGonio, buttonMoveHeater, buttonMoveHome, buttonMovePark, buttonMoveScanner, buttonPutDewar, buttonPutGonio, buttonUnmount});
@@ -391,18 +413,20 @@ public class Commands extends Panel {
.addComponent(buttonMoveHeater)
.addComponent(buttonMoveScanner))
.addGap(18, 18, 18)
- .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(buttonDry)
- .addComponent(spinnerDryTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel6))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(spinnerDrySpeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel7))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(buttonEnableAll)
- .addComponent(buttonRecover))
+ .addGroup(panelCommandsLayout.createSequentialGroup()
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(buttonDry)
+ .addComponent(spinnerDryTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(spinnerDrySpeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel7))
+ .addGap(18, 18, 18)
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonRecover)
+ .addComponent(buttonEnableAll)))
+ .addComponent(jLabel6))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
diff --git a/plugins/MXSC-1.10.0.jar b/plugins/MXSC-1.10.0.jar
index 4e91b4c..520ac82 100644
Binary files a/plugins/MXSC-1.10.0.jar and b/plugins/MXSC-1.10.0.jar differ
diff --git a/plugins/RobotPanel.form b/plugins/RobotPanel.form
index e223812..4e89f65 100644
--- a/plugins/RobotPanel.form
+++ b/plugins/RobotPanel.form
@@ -161,9 +161,9 @@
-
-
-
+
+
+
@@ -204,6 +204,9 @@
+
+
+
diff --git a/plugins/RobotPanel.java b/plugins/RobotPanel.java
index a520adc..93720b5 100644
--- a/plugins/RobotPanel.java
+++ b/plugins/RobotPanel.java
@@ -6,6 +6,8 @@ import ch.psi.pshell.core.Context;
import ch.psi.utils.State;
import java.awt.Color;
import java.util.Map;
+import javax.swing.JSpinner;
+import javax.swing.JTextField;
/**
*
@@ -17,6 +19,7 @@ public class RobotPanel extends DevicePanel {
*/
public RobotPanel() {
initComponents();
+ ((JSpinner.DefaultEditor)spinnerSpeed.getEditor()).getTextField().setHorizontalAlignment(JTextField.CENTER);
}
@Override
@@ -149,7 +152,7 @@ public class RobotPanel extends DevicePanel {
buttonEnable = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
- spinnerSpeed = new javax.swing.JSpinner();
+ spinnerSpeed = new ch.psi.utils.swing.HorizontalSpinner();
jLabel7 = new javax.swing.JLabel();
ledMoving = new ch.psi.pshell.swing.Led();
panelMotionCtr = new javax.swing.JPanel();
@@ -322,9 +325,9 @@ public class RobotPanel extends DevicePanel {
.addComponent(ledMoving, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(14, 14, 14)
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(spinnerSpeed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(panelMotionCtr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(panelMotionCtr, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(spinnerSpeed))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(