135444864c7b6f49865a7e17aa0052987b72e4728showardpackage autotest.tko; 235444864c7b6f49865a7e17aa0052987b72e4728showard 38c9b839c2f5073a755952a8a865a04db3b2d4547showardimport autotest.common.Utils; 4d9e04c1a7950691cc348e70fa2470f8c414ae94fshowardimport autotest.common.ui.MultiListSelectPresenter; 58b0ea2285c1327a686ff0b6ab245915e7fd20094showardimport autotest.common.ui.MultiListSelectPresenter.DoubleListDisplay; 68b0ea2285c1327a686ff0b6ab245915e7fd20094showardimport autotest.common.ui.MultiListSelectPresenter.GeneratorHandler; 7d9e04c1a7950691cc348e70fa2470f8c414ae94fshowardimport autotest.common.ui.MultiListSelectPresenter.Item; 835444864c7b6f49865a7e17aa0052987b72e4728showard 98c9b839c2f5073a755952a8a865a04db3b2d4547showardimport java.util.ArrayList; 10c674d3ea684f75f3e05f5834b598050eb1c8856dshowardimport java.util.Arrays; 1135444864c7b6f49865a7e17aa0052987b72e4728showardimport java.util.List; 128c9b839c2f5073a755952a8a865a04db3b2d4547showardimport java.util.Map; 1335444864c7b6f49865a7e17aa0052987b72e4728showard 148b0ea2285c1327a686ff0b6ab245915e7fd20094showardclass HeaderSelect { 153f2110914421a50e509e619e6e876e0af096144cshoward public static class State { 163f2110914421a50e509e619e6e876e0af096144cshoward private List<HeaderField> selectedFields; 170fb9335593fed571e94b9242e4afdaf298153dfeshoward 188b0ea2285c1327a686ff0b6ab245915e7fd20094showard public List<HeaderField> getSelectedFields() { 198b0ea2285c1327a686ff0b6ab245915e7fd20094showard return new ArrayList<HeaderField>(selectedFields); 208b0ea2285c1327a686ff0b6ab245915e7fd20094showard } 21f248952e42ea33c34e41a49817e50f98c65c2716showard } 2235444864c7b6f49865a7e17aa0052987b72e4728showard 233f2110914421a50e509e619e6e876e0af096144cshoward private HeaderFieldCollection headerFields; 248b0ea2285c1327a686ff0b6ab245915e7fd20094showard private final State savedState; 25d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward 268b0ea2285c1327a686ff0b6ab245915e7fd20094showard protected MultiListSelectPresenter multiListSelect = new MultiListSelectPresenter(); 27d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward 288b0ea2285c1327a686ff0b6ab245915e7fd20094showard public HeaderSelect(HeaderFieldCollection headerFields, State state) { 29227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward this.headerFields = headerFields; 308b0ea2285c1327a686ff0b6ab245915e7fd20094showard savedState = state; 31d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward } 32d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward 338b0ea2285c1327a686ff0b6ab245915e7fd20094showard public void bindDisplay(DoubleListDisplay display) { 348b0ea2285c1327a686ff0b6ab245915e7fd20094showard multiListSelect.bindDisplay(display); 358b0ea2285c1327a686ff0b6ab245915e7fd20094showard refreshFields(); 368b0ea2285c1327a686ff0b6ab245915e7fd20094showard } 37d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward 388b0ea2285c1327a686ff0b6ab245915e7fd20094showard public void refreshFields() { 398b0ea2285c1327a686ff0b6ab245915e7fd20094showard List<Item> selection = multiListSelect.getSelectedItems(); 408b0ea2285c1327a686ff0b6ab245915e7fd20094showard multiListSelect.clearItems(); 41227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward for (HeaderField field : headerFields) { 428b0ea2285c1327a686ff0b6ab245915e7fd20094showard if (field.isUserSelectable()) { 438b0ea2285c1327a686ff0b6ab245915e7fd20094showard multiListSelect.addItem(field.getItem()); 448b0ea2285c1327a686ff0b6ab245915e7fd20094showard } 45227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward } 468b0ea2285c1327a686ff0b6ab245915e7fd20094showard multiListSelect.restoreSelectedItems(selection); 47f248952e42ea33c34e41a49817e50f98c65c2716showard } 48f248952e42ea33c34e41a49817e50f98c65c2716showard 49c674d3ea684f75f3e05f5834b598050eb1c8856dshoward public void updateStateFromView() { 503f2110914421a50e509e619e6e876e0af096144cshoward saveToState(savedState); 51c674d3ea684f75f3e05f5834b598050eb1c8856dshoward } 523f2110914421a50e509e619e6e876e0af096144cshoward 538b0ea2285c1327a686ff0b6ab245915e7fd20094showard protected void saveToState(State state) { 543f2110914421a50e509e619e6e876e0af096144cshoward state.selectedFields = getSelectedItemsFromView(); 553f2110914421a50e509e619e6e876e0af096144cshoward } 563f2110914421a50e509e619e6e876e0af096144cshoward 573f2110914421a50e509e619e6e876e0af096144cshoward public State getStateFromView() { 583f2110914421a50e509e619e6e876e0af096144cshoward State state = new State(); 593f2110914421a50e509e619e6e876e0af096144cshoward saveToState(state); 603f2110914421a50e509e619e6e876e0af096144cshoward return state; 613f2110914421a50e509e619e6e876e0af096144cshoward } 62c674d3ea684f75f3e05f5834b598050eb1c8856dshoward 63c674d3ea684f75f3e05f5834b598050eb1c8856dshoward private List<HeaderField> getSelectedItemsFromView() { 64f248952e42ea33c34e41a49817e50f98c65c2716showard List<HeaderField> selectedFields = new ArrayList<HeaderField>(); 65d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward for (Item item : multiListSelect.getSelectedItems()) { 66227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward selectedFields.add(headerFields.getFieldBySqlName(item.value)); 67f248952e42ea33c34e41a49817e50f98c65c2716showard } 68f248952e42ea33c34e41a49817e50f98c65c2716showard return selectedFields; 6935444864c7b6f49865a7e17aa0052987b72e4728showard } 70c674d3ea684f75f3e05f5834b598050eb1c8856dshoward 71c674d3ea684f75f3e05f5834b598050eb1c8856dshoward public List<HeaderField> getSelectedItems() { 728b0ea2285c1327a686ff0b6ab245915e7fd20094showard return savedState.getSelectedFields(); 7335444864c7b6f49865a7e17aa0052987b72e4728showard } 7435444864c7b6f49865a7e17aa0052987b72e4728showard 75c674d3ea684f75f3e05f5834b598050eb1c8856dshoward public void updateViewFromState() { 763f2110914421a50e509e619e6e876e0af096144cshoward loadFromState(savedState); 7735444864c7b6f49865a7e17aa0052987b72e4728showard } 7835444864c7b6f49865a7e17aa0052987b72e4728showard 793f2110914421a50e509e619e6e876e0af096144cshoward public void loadFromState(State state) { 808b0ea2285c1327a686ff0b6ab245915e7fd20094showard setSelectedItemsInView(state.selectedFields); 813f2110914421a50e509e619e6e876e0af096144cshoward } 823f2110914421a50e509e619e6e876e0af096144cshoward 838b0ea2285c1327a686ff0b6ab245915e7fd20094showard private void setSelectedItemsInView(List<HeaderField> fields) { 84d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward List<String> fieldNames = new ArrayList<String>(); 85d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward for (HeaderField field : fields) { 8616ab5250da1e2e5fb1549774063a8099ce4fdbb8showard Item item = field.getItem(); 8716ab5250da1e2e5fb1549774063a8099ce4fdbb8showard if (item.isGeneratedItem) { 8816ab5250da1e2e5fb1549774063a8099ce4fdbb8showard multiListSelect.addItem(item); 8916ab5250da1e2e5fb1549774063a8099ce4fdbb8showard } 90d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward fieldNames.add(field.getName()); 91c674d3ea684f75f3e05f5834b598050eb1c8856dshoward } 92d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward multiListSelect.setSelectedItemsByName(fieldNames); 93c674d3ea684f75f3e05f5834b598050eb1c8856dshoward } 94c674d3ea684f75f3e05f5834b598050eb1c8856dshoward 958b0ea2285c1327a686ff0b6ab245915e7fd20094showard public void setSelectedItems(List<HeaderField> fields) { 963f2110914421a50e509e619e6e876e0af096144cshoward savedState.selectedFields = new ArrayList<HeaderField>(fields); 97c674d3ea684f75f3e05f5834b598050eb1c8856dshoward } 98c674d3ea684f75f3e05f5834b598050eb1c8856dshoward 998b0ea2285c1327a686ff0b6ab245915e7fd20094showard public void setSelectedItem(HeaderField field) { 1008b0ea2285c1327a686ff0b6ab245915e7fd20094showard setSelectedItems(Arrays.asList(new HeaderField[] {field})); 101c674d3ea684f75f3e05f5834b598050eb1c8856dshoward } 1028b0ea2285c1327a686ff0b6ab245915e7fd20094showard 1038b0ea2285c1327a686ff0b6ab245915e7fd20094showard public void selectItemInView(HeaderField field) { 1048b0ea2285c1327a686ff0b6ab245915e7fd20094showard List<HeaderField> fields = getSelectedItemsFromView(); 1058b0ea2285c1327a686ff0b6ab245915e7fd20094showard if (!fields.contains(field)) { 1068b0ea2285c1327a686ff0b6ab245915e7fd20094showard fields.add(field); 1078b0ea2285c1327a686ff0b6ab245915e7fd20094showard setSelectedItemsInView(fields); 1088b0ea2285c1327a686ff0b6ab245915e7fd20094showard } 1098b0ea2285c1327a686ff0b6ab245915e7fd20094showard } 1108b0ea2285c1327a686ff0b6ab245915e7fd20094showard 1118b0ea2285c1327a686ff0b6ab245915e7fd20094showard public void deselectItemInView(HeaderField field) { 1128b0ea2285c1327a686ff0b6ab245915e7fd20094showard List<HeaderField> fields = getSelectedItemsFromView(); 1138b0ea2285c1327a686ff0b6ab245915e7fd20094showard if (fields.remove(field)) { 1148b0ea2285c1327a686ff0b6ab245915e7fd20094showard setSelectedItemsInView(fields); 1158b0ea2285c1327a686ff0b6ab245915e7fd20094showard } 116f248952e42ea33c34e41a49817e50f98c65c2716showard } 117f248952e42ea33c34e41a49817e50f98c65c2716showard 1188c9b839c2f5073a755952a8a865a04db3b2d4547showard public void addHistoryArguments(Map<String, String> arguments, String name) { 1198c9b839c2f5073a755952a8a865a04db3b2d4547showard List<String> fields = new ArrayList<String>(); 120f248952e42ea33c34e41a49817e50f98c65c2716showard for (HeaderField field : getSelectedItems()) { 121f248952e42ea33c34e41a49817e50f98c65c2716showard fields.add(field.getSqlName()); 1228c9b839c2f5073a755952a8a865a04db3b2d4547showard } 1238c9b839c2f5073a755952a8a865a04db3b2d4547showard String fieldList = Utils.joinStrings(",", fields); 1248c9b839c2f5073a755952a8a865a04db3b2d4547showard arguments.put(name, fieldList); 125d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward } 126d9e04c1a7950691cc348e70fa2470f8c414ae94fshoward 1278c9b839c2f5073a755952a8a865a04db3b2d4547showard public void handleHistoryArguments(Map<String, String> arguments, String name) { 1282b50af17e5fa602821a8917bbb9fa1ddb1176ee3showard String[] fields = arguments.get(name).split(","); 129cb6ae7dca0f7eff64e3c9e413f0c30e008a2a6aeshoward List<HeaderField> selectedFields = getHeaderFieldsFromValues(fields); 1308b0ea2285c1327a686ff0b6ab245915e7fd20094showard setSelectedItems(selectedFields); 131f248952e42ea33c34e41a49817e50f98c65c2716showard } 132f248952e42ea33c34e41a49817e50f98c65c2716showard 133227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward private List<HeaderField> getHeaderFieldsFromValues(String[] fieldSqlNames) { 134227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward List<HeaderField> fields = new ArrayList<HeaderField>(); 135227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward for (String sqlName : fieldSqlNames) { 136227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward fields.add(headerFields.getFieldBySqlName(sqlName)); 137f248952e42ea33c34e41a49817e50f98c65c2716showard } 138227a7a1d0484dcfa4c6d996a1c10e95437d059efshoward return fields; 139f248952e42ea33c34e41a49817e50f98c65c2716showard } 1402b50af17e5fa602821a8917bbb9fa1ddb1176ee3showard 1418b0ea2285c1327a686ff0b6ab245915e7fd20094showard protected State getState() { 1428b0ea2285c1327a686ff0b6ab245915e7fd20094showard return savedState; 143c674d3ea684f75f3e05f5834b598050eb1c8856dshoward } 144f248952e42ea33c34e41a49817e50f98c65c2716showard 1458b0ea2285c1327a686ff0b6ab245915e7fd20094showard public void setGeneratorHandler(GeneratorHandler handler) { 1468b0ea2285c1327a686ff0b6ab245915e7fd20094showard multiListSelect.setGeneratorHandler(handler); 147c674d3ea684f75f3e05f5834b598050eb1c8856dshoward } 14835444864c7b6f49865a7e17aa0052987b72e4728showard} 149