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 161286
Collapse All | Expand All

(-)a/bugtracking/nbproject/project.xml (-1 / +1 lines)
Lines 146-152 Link Here
146
                    <build-prerequisite/>
146
                    <build-prerequisite/>
147
                    <compile-dependency/>
147
                    <compile-dependency/>
148
                    <run-dependency>
148
                    <run-dependency>
149
                        <specification-version>7.7</specification-version>
149
                        <specification-version>7.9</specification-version>
150
                    </run-dependency>
150
                    </run-dependency>
151
                </dependency>
151
                </dependency>
152
                <dependency>
152
                <dependency>
(-)a/bugtracking/src/org/netbeans/modules/bugtracking/layer.xml (-2 / +5 lines)
Lines 52-59 Link Here
52
    <folder name="UI">
52
    <folder name="UI">
53
        <folder name="Runtime">
53
        <folder name="Runtime">
54
            <file name="org-netbeans-modules-bugtracking-ui-nodes-BugtrackingRootNode.instance">
54
            <file name="org-netbeans-modules-bugtracking-ui-nodes-BugtrackingRootNode.instance">
55
                <attr name="instanceClass" stringvalue="org.netbeans.modules.bugtracking.ui.nodes.BugtrackingRootNode"/>
55
                <attr name="instanceCreate" methodvalue="org.openide.nodes.NodeOp.factory"/>
56
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.bugtracking.ui.nodes.BugtrackingRootNode.getDefault"/>
56
                <attr name="name" stringvalue="bugtracking"/>
57
                <attr name="displayName" bundlevalue="org.netbeans.modules.bugtracking.ui.nodes.Bundle#LBL_BugtrackingNode"/>
58
                <attr name="iconResource" stringvalue="org/netbeans/modules/bugtracking/ui/resources/bugtracking.png"/>
59
                <attr name="original" methodvalue="org.netbeans.modules.bugtracking.ui.nodes.BugtrackingRootNode.getDefault"/>
57
                <attr name="position" intvalue="588"/>
60
                <attr name="position" intvalue="588"/>
58
            </file>
61
            </file>
59
        </folder>
62
        </folder>
(-)a/db/nbproject/project.xml (-1 / +1 lines)
Lines 151-157 Link Here
151
                    <build-prerequisite/>
151
                    <build-prerequisite/>
152
                    <compile-dependency/>
152
                    <compile-dependency/>
153
                    <run-dependency>
153
                    <run-dependency>
154
                        <specification-version>6.2</specification-version>
154
                        <specification-version>7.9</specification-version>
155
                    </run-dependency>
155
                    </run-dependency>
156
                </dependency>
156
                </dependency>
157
                <dependency>
157
                <dependency>
(-)a/db/src/org/netbeans/modules/db/resources/mf-layer.xml (-3 / +6 lines)
Lines 562-570 Link Here
562
           -->
562
           -->
563
           <!-- uncomment this block to include the new explorer tree -->
563
           <!-- uncomment this block to include the new explorer tree -->
564
           <file name="org-netbeans-modules-db-explorer-node-RootNode.instance">
564
           <file name="org-netbeans-modules-db-explorer-node-RootNode.instance">
565
             <attr name="instanceClass" stringvalue="org.netbeans.modules.db.explorer.node.RootNode"/>
565
                <attr name="instanceCreate" methodvalue="org.openide.nodes.NodeOp.factory"/>
566
             <attr name="instanceCreate" methodvalue="org.netbeans.modules.db.explorer.node.RootNode.instance"/>
566
                <attr name="name" stringvalue="Databases"/>
567
               <attr name="position" intvalue="101"/>
567
                <attr name="displayName" bundlevalue="org/netbeans/modules/db/resources/Bundle#RootNode_DISPLAYNAME"/>
568
                <attr name="iconResource" stringvalue="org/netbeans/modules/db/resources/database.gif"/>
569
                <attr name="original" methodvalue="org.netbeans.modules.db.explorer.node.RootNode.instance"/>
570
                <attr name="position" intvalue="101"/>
568
            </file>
571
            </file>
569
            <!-- -->
572
            <!-- -->
570
        </folder> <!-- Runtime -->
573
        </folder> <!-- Runtime -->
