Search in sources :

Example 1 with Action

use of com.cburch.logisim.proj.Action in project logisim-evolution by reds-heig.

the class LayoutEditHandler method paste.

@Override
public void paste() {
    Project proj = frame.getProject();
    Selection sel = frame.getCanvas().getSelection();
    selectSelectTool(proj);
    Action action = SelectionActions.pasteMaybe(proj, sel);
    if (action != null) {
        proj.doAction(action);
    }
}
Also used : Project(com.cburch.logisim.proj.Project) Action(com.cburch.logisim.proj.Action)

Example 2 with Action

use of com.cburch.logisim.proj.Action in project logisim-evolution by reds-heig.

the class AttrTableSelectionModel method setValueRequested.

@Override
public void setValueRequested(Attribute<Object> attr, Object value) throws AttrTableSetException {
    Selection selection = frame.getCanvas().getSelection();
    Circuit circuit = frame.getCanvas().getCircuit();
    if (selection.isEmpty() && circuit != null) {
        AttrTableCircuitModel circuitModel = new AttrTableCircuitModel(project, circuit);
        circuitModel.setValueRequested(attr, value);
    } else {
        SetAttributeAction act = new SetAttributeAction(circuit, Strings.getter("selectionAttributeAction"));
        AutoLabel labler = null;
        if (attr.equals(StdAttr.LABEL)) {
            labler = new AutoLabel((String) value, circuit);
        }
        SortedSet<Component> comps = new TreeSet<Component>(new PositionComparator());
        comps.addAll(selection.getComponents());
        for (Component comp : comps) {
            if (!(comp instanceof Wire)) {
                if (comp.getFactory() instanceof SubcircuitFactory) {
                    SubcircuitFactory fac = (SubcircuitFactory) comp.getFactory();
                    if (attr.equals(CircuitAttributes.NAMED_CIRCUIT_BOX) || attr.equals(CircuitAttributes.NAME_ATTR)) {
                        try {
                            CircuitMutation mutation = new CircuitMutation(fac.getSubcircuit());
                            mutation.setForCircuit(attr, value);
                            Action action = mutation.toAction(null);
                            project.doAction(action);
                        } catch (CircuitException ex) {
                            JOptionPane.showMessageDialog(project.getFrame(), ex.getMessage());
                        }
                        return;
                    }
                }
                if (attr.equals(StdAttr.LABEL)) {
                    if (labler.hasNext(circuit)) {
                        if (comps.size() > 1) {
                            act.set(comp, attr, labler.GetNext(circuit, comp.getFactory()));
                        } else {
                            if (getAttributeSet().getValue(StdAttr.LABEL).equals((String) value))
                                return;
                            else
                                act.set(comp, attr, labler.GetCurrent(circuit, comp.getFactory()));
                        }
                    } else
                        act.set(comp, attr, "");
                } else
                    act.set(comp, attr, value);
            }
        }
        project.doAction(act);
    }
}
Also used : Action(com.cburch.logisim.proj.Action) SetAttributeAction(com.cburch.logisim.tools.SetAttributeAction) CircuitException(com.cburch.logisim.circuit.CircuitException) AutoLabel(com.cburch.logisim.util.AutoLabel) Circuit(com.cburch.logisim.circuit.Circuit) SetAttributeAction(com.cburch.logisim.tools.SetAttributeAction) Wire(com.cburch.logisim.circuit.Wire) TreeSet(java.util.TreeSet) SubcircuitFactory(com.cburch.logisim.circuit.SubcircuitFactory) CircuitMutation(com.cburch.logisim.circuit.CircuitMutation) Component(com.cburch.logisim.comp.Component)

Example 3 with Action

use of com.cburch.logisim.proj.Action in project logisim-evolution by reds-heig.

the class AddTool method setFacing.

private void setFacing(Canvas canvas, Direction facing) {
    ComponentFactory source = getFactory();
    if (source == null)
        return;
    AttributeSet base = getBaseAttributes();
    Object feature = source.getFeature(ComponentFactory.FACING_ATTRIBUTE_KEY, base);
    @SuppressWarnings("unchecked") Attribute<Direction> attr = (Attribute<Direction>) feature;
    if (attr != null) {
        Action act = ToolAttributeAction.create(this, attr, facing);
        canvas.getProject().doAction(act);
    }
}
Also used : Action(com.cburch.logisim.proj.Action) ToolAttributeAction(com.cburch.logisim.gui.main.ToolAttributeAction) AttributeSet(com.cburch.logisim.data.AttributeSet) Attribute(com.cburch.logisim.data.Attribute) ComponentFactory(com.cburch.logisim.comp.ComponentFactory) Direction(com.cburch.logisim.data.Direction)

Example 4 with Action

use of com.cburch.logisim.proj.Action in project logisim-evolution by reds-heig.

the class AddTool method keyPressed.

