diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index 1fa43ed..96004cb 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -8,7 +8,7 @@ import ch.psi.pshell.core.Context; import ch.psi.pshell.core.DevicePool; import ch.psi.pshell.core.DevicePoolListener; import ch.psi.pshell.core.JsonSerializer; -import ch.psi.pshell.device.Device; +import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceAdapter; import ch.psi.pshell.device.DeviceListener; import ch.psi.pshell.device.GenericDevice; @@ -64,14 +64,14 @@ public class Controller { static void createInstance(Panel mainFrame) { instance = new Controller(mainFrame); } - - enum PuckMountMode{ + + enum PuckMountMode { Direct, Dialog } final PuckMountMode puckMountMode = App.hasArgument("direct") ? PuckMountMode.Direct : PuckMountMode.Dialog; - + enum PuckSensorAccess { RaspberryPi, Esera; @@ -127,7 +127,7 @@ public class Controller { basePlate.addListener(basePlateListener); roomTemperatureBasePlate = new RoomTemperatureBasePlate(); - + } final DeviceListener basePlateListener = new DeviceAdapter() { @@ -226,6 +226,17 @@ public class Controller { refreshSamplesTable(); } + + public Sample getMountedSample() throws Exception{ + currentMountedSample = (String) Context.getInstance().evalLineBackground("get_setting('mounted_sample_position')"); + Sample sample = basePlate.getSampleByName(currentMountedSample); + return sample; + } + + public void resetMountedSample() throws Exception{ + Context.getInstance().evalLineBackground("set_setting('mounted_sample_position', None)"); + } + public void onStateChange(State state, State former) { if (state == State.Initializing) { @@ -233,9 +244,8 @@ public class Controller { } else if (state == State.Ready) { refreshSamplesTable(); try { - currentMountedSample = (String) Context.getInstance().evalLineBackground("get_setting('mounted_sample_position')"); - Sample sample = basePlate.getSampleByName(currentMountedSample); - if ((sample == null) && (roomTemperatureBasePlate!=null)){ + Sample sample = getMountedSample(); + if ((sample == null) && (roomTemperatureBasePlate != null)) { sample = roomTemperatureBasePlate.getSampleByName(currentMountedSample); roomTemperatureBasePlate.resetLoadedSample(); } @@ -263,7 +273,7 @@ public class Controller { refreshSamplesTable(); } catch (Exception ex) { Logger.getLogger(Controller.class.getName()).log(Level.WARNING, null, ex); - } + } } final DeviceListener hexiposiListener = new DeviceAdapter() { @@ -397,7 +407,7 @@ public class Controller { return null; } } - + public boolean isSelectedPuck(Puck puck) { return ("" + puck.getSegment()).equalsIgnoreCase(getHexiposiPosition()); } @@ -419,7 +429,7 @@ public class Controller { return null; } } - + public Boolean isRoomTemp() { try { return getMainFrame().eval("is_room_temp()", true).equals(true); @@ -474,25 +484,24 @@ public class Controller { } catch (Exception ex) { return null; } - } - + } + public Boolean isBeamlineStatusEnabled() { try { return getMainFrame().eval("is_beamline_status_enabled()", true).equals(true); } catch (Exception ex) { return null; } - } - + } + public Boolean isImagingEnabled() { try { return getMainFrame().eval("is_imaging_enabled()", true).equals(true); } catch (Exception ex) { return null; } - } + } - public void imageDetectPucks() throws Context.ContextStateException { imageDetectPucks(null, null, null); } @@ -670,24 +679,24 @@ public class Controller { Device reader = getPuckBarcodeReader(); if (reader != null) { final String name = reader.getName(); - BiFunction errorHandler =(BiFunction) (ret, ex) -> { + BiFunction errorHandler = (BiFunction) (ret, ex) -> { if (ex != null) { - if (puckReaderOk){ - Logger.getLogger(Controller.class.getName()).warning("Communication failure: " + name); + if (puckReaderOk) { + Logger.getLogger(Controller.class.getName()).warning("Communication failure: " + name); } - puckLoading = null; + puckLoading = null; puckReaderOk = false; } else { - if (!puckReaderOk){ - Logger.getLogger(Controller.class.getName()).warning("Communication resumed: " + name); + if (!puckReaderOk) { + Logger.getLogger(Controller.class.getName()).warning("Communication resumed: " + name); } puckReaderOk = true; } return ret; - }; + }; try { if (puckLoading) { - getMainFrame().evalAsync(name + ".enable(); " + name + ".polling = 100" , true).handle(errorHandler); + getMainFrame().evalAsync(name + ".enable(); " + name + ".polling = 100", true).handle(errorHandler); currentDetection = basePlate.getDetection(); } else if (getState().isInitialized()) { getMainFrame().evalAsync(name + ".polling = 0; " + name + ".disable()", true).handle(errorHandler); @@ -708,14 +717,14 @@ public class Controller { return puckLoading; } - void playSound(String name){ - try{ + void playSound(String name) { + try { Audio.playFile(new File(Context.getInstance().getSetup().expandPath("{home}/sounds/" + name + ".wav")), false); - } catch (Exception ex){ + } catch (Exception ex) { Logger.getLogger(Controller.class.getName()).log(Level.FINE, null, ex); } } - + public void onPuckBarcode(String datamatrix) { if (isPuckLoading()) { playSound("scanned"); @@ -738,7 +747,7 @@ public class Controller { if (isSelectedPuck(puck)) { boolean detectedPuckInserted = (currentDetection[i] != Puck.Detection.Present) && (detection[i] == Puck.Detection.Present); boolean detectedPuckRemoved = (currentDetection[i] != Puck.Detection.Empty) && (detection[i] == Puck.Detection.Empty); - if (detectedPuckInserted) { + if (detectedPuckInserted) { onPuckInserted(puck); } else if (detectedPuckRemoved) { @@ -751,18 +760,18 @@ public class Controller { currentDetection = detection; } } - - public void onPuckInserted(Puck puck){ + + public void onPuckInserted(Puck puck) { playSound("mounted"); String datamatrix = getMainFrame().getPuckDatamatrix(); onPuckScanned(null); - onPuckMounted(puck, datamatrix); + onPuckMounted(puck, datamatrix); } - - public void onPuckRemoved(Puck puck){ + + public void onPuckRemoved(Puck puck) { playSound("unmounted"); - onPuckUnmounted(puck); - } + onPuckUnmounted(puck); + } void linkPuckDatamatrix(Puck puck, String datamatrix, boolean showMessage) { // if ( ((puck.getId()==null) && (datamatrix!=null)) || @@ -866,70 +875,81 @@ public class Controller { } } - - - void showDialogPuckLoading (){ - if ((dialogPuckLoading!=null) && (dialogPuckLoading.isVisible())){ + + void showDialogPuckLoading() { + if ((dialogPuckLoading != null) && (dialogPuckLoading.isVisible())) { return; } dialogPuckLoading = new PuckLoadingDialog(mainFrame.getTopLevel(), false); - dialogPuckLoading.setLocationRelativeTo(mainFrame); + dialogPuckLoading.setLocationRelativeTo(mainFrame); dialogPuckLoading.setVisible(true); } - - void hideDialogPuckLoading (){ - if (dialogPuckLoading!=null){ + + void hideDialogPuckLoading() { + if (dialogPuckLoading != null) { dialogPuckLoading.setVisible(false); dialogPuckLoading.dispose(); dialogPuckLoading = null; } } - + void onPuckLoadingModeChange(boolean puckLoadMode) { - if (puckMountMode == PuckMountMode.Dialog){ - if (puckLoadMode){ + if (puckMountMode == PuckMountMode.Dialog) { + if (puckLoadMode) { showDialogPuckLoading(); } else { - hideDialogPuckLoading (); + hideDialogPuckLoading(); } } } - - void onPuckScanned(String datamatrix){ + + void onPuckScanned(String datamatrix) { if (isPuckLoading()) { getMainFrame().setPuckDatamatrix(datamatrix); - if (puckMountMode == PuckMountMode.Dialog){ + if (puckMountMode == PuckMountMode.Dialog) { showDialogPuckLoading(); dialogPuckLoading.onPuckScanned(datamatrix); } - } else{ + } else { getMainFrame().setPuckDatamatrix(null); } } - - void onPuckMounted(Puck puck, String datamatrix){ + + void onPuckMounted(Puck puck, String datamatrix) { if (isPuckLoading()) { - if (puckMountMode == PuckMountMode.Dialog){ + if (puckMountMode == PuckMountMode.Dialog) { showDialogPuckLoading(); dialogPuckLoading.onPuckMounted(puck, datamatrix); - } else { + } else { if (!datamatrix.isEmpty()) { linkPuckDatamatrix(puck, datamatrix, true); } else { askPuckDatamatrix(puck); - } + } } } } - - void onPuckUnmounted(Puck puck){ + + void onPuckUnmounted(Puck puck) { if (isPuckLoading()) { - if (puckMountMode == PuckMountMode.Dialog){ + try{ + Sample sample = getMountedSample(); + if ((sample!=null) && (sample.getPuck() == puck)){ + resetMountedSample(); + sample.setLoaded(false); + SwingUtilities.invokeLater(()->{; + getMainFrame().refresh(); + }); + } + } catch (Exception ex) { + Logger.getLogger(Controller.class.getName()).log(Level.WARNING, null, ex); + } + if (puckMountMode == PuckMountMode.Dialog) { showDialogPuckLoading(); dialogPuckLoading.onPuckUnmounted(puck); } else { - linkPuckDatamatrix(puck, null, true); + linkPuckDatamatrix(puck, null, true); } } - } + } } diff --git a/src/main/java/ch/psi/mxsc/MainPanel.form b/src/main/java/ch/psi/mxsc/MainPanel.form index 9f0ec75..f6841ce 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.form +++ b/src/main/java/ch/psi/mxsc/MainPanel.form @@ -31,7 +31,7 @@ - + @@ -896,7 +896,7 @@ - + @@ -1170,7 +1170,7 @@ - + @@ -1179,14 +1179,14 @@ - + - + @@ -1221,7 +1221,7 @@ - + @@ -1230,14 +1230,14 @@ - + - + diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index 7878aa3..2365344 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -65,6 +65,8 @@ public class MainPanel extends Panel { basePlatePanel.setMode(BasePlatePanel.Mode.single); setExpertMode(false); setDefaultDetail(); + panelTablePucks.getVerticalScrollBar().setPreferredSize(new Dimension(20, 0)); + panelTableSamples.getVerticalScrollBar().setPreferredSize(new Dimension(20, 0)); int row = 0; for (String segment : new String[]{"A", "B", "C", "D", "E", "F"}) { @@ -728,10 +730,10 @@ public class MainPanel extends Panel { buttonConfig = new javax.swing.JButton(); panelBottom = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); - jScrollPane1 = new javax.swing.JScrollPane(); + panelTableSamples = new javax.swing.JScrollPane(); tableSamples = new javax.swing.JTable(); jPanel4 = new javax.swing.JPanel(); - jScrollPane3 = new javax.swing.JScrollPane(); + panelTablePucks = new javax.swing.JScrollPane(); tablePucks = new javax.swing.JTable(); setPreferredSize(new java.awt.Dimension(1030, 530)); @@ -1449,7 +1451,7 @@ public class MainPanel extends Panel { } )); tableSamples.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); - jScrollPane1.setViewportView(tableSamples); + panelTableSamples.setViewportView(tableSamples); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); @@ -1457,14 +1459,14 @@ public class MainPanel extends Panel { jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(0, 0, 0) - .addComponent(jScrollPane1) + .addComponent(panelTableSamples) .addGap(0, 0, 0)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(0, 0, 0) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE) + .addComponent(panelTableSamples, javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE) .addGap(0, 0, 0)) ); @@ -1523,7 +1525,7 @@ public class MainPanel extends Panel { } }); tablePucks.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); - jScrollPane3.setViewportView(tablePucks); + panelTablePucks.setViewportView(tablePucks); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); @@ -1531,14 +1533,14 @@ public class MainPanel extends Panel { jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGap(0, 0, 0) - .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE) + .addComponent(panelTablePucks, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE) .addGap(0, 0, 0)) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGap(0, 0, 0) - .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(panelTablePucks, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGap(0, 0, 0)) ); @@ -1775,8 +1777,6 @@ public class MainPanel extends Panel { private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JScrollPane jScrollPane3; private javax.swing.JLabel labelManualMode; private javax.swing.JLabel labelRoomTemperature; private ch.psi.pshell.swing.Led led5; @@ -1809,6 +1809,8 @@ public class MainPanel extends Panel { private javax.swing.JPanel panelRight; private javax.swing.JPanel panelStatus; private javax.swing.JPanel panelSystemStatus; + private javax.swing.JScrollPane panelTablePucks; + private javax.swing.JScrollPane panelTableSamples; private javax.swing.JPanel panelTop; private javax.swing.JPanel panelViewType; private javax.swing.JProgressBar progressLN2; diff --git a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form index 72e8df7..ab4ac00 100644 --- a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form +++ b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.form @@ -32,11 +32,13 @@ - + + + @@ -55,9 +57,12 @@ - - - + + + + + + @@ -65,7 +70,7 @@ - + @@ -81,14 +86,14 @@ - + - + @@ -96,7 +101,7 @@ - + @@ -106,11 +111,11 @@ - + - +
@@ -179,7 +184,7 @@ - + @@ -187,5 +192,16 @@
+ + + + + + + + + + + diff --git a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java index 98e626f..61b18cd 100644 --- a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java +++ b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java @@ -4,6 +4,7 @@ import ch.psi.pshell.core.Context; import ch.psi.pshell.swing.DataPanel; import ch.psi.utils.swing.MainFrame; import ch.psi.utils.swing.SwingUtils; +import java.awt.Dimension; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; @@ -26,7 +27,7 @@ public class PuckLoadingDialog extends JDialog { * Creates new form PuckLoadingDialog */ public PuckLoadingDialog(java.awt.Frame parent, boolean modal) { - super(parent, "Puck Loading", modal); + super(parent, "Puck Loading", modal); initComponents(); this.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); this.setName("PuckLoadingDialog"); @@ -34,7 +35,8 @@ public class PuckLoadingDialog extends JDialog { setStatusLabel(null,-1); setSugestionLabel(null,-1); model = (DefaultTableModel) table.getModel(); - table.getTableHeader().setFont(table.getTableHeader().getFont().deriveFont(20.0f)); + table.getTableHeader().setFont(table.getTableHeader().getFont().deriveFont(22.0f)); + panelTable.getVerticalScrollBar().setPreferredSize(new Dimension(30, 0)); } @Override @@ -214,31 +216,32 @@ public class PuckLoadingDialog extends JDialog { jLabel1 = new javax.swing.JLabel(); textScannedDatamatrix = new javax.swing.JTextField(); - jScrollPane1 = new javax.swing.JScrollPane(); + panelTable = new javax.swing.JScrollPane(); table = new javax.swing.JTable(); buttonSet = new javax.swing.JButton(); labelSuggestion = new javax.swing.JLabel(); labelStatus = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); textDetectedPuck = new javax.swing.JTextField(); + buttonClearDatamatrix = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jLabel1.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel1.setText("Scanned Dartamatrix:"); + jLabel1.setText("Scanned Datamatrix:"); textScannedDatamatrix.setEditable(false); - textScannedDatamatrix.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N + textScannedDatamatrix.setFont(new java.awt.Font("Lucida Grande", 0, 30)); // NOI18N textScannedDatamatrix.setHorizontalAlignment(javax.swing.JTextField.CENTER); - table.setFont(new java.awt.Font("Lucida Grande", 0, 28)); // NOI18N + table.setFont(new java.awt.Font("Lucida Grande", 0, 30)); // NOI18N table.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { - "Datamatrix", "Puck Position" + "Datamatrix / Puck Id", "Puck Position" } ) { Class[] types = new Class [] { @@ -260,7 +263,7 @@ public class PuckLoadingDialog extends JDialog { table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); table.getTableHeader().setResizingAllowed(false); table.getTableHeader().setReorderingAllowed(false); - jScrollPane1.setViewportView(table); + panelTable.setViewportView(table); buttonSet.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N buttonSet.setText("Set"); @@ -285,9 +288,17 @@ public class PuckLoadingDialog extends JDialog { jLabel2.setText("Detected Puck:"); textDetectedPuck.setEditable(false); - textDetectedPuck.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N + 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.setText("Clear"); + buttonClearDatamatrix.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonClearDatamatrixActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( @@ -300,11 +311,13 @@ public class PuckLoadingDialog extends JDialog { .addComponent(buttonSet, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) .addComponent(labelSuggestion, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE) + .addComponent(panelTable, javax.swing.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(textScannedDatamatrix)) + .addComponent(textScannedDatamatrix) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(buttonClearDatamatrix)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -321,21 +334,25 @@ public class PuckLoadingDialog extends JDialog { .addContainerGap() .addComponent(labelSuggestion) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1) - .addComponent(textScannedDatamatrix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(textScannedDatamatrix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(buttonClearDatamatrix)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .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(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 249, Short.MAX_VALUE) + .addComponent(panelTable, javax.swing.GroupLayout.DEFAULT_SIZE, 235, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonSet) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelStatus)) ); + layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {buttonClearDatamatrix, textScannedDatamatrix}); + pack(); }// //GEN-END:initComponents @@ -351,6 +368,14 @@ public class PuckLoadingDialog extends JDialog { } }//GEN-LAST:event_buttonSetActionPerformed + private void buttonClearDatamatrixActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonClearDatamatrixActionPerformed + try { + Controller.getInstance().onPuckScanned(null); + } catch (Exception ex) { + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonClearDatamatrixActionPerformed + /** * @param args the command line arguments */ @@ -394,12 +419,13 @@ public class PuckLoadingDialog extends JDialog { } // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton buttonClearDatamatrix; javax.swing.JButton buttonSet; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; - private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel labelStatus; private javax.swing.JLabel labelSuggestion; + private javax.swing.JScrollPane panelTable; javax.swing.JTable table; javax.swing.JTextField textDetectedPuck; javax.swing.JTextField textScannedDatamatrix;