| /* |
| ****************************************************************************** |
| * Copyright © 2018 PTA GmbH. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| ****************************************************************************** |
| */ |
| import { Command } from './command'; |
| import { BaseCommand } from './base-command'; |
| |
| export class SimpleFieldCommand extends BaseCommand { |
| constructor( |
| private model: any, |
| private field: string, |
| private oldval: any, |
| private newval: any) { |
| super(); |
| } |
| public undo() { |
| this.model[this.field] = this.oldval; |
| } |
| |
| public redo() { |
| this.model[this.field] = this.newval; |
| } |
| |
| public mergePossible( newerCommand: Command ): boolean { |
| if ( newerCommand instanceof SimpleFieldCommand ) { |
| const newCmd: SimpleFieldCommand = newerCommand; |
| return this.model === newCmd.model && this.field === newCmd.field; |
| } |
| return false; |
| } |
| public merge( newerCommand: Command): Command { |
| if ( newerCommand instanceof SimpleFieldCommand ) { |
| const newCmd: SimpleFieldCommand = newerCommand; |
| this.newval = newCmd.newval; |
| |
| return this; |
| } |
| throw new TypeError( 'Invalid merge call!'); |
| } |
| |
| } |