1. /**
  2. * Copyright 2014 Red Hat, Inc. and/or its affiliates.
  3. *
  4. * Licensed under the Eclipse Public License version 1.0, available at
  5. * http://www.eclipse.org/legal/epl-v10.html
  6. */
  7. package org.jboss.tools.forge.ui.internal.ext.provider;
  8. import java.io.File;
  9. import java.io.IOException;
  10. import java.net.URI;
  11. import org.eclipse.core.filesystem.EFS;
  12. import org.eclipse.core.filesystem.IFileStore;
  13. import org.eclipse.core.runtime.IStatus;
  14. import org.eclipse.core.runtime.Status;
  15. import org.eclipse.jface.dialogs.MessageDialog;
  16. import org.eclipse.swt.widgets.Shell;
  17. import org.eclipse.ui.IWorkbenchPage;
  18. import org.eclipse.ui.PartInitException;
  19. import org.eclipse.ui.PlatformUI;
  20. import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
  21. import org.eclipse.ui.ide.IDE;
  22. import org.jboss.forge.addon.ui.DefaultUIDesktop;
  23. import org.jboss.forge.addon.ui.UIDesktop;
  24. import org.jboss.tools.forge.ui.internal.ForgeUIPlugin;
  25. /**
  26. * Implementation of the {@link UIDesktop} interface
  27. *
  28. * @author <a href="[email protected]">George Gastaldi</a>
  29. */
  30. public class ForgeUIDesktop extends DefaultUIDesktop {
  31. private final Shell parent;
  32. public ForgeUIDesktop(Shell parent) {
  33. this.parent = parent;
  34. }
  35. @Override
  36. public void open(File file) throws IOException {
  37. // Open should do the same as edit in Eclipse
  38. edit(file);
  39. }
  40. @Override
  41. public void edit(File file) throws IOException {
  42. IFileStore fileStore = EFS.getLocalFileSystem().getStore(file.toURI());
  43. IWorkbenchPage page = PlatformUI.getWorkbench()
  44. .getActiveWorkbenchWindow().getActivePage();
  45. try {
  46. IDE.openEditorOnFileStore(page, fileStore);
  47. } catch (PartInitException e) {
  48. Status status = new Status(IStatus.ERROR, ForgeUIPlugin.PLUGIN_ID,
  49. "Edit File action failed");
  50. ForgeUIPlugin.log(e);
  51. MessageDialog.openError(parent, "Edit File", status.getMessage());
  52. }
  53. }
  54. @Override
  55. public void browse(URI uri) throws IOException {
  56. IWorkbenchBrowserSupport support = PlatformUI.getWorkbench()
  57. .getBrowserSupport();
  58. try {
  59. support.getExternalBrowser().openURL(uri.toURL());
  60. } catch (PartInitException e) {
  61. Status status = new Status(IStatus.ERROR, ForgeUIPlugin.PLUGIN_ID,
  62. "Browser initialization failed");
  63. ForgeUIPlugin.log(e);
  64. MessageDialog.openError(parent, "Browse URL", status.getMessage());
  65. }
  66. }
  67. }
Comments powered by Disqus