package com.perforce.jdev;
import com.perforce.jdev.res.Icons;
import java.io.IOException;
import javax.swing.Icon;
import javax.swing.KeyStroke;
import oracle.ide.scm.SCMControlItem;
import oracle.ide.scm.SCMFile;
import oracle.ide.scm.SCMFileStatus;
import oracle.ide.scm.SCMOptions;
import oracle.ide.scm.error.SCMException;
import oracle.ide.scm.op.SCMSingleFileOperation;
public class P4DiffCmd extends SCMSingleFileOperation implements SCMControlItem
{
public void execute(SCMFile sf, SCMOptions opts) throws SCMException {
try {
final P4File f = (P4File) sf.getStatus();
P4Client.log(f.diff(opts));
} catch (IOException e) {
final String msg = "I/O errror: diff {0} {1}";
throw new SCMException(msg, new Object[] {sf, opts}, e);
}
}
public boolean filter(SCMFile f) throws SCMException {
final SCMFileStatus stat = f.getStatus();
return stat.isControlled() && (stat instanceof P4File);
}
public SCMControlItem getControlItem() {
return this;
}
public String getName() {
return "Diff";
}
public char getMnemonic() {
return 'd';
}
public KeyStroke getAccelerator() {
return null;
}
public Icon getIcon() {
return Icons.DIFF;
}
public boolean isContextItem() {
return true;
}
}