KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > jdt > internal > debug > ui > propertypages > InstanceFilterEditor


1 /*******************************************************************************
2  * Copyright (c) 2000, 2005 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.jdt.internal.debug.ui.propertypages;
12
13 import org.eclipse.core.runtime.CoreException;
14 import org.eclipse.debug.ui.DebugUITools;
15 import org.eclipse.debug.ui.IDebugModelPresentation;
16 import org.eclipse.jdt.debug.core.IJavaBreakpoint;
17 import org.eclipse.jdt.debug.core.IJavaObject;
18 import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
19 import org.eclipse.jdt.internal.debug.ui.JDIModelPresentation;
20 import org.eclipse.jface.viewers.CheckStateChangedEvent;
21 import org.eclipse.jface.viewers.CheckboxTableViewer;
22 import org.eclipse.jface.viewers.ICheckStateListener;
23 import org.eclipse.jface.viewers.ITreeContentProvider;
24 import org.eclipse.jface.viewers.Viewer;
25 import org.eclipse.swt.SWT;
26 import org.eclipse.swt.layout.GridData;
27 import org.eclipse.swt.widgets.Composite;
28 import org.eclipse.swt.widgets.Label;
29
30 /**
31  *
32  */

33 public class InstanceFilterEditor {
34     private IJavaBreakpoint fBreakpoint;
35     private CheckboxTableViewer fInstanceViewer;
36     private Composite fParent;
37     private InstanceFilterContentProvider fContentProvider;
38     private CheckHandler fCheckHandler;
39     
40     public InstanceFilterEditor(Composite parent, IJavaBreakpoint breakpoint) {
41         fBreakpoint= breakpoint;
42         fContentProvider= new InstanceFilterContentProvider();
43         fCheckHandler= new CheckHandler();
44         Label label= new Label(parent, SWT.NONE);
45         label.setFont(parent.getFont());
46         label.setText(PropertyPageMessages.InstanceFilterEditor_0);
47         
48         fParent= parent;
49         //fOuter= new Composite(parent, SWT.NONE);
50
//fOuter.setFont(parent.getFont());
51

52         //GridLayout layout = new GridLayout();
53
//layout.marginWidth = 0;
54
//layout.marginHeight = 0;
55
//layout.numColumns = 2;
56
//fOuter.setLayout(layout);
57

58         //GridData data= new GridData(GridData.FILL_BOTH);
59
//fOuter.setLayoutData(data);
60

61         createViewer();
62     }
63     
64     /**
65      * Create and initialize the thread filter tree viewer.
66      */

67     protected void createViewer() {
68         GridData data= new GridData(GridData.FILL_BOTH);
69         data.heightHint= 100;
70
71         fInstanceViewer= CheckboxTableViewer.newCheckList(fParent, SWT.BORDER);
72         fInstanceViewer.addCheckStateListener(fCheckHandler);
73         fInstanceViewer.getTable().setLayoutData(data);
74         fInstanceViewer.setContentProvider(fContentProvider);
75         IDebugModelPresentation pres = DebugUITools.newDebugModelPresentation();
76         pres.setAttribute(JDIModelPresentation.DISPLAY_QUALIFIED_NAMES, Boolean.TRUE);
77         fInstanceViewer.setLabelProvider(pres);
78         fInstanceViewer.setInput(fBreakpoint);
79         setInitialCheckedState();
80     }
81
82     /**
83      * Sets the initial checked state of the tree viewer.
84      * The initial state should reflect the current state
85      * of the breakpoint. If the breakpoint has a thread
86      * filter in a given thread, that thread should be
87      * checked.
88      */

89     protected void setInitialCheckedState() {
90         try {
91             IJavaObject[] objects = fBreakpoint.getInstanceFilters();
92             for (int i= 0; i < objects.length; i++) {
93                 fCheckHandler.checkObject(objects[i], true);
94             }
95         } catch (CoreException e) {
96             JDIDebugUIPlugin.log(e);
97         }
98     }
99     
100     protected void doStore() {
101         try {
102             IJavaObject[] objects = fBreakpoint.getInstanceFilters();
103             for (int i= 0; i < objects.length; i++) {
104                 if (!fInstanceViewer.getChecked(objects[i])) {
105                     fBreakpoint.removeInstanceFilter(objects[i]);
106                 }
107             }
108         } catch (CoreException e) {
109             JDIDebugUIPlugin.log(e);
110         }
111     }
112     
113     class CheckHandler implements ICheckStateListener {
114         
115         public void checkStateChanged(CheckStateChangedEvent event) {
116             fInstanceViewer.setChecked(event.getElement(), event.getChecked());
117         }
118         
119         public void checkObject(IJavaObject object, boolean checked) {
120             fInstanceViewer.setChecked(object, checked);
121         }
122         
123     }
124     
125     class InstanceFilterContentProvider implements ITreeContentProvider {
126         
127         /**
128          * @see ITreeContentProvider#getChildren(Object)
129          */

130         public Object JavaDoc[] getChildren(Object JavaDoc parent) {
131             if (parent instanceof IJavaBreakpoint) {
132                 try {
133                     return ((IJavaBreakpoint)parent).getInstanceFilters();
134                 } catch (CoreException e) {
135                     JDIDebugUIPlugin.log(e);
136                 }
137             }
138             return new Object JavaDoc[0];
139         }
140
141         /**
142          * @see ITreeContentProvider#getParent(Object)
143          */

144         public Object JavaDoc getParent(Object JavaDoc element) {
145             if (element instanceof IJavaObject) {
146                 return fBreakpoint;
147             }
148             return null;
149         }
150
151         /**
152          * @see ITreeContentProvider#hasChildren(Object)
153          */

154         public boolean hasChildren(Object JavaDoc element) {
155             if (element instanceof IJavaBreakpoint) {
156                 return getChildren(element).length > 0;
157             }
158             return false;
159         }
160
161         /**
162          * @see IStructuredContentProvider#getElements(Object)
163          */

164         public Object JavaDoc[] getElements(Object JavaDoc inputElement) {
165             return getChildren(inputElement);
166         }
167
168         /**
169          * @see IContentProvider#dispose()
170          */

171         public void dispose() {
172         }
173
174         /**
175          * @see IContentProvider#inputChanged(Viewer, Object, Object)
176          */

177         public void inputChanged(Viewer viewer, Object JavaDoc oldInput, Object JavaDoc newInput) {
178         }
179     }
180 }
181
Popular Tags