package com.isti.traceview.commands;
import org.apache.log4j.Logger;
import com.isti.traceview.AbstractUndoableCommand;
import com.isti.traceview.UndoException;
import com.isti.traceview.common.TimeInterval;
import com.isti.traceview.gui.GraphPanel;
/**
* This command selects time range, i.e sets desired time range to graph panel
*
* @author Max Kokoulin
*/
public class SelectTimeCommand extends AbstractUndoableCommand {
private static final Logger logger = Logger.getLogger(SelectTimeCommand.class); // @jve:decl-index=0:
private GraphPanel graphPanel = null;
private TimeInterval previousRange = null;
private TimeInterval ti = null;
/**
* @param gp
* target graph panel
* @param ti -
* desired time range
*/
public SelectTimeCommand(GraphPanel gp, TimeInterval ti) {
this.ti = ti;
this.graphPanel = gp;
this.previousRange = graphPanel.getTimeRange();
}
public void run() {
try {
super.run();
graphPanel.setTimeRange(ti);
} catch (Exception e) {
logger.error("Exception:", e);
}
}
public void undo() {
try {
super.undo();
if (previousRange.getStartTime().getTime() != Long.MAX_VALUE || previousRange.getEndTime().getTime() != Long.MIN_VALUE) {
//logger.info("== undo(): Previous range: " + previousRange.toString() + "\n");
graphPanel.setTimeRange(previousRange);
}
} catch (UndoException e) {
// do nothing
logger.error("UndoException:", e);
}
}
public boolean canUndo() {
if (previousRange == null)
return false;
else
return true;
}
}