This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 254464
Collapse All | Expand All

(-)a/groovy.grailsproject/src/org/netbeans/modules/groovy/grailsproject/GrailsSources.java (+7 lines)
Lines 105-110 Link Here
105
            "integration", // NOI18N
105
            "integration", // NOI18N
106
            "reports" // NOI18N
106
            "reports" // NOI18N
107
            );
107
            );
108
    
109
    // these are working folders that we should hide from the project tree:
110
    public static final List IGNORED_FOLDERS_IN_GRAILS_APP = Arrays.asList(
111
            "target", // NOI18N
112
            "gradle" // NOI18N
113
            );
108
114
109
    private final FileObject projectDir;
115
    private final FileObject projectDir;
110
116
Lines 168-173 Link Here
168
                if (child.isFolder()
174
                if (child.isFolder()
169
                        && VisibilityQuery.getDefault().isVisible(child)
175
                        && VisibilityQuery.getDefault().isVisible(child)
170
                        && !KNOWN_FOLDERS.contains(child.getName())
176
                        && !KNOWN_FOLDERS.contains(child.getName())
177
                        && !IGNORED_FOLDERS_IN_GRAILS_APP.contains(child.getName())
171
                        && child != pluginsDir
178
                        && child != pluginsDir
172
                        && child != globalPluginsDir) {
179
                        && child != globalPluginsDir) {
173
                    String name = child.getName();
180
                    String name = child.getName();
(-)a/groovy.grailsproject/src/org/netbeans/modules/groovy/grailsproject/ui/Bundle.properties (+2 lines)
Lines 80-85 Link Here
80
LBL_Stats_Name=Statistics
80
LBL_Stats_Name=Statistics
81
LBL_Upgrade_Name=Upgrade
81
LBL_Upgrade_Name=Upgrade
82
82
83
LBL_ProjectFiles=Project Files
84
83
TITLE_BrowsePluginLocation=Browse Plugin Location
85
TITLE_BrowsePluginLocation=Browse Plugin Location
84
LBL_BrowsePluginLocation_OK_Button=OK
86
LBL_BrowsePluginLocation_OK_Button=OK
85
87
(-)a/groovy.grailsproject/src/org/netbeans/modules/groovy/grailsproject/ui/ProjectFilesNode.java (+146 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2015 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2015 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.groovy.grailsproject.ui;
43
44
import java.awt.Image;
45
import java.util.Collections;
46
import java.util.List;
47
import org.netbeans.modules.groovy.grailsproject.GrailsProject;
48
import org.openide.filesystems.FileChangeAdapter;
49
import org.openide.filesystems.FileEvent;
50
import org.openide.filesystems.FileObject;
51
import org.openide.loaders.DataObject;
52
import org.openide.loaders.DataObjectNotFoundException;
53
import org.openide.nodes.AbstractNode;
54
import org.openide.nodes.ChildFactory;
55
import org.openide.nodes.Children;
56
import org.openide.nodes.Node;
57
import org.openide.util.ImageUtilities;
58
import org.openide.util.NbBundle;
59
import org.openide.util.lookup.Lookups;
60
61
/**
62
 *
63
 * @author bruno.flavio
64
 */
65
class ProjectFilesNode extends AbstractNode {
66
    
67
    private static final String PF_BADGE = "org/netbeans/modules/groovy/grailsproject/resources/projectfilesBadge.png"; // NOI18N
68
    private static final String ICON_PATH = "org/netbeans/modules/groovy/grailsproject/resources/defaultFolder.gif"; // NOI18N
69
    private static final String OPENED_ICON_PATH = "org/netbeans/modules/groovy/grailsproject/resources/defaultFolderOpen.gif"; // NOI18N
70
    
71
    public ProjectFilesNode(GrailsProject project) {
72
        super( Children.create( new ProjectFilesChildren(project), true),
73
               Lookups.fixed( project.getProjectDirectory() )
74
        );
75
    }
76
    
77
    @Override
78
    public final Image getIcon(int param) {
79
        return getIcon(false);
80
    }
81
82
    @Override
83
    public final Image getOpenedIcon(int param) {
84
        return getIcon(true);
85
    }
86
    
87
    private Image getIcon(boolean opened) {
88
        Image badge = ImageUtilities.loadImage(PF_BADGE, true); //NOI18N
89
        Image base = ImageUtilities.loadImage(opened ? OPENED_ICON_PATH : ICON_PATH, true);
90
        Image img = ImageUtilities.mergeImages(base, badge, 8, 8);
91
        return img;
92
    }
93
    
94
    
95
    @Override
96
    public String getDisplayName() {
97
        return NbBundle.getMessage(ProjectFilesNode.class, "LBL_ProjectFiles");
98
    }
99
        
100
    private static class ProjectFilesChildren extends ChildFactory.Detachable<FileObject> {
101
102
        private final GrailsProject project;
103
        private final FileChangeAdapter fileChangeListener;
104
        
105
        ProjectFilesChildren(GrailsProject proj) {
106
            project = proj;
107
            fileChangeListener = new FileChangeAdapter() {
108
                @Override public void fileDataCreated(FileEvent fe) {
109
                    refresh(false);
110
                }
111
                @Override public void fileDeleted(FileEvent fe) {
112
                    refresh(false);
113
                }
114
            };
115
        }
116
117
        @Override protected Node createNodeForKey(FileObject key) {
118
            try {
119
                return DataObject.find(key).getNodeDelegate().cloneNode();
120
            } catch (DataObjectNotFoundException e) {
121
                return null;
122
            }
123
        }
124
125
        @Override protected boolean createKeys(List<FileObject> keys) {
126
            FileObject root = project.getProjectDirectory();
127
            //Grails3:
128
            keys.add(root.getFileObject("build.gradle")); // NOI18N
129
            keys.add(root.getFileObject("gradle.properties")); // NOI18N
130
            
131
            //Grails2: 
132
            keys.add(root.getFileObject("application.properties")); // NOI18N
133
            
134
            keys.removeAll(Collections.singleton(null));
135
            return true;
136
        }
137
138
        @Override protected void addNotify() {
139
            project.getProjectDirectory().addFileChangeListener(fileChangeListener);
140
        }
141
        
142
        @Override protected void removeNotify() {
143
            project.getProjectDirectory().removeFileChangeListener(fileChangeListener);
144
        }
145
    }
146
}
(-)a/groovy.grailsproject/src/org/netbeans/modules/groovy/grailsproject/ui/ProjectFilesNodeFactory.java (+66 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2015 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2015 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.groovy.grailsproject.ui;
43
44
import org.netbeans.api.project.Project;
45
import org.netbeans.modules.groovy.grailsproject.GrailsProject;
46
import org.netbeans.spi.project.ui.support.NodeFactory;
47
import org.netbeans.spi.project.ui.support.NodeFactorySupport;
48
import org.netbeans.spi.project.ui.support.NodeList;
49
import org.openide.nodes.Node;
50
51
/**
52
 *
53
 * @author bruno.flavio
54
 */
55
@NodeFactory.Registration(projectType = "org-netbeans-modules-groovy-grailsproject",
56
                          position=200)
57
public class ProjectFilesNodeFactory implements NodeFactory {
58
    
59
    @Override
60
    public NodeList createNodes(Project p) {
61
        GrailsProject project = p.getLookup().lookup(GrailsProject.class);
62
        return NodeFactorySupport.fixedNodeList(new Node[] {
63
            new ProjectFilesNode(project)
64
        });
65
    }
66
}
(-)a/groovy.grailsproject/src/org/netbeans/modules/groovy/grailsproject/ui/SourceNodeFactory.java (-1 / +2 lines)
Lines 67-73 Link Here
67
 *
67
 *
68
 * @author Martin Adamek, Martin Janicek
68
 * @author Martin Adamek, Martin Janicek
69
 */
69
 */
70
@NodeFactory.Registration(projectType = "org-netbeans-modules-groovy-grailsproject")
70
@NodeFactory.Registration(projectType = "org-netbeans-modules-groovy-grailsproject",
71
                          position=100)
71
public class SourceNodeFactory implements NodeFactory {
72
public class SourceNodeFactory implements NodeFactory {
72
73
73
    public SourceNodeFactory() {
74
    public SourceNodeFactory() {

Return to bug 254464