diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index d1c3dcb..097a3dc 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -58,6 +58,8 @@ import javax.swing.table.DefaultTableModel; public class Controller { final boolean DIALOG_PUCK_LOAD_SHOW_BASEPLATE = true; + final int REMOVE_PUCK_TIMEOUT = 20000; + static Controller instance; final BasePlate basePlate; RoomTemperatureBasePlate roomTemperatureBasePlate; @@ -923,9 +925,15 @@ public class Controller { playSound("mounted"); logPuckDetectionChange(puck, true); onPuckScanned(null); + //If no new puck is scanned and detected mounted in the same place of the last unmount, + //considers the detection is flickering (up to a timeout) if ((datamatrix==null) || (datamatrix.isBlank())){ if (puck == removedPuck){ - datamatrix = insertedPuckDatamatrix; + if ((System.currentTimeMillis() - removeTimestamp) < REMOVE_PUCK_TIMEOUT){ + datamatrix = insertedPuckDatamatrix; + } + } else { + removedPuck = null; } } @@ -945,6 +953,7 @@ public class Controller { removedPuck = null; } + long removeTimestamp; //Called when a puck is detected removed from the the dewar public void onPuckUnmounted(Puck puck) { Logger.getLogger(Controller.class.getName()).info("Unmounted puck: " + puck.getName()); @@ -956,6 +965,7 @@ public class Controller { dialogPuckLoading.onPuckUnmounted(puck); } removedPuck = puck; + removeTimestamp = System.currentTimeMillis(); } public boolean hasLoadDialog(){ diff --git a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form index 453811c..0448391 100644 --- a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form +++ b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form @@ -104,7 +104,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -145,7 +145,7 @@ - + @@ -220,7 +220,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -238,7 +238,7 @@ - + diff --git a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java index 28ba0e2..37bb97b 100644 --- a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java +++ b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java @@ -290,7 +290,7 @@ public class PuckLoadingDialog extends JDialog { splitPanel.setDividerLocation(500); splitPanel.setDividerSize(0); - buttonSet.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N + buttonSet.setFont(new java.awt.Font("Lucida Grande", 0, 28)); // NOI18N buttonSet.setText("Set"); buttonSet.setEnabled(false); buttonSet.addActionListener(new java.awt.event.ActionListener() { @@ -303,7 +303,7 @@ public class PuckLoadingDialog extends JDialog { textDetectedPuck.setFont(new java.awt.Font("Lucida Grande", 0, 30)); // NOI18N textDetectedPuck.setHorizontalAlignment(javax.swing.JTextField.CENTER); - buttonClearDatamatrix.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + buttonClearDatamatrix.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N buttonClearDatamatrix.setText("Clear"); buttonClearDatamatrix.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -355,15 +355,15 @@ public class PuckLoadingDialog extends JDialog { labelStatus.setText("Waiting for Puck Detection"); labelStatus.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jLabel1.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N + jLabel1.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("Scanned Datamatrix:"); - labelSuggestion.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N + labelSuggestion.setFont(new java.awt.Font("Lucida Grande", 0, 30)); // NOI18N labelSuggestion.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); labelSuggestion.setText("Scan, Insert or Remove Pucks"); - jLabel2.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N + jLabel2.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel2.setText("Detected Puck:"); @@ -414,7 +414,7 @@ public class PuckLoadingDialog extends JDialog { .addComponent(jLabel2) .addComponent(textDetectedPuck, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelTable, javax.swing.GroupLayout.DEFAULT_SIZE, 349, Short.MAX_VALUE) + .addComponent(panelTable, javax.swing.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonSet) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)