(-)a/hudson/nbproject/project.xml (-1 / +1 lines)
Lines 120-126 Link Here
120
                    <build-prerequisite/>
120
                    <build-prerequisite/>
121
                    <compile-dependency/>
121
                    <compile-dependency/>
122
                    <run-dependency>
122
                    <run-dependency>
123
                        <specification-version>7.1</specification-version>
123
                        <specification-version>7.9</specification-version>
124
                    </run-dependency>
124
                    </run-dependency>
125
                </dependency>
125
                </dependency>
126
                <dependency>
126
                <dependency>
(-)a/hudson/src/org/netbeans/modules/hudson/layer.xml (-2 / +5 lines)
Lines 22-29 Link Here
22
    <folder name="UI">
22
    <folder name="UI">
23
        <folder name="Runtime">
23
        <folder name="Runtime">
24
            <file name="org-netbeans-modules-hudson-ui-nodes-HudsonRootNode.instance">
24
            <file name="org-netbeans-modules-hudson-ui-nodes-HudsonRootNode.instance">
25
                <attr name="instanceClass" stringvalue="org.netbeans.modules.hudson.ui.nodes.HudsonRootNode"/>
25
                <attr name="instanceCreate" methodvalue="org.openide.nodes.NodeOp.factory"/>
26
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.hudson.ui.nodes.HudsonRootNode.getDefault"/>
26
                <attr name="name" stringvalue="hudson"/>
27
                <attr name="displayName" bundlevalue="org.netbeans.modules.hudson.ui.nodes.Bundle#LBL_HudsonNode"/>
28
                <attr name="iconResource" stringvalue="org/netbeans/modules/hudson/ui/resources/hudson.png"/>
29
                <attr name="original" methodvalue="org.netbeans.modules.hudson.ui.nodes.HudsonRootNode.getDefault"/>
27
                <attr name="position" intvalue="488"/>
30
                <attr name="position" intvalue="488"/>
28
            </file>
31
            </file>
29
        </folder>     
32
        </folder>     
(-)a/openide.nodes/apichanges.xml (+18 lines)
Lines 46-51 Link Here
46
<apidef name="nodes">Nodes API</apidef>
46
<apidef name="nodes">Nodes API</apidef>
47
</apidefs>
47
</apidefs>
48
<changes>
48
<changes>
49
    <change id="NodeOp.factory">
50
        <api name="nodes"/>
51
        <summary>Support for declarative Node registrations</summary>
52
        <version major="7" minor="9"/>
53
        <date day="1" month="4" year="2009"/>
54
        <author login="jtulach"/>
55
        <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible"/>
56
        <description>
57
            <p>
58
            <a href="@TOP@/org/openide/nodes/NodeOp.html#factory">NodeOp.factory</a>
59
            is new method, particularly useful from
60
            <a href="@org-openide-modules@/org/openide/modules/doc-files/api.html#how-layer">layers</a>
61
            that allows declarative definition of a root node.
62
            </p>
63
        </description>
64
        <class package="org.openide.nodes" name="NodeOp"/>
65
        <issue number="161286"/>
66
    </change>
49
    <change id="ChildFactory.Detachable">
67
    <change id="ChildFactory.Detachable">
50
        <api name="nodes"/>
68
        <api name="nodes"/>
51
        <summary>Adding ChildFactory.Detachable to allow ChildFactory implementations to
69
        <summary>Adding ChildFactory.Detachable to allow ChildFactory implementations to
(-)a/openide.nodes/nbproject/project.properties (-1 / +1 lines)
Lines 44-47 Link Here
44
javadoc.arch=${basedir}/arch.xml
44
javadoc.arch=${basedir}/arch.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
46
46
47
spec.version.base=7.8.0
47
spec.version.base=7.9.0
(-)ea8bd99e63e9 (+103 lines)
Added Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
5
 *
6
 * The contents of this file are subject to the terms of either the GNU
7
 * General Public License Version 2 only ("GPL") or the Common
8
 * Development and Distribution License("CDDL") (collectively, the
9
 * "License"). You may not use this file except in compliance with the
10
 * License. You can obtain a copy of the License at
11
 * http://www.netbeans.org/cddl-gplv2.html
12
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
 * specific language governing permissions and limitations under the
14
 * License.  When distributing the software, include this License Header
15
 * Notice in each file and include the License file at
