ActionProvider.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:6k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.eclipse.dfs;
  19. import org.apache.hadoop.eclipse.ImageLibrary;
  20. import org.apache.hadoop.eclipse.actions.DFSActionImpl;
  21. import org.eclipse.jface.action.Action;
  22. import org.eclipse.jface.action.IMenuManager;
  23. import org.eclipse.jface.resource.ImageDescriptor;
  24. import org.eclipse.jface.viewers.ISelection;
  25. import org.eclipse.jface.viewers.IStructuredSelection;
  26. import org.eclipse.ui.IActionBars;
  27. import org.eclipse.ui.PlatformUI;
  28. import org.eclipse.ui.actions.ActionFactory;
  29. import org.eclipse.ui.navigator.CommonActionProvider;
  30. import org.eclipse.ui.navigator.ICommonActionConstants;
  31. import org.eclipse.ui.navigator.ICommonActionExtensionSite;
  32. import org.eclipse.ui.navigator.ICommonMenuConstants;
  33. /**
  34.  * Allows the user to delete and refresh items in the DFS tree
  35.  */
  36. public class ActionProvider extends CommonActionProvider {
  37.   private static ICommonActionExtensionSite site;
  38.   public ActionProvider() {
  39.   }
  40.   /* @inheritDoc */
  41.   @Override
  42.   public void init(ICommonActionExtensionSite site) {
  43.     if (ActionProvider.site != null) {
  44.       System.err.printf("%s: Multiple init()n", this.getClass()
  45.           .getCanonicalName());
  46.       return;
  47.     }
  48.     super.init(site);
  49.     ActionProvider.site = site;
  50.   }
  51.   /* @inheritDoc */
  52.   @Override
  53.   public void fillActionBars(IActionBars actionBars) {
  54.     actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(),
  55.         new DFSAction(DFSActions.DELETE));
  56.     actionBars.setGlobalActionHandler(ActionFactory.REFRESH.getId(),
  57.         new DFSAction(DFSActions.REFRESH));
  58.     if (site == null)
  59.       return;
  60.     if ((site.getStructuredViewer().getSelection() instanceof IStructuredSelection)
  61.         && (((IStructuredSelection) site.getStructuredViewer()
  62.             .getSelection()).size() == 1)
  63.         && (((IStructuredSelection) site.getStructuredViewer()
  64.             .getSelection()).getFirstElement() instanceof DFSFile)) {
  65.       actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN,
  66.           new DFSAction(DFSActions.OPEN));
  67.     }
  68.     actionBars.updateActionBars();
  69.   }
  70.   /* @inheritDoc */
  71.   @Override
  72.   public void fillContextMenu(IMenuManager menu) {
  73.     /*
  74.      * Actions on multiple selections
  75.      */
  76.     menu.appendToGroup(ICommonMenuConstants.GROUP_EDIT, new DFSAction(
  77.         DFSActions.DELETE));
  78.     menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction(
  79.         DFSActions.REFRESH));
  80.     menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction(
  81.         DFSActions.DOWNLOAD));
  82.     if (site == null)
  83.       return;
  84.     ISelection isel = site.getStructuredViewer().getSelection();
  85.     if (!(isel instanceof IStructuredSelection))
  86.       return;
  87.     /*
  88.      * Actions on single selections only
  89.      */
  90.     IStructuredSelection issel = (IStructuredSelection) isel;
  91.     if (issel.size() != 1)
  92.       return;
  93.     Object element = issel.getFirstElement();
  94.     if (element instanceof DFSFile) {
  95.       menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction(
  96.           DFSActions.OPEN));
  97.     } else if (element instanceof DFSFolder) {
  98.       menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction(
  99.           DFSActions.MKDIR));
  100.       menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction(
  101.           DFSActions.UPLOAD_FILES));
  102.       menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction(
  103.           DFSActions.UPLOAD_DIR));
  104.     } else if (element instanceof DFSLocation) {
  105.       menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction(
  106.           DFSActions.RECONNECT));
  107.     } else if (element instanceof DFSLocationsRoot) {
  108.       menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction(
  109.           DFSActions.DISCONNECT));
  110.     }
  111.   }
  112.   /**
  113.    * Representation of an action on a DFS entry in the browser
  114.    */
  115.   public static class DFSAction extends Action {
  116.     private final String id;
  117.     private final String title;
  118.     private DFSActions action;
  119.     public DFSAction(String id, String title) {
  120.       this.id = id;
  121.       this.title = title;
  122.     }
  123.     public DFSAction(DFSActions action) {
  124.       this.id = action.id;
  125.       this.title = action.title;
  126.     }
  127.     /* @inheritDoc */
  128.     @Override
  129.     public String getText() {
  130.       return this.title;
  131.     }
  132.     /* @inheritDoc */
  133.     @Override
  134.     public ImageDescriptor getImageDescriptor() {
  135.       return ImageLibrary.get(getActionDefinitionId());
  136.     }
  137.     /* @inheritDoc */
  138.     @Override
  139.     public String getActionDefinitionId() {
  140.       return id;
  141.     }
  142.     /* @inheritDoc */
  143.     @Override
  144.     public void run() {
  145.       DFSActionImpl action = new DFSActionImpl();
  146.       action.setActivePart(this, PlatformUI.getWorkbench()
  147.           .getActiveWorkbenchWindow().getActivePage().getActivePart());
  148.       action.selectionChanged(this, site.getStructuredViewer()
  149.           .getSelection());
  150.       action.run(this);
  151.     }
  152.     /* @inheritDoc */
  153.     @Override
  154.     public boolean isEnabled() {
  155.       return true;
  156.     }
  157.   }
  158. }