The contents of SendSampleMenu.java and SampleBean.java illustrate how to create a custom-menu state.
// Package name and imports have been omitted for clarity public class SendSampleMenu extends AbstractStateMenuImpl { // Other omissions include input and output variable declarations, // getRevisionString, getStateId, getStateName, and getStateNotes @Override protected int getMaxMenuItems () { return 4; } // Similar implementation as getStateAttributes @Override protected Attribute[] getStateAttributeList() { // Assume stateAttr has been defined return stateAttr.clone(); } @Override protected SmappState init(SmappStateProcessingAction action) throws DBException { try { // Get the menu list from the source: database or service // Convert it to the SampleBean list // See SampleBean class below List<SampleBean> sampleList = getSampleMenuList(); // Store the list in the session variable setMenuListToSession(sampleList); } catch (DBException dbex) { return continueFail(); } catch (Exception ex) { return continueFail(); } return null; } @Override protected List<KeyValuePair<String, String>> constructMenuList() throws DBException { List<KeyValuePair<String, String>> menuList = new ArrayList<KeyValuePair<String, String>>(); for (SampleBean sb : getMenuListFromSession(new SampleBean())) { keyValuePair = new KeyValuePair<String, String>(); keyValuePair.setKey(sb.getId()); keyValuePair.setValue(sb.getStatus()); menuList.add(keyValuePair); } return menuList; } @Override protected SmappState saveSessionVariables(String key, String value) throws DBException { int selectedKey = Integer.parseInt(key); }
// Package name and imports have been omitted for clarity public class SampleBean implements BeanConverterInterface<SampleBean> { protected String id; protected String status; public static SampleBean parse (String id, String status) { SampleBean sb = new SampleBean(); sb.id = id; sb.status = status; } @Override public String convert(SampleBean sb) { StringBuilder sb = new StringBuilder(); sb.append(sb.getId()); sb.append("|"); sb.append(sb.getStatus()); return sb.toString(); } @Override public SampleBean convert(String value) { String[] values = value.split("\\|"); Return SampleBean.parse(values[0], values[1]); } public String getId() { return id; } public String getStatus() { return status; } }