16
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
17
 * particular file as subject to the "Classpath" exception as provided
18
 * by Sun in the GPL Version 2 section of the License file that
19
 * accompanied this code. If applicable, add the following below the
20
 * License Header, with the fields enclosed by brackets [] replaced by
21
 * your own identifying information:
22
 * "Portions Copyrighted [year] [name of copyright owner]"
23
 *
24
 * If you wish your version of this file to be governed by only the CDDL
25
 * or only the GPL Version 2, indicate your decision by adding
26
 * "[Contributor] elects to include this software in this distribution
27
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
28
 * single choice of license, a recipient has the option to distribute
29
 * your version of this file under either the CDDL, the GPL Version 2 or
30
 * to extend the choice of license to its licensees as provided above.
31
 * However, if you add GPL Version 2 code and therefore, elected the GPL
32
 * Version 2 license, then the option applies only if the new code is
33
 * made subject to such option by the copyright holder.
34
 *
35
 * Contributor(s):
36
 *
37
 * Portions Copyrighted 2009 Sun Microsystems, Inc.
38
 */
39
40
package org.openide.nodes;
41
42
import java.util.List;
43
import java.util.Map;
44
import javax.swing.Action;
45
46
/** Lazy delegating node.
47
 *
48
 * @author Jaroslav Tulach <jtulach@netbeans.org>
49
 */
50
final class LazyNode extends FilterNode {
51
    private Map map;
52
53
    LazyNode(Map map) {
54
        this(new ChFactory(), map);
55
    }
56
    private LazyNode(ChFactory factory, Map map) {
57
        super(new AbstractNode(Children.create(factory, true)));
58
        factory.node = this;
59
        this.map = map;
60
        
61
        AbstractNode an = (AbstractNode)getOriginal();
62
63
        an.setName((String) map.get("name")); // NOI18N
64
        an.setDisplayName((String) map.get("displayName")); // NOI18N
65
        an.setShortDescription((String) map.get("shortDescription")); // NOI18N
66
        an.setIconBaseWithExtension((String)map.get("iconResource")); // NOI18N
67
    }
68
69
    @Override
70
    public Action[] getActions(boolean context) {
71
        switchToOriginal();
72
        return super.getActions(context);
73
    }
74
75
76
    final void switchToOriginal() {
77
        Node n;
78
        synchronized (this) {
79
            if (map == null) {
80
                return;
81
            }
82
            n = (Node)map.get("original"); // NOI18N
83
            map = null;
84
        }
85
        changeOriginal(n, true);
86
    }
87
88
    private static final class ChFactory extends ChildFactory<Object> {
89
        LazyNode node;
90
91
        @Override
92
        protected boolean createKeys(List<Object> toPopulate) {
93
            LazyNode n = node;
94
            node = null;
95
            if (n != null) {
96
                n.switchToOriginal();
97
                return true;
98
            } else {
99
                return false;
100
            }
101
        }
102
    }
103
}
(-)a/openide.nodes/src/org/openide/nodes/NodeOp.java (+52 lines)
Lines 442-447 Link Here
442
        return WeakListeners.create(NodeListener.class, l, source);
442
        return WeakListeners.create(NodeListener.class, l, source);
443
    }
443
    }
444
444
445
    /** Creates a <q>lazy node</q> - a node that displays basic information
446
     * about the original node behind it, without touching it. As soon as
447
     * the node is expanded, or a pop up menu is invoked on it, it switches
448
     * to the real delegates and since then everything is being bridged to
449
     * the real node.
450
     * <p>
451
     * This method is especially useful when used from 
452
     * <a href="@org-openide-modules@/org/openide/modules/doc-files/api.html#how-layer">layers</a>.
453
     * Use following
454
     * XML snippet to register your node into Services tab:
455
     * <pre>
456
     * &lt;folder name="UI"&gt;
457
     *   &lt;folder name="Runtime"&gt;
458
     *     &lt;file name="org-yourorg-yourpgk-YourNode.instance"&gt;
459
     *       &lt;attr name="instanceCreate" methodvalue="org.openide.nodes.NodeOp.factory"/&gt;
460
     *       &lt;attr name="name" stringvalue="YourNode"/&gt;
461
     *       &lt;attr name="displayName" bundlevalue="org.yourorg.yourpkg.Bundle#NAME-KEY"/&gt;
462
     *       &lt;attr name="shortDescription" bundlevalue="org.yourorg.yourpkg.Bundle#SHORT-KEY"/&gt;
463
     *       &lt;attr name="iconResource" stringvalue="org/yourorg/yourpkg/image.png"/&gt;
464
     *       &lt;attr name="original" newvalue="org.yourorg.yourpkg.YourNode"/&gt;
465
     *     &lt;file/&gt;
466
     *   &lt;folder/&gt;
467
     * &lt;folder/&gt;
468
     * </pre>
469
     *
470
     * @param original the real node behind the one created
471
     * @param name programatic name of the node
472
     * @param displayName human readable name of the node
473
     * @param shortDescription short description for the node
474
     * @param iconResource path to icon to use as in {@link AbstractNode#setIconBaseWithExtension(java.lang.String)}
475
     * @return new node with preset defaults that can delegate to original
476
     *
477
     * @since 7.9
478
     */
