public void update(final AnActionEvent e) {
   super.update(e);
   final PatternDialectProvider provider =
       PatternDialectProvider.getInstance(DependencyUISettings.getInstance().SCOPE_TYPE);
   e.getPresentation().setText(provider.getDisplayName());
   e.getPresentation().setIcon(provider.getIcon());
 }
  private JComponent createTreeToolbar() {
    final DefaultActionGroup group = new DefaultActionGroup();
    final Runnable update =
        new Runnable() {
          public void run() {
            rebuild(true);
          }
        };
    if (ProjectViewDirectoryHelper.getInstance(myProject).supportsFlattenPackages()) {
      group.add(new FlattenPackagesAction(update));
    }
    final PatternDialectProvider[] dialectProviders =
        Extensions.getExtensions(PatternDialectProvider.EP_NAME);
    for (PatternDialectProvider provider : dialectProviders) {
      for (AnAction action : provider.createActions(myProject, update)) {
        group.add(action);
      }
    }
    group.add(new ShowFilesAction(update));
    final Module[] modules = ModuleManager.getInstance(myProject).getModules();
    if (modules.length > 1) {
      group.add(new ShowModulesAction(update));
      group.add(new ShowModuleGroupsAction(update));
    }
    group.add(new FilterLegalsAction(update));

    if (dialectProviders.length > 1) {
      group.add(new ChooseScopeTypeAction(update));
    }

    ActionToolbar toolbar =
        ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true);
    return toolbar.getComponent();
  }
 @NotNull
 protected DefaultActionGroup createPopupActionGroup(final JComponent button) {
   final DefaultActionGroup group = new DefaultActionGroup();
   for (final PatternDialectProvider provider :
       Extensions.getExtensions(PatternDialectProvider.EP_NAME)) {
     group.add(
         new AnAction(provider.getDisplayName()) {
           public void actionPerformed(final AnActionEvent e) {
             DependencyUISettings.getInstance().SCOPE_TYPE = provider.getShortName();
             myUpdate.run();
           }
         });
   }
   return group;
 }
 boolean isButtonEnabled(boolean rec) {
   final TreePath[] paths = myPackageTree.getSelectionPaths();
   if (paths != null) {
     for (TreePath path : paths) {
       final PackageDependenciesNode node = (PackageDependenciesNode) path.getLastPathComponent();
       if (PatternDialectProvider.getInstance(DependencyUISettings.getInstance().SCOPE_TYPE)
               .createPackageSet(node, rec)
           != null) {
         return true;
       }
     }
   }
   return false;
 }
 static boolean isButtonEnabled(boolean rec, TreePath[] paths, TreeSelectionEvent e) {
   if (paths != null) {
     for (TreePath path : paths) {
       if (!e.isAddedPath(path)) continue;
       final PackageDependenciesNode node = (PackageDependenciesNode) path.getLastPathComponent();
       if (PatternDialectProvider.getInstance(DependencyUISettings.getInstance().SCOPE_TYPE)
               .createPackageSet(node, rec)
           != null) {
         return true;
       }
     }
   }
   return false;
 }
 @Nullable
 private ArrayList<PackageSet> getSelectedSets(boolean recursively) {
   int[] rows = myPackageTree.getSelectionRows();
   if (rows == null) return null;
   final ArrayList<PackageSet> result = new ArrayList<PackageSet>();
   for (int row : rows) {
     final PackageDependenciesNode node =
         (PackageDependenciesNode) myPackageTree.getPathForRow(row).getLastPathComponent();
     final PackageSet set =
         PatternDialectProvider.getInstance(DependencyUISettings.getInstance().SCOPE_TYPE)
             .createPackageSet(node, recursively);
     if (set != null) {
       result.add(set);
     }
   }
   return result;
 }