/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package nl.fontys.sofa.limo.view.util.undoable.events; import java.util.List; import javax.swing.undo.AbstractUndoableEdit; import javax.swing.undo.CannotRedoException; import javax.swing.undo.CannotUndoException; import nl.fontys.sofa.limo.domain.component.Component; import nl.fontys.sofa.limo.domain.component.event.Event; import nl.fontys.sofa.limo.view.chain.ChainGraphScene; import nl.fontys.sofa.limo.view.node.bean.AbstractBeanNode; import org.netbeans.api.visual.widget.LabelWidget; /** * * @author Christina Zenzes */ public class EventUndoableEdit extends AbstractUndoableEdit { private List<Event> oldEvents; private final ChainGraphScene scene; private final AbstractBeanNode bean; private final LabelWidget updateLabelWigdet; public EventUndoableEdit(AbstractBeanNode bean, ChainGraphScene scene, LabelWidget updateLabelWidget) { this.oldEvents = (List<Event>) bean.getValue("events"); this.bean = bean; this.scene = scene; this.updateLabelWigdet = updateLabelWidget; } @Override public void undo() throws CannotUndoException { toggleEvents(); } @Override public void redo() throws CannotRedoException { toggleEvents(); } private void toggleEvents() { Component component = bean.getLookup().lookup(Component.class); List<Event> events = component.getEvents(); component.setEvents(oldEvents); if (oldEvents.isEmpty()) { updateLabelWigdet.setLabel(""); } else { updateLabelWigdet.setLabel("Events: " + oldEvents.size()); } oldEvents = events; bean.setValue("events", oldEvents); scene.validate(); } @Override public boolean canRedo() { return true; } @Override public boolean canUndo() { return true; } }