001package org.biopax.paxtools.command; 002 003import org.biopax.paxtools.controller.PropertyEditor; 004import org.biopax.paxtools.model.BioPAXElement; 005 006/** 007 */ 008public abstract class AbstractPropertyCommand<D extends BioPAXElement,R> implements Command 009{ 010 D bpe; 011 PropertyEditor<D,R> editor; 012 R value; 013 014 AbstractPropertyCommand(D bpe, PropertyEditor<D,R> editor, R value) 015 { 016 017 if (bpe == null || editor == null) 018 { 019 throw new IllegalArgumentException(); 020 } 021 this.bpe = bpe; 022 this.editor = editor; 023 this.value=value; 024 025 } 026 027 public boolean undo() 028 { 029 try 030 { 031 undoAction(); 032 return true; 033 } 034 catch (Exception e) 035 { 036 return false; 037 } 038 } 039 040 protected abstract void undoAction(); 041 042 043 public boolean redo() 044 { 045 try 046 { 047 redoAction(); 048 return true; 049 } 050 catch (Exception e) 051 { 052 return false; 053 } 054 } 055 056 protected abstract void redoAction(); 057 058}