View Javadoc

1   package de.orangecafe.amazonrcp.gui.commands;
2   
3   import org.springframework.richclient.command.ActionCommand;
4   import org.springframework.richclient.form.Form;
5   import org.springframework.richclient.dialog.TitledPageApplicationDialog;
6   import org.springframework.richclient.dialog.FormBackedDialogPage;
7   import org.springframework.richclient.dialog.MessageDialog;
8   import org.springframework.richclient.application.event.LifecycleApplicationEvent;
9   import org.springframework.richclient.application.Application;
10  import org.springframework.richclient.application.ApplicationException;
11  import org.springframework.richclient.core.Message;
12  import org.springframework.util.Assert;
13  import de.orangecafe.amazonrcp.service.IAmazonService;
14  import de.orangecafe.amazonrcp.service.ServiceException;
15  import com.amazon.webservices.awsecommerceservice._2007_04_04.Items;
16  import com.amazon.webservices.awsecommerceservice._2007_04_04.ItemSearchRequest;
17  
18  /**
19   * @author Torsten Strasser
20   */
21  public class SearchAmazonCommand extends ActionCommand {
22      private IAmazonService _service;
23      private ActionCommand _showSearchResultViewCommand;
24  
25      public void setAmazonService(final IAmazonService service) {
26          Assert.notNull(service);
27          _service = service;
28      }
29  
30      public void setShowSearchResultViewCommand(final ActionCommand command) {
31          _showSearchResultViewCommand = command;
32      }
33  
34      @Override
35      protected void doExecuteCommand() {
36          _showSearchResultViewCommand.execute();
37          showSearchRequestDialog();
38      }
39  
40      private void showSearchRequestDialog() {
41          final Form form = (Form) Application.instance().getApplicationContext().getBean("searchForm");
42          TitledPageApplicationDialog dialog = new TitledPageApplicationDialog(new FormBackedDialogPage(form)) {
43              protected boolean onFinish() {
44                  form.commit();
45  
46                  ItemSearchRequest request = (ItemSearchRequest) form.getFormObject();
47  
48                  Items items = search(request);
49  
50                  if (items.getItem().size() > 0) {
51                      getApplicationContext().publishEvent(new LifecycleApplicationEvent(LifecycleApplicationEvent.MODIFIED, items));
52  
53                      return true;
54                  } else {
55                      MessageDialog dialog = new MessageDialog(getMessage("noSearchResultDialog.title"), new Message(getMessage("noSearchResultDialog.description")));
56                      dialog.showDialog();
57  
58                      return false;
59                  }
60              }
61          };
62  
63          dialog.showDialog();
64      }
65  
66      private Items search(final ItemSearchRequest request) {
67          try {
68              return _service.search(request);
69          } catch (ServiceException e) {
70              throw new ApplicationException(e);
71          }
72      }
73  }