Changeset 74

Show
Ignore:
Timestamp:
08/11/07 13:54:34 (1 year ago)
Author:
altglass
Message:

History events limited to 50, Item movement through mouse can be undone

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/vlcskineditor/Main.java

    r71 r74  
    453453    items.setVisible(true);  
    454454     
    455     pvwin = new PreviewWindow(); 
     455    pvwin = new PreviewWindow(this); 
    456456     
    457457    jdesk.add(resources); 
  • trunk/src/vlcskineditor/PreviewWindow.java

    r68 r74  
    2727import java.awt.event.*; 
    2828import javax.swing.*; 
     29import vlcskineditor.history.*; 
    2930 
    3031 
     
    4647   
    4748  JMenuItem up, down, right, left; 
     49  ItemMoveEvent ime = null; 
     50  Main m; 
    4851   
    4952  /** 
    5053   * Creates a new PreviewWindow that is initially hidden. 
    5154   */ 
    52   public PreviewWindow() {    
     55  public PreviewWindow(Main m_) {    
     56    m = m_; 
    5357    frame = new JInternalFrame("No Layout selected"); 
    5458    frame.add(this); 
     
    136140      dragstartx=e.getX(); 
    137141      dragstarty=e.getY(); 
     142      ime = new ItemMoveEvent(selected_item); 
    138143      dragstartitemx=selected_item.x; 
    139144      dragstartitemy=selected_item.y; 
     
    168173  public void mouseReleased(MouseEvent e) { 
    169174    fu.fps=5;     
     175    if(starteddragging) { 
     176      ime.setNew(); 
     177      m.hist.addEvent(ime); 
     178    } 
    170179    starteddragging=false; 
    171180    if(selected_item!=null) selected_item.setClicked(false); 
  • trunk/src/vlcskineditor/history/History.java

    r72 r74  
    3232public class History { 
    3333   
    34   private HistoryEvent main, current; 
     34  private HistoryEvent root, current; 
    3535  private Main m;   
    3636   
     
    4141    m.setUndoEnabled(false); 
    4242    m.setRedoEnabled(false); 
    43     main = new DummyEvent(); 
    44     current = main
     43    root = new DummyEvent(); 
     44    current = root
    4545  } 
    4646  /** Adds an Event at the current point in the history list and removes any actions that could be redone*/ 
     
    5050    current = current.getNext(); 
    5151    m.setRedoEnabled(false); 
     52    m.setRedoString(""); 
    5253    m.setUndoEnabled(true); 
    5354    m.setUndoString(current.getDescription()); 
     55     
     56    //Remove any link to an event that is more than 50 edits ago 
     57    HistoryEvent he = current.getPrevious(); 
     58    for (int i=1;i<50;i++) { 
     59      if(he.getPrevious()==null) break; 
     60      he = he.getPrevious(); 
     61    } 
     62    if(he!=root) he.setPrevious(root); 
    5463  } 
    5564  /** Redoes the action that is next in the history list */ 
     
    6675  /** Undoes the current action */ 
    6776  public void undo() { 
    68     if(current==main) return; 
     77    if(current==root) return; 
    6978    current.undo(); 
    7079    current = current.getPrevious(); 
    7180    m.setRedoEnabled(true);     
    7281    m.setRedoString(current.getNext().getDescription()); 
    73     m.setUndoEnabled(current!=main); 
     82    m.setUndoEnabled(current!=root); 
    7483    m.setUndoString(current.getDescription()); 
    7584  }