1

ラップ部分のターゲット プラットフォームとして rap 1.4 を使用して RCP/RAP-App を作成しています。rcp には、plugin.xml の menuContribution を介して構成された保存ボタンと、保存コマンド用の SaveHandler があります。今は、このボタンをラップ アプリのダウンロード ボタンとして使用しています。

4

1 に答える 1

2

私はそれを持っている。
DownloadServiceHandler を作成し、save-command のハンドラーにダウンロード URL を指定して非表示のブラウザーを作成しました。
ステップごとのすべての作業:
ツールバーの保存ボタンは、plugin.xml で構成されます。

    <extension
         point="org.eclipse.ui.commands">
      <command
            id="pgui.rcp.command.save"
            name="Save">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="toolbar:org.eclipse.ui.main.toolbar">
         <toolbar
               id="pgui.rcp.toolbar1">
            <command
                  commandId="pgui.rcp.command.save"
                  icon="icons/filesave_16.png"
                  id="pgui.rcp.button.save"
                  style="push"
            </command>
         </toolbar>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.handlers">
      <handler
            class="pgui.handler.SaveHandler"
            commandId="pgui.rcp.command.save">
      </handler>
   </extension>

DownloadServiceHandler を作成しました。

public class DownloadServiceHandler implements IServiceHandler
{
  public void service() throws IOException, ServletException
  {
    final String fileName = RWT.getRequest().getParameter("filename");
    final byte[] download = getYourFileContent().getBytes();
    // Send the file in the response
    final HttpServletResponse response = RWT.getResponse();
    response.setContentType("application/octet-stream");
    response.setContentLength(download.length);
    final String contentDisposition = "attachment; filename=\"" + fileName + "\"";
    response.setHeader("Content-Disposition", contentDisposition);
    response.getOutputStream().write(download);
  }
}

ApplicationWorkbenchWindowAdvisor のメソッド postWindowCreate で、DownloadServiceHandler を登録しました。

private void registerDownloadHandler()
  {
    final IServiceManager manager = RWT.getServiceManager();
    final IServiceHandler handler = new DownloadServiceHandler();
    manager.registerServiceHandler("downloadServiceHandler", handler);
  }

SaveHandler の実行メソッドで、目に見えないブラウザを作成し、ファイル名と登録済みの DownloadServiceHandler を使用して URL を設定しました。

  final Browser browser = new Browser(shell, SWT.NONE);
    browser.setSize(0, 0);
    browser.setUrl(createDownloadUrl(fileName));
       .
       .
  private String createDownloadUrl(final String fileName)
  {
    final StringBuilder url = new StringBuilder();
    url.append(RWT.getRequest().getContextPath());
    url.append(RWT.getRequest().getServletPath());
    url.append("?");
    url.append(IServiceHandler.REQUEST_PARAM);
    url.append("=downloadServiceHandler");
    url.append("&filename=");
    url.append(fileName);
    return RWT.getResponse().encodeURL(url.toString());
  }
于 2012-07-26T13:29:03.603 に答える