--- a/openide.windows/src/org/netbeans/modules/openide/windows/TopComponentProcessor.java Wed Oct 12 12:15:11 2011 +0200 +++ a/openide.windows/src/org/netbeans/modules/openide/windows/TopComponentProcessor.java Wed Oct 12 14:47:54 2011 +0200 @@ -87,19 +87,21 @@ } String id = info.preferredID().replace('.', '-'); - String role = reg.role(); - String rootFolder = role.isEmpty() ? "Windows2" : "Windows2/Roles/" + role; + String[] roles = reg.roles(); + for (String role : roles){ + String rootFolder = role.isEmpty() ? "Windows2" : "Windows2/Roles/" + role; - File settingsFile = layer(e). - file(rootFolder+"/Components/" + id + ".settings"). - contents(settingsFile(e)); - settingsFile.write(); - - File modeFile = layer(e). - file(rootFolder+"/Modes/" + reg.mode() + "/" + id + ".wstcref"). - position(reg.position()). - contents(modeFile(info.preferredID(), reg.openAtStartup())); - modeFile.write(); + File settingsFile = layer(e). + file(rootFolder+"/Components/" + id + ".settings"). + contents(settingsFile(e)); + settingsFile.write(); + + File modeFile = layer(e). + file(rootFolder+"/Modes/" + reg.mode() + "/" + id + ".wstcref"). + position(reg.position()). + contents(modeFile(info.preferredID(), reg.openAtStartup())); + modeFile.write(); + } } for (Element e : roundEnv.getElementsAnnotatedWith(TopComponent.OpenActionRegistration.class)) { --- a/openide.windows/src/org/openide/windows/TopComponent.java Wed Oct 12 12:15:11 2011 +0200 +++ a/openide.windows/src/org/openide/windows/TopComponent.java Wed Oct 12 14:47:54 2011 +0200 @@ -1428,11 +1428,11 @@ /** Shall the component be opened at start */ boolean openAtStartup(); /** - * Window layout role or an empty string for the default layout + * Window layout roles or an empty string for the default layout * @see WindowManager#setRole(java.lang.String) * @since 6.45 */ - String role() default ""; + String[] roles() default {}; } /** Creates an action that can open the component. --- a/openide.windows/test/unit/src/org/netbeans/modules/openide/windows/TopComponentProcessorTest.java Wed Oct 12 12:15:11 2011 +0200 +++ a/openide.windows/test/unit/src/org/netbeans/modules/openide/windows/TopComponentProcessorTest.java Wed Oct 12 14:47:54 2011 +0200 @@ -72,7 +72,7 @@ } public void testTCRegisteredInRoleFine() throws Exception { - FileObject set = FileUtil.getConfigFile("Windows2/Roles/UnitTestRole/Components/my-tc2.settings"); + FileObject set = FileUtil.getConfigFile("Windows2/Roles/UnitTestRole1/Components/my-tc2.settings"); assertNotNull("Settings file found", set); assertValidate(set.asText()); } @@ -169,7 +169,7 @@ @TopComponent.Registration( mode="output", openAtStartup=false, - role="UnitTestRole" + roles={"UnitTestRole1", "UnitTestRole2"} ) @TopComponent.Description( preferredID="my-tc2", iconBase="org/openide/windows/Icon.png"