From 3bd21a03c459db8758352c5f70dabd15bb79fe24 Mon Sep 17 00:00:00 2001
From: Marc-Andre Laperle
Date: Tue, 3 Jan 2012 00:01:59 -0500
Subject: [PATCH] [Outline] Add Collapse All button
---
.../internal/ui/actions/ActionMessages.java | 5 +-
.../ui/actions/ActionMessages.properties | 6 ++-
.../{cview => actions}/CollapseAllAction.java | 31 ++++++-----
.../eclipse/cdt/internal/ui/cview/CView.java | 8 +--
.../cdt/internal/ui/cview/CViewMessages.java | 5 +-
.../ui/cview/CViewMessages.properties | 6 +--
.../internal/ui/cview/MainActionGroup.java | 6 ++-
.../ui/editor/AbstractCModelOutlinePage.java | 13 +++++
.../concepts/cdt_c_outlineview.htm | 50 ++++++++++--------
.../images/outlineView.png | Bin 16625 -> 11699 bytes
.../reference/cdt_u_outline_view.htm | 14 +++--
11 files changed, 88 insertions(+), 56 deletions(-)
rename core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/{cview => actions}/CollapseAllAction.java (60%)
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java
index bb59cbe20ae..b68ebfdb6cf 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2001, 2010 IBM Corporation and others.
+ * Copyright (c) 2001, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -91,6 +91,9 @@ public class ActionMessages extends NLS {
public static String FormatAllAction_failedvalidateedit_message;
public static String FormatAllAction_noundo_title;
public static String FormatAllAction_noundo_message;
+ public static String CollapseAllAction_label;
+ public static String CollapseAllAction_tooltip;
+ public static String CollapseAllAction_description;
static {
// Initialize resource bundle.
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties
index c27f42bce76..44e4f33a4e5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/ActionMessages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2000, 2010 IBM Corporation and others.
+# Copyright (c) 2000, 2011 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
@@ -109,3 +109,7 @@ FormatAllAction_failedvalidateedit_title=Format
FormatAllAction_failedvalidateedit_message=Problems while accessing selected files.
FormatAllAction_noundo_title=Format
FormatAllAction_noundo_message='Undo' is not supported by this operation. Do you want to continue?
+
+CollapseAllAction_label=Collapse All
+CollapseAllAction_tooltip=Collapse All
+CollapseAllAction_description=Collapse All
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CollapseAllAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CollapseAllAction.java
similarity index 60%
rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CollapseAllAction.java
rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CollapseAllAction.java
index 8f06d23d398..42706c7ec3e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CollapseAllAction.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/CollapseAllAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,31 +8,38 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.ui.cview;
+package org.eclipse.cdt.internal.ui.actions;
-import org.eclipse.cdt.internal.ui.ICHelpContextIds;
-import org.eclipse.cdt.internal.ui.CPluginImages;
import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.cdt.internal.ui.CPluginImages;
+import org.eclipse.cdt.internal.ui.ICHelpContextIds;
+
/**
* Collapse all nodes.
*/
-class CollapseAllAction extends Action {
+public class CollapseAllAction extends Action {
- private CView cview;
+ private final TreeViewer fViewer;
- CollapseAllAction(CView part) {
- super(CViewMessages.CollapseAllAction_label);
- setDescription(CViewMessages.CollapseAllAction_description);
- setToolTipText(CViewMessages.CollapseAllAction_tooltip);
+ public CollapseAllAction(TreeViewer viewer) {
+ super(ActionMessages.CollapseAllAction_label);
+ setDescription(ActionMessages.CollapseAllAction_description);
+ setToolTipText(ActionMessages.CollapseAllAction_tooltip);
CPluginImages.setImageDescriptors(this, CPluginImages.T_LCL, CPluginImages.IMG_MENU_COLLAPSE_ALL);
- cview = part;
+ fViewer = viewer;
PlatformUI.getWorkbench().getHelpSystem().setHelp(this, ICHelpContextIds.COLLAPSE_ALL_ACTION);
}
@Override
public void run() {
- cview.collapseAll();
+ try {
+ fViewer.getControl().setRedraw(false);
+ fViewer.collapseAll();
+ } finally {
+ fViewer.getControl().setRedraw(true);
+ }
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java
index 099f7babe95..4b79c6a4bea 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2010 QNX Software Systems and others.
+ * Copyright (c) 2000, 2011 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -929,12 +929,6 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha
return null;
}
- public void collapseAll() {
- viewer.getControl().setRedraw(false);
- viewer.collapseToLevel(getViewPartInput(), AbstractTreeViewer.ALL_LEVELS);
- viewer.getControl().setRedraw(true);
- }
-
void restoreState(IMemento memento) {
CoreModel factory = CoreModel.getDefault();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.java
index e646d874fb3..621c8535df9 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -25,9 +25,6 @@ public final class CViewMessages extends NLS {
public static String BuildAction_label;
public static String RebuildAction_label;
public static String CleanAction_label;
- public static String CollapseAllAction_label;
- public static String CollapseAllAction_tooltip;
- public static String CollapseAllAction_description;
public static String CopyAction_title;
public static String CopyAction_toolTip;
public static String PasteAction_title;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.properties
index 56993fc3e00..0b298856850 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewMessages.properties
@@ -1,5 +1,5 @@
###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
+# Copyright (c) 2000, 2011 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
@@ -17,10 +17,6 @@ BuildAction_label=&Build Project
RebuildAction_label=Rebuild Pro&ject
CleanAction_label=Clean Project
-CollapseAllAction_label=Collapse All
-CollapseAllAction_tooltip=Collapse All
-CollapseAllAction_description=Collapse All
-
CopyAction_title = &Copy
CopyAction_toolTip = Copy
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/MainActionGroup.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/MainActionGroup.java
index fbc24891a47..a445f98388c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/MainActionGroup.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/MainActionGroup.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -45,6 +45,7 @@ import org.eclipse.cdt.ui.actions.OpenViewActionGroup;
import org.eclipse.cdt.ui.refactoring.actions.CRefactoringActionGroup;
import org.eclipse.cdt.internal.ui.IContextMenuConstants;
+import org.eclipse.cdt.internal.ui.actions.CollapseAllAction;
import org.eclipse.cdt.internal.ui.actions.SelectionConverter;
import org.eclipse.cdt.internal.ui.editor.OpenIncludeAction;
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
@@ -133,6 +134,7 @@ public class MainActionGroup extends CViewActionGroup {
//sortByTypeAction = new SortViewAction(this, true);
IPropertyChangeListener workingSetUpdater = new IPropertyChangeListener() {
+ @Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
@@ -158,7 +160,7 @@ public class MainActionGroup extends CViewActionGroup {
importAction = new ImportResourcesAction(getCView().getSite().getWorkbenchWindow());
exportAction = new ExportResourcesAction(getCView().getSite().getWorkbenchWindow());
- collapseAllAction = new CollapseAllAction(getCView());
+ collapseAllAction = new CollapseAllAction(getCView().getViewer());
toggleLinkingAction = new ToggleLinkingAction(getCView());
toggleLinkingAction.setImageDescriptor(getImageDescriptor("elcl16/synced.gif"));//$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java
index 697a80ad0cc..e7640ba8e12 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AbstractCModelOutlinePage.java
@@ -21,6 +21,7 @@ import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.commands.ActionHandler;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.util.PropertyChangeEvent;
@@ -46,6 +47,8 @@ import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionContext;
import org.eclipse.ui.actions.ActionGroup;
+import org.eclipse.ui.handlers.CollapseAllHandler;
+import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.navigator.resources.ProjectExplorer;
import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.IShowInSource;
@@ -71,6 +74,7 @@ import org.eclipse.cdt.internal.ui.ICHelpContextIds;
import org.eclipse.cdt.internal.ui.IContextMenuConstants;
import org.eclipse.cdt.internal.ui.actions.AbstractToggleLinkingAction;
import org.eclipse.cdt.internal.ui.actions.ActionMessages;
+import org.eclipse.cdt.internal.ui.actions.CollapseAllAction;
import org.eclipse.cdt.internal.ui.cview.SelectionTransferDragAdapter;
import org.eclipse.cdt.internal.ui.cview.SelectionTransferDropAdapter;
import org.eclipse.cdt.internal.ui.dnd.CDTViewerDragAdapter;
@@ -294,6 +298,10 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent
* @since 3.0
*/
private ActionGroup fCustomFiltersActionGroup;
+ /**
+ * @since 5.4
+ */
+ private CollapseAllAction fCollapseAllAction;
/**
* Create a new outline page for the given editor.
@@ -520,6 +528,9 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent
fTreeViewer.setInput(fInput);
PlatformUI.getWorkbench().getHelpSystem().setHelp(control, ICHelpContextIds.COUTLINE_VIEW);
+
+ IHandlerService handlerService= (IHandlerService)site.getService(IHandlerService.class);
+ handlerService.activateHandler(CollapseAllHandler.COMMAND_ID, new ActionHandler(fCollapseAllAction));
}
@Override
@@ -582,6 +593,8 @@ public abstract class AbstractCModelOutlinePage extends Page implements IContent
protected void registerActionBars(IActionBars actionBars) {
IToolBarManager toolBarManager= actionBars.getToolBarManager();
+ fCollapseAllAction = new CollapseAllAction(fTreeViewer);
+ toolBarManager.add(fCollapseAllAction);
LexicalSortingAction action= new LexicalSortingAction(getTreeViewer());
toolBarManager.add(action);
diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm
index 83c089da869..99a663ecc10 100644
--- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm
+++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm
@@ -72,27 +72,35 @@ items:
Icons
-
@@ -65,7 +73,7 @@ open in the editor area, by listing the structural elements.
-  |
+
Namespace |