@Override
public void keyPressed(Canvas canvas, KeyEvent event) {
    processKeyEvent(canvas, event, KeyConfigurationEvent.KEY_PRESSED);
    if (!event.isConsumed() && event.getModifiersEx() == 0) {
        int KeybEvent = event.getKeyCode();
        String Component = getFactory().getDisplayName();
        if (!GateKeyboardModifier.TookKeyboardStrokes(KeybEvent, null, attrs, canvas, null, false))
            if (AutoLabler.LabelKeyboardHandler(KeybEvent, getAttributeSet(), Component, null, getFactory(), canvas.getCircuit(), null, false)) {
                canvas.repaint();
            } else
                switch(KeybEvent) {
                    case KeyEvent.VK_UP:
                        setFacing(canvas, Direction.NORTH);
                        break;
                    case KeyEvent.VK_DOWN:
                        setFacing(canvas, Direction.SOUTH);
                        break;
                    case KeyEvent.VK_LEFT:
                        setFacing(canvas, Direction.WEST);
                        break;
                    case KeyEvent.VK_RIGHT:
                        setFacing(canvas, Direction.EAST);
                        break;
                    case KeyEvent.VK_R:
                        Direction current = getFacing();
                        if (current == Direction.NORTH)
                            setFacing(canvas, Direction.EAST);
                        else if (current == Direction.EAST)
                            setFacing(canvas, Direction.SOUTH);
                        else if (current == Direction.SOUTH)
                            setFacing(canvas, Direction.WEST);
                        else
                            setFacing(canvas, Direction.NORTH);
                        break;
                    case KeyEvent.VK_ESCAPE:
                        Project proj = canvas.getProject();
                        Library base = proj.getLogisimFile().getLibrary("Base");
                        Tool next = (base == null) ? null : base.getTool("Edit Tool");
                        if (next != null) {
                            proj.setTool(next);
                            Action act = SelectionActions.dropAll(canvas.getSelection());
                            if (act != null) {
                                proj.doAction(act);
                            }
                        }
                        break;
                    case KeyEvent.VK_BACK_SPACE:
                        if (lastAddition != null && canvas.getProject().getLastAction() == lastAddition) {
                            canvas.getProject().undoAction();
                            lastAddition = null;
                        }
                }
    }
}
Also used : Project(com.cburch.logisim.proj.Project) Action(com.cburch.logisim.proj.Action) ToolAttributeAction(com.cburch.logisim.gui.main.ToolAttributeAction) Direction(com.cburch.logisim.data.Direction)

Example 5 with Action

use of com.cburch.logisim.proj.Action in project logisim-evolution by reds-heig.

the class EditTool method keyPressed.

@Override
public void keyPressed(Canvas canvas, KeyEvent e) {
    switch(e.getKeyCode()) {
        case KeyEvent.VK_BACK_SPACE:
        case KeyEvent.VK_DELETE:
            if (!canvas.getSelection().isEmpty()) {
                Action act = SelectionActions.clear(canvas.getSelection());
                canvas.getProject().doAction(act);
                e.consume();
            } else {
                wiring.keyPressed(canvas, e);
            }
            break;
        case KeyEvent.VK_INSERT:
            Action act = SelectionActions.duplicate(canvas.getSelection());
            canvas.getProject().doAction(act);
            e.consume();
            break;
        case KeyEvent.VK_UP:
            if (e.getModifiersEx() == 0)
                attemptReface(canvas, Direction.NORTH, e);
            else
                select.keyPressed(canvas, e);
            break;
        case KeyEvent.VK_DOWN:
            if (e.getModifiersEx() == 0)
                attemptReface(canvas, Direction.SOUTH, e);
            else
                select.keyPressed(canvas, e);
            break;
        case KeyEvent.VK_LEFT:
            if (e.getModifiersEx() == 0)
                attemptReface(canvas, Direction.WEST, e);
            else
                select.keyPressed(canvas, e);
            break;
        case KeyEvent.VK_RIGHT:
            if (e.getModifiersEx() == 0)
                attemptReface(canvas, Direction.EAST, e);
            else
                select.keyPressed(canvas, e);
            break;
        case KeyEvent.VK_ALT:
            updateLocation(canvas, e);
            e.consume();
            break;
        default:
            select.keyPressed(canvas, e);
    }
}
Also used : Action(com.cburch.logisim.proj.Action)

Aggregations

Action (com.cburch.logisim.proj.Action)12 Component (com.cburch.logisim.comp.Component)5 Project (com.cburch.logisim.proj.Project)5 Circuit (com.cburch.logisim.circuit.Circuit)4 CircuitMutation (com.cburch.logisim.circuit.CircuitMutation)4 ToolAttributeAction (com.cburch.logisim.gui.main.ToolAttributeAction)4 CircuitException (com.cburch.logisim.circuit.CircuitException)3 ComponentFactory (com.cburch.logisim.comp.ComponentFactory)3 AttributeSet (com.cburch.logisim.data.AttributeSet)3 SubcircuitFactory (com.cburch.logisim.circuit.SubcircuitFactory)2 Wire (com.cburch.logisim.circuit.Wire)2 Bounds (com.cburch.logisim.data.Bounds)2 Direction (com.cburch.logisim.data.Direction)2 Location (com.cburch.logisim.data.Location)2 Selection (com.cburch.logisim.gui.main.Selection)2 ReplacementMap (com.cburch.logisim.circuit.ReplacementMap)1 Attribute (com.cburch.logisim.data.Attribute)1 AddTool (com.cburch.logisim.tools.AddTool)1 SetAttributeAction (com.cburch.logisim.tools.SetAttributeAction)1 KeyConfigurationEvent (com.cburch.logisim.tools.key.KeyConfigurationEvent)1