Package ccw.editors.clojure

Source Code of ccw.editors.clojure.SelectionHistory

package ccw.editors.clojure;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.runtime.Assert;
import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;


public class SelectionHistory {

  private List fHistory;
  private IClojureEditor fEditor;
  private ISelectionChangedListener fSelectionListener;
  private int fSelectionChangeListenerCounter;

  public SelectionHistory(IClojureEditor editor) {
    Assert.isNotNull(editor);
    fEditor= editor;
    fHistory= new ArrayList(3);
    fSelectionListener= new ISelectionChangedListener() {
      public void selectionChanged(SelectionChangedEvent event) {
        if (fSelectionChangeListenerCounter == 0)
          flush();
      }
    };
    fEditor.getSelectionProvider().addSelectionChangedListener(fSelectionListener);
  }

  public boolean isEmpty() {
    return fHistory.isEmpty();
  }

  public void remember(ISourceRange range) {
//    System.out.println("asked to remember range:" + range);
    fHistory.add(range);
//    fHistoryAction.update(); TODO correctement
  }

  public ISourceRange getLast() {
    if (isEmpty())
      return null;
    int size= fHistory.size();
    ISourceRange result= (ISourceRange)fHistory.remove(size - 1);
//    fHistoryAction.update(); TODO correctement
    return result;
  }

  public void flush() {
    if (fHistory.isEmpty())
      return;
    fHistory.clear();
//    fHistoryAction.update(); TODO correctement
  }

  public void ignoreSelectionChanges() {
    fSelectionChangeListenerCounter++;
  }

  public void listenToSelectionChanges() {
    fSelectionChangeListenerCounter--;
  }

  public void dispose() {
    fEditor.getSelectionProvider().removeSelectionChangedListener(fSelectionListener);
  }
}
TOP

Related Classes of ccw.editors.clojure.SelectionHistory

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.