package com.cburch.logisim.std.gates;
import java.awt.event.KeyEvent;
import com.cburch.logisim.comp.Component;
import com.cburch.logisim.data.AttributeSet;
import com.cburch.logisim.gui.main.Canvas;
import com.cburch.logisim.tools.SetAttributeAction;
public class GateKeyboardModifier {
public static boolean TookKeyboardStrokes(int KeyCode,
Component comp,
AttributeSet attrs,
Canvas canvas,
SetAttributeAction act,
boolean CreateAction) {
switch (KeyCode) {
case KeyEvent.VK_N:
case KeyEvent.VK_S:
if (attrs.containsAttribute(GateAttributes.ATTR_SIZE)) {
if (CreateAction)
act.set(comp, GateAttributes.ATTR_SIZE, GateAttributes.SIZE_NARROW);
else {
attrs.setValue(GateAttributes.ATTR_SIZE, GateAttributes.SIZE_NARROW);
canvas.repaint();
}
}
return true;
case KeyEvent.VK_M:
if (attrs.containsAttribute(GateAttributes.ATTR_SIZE)) {
if (CreateAction)
act.set(comp, GateAttributes.ATTR_SIZE, GateAttributes.SIZE_MEDIUM);
else {
attrs.setValue(GateAttributes.ATTR_SIZE, GateAttributes.SIZE_MEDIUM);
canvas.repaint();
}
}
return true;
case KeyEvent.VK_W:
if (attrs.containsAttribute(GateAttributes.ATTR_SIZE)) {
if (CreateAction)
act.set(comp, GateAttributes.ATTR_SIZE, GateAttributes.SIZE_WIDE);
else {
attrs.setValue(GateAttributes.ATTR_SIZE, GateAttributes.SIZE_WIDE);
canvas.repaint();
}
}
return true;
case KeyEvent.VK_EQUALS:
case KeyEvent.VK_PLUS:
case KeyEvent.VK_ADD:
if (attrs.containsAttribute(GateAttributes.ATTR_INPUTS)) {
int NrOfInputs = attrs.getValue(GateAttributes.ATTR_INPUTS);
if (NrOfInputs < GateAttributes.MAX_INPUTS) {
if (CreateAction)
act.set(comp, GateAttributes.ATTR_INPUTS, NrOfInputs+1);
else {
attrs.setValue(GateAttributes.ATTR_INPUTS, NrOfInputs+1);
canvas.repaint();
}
}
}
return true;
case KeyEvent.VK_MINUS:
case KeyEvent.VK_SUBTRACT:
if (attrs.containsAttribute(GateAttributes.ATTR_INPUTS)) {
int NrOfInputs = attrs.getValue(GateAttributes.ATTR_INPUTS);
if (NrOfInputs > 2) {
if (CreateAction)
act.set(comp, GateAttributes.ATTR_INPUTS, NrOfInputs-1);
else {
attrs.setValue(GateAttributes.ATTR_INPUTS, NrOfInputs-1);
canvas.repaint();
}
}
}
return true;
default : return false;
}
}
}