KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > java > navigation > ClassMemberNavigatorJavaSourceFactory


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.java.navigation;
20
21 import java.util.ArrayList JavaDoc;
22 import java.util.Collections JavaDoc;
23 import java.util.List JavaDoc;
24 import org.netbeans.api.java.source.CancellableTask;
25 import org.netbeans.api.java.source.CompilationInfo;
26 import org.netbeans.api.java.source.JavaSource.Phase;
27 import org.netbeans.api.java.source.JavaSource.Priority;
28 import org.netbeans.api.java.source.support.LookupBasedJavaSourceTaskFactory;
29 import org.openide.filesystems.FileObject;
30 import org.openide.filesystems.FileUtil;
31 import org.openide.util.Lookup;
32
33 /**
34  *
35  * @author Jan Lahoda, Petr Hrebejk
36  */

37 public final class ClassMemberNavigatorJavaSourceFactory extends LookupBasedJavaSourceTaskFactory {
38             
39     private ClassMemberPanelUI ui;
40     private static final CancellableTask<CompilationInfo> EMPTY_TASK = new CancellableTask<CompilationInfo>() {
41
42         public void cancel() {}
43
44         public void run(CompilationInfo parameter) throws Exception JavaDoc {}
45     };
46     
47     static ClassMemberNavigatorJavaSourceFactory getInstance() {
48         return Lookup.getDefault().lookup(ClassMemberNavigatorJavaSourceFactory.class);
49     }
50     
51     public ClassMemberNavigatorJavaSourceFactory() {
52         super(Phase.ELEMENTS_RESOLVED, Priority.NORMAL);
53     }
54
55     public synchronized CancellableTask<CompilationInfo> createTask(FileObject file) {
56         // System.out.println("CREATE TASK FOR " + file.getNameExt() );
57
if ( ui == null) {
58             return EMPTY_TASK;
59         }
60         else {
61             return ui.getTask();
62         }
63     }
64
65     public List JavaDoc<FileObject> getFileObjects() {
66         List JavaDoc<FileObject> result = new ArrayList JavaDoc<FileObject>();
67
68         // Filter uninteresting files from the lookup
69
for( FileObject fileObject : super.getFileObjects() ) {
70             if (!"text/x-java".equals(FileUtil.getMIMEType(fileObject)) && !"java".equals(fileObject.getExt())) { //NOI18N
71
continue;
72             }
73             result.add(fileObject);
74         }
75         
76         if (result.size() == 1)
77             return result;
78
79         return Collections.emptyList();
80     }
81
82     public synchronized void setLookup(Lookup l, ClassMemberPanelUI ui) {
83         this.ui = ui;
84         super.setLookup(l);
85     }
86
87     @Override JavaDoc
88     protected void lookupContentChanged() {
89           // System.out.println("lookupContentChanged");
90
if ( ui != null ) {
91             ui.showWaitNode(); // Creating new task (file changed)
92
}
93     }
94     
95 }
96
Popular Tags