1 21 22 package org.armedbear.j.jdb; 23 24 import java.awt.Component ; 25 import java.awt.event.KeyEvent ; 26 import java.awt.event.KeyListener ; 27 import java.util.Vector ; 28 import javax.swing.JList ; 29 import javax.swing.JScrollPane ; 30 import org.armedbear.j.Buffer; 31 import org.armedbear.j.Editor; 32 import org.armedbear.j.File; 33 34 public final class BreakpointPanel implements BreakpointListener, KeyListener 35 { 36 private final Jdb jdb; 37 private final JdbControlDialog dialog; 38 private final JList list; 39 private final JScrollPane scrollPane; 40 41 public BreakpointPanel(Jdb jdb, JdbControlDialog dialog) 42 { 43 this.jdb = jdb; 44 this.dialog = dialog; 45 Vector v = new Vector (jdb.getBreakpoints()); 46 list = new JList (v); 47 scrollPane = new JScrollPane (list); 48 jdb.addBreakpointListener(this); 49 list.addKeyListener(this); 50 } 51 52 public Component getComponent() 53 { 54 return scrollPane; 55 } 56 57 public void breakpointChanged() 58 { 59 list.setListData(new Vector (jdb.getBreakpoints())); 60 list.setSelectedIndex(-1); 61 } 62 63 public void keyPressed(KeyEvent e) 64 { 65 final int keyCode = e.getKeyCode(); 66 final int modifiers = e.getModifiers() & 0x0f; 68 if (modifiers != 0) 69 return; 70 if (keyCode == KeyEvent.VK_DELETE) { 71 int index = list.getSelectedIndex(); 72 if (index >= 0) { 73 Object obj = jdb.getBreakpoints().get(index); 74 if (obj instanceof ResolvableBreakpoint) { 75 ResolvableBreakpoint bp = (ResolvableBreakpoint) obj; 76 jdb.log("clear " + bp.getLocationString()); 77 jdb.deleteBreakpoint(bp); 78 File file = bp.getFile(); 79 if (file != null) { 80 Buffer buffer = Editor.getBufferList().findBuffer(file); 81 if (buffer != null) 82 buffer.repaint(); 83 } 84 jdb.saveSession(); 85 jdb.fireBreakpointChanged(); 86 if (index >= list.getModel().getSize()) 87 --index; 88 list.setSelectedIndex(index); 89 } 90 } 91 } 92 } 93 94 public void keyTyped(KeyEvent e) {} 95 96 public void keyReleased(KeyEvent e) {} 97 } 98 | Popular Tags |