Package debugger

Source Code of debugger.DebuggerFrame$ValueAction

package debugger;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

import debugger.debuggerComponents.ClassWatcherFrame;

import resources.ResourceLoader;

public class DebuggerFrame extends JFrame {

  private static final long serialVersionUID = 1L;
  private JPanel contentPane;
  private JPanel threadList;

  private DebuggerHandler debugger;
  private final DebuggerFrame frame = this;
  private JScrollPane scrollPane;
  private JCheckBox cbStartSuspended;
  private JCheckBox cbRemoveStopped;
  private JCheckBox cbExpandAll;
  private JButton   btnWatch;

  /**
   * Create the frame.
   */
  public DebuggerFrame(DebuggerHandler debugger) {
    this.debugger = debugger;
    setTitle("PseuCo IDE - Agent Watching");
    setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/logo.png")));
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    addWindowListener(new WindowAdapter() {
          @Override
          public void windowClosing(WindowEvent e) {
            actionResumeAll.actionPerformed(null);
            frame.debugger.closeFrame();
          }
      });
    setBounds(30, 100, 720, 520);
    setMinimumSize(new Dimension(520, 220));
    contentPane = new JPanel();
    //contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
   
    makeToolbar();
   
    scrollPane = new JScrollPane();
    scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    contentPane.add(scrollPane, BorderLayout.CENTER);
   
    threadList = new JPanel();
    threadList.setBackground(Color.WHITE);
    threadList.setLayout(new BoxLayout(threadList, BoxLayout.Y_AXIS));
    //threadList.setPreferredSize(new Dimension(Short.MAX_VALUE, 30));
    scrollPane.setViewportView(threadList);
   
    setVisible(true);
  }


  private void makeToolbar() {
    JPanel topBar = new JPanel();
    topBar.setBorder(new EmptyBorder(5, 5, 5, 5));
    topBar.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
    contentPane.add(topBar, BorderLayout.NORTH);
   
    topBar.add(makeBtn(actionRestart));
    topBar.add(Box.createRigidArea(dimBorder));
    topBar.add(makeBtn(actionResumeAll));
    topBar.add(makeBtn(actionSuspendAll));
    topBar.add(makeBtn(actionStopAll));
    topBar.add(Box.createRigidArea(dimBorder));
    btnWatch = makeBtn(actionShowValues);
    topBar.add(btnWatch);
    topBar.add(Box.createRigidArea(dimBorder));
    JPanel checkboxes = new JPanel();
    checkboxes.setLayout(new BoxLayout(checkboxes, BoxLayout.Y_AXIS));
    cbStartSuspended = new JCheckBox(actionStartSuspended);
    cbRemoveStopped  = new JCheckBox(actionRemoveStopped);
    cbExpandAll      = new JCheckBox(actionExpandAll);
    cbStartSuspended.setSelected(debugger.isStartSuspended());
    cbRemoveStopped.setSelected(debugger.isRemoveStopped());
    cbExpandAll.setSelected(debugger.isExpandAll());
    checkboxes.add(cbStartSuspended);
    checkboxes.add(cbRemoveStopped);
    checkboxes.add(cbExpandAll);
    checkboxes.add(Box.createVerticalGlue());
    topBar.add(checkboxes);
  }
 
  private static final Dimension dimBorder = new Dimension(10,0);
 
  private JButton makeBtn(Action a){
    JButton result = new JButton(a);
    result.setIconTextGap(0);
    int h = result.getPreferredSize().height;
    result.setPreferredSize(new Dimension(h+5,h));
    return result;
  }
 
 
 
  /**
   * Resumes all suspended threads
   */
  private Action actionResumeAll = new ResumeAllAction();
  private class ResumeAllAction extends AbstractAction{
    private static final long serialVersionUID = 1L;
   
    public ResumeAllAction(){
      super("", ResourceLoader.loadIcon("resumebtnbig.png"));
      putValue(Action.SHORT_DESCRIPTION, "Resumes all suspended agents");
    }
   
    @Override
    public void actionPerformed(ActionEvent e) {
      debugger.resumeAllThreadsFromEDT()
    }
  };
 
 
 
