//package nbtool.gui.utilitypanes; // //import java.awt.event.ActionEvent; //import java.awt.event.ActionListener; //import java.io.IOException; // //import javax.swing.JFrame; //import javax.swing.JOptionPane; //import javax.swing.Timer; // //import nbtool.data.group.Group; //import nbtool.data.log.LogReference; //import nbtool.gui.logdnd.LogDND; //import nbtool.gui.logdnd.LogDND.LogDNDTarget; //import nbtool.util.Debug; // //public class ReplayUtility extends UtilityParent { // // private RU_Frame display = null; // // @Override // public JFrame supplyDisplay() { // if (display == null) { // return (display = new RU_Frame()); // } // // return display; // } // // @Override // public String purpose() { // return "Loop through a set of logs."; // } // // @Override // public char preferredMemnonic() { // // TODO Auto-generated method stub // return 'o'; // } // // public class RU_Frame extends javax.swing.JFrame { // // private class Loop { // // Group session; // // boolean valid = false, repeat = false; // int first = -1; // int len = -1; // // int index = -1; // // Loop(Group s, LogReference from, LogReference to, boolean repeat) { // int fi = s.logs.indexOf(from); // int ti = s.logs.indexOf(to); // // if (!(fi < ti)) { // return; // } // // this.session = s; // this.valid = true; // this.repeat = repeat; // this.first = fi; // this.len = ti - fi + 1; // this.index = 0; // // Debug.info("Loop(%d, %d)", first, len); // } // // Log getNext() { // if (index == len && !repeat) // return null; // // int offset = index++ % len; // _Log l = session.logs_DO.get(first + offset); // if (l.bytes == null) { // try { // FileIO.loadLog(l, l.parent.directoryFrom); // } catch (IOException e) { // e.printStackTrace(); // return null; // } // } // // return l; // } // // boolean isValid() { // return valid; // } // } // // private _Log fromPlaced = null; // private _Log toPlaced = null; // private Timer timer = null; // // public RU_Frame() { // initComponents(); // // LogDND.makeComponentTarget(logFromLabel, new LogDNDTarget(){ // @Override // public void takeLogsFromDrop(_Log[] log) { // if (log.length < 1) return; // fromPlaced = log[0]; // logFromLabel.setText(fromPlaced.description(50)); // } // }); // // LogDND.makeComponentTarget(logToLabel, new LogDNDTarget(){ // @Override // public void takeLogsFromDrop(_Log[] log) { // if (log.length < 1) return; // toPlaced = log[0]; // logToLabel.setText(toPlaced.description(50)); // } // }); // // toggle.addActionListener(new ActionListener(){ // // @Override // public void actionPerformed(ActionEvent e) { // toggleAction(); // } // // }); // } // // private void toggleAction() { // if (timer != null && timer.isRunning()) { // timer.stop(); // timer = null; // toggle.setText("start"); // return; // } // // Debug.info("starting replay..."); // if (fromPlaced == null || toPlaced == null ) { // JOptionPane.showMessageDialog(this, "set both logs"); // return; // } // // if (fromPlaced.parent != toPlaced.parent) { // JOptionPane.showMessageDialog(this, "logs must be from same session"); // return; // } // // int di = displayBox.getSelectedIndex(); // if (di < 0) return; // // LogDisplayPanel _ldp = null; // if (di == 0) { // _ldp = LogDisplayPanel.main; // } else { // _ldp = LogDisplayPanel.extern[di - 1]; // } // // if (_ldp == null) { // JOptionPane.showMessageDialog(this, "bad display"); // return; // } // // final LogDisplayPanel ldp = _ldp; // // final int delay = (Integer) startDelaySpinner.getValue(); // final int itr = (Integer) itrDelaySpinner.getValue(); // // final boolean looping = loopBox.isSelected(); // final Loop loopo = new Loop(fromPlaced.parent, fromPlaced, toPlaced, looping); // // // if (!loopo.isValid()) { // JOptionPane.showMessageDialog(this, "bad log order"); // return; // } // // timer = new Timer(delay, new ActionListener() { // // private final Loop lp = loopo; // private final Timer caller = timer; // private final LogDisplayPanel display = ldp; // // @Override // public void actionPerformed(ActionEvent e) { // _Log l = lp.getNext(); // Debug.print("loop chose: %s", l); // // if (l == null) { // caller.stop(); // return; // } // // display.takeLogsFromDrop(new _Log[]{ // l // }); // } // // }); // // timer.setRepeats(true); // timer.setDelay(itr); // toggle.setText("stop"); // timer.start(); // } // // /** // * This method is called from within the constructor to initialize the form. // * WARNING: Do NOT modify this code. The content of this method is always // * regenerated by the Form Editor. // */ // @SuppressWarnings("unchecked") // // <editor-fold defaultstate="collapsed" desc="Generated Code"> // private void initComponents() { // displayBox = new javax.swing.JComboBox<>(); // logFromLabel = new javax.swing.JLabel(); // logToLabel = new javax.swing.JLabel(); // loopBox = new javax.swing.JCheckBox(); // toggle = new javax.swing.JButton(); // jLabel1 = new javax.swing.JLabel(); // startDelaySpinner = new javax.swing.JSpinner(); // itrDelaySpinner = new javax.swing.JSpinner(); // jLabel2 = new javax.swing.JLabel(); // jLabel3 = new javax.swing.JLabel(); // // displayBox.setModel(new javax.swing.DefaultComboBoxModel<String>(new String[] { "MAIN", "1", "2", "3", "4", "5", "6", "7", "8", "9" })); // // logFromLabel.setText("<drag the first log of a sequence here!>"); // // logToLabel.setText("<drag the last log of a sequence here!>"); // // loopBox.setText("loop"); // // toggle.setText("start"); // // jLabel1.setText("display:"); // // startDelaySpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(10), null, Integer.valueOf(5000), Integer.valueOf(100))); // // itrDelaySpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(10), null, Integer.valueOf(5000), Integer.valueOf(100))); // // jLabel2.setText("sdelay"); // // jLabel3.setText("idelay"); // // javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); // getContentPane().setLayout(layout); // layout.setHorizontalGroup( // layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) // .addGroup(layout.createSequentialGroup() // .addContainerGap() // .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) // .addComponent(logToLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) // .addComponent(logFromLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) // .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() // .addComponent(jLabel1) // .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) // .addComponent(displayBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) // .addContainerGap()) // .addGroup(layout.createSequentialGroup() // .addComponent(loopBox) // .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 14, Short.MAX_VALUE) // .addComponent(jLabel2) // .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) // .addComponent(startDelaySpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) // .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) // .addComponent(jLabel3) // .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) // .addComponent(itrDelaySpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) // .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) // .addComponent(toggle) // .addGap(87, 87, 87)) // ); // layout.setVerticalGroup( // layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) // .addGroup(layout.createSequentialGroup() // .addContainerGap() // .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) // .addComponent(displayBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) // .addComponent(jLabel1)) // .addGap(18, 18, 18) // .addComponent(logFromLabel) // .addGap(18, 18, 18) // .addComponent(logToLabel) // .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) // .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) // .addComponent(loopBox) // .addComponent(toggle) // .addComponent(startDelaySpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) // .addComponent(itrDelaySpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) // .addComponent(jLabel2) // .addComponent(jLabel3)) // .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) // ); // // pack(); // }// </editor-fold> // // // Variables declaration - do not modify // private javax.swing.JComboBox<String> displayBox; // private javax.swing.JSpinner itrDelaySpinner; // private javax.swing.JLabel jLabel1; // private javax.swing.JLabel jLabel2; // private javax.swing.JLabel jLabel3; // private javax.swing.JLabel logFromLabel; // private javax.swing.JLabel logToLabel; // private javax.swing.JCheckBox loopBox; // private javax.swing.JSpinner startDelaySpinner; // private javax.swing.JButton toggle; // // End of variables declaration // } // //}