001 package org.springframework.richclient.form.binding.support; 002 003 import org.springframework.binding.form.FormModel; 004 import org.springframework.richclient.command.AbstractCommand; 005 006 import java.util.List; 007 import java.util.ArrayList; 008 009 public abstract class AbstractCRUDBinding extends CustomBinding 010 { 011 012 private AbstractCommand removeCommand; 013 014 private AbstractCommand addCommand; 015 016 private AbstractCommand detailCommand; 017 018 private AbstractCommand editCommand; 019 020 private List<AbstractCommand> commands; 021 022 private boolean addSupported; 023 024 private boolean removeSupported; 025 026 private boolean editSupported; 027 028 private boolean showDetailSupported; 029 030 protected AbstractCRUDBinding(FormModel formModel, String formPropertyPath, Class requiredSourceClass) 031 { 032 super(formModel, formPropertyPath, requiredSourceClass); 033 } 034 035 protected List<AbstractCommand> getCommands() 036 { 037 if (this.commands == null) 038 this.commands = createCommands(); 039 return this.commands; 040 } 041 042 protected List<AbstractCommand> createCommands() 043 { 044 int i = isAddSupported() ? 1 : 0; 045 i = isRemoveSupported() ? i + 1 : i; 046 i = isShowDetailSupported() ? i + 1 : i; 047 i = isEditSupported() ? i + 1 : i; 048 this.commands = new ArrayList<AbstractCommand>(i); 049 if (isShowDetailSupported()) 050 commands.add(getDetailCommand()); 051 if (isAddSupported()) 052 commands.add(getAddCommand()); 053 if (isRemoveSupported()) 054 commands.add(getRemoveCommand()); 055 if (isEditSupported()) 056 commands.add(getEditCommand()); 057 return this.commands; 058 } 059 060 protected AbstractCommand getAddCommand() 061 { 062 if (this.addCommand == null) 063 this.addCommand = createAddCommand(); 064 return this.addCommand; 065 } 066 067 abstract protected AbstractCommand createAddCommand(); 068 069 protected AbstractCommand getRemoveCommand() 070 { 071 if (this.removeCommand == null) 072 this.removeCommand = createRemoveCommand(); 073 return this.removeCommand; 074 } 075 076 abstract protected AbstractCommand createRemoveCommand(); 077 078 protected AbstractCommand getDetailCommand() 079 { 080 if (this.detailCommand == null) 081 this.detailCommand = createDetailCommand(); 082 return this.detailCommand; 083 } 084 085 abstract protected AbstractCommand createDetailCommand(); 086 087 protected AbstractCommand getEditCommand() 088 { 089 if (this.editCommand == null) 090 this.editCommand = createEditCommand(); 091 return this.editCommand; 092 } 093 094 abstract protected AbstractCommand createEditCommand(); 095 096 public boolean isAddSupported() 097 { 098 return addSupported; 099 } 100 101 public void setAddSupported(boolean addSupported) 102 { 103 this.addSupported = addSupported; 104 } 105 106 public boolean isEditSupported() 107 { 108 return editSupported; 109 } 110 111 public void setEditSupported(boolean editSupported) 112 { 113 this.editSupported = editSupported; 114 } 115 116 public boolean isRemoveSupported() 117 { 118 return removeSupported; 119 } 120 121 public void setRemoveSupported(boolean removeSupported) 122 { 123 this.removeSupported = removeSupported; 124 } 125 126 public boolean isShowDetailSupported() 127 { 128 return showDetailSupported; 129 } 130 131 public void setShowDetailSupported(boolean showDetailSupported) 132 { 133 this.showDetailSupported = showDetailSupported; 134 } 135 } 136