  /**
   * Suspends all registered threads
   */
  private Action actionSuspendAll = new SuspendAllAction();
  private class SuspendAllAction extends AbstractAction{
      private static final long serialVersionUID = 1L;
     
      public SuspendAllAction(){
        super("", ResourceLoader.loadIcon("suspendbtnbig.png"));
        putValue(Action.SHORT_DESCRIPTION, "Suspends all running agents");
      }
     
      @Override
    public void actionPerformed(ActionEvent e) {
      debugger.suspendAllThreadsFromEDT();     
    }
  };
 
 
 
  /**
   * Stops all threads
   */
  private Action actionStopAll = new StopAllAction();
  private class StopAllAction extends AbstractAction{
      private static final long serialVersionUID = 1L;
     
      public StopAllAction(){
        super("", ResourceLoader.loadIcon("stop.png"));
        putValue(Action.SHORT_DESCRIPTION, "Stops all agents");
      }
     
      @Override
    public void actionPerformed(ActionEvent e) {
      debugger.stopAllThreadsFromEDT();     
    }
  };
 
 
  /**
   * Restart the current program
   */
  private Action actionRestart = new RestartAction();
  private class RestartAction extends AbstractAction{
      private static final long serialVersionUID = 1L;
     
      public RestartAction(){
        super("", ResourceLoader.loadIcon("run.png"));
        putValue(Action.SHORT_DESCRIPTION, "Restarts the current program");
      }
     
      @Override
    public void actionPerformed(ActionEvent e) {
      debugger.restart();   
    }
  };
 
  private Action actionShowValues = new ValueAction();
  private class ValueAction extends AbstractAction{
      private static final long serialVersionUID = 1L;
     
      public ValueAction(){
        super("", ResourceLoader.loadIcon("binoculars.png"));
        putValue(Action.SHORT_DESCRIPTION, "Shows all static values from the currently running program. ");
      }
     
      @Override
    public void actionPerformed(ActionEvent e) {
      new ClassWatcherFrame(DebuggerListeners.mainClass);   
    }
  };
 
 
 
  private Action actionStartSuspended = new StartSuspendAction();
  private class StartSuspendAction extends AbstractAction{
    private static final long serialVersionUID = 1L;
   
    public StartSuspendAction(){
      super("Start new agents suspended");
      putValue(Action.MNEMONIC_KEY, KeyEvent.VK_S);
    }
   
    @Override
    public void actionPerformed(ActionEvent arg0) {
      debugger.setStartSuspended(cbStartSuspended.isSelected());
    }
  };
 
  private Action actionRemoveStopped = new RemoveStoppedAction();
  private class RemoveStoppedAction extends AbstractAction {
    private static final long serialVersionUID = 1L;
   
    public RemoveStoppedAction(){
      super("Remove terminated agents from list");
      putValue(Action.MNEMONIC_KEY, KeyEvent.VK_R);
    }
   
    @Override
    public void actionPerformed(ActionEvent arg0) {
      debugger.setRemoveStopped(cbRemoveStopped.isSelected());
    }
  };
 
  private Action actionExpandAll = new ExpandAllAction();
  private class ExpandAllAction extends AbstractAction {
    private static final long serialVersionUID = 1L;

    public ExpandAllAction() {
      super("Expand all items");
      putValue(Action.SHORT_DESCRIPTION,
          "Expands or collapses all items in the agent list. ");
    }

    @Override
    public void actionPerformed(ActionEvent e) {
      debugger.setExpandAll(cbExpandAll.isSelected());
    }
  };
 

 
  /**
   * Will be called when a new thread starts - to add it to your screen
   * @param mtp the new thread
   */
  public void addManagedThreadPane(ManagedThreadPane mtp) {
    threadList.add(mtp)
    setOdd();
    threadList.validate();
  }


  public void setWatchingEnabled(boolean empty) {
    btnWatch.setEnabled(empty);
  }
 
  public void setOdd(){
    boolean odd = false; //launch by 0
    for (Component c: threadList.getComponents()){
      if (c instanceof ManagedThreadPane){
        ((ManagedThreadPane) c).setOdd(odd);
        odd = !odd;
      }
    }
  }

}
TOP

Related Classes of debugger.DebuggerFrame$ValueAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.