package commands.logic; import listeners.SelectionListener; import util.Log; import util.Wrapper; import worldData.AbstractObj; import commands.undoable.UndoableCommand; /** * TODO is this now the exact same class as CommandSetWrapperToValue ?? * * everything that implements {@link SelectionListener} can be selected by * passing through a {@link SelectionInfo} * * @author Spobo * */ public class CommandSetWrapperToValue2 extends UndoableCommand { private Wrapper mySelectionTarget; private SelectionListener myObjectToSelect; private Object mySelectionBackup; public CommandSetWrapperToValue2(Wrapper selectionTarget) { mySelectionTarget = selectionTarget; } public CommandSetWrapperToValue2(Wrapper selectionTarget, SelectionListener objectToSelect) { mySelectionTarget = selectionTarget; myObjectToSelect = objectToSelect; } public CommandSetWrapperToValue2(Wrapper selectionWrapper, String infoText) { this(selectionWrapper); getInfoObject().setShortDescr(infoText); } @Override public boolean override_do() { Log.d("Commands", "Trying to set selection to predefined object: " + myObjectToSelect); if (myObjectToSelect != null) { // backup the current selected object: mySelectionBackup = mySelectionTarget.getObject(); mySelectionTarget.setTo(myObjectToSelect); return true; } return false; } @Override public synchronized boolean override_do(Object transfairObject) { Log.d("Commands", "Trying to set selection (is=" + mySelectionTarget.getObject() + ") to " + transfairObject); if (transfairObject instanceof Wrapper) { mySelectionBackup = (mySelectionTarget).getObject(); mySelectionTarget.setTo(((Wrapper) transfairObject).getObject()); Log.d("Commands", " Selection set correctly."); return true; } if (transfairObject instanceof AbstractObj) { mySelectionBackup = (mySelectionTarget).getObject(); mySelectionTarget.setTo(transfairObject); return true; } return false; } @Override public boolean override_undo() { mySelectionTarget.setTo(mySelectionBackup); return true; } }