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