Package com.onpositive.gae.tools

Source Code of com.onpositive.gae.tools.AppBusterAction

package com.onpositive.gae.tools;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.browser.IWebBrowser;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.FormText;
import org.eclipse.ui.help.IWorkbenchHelpSystem;


public class AppBusterAction implements IWorkbenchWindowActionDelegate,
    IWorkbenchWindowPulldownDelegate2 {

  ArrayList<IMenuContributor> list = new ArrayList<IMenuContributor>();

  public AppBusterAction() {
    IConfigurationElement[] configurationElementsFor = Platform
        .getExtensionRegistry().getConfigurationElementsFor(
            "com.onpositive.gae.tools.core.menuConfigurationPart");
    for (IConfigurationElement e : configurationElementsFor) {
      try {
        IMenuContributor c = (IMenuContributor) e
            .createExecutableExtension("class");
        list.add(c);
      } catch (CoreException e1) {
        //Activator.log(e1);
      }
    }
  }

  public void dispose() {
  }

  public void init(IWorkbenchWindow window) {
  }

  public void run(IAction action) {
    IJavaProject javaProject = UIUtils.getJavaGaeProject();
    if (javaProject != null) {
      new ConfigureDialog(Display.getCurrent().getActiveShell(),
          javaProject).open();
    }
  }

  public void selectionChanged(IAction action, ISelection selection) {

  }

  public Menu getMenu(Control parent) {
    MenuManager mn = new MenuManager();

//    mn.add(new OpenAction("Open deployed application in internal browser",
//        false));
    mn.add(new OpenLogAction("View deployed application log ", false));
    /*mn.add(new Action("Open application dashboard ") {
      public void run() {
        IJavaProject javaGaeProject = UIUtils.getJavaGaeProject();
        if (javaGaeProject != null) {
          String appId = GaeBridge.getAppId(javaGaeProject
              .getProject());
          if (appId == null || appId.trim().length() == 0) {
            MessageDialog
                .openError(
                    Display.getCurrent().getActiveShell(),
                    "Error",
                    "Please setup application id for "
                        + javaGaeProject
                            .getElementName()
                        + " before using open dashboard action");
            return;
          }
          try {
            IWebBrowser createBrowser = PlatformUI.getWorkbench()
                .getBrowserSupport().createBrowser(SWT.NONE,
                    "appwrench", "Dashboard",
                    "Application dashboard");
            try {
              createBrowser.openURL(new URL(
                  "http://appengine.google.com/dashboard?&app_id="
                      + appId));
            } catch (MalformedURLException e) {
              Activator.log(e);
            }
          } catch (PartInitException e) {
            Activator.log(e);
          }
        }
      }

    });*/
    mn.add(new Separator());
    for (IMenuContributor m : list) {
      m.contributeTo(mn);
      mn.add(new Separator());
    }
    mn.add(new Action("About AppWrench") {
      public void run() {
        Dialog dialog = new Dialog(Display.getCurrent()
            .getActiveShell()) {

         
          protected Control createDialogArea(Composite parent) {
            Composite createDialogArea = (Composite) super
                .createDialogArea(parent);
            GridLayout layout = new GridLayout(2, false);
            layout.marginWidth = 0;
            layout.marginHeight = 0;
            createDialogArea.setLayout(layout);
            ImageDescriptor imageDescriptorFromPlugin = Activator
                .imageDescriptorFromPlugin(Activator.PLUGIN_ID,
                    "icons/onpositive.jpg");
            final Image createImage = imageDescriptorFromPlugin
                .createImage();
            Label label = new Label(createDialogArea, SWT.NONE);
            label.setImage(createImage);
            createDialogArea
                .addDisposeListener(new DisposeListener() {

                  public void widgetDisposed(DisposeEvent e) {
                    createImage.dispose();
                  }
                });
            FormText ft = new FormText(createDialogArea, SWT.NONE);
            ft
                .setText(
                    "<form><p><b>AppWrench 1.3</b></p><p>(c) Copyright <a>OnPositive Technologies, LLC. 2009-2010t</a>.  All rights reserved.</p><p></p></form>",
                    true, true);
            ft.addHyperlinkListener(new IHyperlinkListener() {

              public void linkExited(HyperlinkEvent e) {

              }

              public void linkEntered(HyperlinkEvent e) {
               
              }

              public void linkActivated(HyperlinkEvent e) {

                try {
                  PlatformUI
                      .getWorkbench()
                      .getBrowserSupport()
                      .getExternalBrowser()
                      .openURL(
                          new URL(
                              "http://onpositive.com"));
                } catch (PartInitException e1) {
                  Activator.log(e1);
                } catch (MalformedURLException e1) {
                  Activator.log(e1);
                }
              }

            });
            ft.setBackground(Display.getCurrent().getSystemColor(
                SWT.COLOR_WHITE));
            createDialogArea.setBackground(Display.getCurrent()
                .getSystemColor(SWT.COLOR_WHITE));
            return createDialogArea;
          }

          protected void createButtonsForButtonBar(Composite parent) {
            GridLayout gridLayout = (GridLayout) parent.getLayout();
            Composite c = new Composite(parent, SWT.NONE);
            GridLayout layout = new GridLayout(2, false);
            layout.marginHeight = 0;
            c.setLayout(layout);
            gridLayout.makeColumnsEqualWidth = false;
            gridLayout.numColumns += 1;
            Link l = new Link(c, SWT.NONE);
            l.setText("<a>Open User guide</a>  ");
            l.addSelectionListener(new SelectionAdapter() {
             
              public void widgetSelected(SelectionEvent e) {
                IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem();
                helpSystem.displayHelpResource("/com.onpositive.gae.tools.core/html/overview.html");
              }
            });
            Link l1 = new Link(c, SWT.NONE);
            l1.addSelectionListener(new SelectionAdapter() {
             
              public void widgetSelected(SelectionEvent e) {
                try {
                  PlatformUI
                      .getWorkbench()
                      .getBrowserSupport()
                      .getExternalBrowser()
                      .openURL(
                          new URL(
                              "http://appwrench.onpositive.com"));
                } catch (PartInitException e1) {
                  Activator.log(e1);
                } catch (MalformedURLException e1) {
                  Activator.log(e1);
                }
              }
            });
            parent.setLayoutData(GridDataFactory.fillDefaults()
                .grab(true, false).create());
            c.setLayoutData(GridDataFactory.fillDefaults().grab(
                true, false).create());
            l1.setText("<a>Open product web site</a>");
            Button createButton = createButton(parent,
                IDialogConstants.OK_ID,
                IDialogConstants.OK_LABEL, true);
            createButton.setFocus();
          }
        };
        dialog.open();
      }
    });
    return mn.createContextMenu(parent);
  }

  public Menu getMenu(Menu parent) {
    return new Menu(parent);
  }
}
TOP

Related Classes of com.onpositive.gae.tools.AppBusterAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.