Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gvozdev2011-03-07 03:07:07 +0000
committerAndrew Gvozdev2011-03-07 03:07:07 +0000
commiteb4639d52fe1c251b17413a96ce298726296fecc (patch)
treefed0b539488c0723be9f012076e5584c6a09fbfc /build/org.eclipse.cdt.make.ui
parent475612b295c243001b4e5066920417891b0e97cb (diff)
downloadorg.eclipse.cdt-eb4639d52fe1c251b17413a96ce298726296fecc.tar.gz
org.eclipse.cdt-eb4639d52fe1c251b17413a96ce298726296fecc.tar.xz
org.eclipse.cdt-eb4639d52fe1c251b17413a96ce298726296fecc.zip
bug 339015: extracted FilterEmtpyFoldersAction
Diffstat (limited to 'build/org.eclipse.cdt.make.ui')
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/FilterEmtpyFoldersAction.java124
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java95
2 files changed, 126 insertions, 93 deletions
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/FilterEmtpyFoldersAction.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/FilterEmtpyFoldersAction.java
new file mode 100644
index 00000000000..fa17feff1a0
--- /dev/null
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/FilterEmtpyFoldersAction.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2011 Andrew Gvozdev.
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Andrew Gvozdev - Initial implementation: extracted from MakeView
+ *******************************************************************************/
+
+package org.eclipse.cdt.make.ui.views;
+
+import org.eclipse.cdt.make.core.IMakeTarget;
+import org.eclipse.cdt.make.core.MakeCorePlugin;
+import org.eclipse.cdt.make.internal.ui.MakeUIImages;
+import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceProxy;
+import org.eclipse.core.resources.IResourceProxyVisitor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+/**
+ * A filter to filter out empty folders (with no make targets or other folders)
+ * in Make Targets view.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ *
+ * @since 7.1
+ */
+public class FilterEmtpyFoldersAction extends Action {
+ private static final String FILTER_EMPTY_FOLDERS = "FilterEmptyFolders"; //$NON-NLS-1$
+
+ private TreeViewer fViewer;
+
+ /**
+ * Constructor.
+ *
+ * @param viewer - viewer to filter out empty folders.
+ */
+ public FilterEmtpyFoldersAction(TreeViewer viewer) {
+ super(MakeUIPlugin.getResourceString("FilterEmptyFolderAction.label"), IAction.AS_CHECK_BOX); //$NON-NLS-1$
+ fViewer = viewer;
+
+ setToolTipText(MakeUIPlugin.getResourceString("FilterEmptyFolderAction.tooltip")); //$NON-NLS-1$
+ setChecked(getSettings().getBoolean(FILTER_EMPTY_FOLDERS));
+ MakeUIImages.setImageDescriptors(this, "tool16", MakeUIImages.IMG_TOOLS_MAKE_TARGET_FILTER); //$NON-NLS-1$
+ fViewer.addFilter(new ViewerFilter() {
+ //Check the make targets of the specified container, and if they don't exist, run
+ //through the children looking for the first match that we can find that contains
+ //a make target.
+ private boolean hasMakeTargets(IFolder container) throws CoreException {
+ IMakeTarget [] targets = MakeCorePlugin.getDefault().getTargetManager().getTargets(container);
+ if(targets != null && targets.length > 0) {
+ return true;
+ }
+
+ final boolean [] haveTargets = new boolean[1];
+ haveTargets[0] = false;
+
+ IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+ public boolean visit(IResourceProxy proxy) throws CoreException {
+ if(haveTargets[0]) {
+ return false; //We found what we were looking for
+ }
+ if(proxy.getType() != IResource.FOLDER) {
+ return true; //We only look at folders for content
+ }
+ IFolder folder = (IFolder) proxy.requestResource();
+ IMakeTarget [] targets = MakeCorePlugin.getDefault().getTargetManager().getTargets(folder);
+ if(targets != null && targets.length > 0) {
+ haveTargets[0] = true;
+ return false;
+ }
+ return true; //Keep looking
+ }
+ };
+ container.accept(visitor, IResource.NONE);
+
+ return haveTargets[0];
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (isChecked() && element instanceof IFolder) {
+ try {
+ return hasMakeTargets((IFolder)element);
+ } catch(Exception ex) {
+ return false;
+ }
+ }
+ return true;
+ }
+ });
+ }
+
+ @Override
+ public void run() {
+ fViewer.refresh();
+ getSettings().put(FILTER_EMPTY_FOLDERS, isChecked());
+ }
+
+ /**
+ * Returns setting for this control.
+ *
+ * @return Settings.
+ */
+ private IDialogSettings getSettings() {
+ final String sectionName = "org.eclipse.cdt.internal.ui.MakeView"; //$NON-NLS-1$
+ IDialogSettings settings = MakeUIPlugin.getDefault().getDialogSettings().getSection(sectionName);
+ if (settings == null) {
+ settings = MakeUIPlugin.getDefault().getDialogSettings().addNewSection(sectionName);
+ }
+ return settings;
+ }
+}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
index fa7af057e54..da3b21d4cba 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
@@ -12,9 +12,6 @@
*******************************************************************************/
package org.eclipse.cdt.make.ui.views;
-import org.eclipse.cdt.make.core.IMakeTarget;
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.internal.ui.MakeUIImages;
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
import org.eclipse.cdt.make.internal.ui.dnd.AbstractContainerAreaDropAdapter;
import org.eclipse.cdt.make.internal.ui.dnd.AbstractSelectionDragAdapter;
@@ -29,14 +26,8 @@ import org.eclipse.cdt.make.internal.ui.dnd.TextTransferDropTargetListener;
import org.eclipse.cdt.make.ui.IMakeHelpContextIds;
import org.eclipse.cdt.make.ui.MakeContentProvider;
import org.eclipse.cdt.make.ui.MakeLabelProvider;
-import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
@@ -44,7 +35,6 @@ import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.bindings.BindingManagerEvent;
import org.eclipse.jface.bindings.IBindingManagerListener;
-import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.util.DelegatingDragAdapter;
import org.eclipse.jface.util.DelegatingDropAdapter;
import org.eclipse.jface.util.LocalSelectionTransfer;
@@ -54,8 +44,6 @@ import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
@@ -94,7 +82,7 @@ public class MakeView extends ViewPart {
private PasteTargetAction pasteTargetAction;
private TreeViewer fViewer;
private DrillDownAdapter drillDownAdapter;
- private Action trimEmptyFolderAction;
+ private FilterEmtpyFoldersAction trimEmptyFolderAction;
private IBindingService bindingService;
public MakeView() {
@@ -209,85 +197,6 @@ public class MakeView extends ViewPart {
fViewer.addDropSupport(opers | DND.DROP_DEFAULT, dropTransfers, delegatingDropAdapter);
}
- /**
- * Returns setting for this control.
- *
- * @return Settings.
- */
- IDialogSettings getSettings() {
- final String sectionName = "org.eclipse.cdt.internal.ui.MakeView"; //$NON-NLS-1$
- IDialogSettings settings = MakeUIPlugin.getDefault().getDialogSettings().getSection(sectionName);
- if (settings == null) {
- settings = MakeUIPlugin.getDefault().getDialogSettings().addNewSection(sectionName);
- }
- return settings;
- }
-
- protected class FilterEmtpyFoldersAction extends Action {
-
- private static final String FILTER_EMPTY_FOLDERS = "FilterEmptyFolders"; //$NON-NLS-1$
-
- public FilterEmtpyFoldersAction() {
- super(MakeUIPlugin.getResourceString("FilterEmptyFolderAction.label"), IAction.AS_CHECK_BOX); //$NON-NLS-1$
- setToolTipText(MakeUIPlugin.getResourceString("FilterEmptyFolderAction.tooltip")); //$NON-NLS-1$
- setChecked(getSettings().getBoolean(FILTER_EMPTY_FOLDERS));
- MakeUIImages.setImageDescriptors(this, "tool16", MakeUIImages.IMG_TOOLS_MAKE_TARGET_FILTER); //$NON-NLS-1$
- fViewer.addFilter(new ViewerFilter() {
- //Check the make targets of the specified container, and if they don't exist, run
- //through the children looking for the first match that we can find that contains
- //a make target.
- private boolean hasMakeTargets(IFolder container) throws CoreException {
- IMakeTarget [] targets = MakeCorePlugin.getDefault().getTargetManager().getTargets(container);
- if(targets != null && targets.length > 0) {
- return true;
- }
-
- final boolean [] haveTargets = new boolean[1];
- haveTargets[0] = false;
-
- IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
- public boolean visit(IResourceProxy proxy) throws CoreException {
- if(haveTargets[0]) {
- return false; //We found what we were looking for
- }
- if(proxy.getType() != IResource.FOLDER) {
- return true; //We only look at folders for content
- }
- IFolder folder = (IFolder) proxy.requestResource();
- IMakeTarget [] targets = MakeCorePlugin.getDefault().getTargetManager().getTargets(folder);
- if(targets != null && targets.length > 0) {
- haveTargets[0] = true;
- return false;
- }
- return true; //Keep looking
- }
- };
- container.accept(visitor, IResource.NONE);
-
- return haveTargets[0];
- }
-
- @Override
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- if (isChecked() && element instanceof IFolder) {
- try {
- return hasMakeTargets((IFolder)element);
- } catch(Exception ex) {
- return false;
- }
- }
- return true;
- }
- });
- }
-
- @Override
- public void run() {
- fViewer.refresh();
- getSettings().put(FILTER_EMPTY_FOLDERS, isChecked());
- }
- }
-
private void makeActions() {
Shell shell = fViewer.getControl().getShell();
@@ -300,7 +209,7 @@ public class MakeView extends ViewPart {
pasteTargetAction = new PasteTargetAction(shell, clipboard);
deleteTargetAction = new DeleteTargetAction(shell);
editTargetAction = new EditTargetAction(shell);
- trimEmptyFolderAction = new FilterEmtpyFoldersAction();
+ trimEmptyFolderAction = new FilterEmtpyFoldersAction(fViewer);
}
private void contributeToActionBars() {
IActionBars actionBars = getViewSite().getActionBars();

Back to the top