479
    public static Node factory(
480
        Node original,
481
        String name, String displayName, String shortDescription,
482
        String iconResource
483
    ) {
484
        Map<Object,Object> map = new HashMap<Object,Object>();
485
        map.put("original", original); // NOI18N
486
        map.put("name", name); // NOI18N
487
        map.put("displayName", displayName); // NOI18N
488
        map.put("shortDescription", shortDescription); // NOI18N
489
        map.put("iconResource", iconResource); // NOI18N
490
        return new LazyNode(map);
491
    }
492
493
    static Node factory(Map<?,?> map) {
494
        return new LazyNode(map);
495
    }
496
445
    /** Utility method to remove dependency of this package on
497
    /** Utility method to remove dependency of this package on
446
     * org.openide.actions. This method takes names of classes from
498
     * org.openide.actions. This method takes names of classes from
447
     * that package and creates their instances.
499
     * that package and creates their instances.
(-)ea8bd99e63e9 (+186 lines)
Added Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
5
 *
6
 * The contents of this file are subject to the terms of either the GNU
7
 * General Public License Version 2 only ("GPL") or the Common
8
 * Development and Distribution License("CDDL") (collectively, the
9
 * "License"). You may not use this file except in compliance with the
10
 * License. You can obtain a copy of the License at
11
 * http://www.netbeans.org/cddl-gplv2.html
12
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
 * specific language governing permissions and limitations under the
14
 * License.  When distributing the software, include this License Header
15
 * Notice in each file and include the License file at
16
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
17
 * particular file as subject to the "Classpath" exception as provided
18
 * by Sun in the GPL Version 2 section of the License file that
19
 * accompanied this code. If applicable, add the following below the
20
 * License Header, with the fields enclosed by brackets [] replaced by
21
 * your own identifying information:
22
 * "Portions Copyrighted [year] [name of copyright owner]"
23
 *
24
 * If you wish your version of this file to be governed by only the CDDL
25
 * or only the GPL Version 2, indicate your decision by adding
26
 * "[Contributor] elects to include this software in this distribution
27
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
28
 * single choice of license, a recipient has the option to distribute
29
 * your version of this file under either the CDDL, the GPL Version 2 or
30
 * to extend the choice of license to its licensees as provided above.
31
 * However, if you add GPL Version 2 code and therefore, elected the GPL
32
 * Version 2 license, then the option applies only if the new code is
33
 * made subject to such option by the copyright holder.
34
 *
35
 * Contributor(s):
36
 *
37
 * Portions Copyrighted 2009 Sun Microsystems, Inc.
38
 */
39
40
package org.openide.nodes;
41
42
import java.util.HashMap;
43
import javax.swing.Action;
44
import org.junit.After;
45
import org.junit.AfterClass;
46
import org.junit.Before;
47
import org.junit.BeforeClass;
48
import org.junit.Test;
49
import org.openide.util.HelpCtx;
50
import org.openide.util.actions.CallbackSystemAction;
51
import org.openide.util.actions.SystemAction;
52
import static org.junit.Assert.*;
53
54
/**
55
 *
56
 * @author Jaroslav Tulach <jtulach@netbeans.org>
57
 */
