1 11 package org.eclipse.debug.internal.ui.actions; 12 13 14 import org.eclipse.jface.action.Action; 15 import org.eclipse.jface.viewers.StructuredViewer; 16 import org.eclipse.jface.viewers.ViewerFilter; 17 import org.eclipse.swt.custom.BusyIndicator; 18 19 23 public abstract class ToggleFilterAction extends Action { 24 25 28 private StructuredViewer fViewer; 29 30 33 private ViewerFilter fViewerFilter; 34 35 public void run() { 36 valueChanged(isChecked()); 37 } 38 42 protected void valueChanged(final boolean on) { 43 if (getViewer().getControl().isDisposed()) { 44 return; 45 } 46 BusyIndicator.showWhile(getViewer().getControl().getDisplay(), new Runnable () { 47 public void run() { 48 if (on) { 49 ViewerFilter filter= getViewerFilter(); 50 ViewerFilter[] filters= getViewer().getFilters(); 51 boolean alreadyAdded= false; 52 for (int i= 0; i < filters.length; i++) { 53 ViewerFilter addedFilter= filters[i]; 54 if (addedFilter.equals(filter)) { 55 alreadyAdded= true; 56 break; 57 } 58 } 59 if (!alreadyAdded) { 60 getViewer().addFilter(filter); 61 } 62 63 } else { 64 getViewer().removeFilter(getViewerFilter()); 65 } 66 } 67 }); 68 } 69 70 75 protected ViewerFilter getViewerFilter() { 76 return fViewerFilter; 77 } 78 79 protected void setViewerFilter(ViewerFilter filter) { 80 fViewerFilter= filter; 81 } 82 83 protected StructuredViewer getViewer() { 84 return fViewer; 85 } 86 87 protected void setViewer(StructuredViewer viewer) { 88 fViewer = viewer; 89 } 90 } 91 | Popular Tags |