This commit is contained in:
@@ -26,7 +26,7 @@ public class Recovery extends Panel {
|
||||
//Overridable callbacks
|
||||
@Override
|
||||
public void onInitialize(int runCount) {
|
||||
|
||||
getContext().setGlobal("recovering", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,10 +43,15 @@ public class Recovery extends Panel {
|
||||
void updateButton(){
|
||||
buttonRecover.setEnabled((getContext().getState().isNormal()) &&
|
||||
(textPosition.getText().trim().isEmpty()) &&
|
||||
((!textSegment.getText().trim().isEmpty()) || (ledIsInDewar.getColor()==Color.GREEN))
|
||||
(!textSegment.getText().trim().isEmpty()) &&
|
||||
!isRecovering()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
boolean isRecovering(){
|
||||
return "true".equals(getContext().getGlobal("recovering"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExecutedFile(String fileName, Object result) {
|
||||
@@ -64,7 +69,6 @@ public class Recovery extends Panel {
|
||||
textSegment.setText("");
|
||||
ledKnownPosition.setColor(Color.BLACK);
|
||||
textPosition.setText("");
|
||||
ledIsInDewar.setColor(Color.BLACK);
|
||||
} else {
|
||||
if (getState().isNormal()){
|
||||
String point = null;
|
||||
@@ -76,9 +80,10 @@ public class Recovery extends Panel {
|
||||
System.out.println(ex);
|
||||
ledKnownPosition.setColor(Color.BLACK);
|
||||
textPosition.setText("");
|
||||
}
|
||||
}
|
||||
List segment = null;
|
||||
try{
|
||||
List segment = (List) eval("get_current_segment()", true);
|
||||
segment = (List) eval("get_current_segment()", true);
|
||||
ledValidSegment.setColor((segment == null) ? Color.RED : Color.GREEN);
|
||||
textSegment.setText((segment == null) ? "": segment.get(0) + "->" + segment.get(1) + " [" + segment.get(2) + "mm]");
|
||||
if ((segment == null)||(point!=null)){
|
||||
@@ -99,10 +104,12 @@ public class Recovery extends Panel {
|
||||
}
|
||||
try{
|
||||
Boolean is_in_dewar = (Boolean) eval("is_in_dewar()", true);
|
||||
ledIsInDewar.setColor(is_in_dewar ? Color.GREEN : Color.RED);
|
||||
if ((segment==null) && is_in_dewar){
|
||||
ledValidSegment.setColor(Color.GREEN);
|
||||
textSegment.setText("Inside Dewar");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
System.out.println(ex);
|
||||
ledIsInDewar.setColor(Color.BLACK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -124,8 +131,6 @@ public class Recovery extends Panel {
|
||||
textSegment = new javax.swing.JTextField();
|
||||
textDistance = new javax.swing.JTextField();
|
||||
jLabel8 = new javax.swing.JLabel();
|
||||
ledIsInDewar = new ch.psi.pshell.swing.Led();
|
||||
jLabel9 = new javax.swing.JLabel();
|
||||
|
||||
jLabel6.setText("Known position");
|
||||
|
||||
@@ -155,8 +160,6 @@ public class Recovery extends Panel {
|
||||
|
||||
jLabel8.setText("Distance:");
|
||||
|
||||
jLabel9.setText("Is in Dewar");
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
@@ -171,34 +174,25 @@ public class Recovery extends Panel {
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addComponent(textPosition))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(ledValidSegment, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jLabel7))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(ledIsInDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jLabel9)))
|
||||
.addComponent(ledValidSegment, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jLabel7)
|
||||
.addGap(16, 16, 16)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(0, 0, Short.MAX_VALUE)
|
||||
.addGap(0, 103, Short.MAX_VALUE)
|
||||
.addComponent(jLabel8)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(textDistance, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addComponent(textSegment))))
|
||||
.addGap(8, 8, 8))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap(136, Short.MAX_VALUE)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(buttonAbort, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(buttonRecover))
|
||||
.addContainerGap(144, Short.MAX_VALUE))
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
||||
.addComponent(buttonRecover, javax.swing.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE)
|
||||
.addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
);
|
||||
|
||||
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAbort, buttonRecover});
|
||||
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
@@ -212,29 +206,26 @@ public class Recovery extends Panel {
|
||||
.addComponent(ledValidSegment, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(jLabel7)
|
||||
.addComponent(textSegment, 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.createSequentialGroup()
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jLabel8)
|
||||
.addComponent(textDistance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(30, 30, 30)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(ledIsInDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(jLabel9))))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 62, Short.MAX_VALUE)
|
||||
.addComponent(buttonRecover)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jLabel8)
|
||||
.addComponent(textDistance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 61, Short.MAX_VALUE)
|
||||
.addComponent(buttonRecover)
|
||||
.addGap(18, 18, 18)
|
||||
.addComponent(buttonAbort)
|
||||
.addContainerGap())
|
||||
.addGap(24, 24, 24))
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void buttonRecoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRecoverActionPerformed
|
||||
try{
|
||||
if (isRecovering()){
|
||||
getLogger().warning("Ongoing recovery ");
|
||||
return;
|
||||
}
|
||||
buttonAbort.setEnabled(true);
|
||||
getContext().setSetting("recovering", "true");
|
||||
getContext().setGlobal("recovering", "true");
|
||||
Device robot = getContext().getDevicePool().getByName("robot", Device.class);
|
||||
abort();
|
||||
getContext().waitState(State.Ready, 5000);
|
||||
@@ -242,23 +233,19 @@ public class Recovery extends Panel {
|
||||
robot.waitReady(5000);
|
||||
evalAsync("recover()", false).handle((ret, ex) -> {
|
||||
if (ex != null){
|
||||
showException((Exception)ex);
|
||||
if (!getContext().isAborted()){
|
||||
showException((Exception)ex);
|
||||
}
|
||||
} else {
|
||||
SwingUtils.showMessage(getTopLevel(), "Return", String.valueOf(ret));
|
||||
}
|
||||
try {
|
||||
getContext().setSetting("recovering", null);
|
||||
} catch (IOException e) {
|
||||
}
|
||||
getContext().setGlobal("recovering", null);
|
||||
buttonAbort.setEnabled(false);
|
||||
return ret;
|
||||
});
|
||||
} catch (Exception ex) {
|
||||
showException(ex);
|
||||
try {
|
||||
getContext().setSetting("recovering", null);
|
||||
} catch (IOException e) {
|
||||
}
|
||||
getContext().setGlobal("recovering", null);
|
||||
buttonAbort.setEnabled(false);
|
||||
}
|
||||
}//GEN-LAST:event_buttonRecoverActionPerformed
|
||||
@@ -272,7 +259,7 @@ public class Recovery extends Panel {
|
||||
this.showException(ex);
|
||||
}
|
||||
try{
|
||||
eval("stop_task()", true);
|
||||
eval("robot.stop_task()", true);
|
||||
} catch (Exception ex){
|
||||
this.showException(ex);
|
||||
}
|
||||
@@ -282,7 +269,7 @@ public class Recovery extends Panel {
|
||||
this.showException(ex);
|
||||
}
|
||||
} catch (InterruptedException ex) {
|
||||
showException(ex);
|
||||
//showException(ex);
|
||||
}
|
||||
}//GEN-LAST:event_buttonAbortActionPerformed
|
||||
|
||||
@@ -292,8 +279,6 @@ public class Recovery extends Panel {
|
||||
private javax.swing.JLabel jLabel6;
|
||||
private javax.swing.JLabel jLabel7;
|
||||
private javax.swing.JLabel jLabel8;
|
||||
private javax.swing.JLabel jLabel9;
|
||||
private ch.psi.pshell.swing.Led ledIsInDewar;
|
||||
private ch.psi.pshell.swing.Led ledKnownPosition;
|
||||
private ch.psi.pshell.swing.Led ledValidSegment;
|
||||
private javax.swing.JTextField textDistance;
|
||||
|
||||
Reference in New Issue
Block a user