58
public class LazyNodeTest {
59
60
    public LazyNodeTest() {
61
    }
62
63
    @BeforeClass
64
    public static void setUpClass() throws Exception {
65
    }
66
67
    @AfterClass
68
    public static void tearDownClass() throws Exception {
69
    }
70
71
    @Before
72
    public void setUp() {
73
    }
74
75
    @After
76
    public void tearDown() {
77
    }
78
79
    @Test
80
    public void testCreateOriginalAfterNodeExpansion() {
81
        doCreateOriginal(true);
82
    }
83
84
    @Test
85
    public void testCreateOriginalAfterGetActions() {
86
        doCreateOriginal(false);
87
    }
88
89
    private void doCreateOriginal(boolean askForChildren) {
90
        AbstractNode realNode = new AbstractNode(new Children.Array()) {
91
            @Override
92
            public Action[] getActions(boolean context) {
93
                return getActions();
94
            }
95
96
            @SuppressWarnings("deprecation")
97
            @Override
98
            public SystemAction[] getActions() {
99
                return new SystemAction[] {
100
                    A1.get(A1.class),
101
                    A2.get(A2.class),
102
                    A3.get(A3.class)
103
                };
104
            }
105
        };
106
        realNode.setName("RealNode");
107
        realNode.setDisplayName("Real Node");
108
        realNode.setShortDescription("Real Node for Test");
109
        realNode.getChildren().add(new Node[] {
110
            new AbstractNode(Children.LEAF),
111
            new AbstractNode(Children.LEAF),
112
            new AbstractNode(Children.LEAF),
113
        });
114
115
        CntHashMap chm = new CntHashMap("original");
116
        chm.put("name", "ANode");
117
        chm.put("displayName", "A Node");
118
        chm.put("shortDescription", "A Node for Test");
119
        chm.put("iconResource", "org/openide/nodes/beans.gif");
120
        chm.put("original", realNode);
121
122
        Node instance = NodeOp.factory(chm);
123
        assertEquals("ANode", instance.getName());
124
        assertEquals("A Node", instance.getDisplayName());
125
        assertEquals("A Node for Test", instance.getShortDescription());
126
        assertEquals("No real node queried yet", 0, chm.cnt);
127
128
        if (askForChildren) {
129
            Node[] arr = instance.getChildren().getNodes(true);
130
            assertEquals("Three children", 3, arr.length);
131
        } else {
132
            Action[] arr = instance.getActions(true);
133
            assertEquals("Three actions", 3, arr.length);
134
        }
135
        
136
        assertEquals("Real node queried now", 1, chm.cnt);
137
138
        assertEquals("RealNode", instance.getName());
139
        assertEquals("Real Node", instance.getDisplayName());
140
        assertEquals("Real Node for Test", instance.getShortDescription());
141
    }
142
143
    private static class CntHashMap extends HashMap<Object,Object> {
144
        private final Object keyToWatch;
145
        int cnt;
146
147
        public CntHashMap(Object keyToWatch) {
148
            this.keyToWatch = keyToWatch;
149
        }
150
151
        @Override
152
        public Object get(Object key) {
153
            if (keyToWatch.equals(key)) {
154
                cnt++;
155
            }
156
            return super.get(key);
157
        }
158
159
160
    }
161
162
    public static class A1 extends CallbackSystemAction {
163
        @Override
164
        public String getName() {
165
            return "A1";
166
        }
167
168
        @Override
169
        public HelpCtx getHelpCtx() {
170
            throw new UnsupportedOperationException("Not supported yet.");
171
        }
172
173
    }
174
    public static final class A2 extends A1 {
175
        @Override
176
        public String getName() {
177
            return "A2";
178
        }
179
    }
180
    public static final class A3 extends A1 {
181
        @Override
182
        public String getName() {
183
            return "A3";
184
        }
185
    }
186
}
(-)a/server/nbproject/project.xml (-1 / +1 lines)
Lines 100-106 Link Here
100
                    <build-prerequisite/>
100
                    <build-prerequisite/>
101
                    <compile-dependency/>
101
                    <compile-dependency/>
102
                    <run-dependency>
102
                    <run-dependency>
103
                        <specification-version>7.3</specification-version>
103
                        <specification-version>7.9</specification-version>
104
                    </run-dependency>
104
                    </run-dependency>
105
                </dependency>
105
                </dependency>
106
                <dependency>
106
                <dependency>
(-)a/server/src/org/netbeans/modules/server/resources/layer.xml (-2 / +6 lines)
Lines 46-53 Link Here
46
    <folder name="UI">
46
    <folder name="UI">
47
        <folder name="Runtime">
47
        <folder name="Runtime">
48
            <file name="ServerRegistry3.instance">
48
            <file name="ServerRegistry3.instance">
49
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.server.ui.node.RootNode.getInstance"/>
49
                <attr name="instanceCreate" methodvalue="org.openide.nodes.NodeOp.factory"/>
50
                <attr name="instanceClass" stringvalue="org.netbeans.modules.server.ui.node.RootNode"/>
50
                <attr name="name" stringvalue="servers"/>
51
                <attr name="displayName" bundlevalue="org.netbeans.modules.server.ui.node.Bundle#Server_Registry_Node_Name"/>
52
                <attr name="shortDescription" bundlevalue="org.netbeans.modules.server.ui.node.Bundle#Server_Registry_Node_Short_Description"/>
53
                <attr name="iconResource" stringvalue="org/netbeans/modules/server/ui/resources/servers.png"/>
54
                <attr name="original" methodvalue="org.netbeans.modules.server.ui.node.RootNode.getInstance"/>
51
                <attr name="position" intvalue="400"/>
55
                <attr name="position" intvalue="400"/>
52
            </file>
56
            </file>
53
       </folder>
57
       </folder>
(-)a/websvc.saas.ui/nbproject/project.xml (-1 / +10 lines)
Lines 30-35 Link Here
30
                    <run-dependency>
30
                    <run-dependency>
31
                        <release-version>1</release-version>
31
                        <release-version>1</release-version>
32
                        <specification-version>1.6</specification-version>
32
                        <specification-version>1.6</specification-version>
33
                    </run-dependency>
34
                </dependency>
35
                <dependency>
36
                    <code-name-base>org.netbeans.modules.websvc.jaxwsmodelapi</code-name-base>
37
                    <build-prerequisite/>
38
                    <compile-dependency/>
39
                    <run-dependency>
40
                        <release-version>1</release-version>
41
                        <specification-version>1.0</specification-version>
33
                    </run-dependency>
42
                    </run-dependency>
34
                </dependency>
43
                </dependency>
35
                <dependency>
44
                <dependency>
Lines 103-109 Link Here
103
                    <build-prerequisite/>
112
                    <build-prerequisite/>
104
                    <compile-dependency/>
113
                    <compile-dependency/>
105
                    <run-dependency>
114
                    <run-dependency>
106
                        <specification-version>7.3</specification-version>
115
                        <specification-version>7.9</specification-version>
107
                    </run-dependency>
116
                    </run-dependency>
108
                </dependency>
117
                </dependency>
109
                <dependency>
118
                <dependency>
(-)a/websvc.saas.ui/src/org/netbeans/modules/websvc/saas/ui/layer.xml (+6 lines)
Lines 46-51 Link Here
46
    <folder name="UI">
46
    <folder name="UI">
47
        <folder name="Runtime">
47
        <folder name="Runtime">
48
            <file name="org-netbeans-modules-websvc-saas-ui-nodes-SaasServicesRootNode.instance">
48
            <file name="org-netbeans-modules-websvc-saas-ui-nodes-SaasServicesRootNode.instance">
49
                <attr name="instanceCreate" methodvalue="org.openide.nodes.NodeOp.factory"/>
50
                <attr name="name" stringvalue="rootSaasGroup"/>
51
                <attr name="displayName" bundlevalue="org.netbeans.modules.websvc.saas.ui.nodes.Bundle#Web_Services"/>
52
                <attr name="shortDescription" bundlevalue="org.netbeans.modules.websvc.saas.ui.nodes.Bundle#Web_Services_Desc"/>
53
                <attr name="iconResource" stringvalue="org/netbeans/modules/websvc/saas/ui/resources/webservicegroup.png"/>
54
                <attr name="original" newvalue="org.netbeans.modules.websvc.saas.ui.nodes.SaasServicesRootNode"/>
49
                <attr name="position" intvalue="210"/>
55
                <attr name="position" intvalue="210"/>
50
            </file>
56
            </file>
51
        </folder>
57
        </folder>

Return to bug 161286