Lines 42-48
Link Here
|
42 |
|
42 |
|
43 |
package org.netbeans.modules.openide.windows; |
43 |
package org.netbeans.modules.openide.windows; |
44 |
|
44 |
|
|
|
45 |
import java.util.ArrayList; |
45 |
import java.util.HashSet; |
46 |
import java.util.HashSet; |
|
|
47 |
import java.util.List; |
46 |
import java.util.Set; |
48 |
import java.util.Set; |
47 |
import javax.annotation.processing.Processor; |
49 |
import javax.annotation.processing.Processor; |
48 |
import javax.annotation.processing.RoundEnvironment; |
50 |
import javax.annotation.processing.RoundEnvironment; |
Lines 59-64
Link Here
|
59 |
import org.openide.util.lookup.ServiceProvider; |
61 |
import org.openide.util.lookup.ServiceProvider; |
60 |
import org.openide.windows.TopComponent; |
62 |
import org.openide.windows.TopComponent; |
61 |
import org.openide.windows.TopComponent.Description; |
63 |
import org.openide.windows.TopComponent.Description; |
|
|
64 |
import org.openide.windows.TopComponent.Registration; |
62 |
|
65 |
|
63 |
@SupportedSourceVersion(SourceVersion.RELEASE_6) |
66 |
@SupportedSourceVersion(SourceVersion.RELEASE_6) |
64 |
@ServiceProvider(service=Processor.class) |
67 |
@ServiceProvider(service=Processor.class) |
Lines 86-105
Link Here
|
86 |
throw new LayerGenerationException("Cannot find TopComponent.Description for this element", e, processingEnv, reg); |
89 |
throw new LayerGenerationException("Cannot find TopComponent.Description for this element", e, processingEnv, reg); |
87 |
} |
90 |
} |
88 |
String id = info.preferredID().replace('.', '-'); |
91 |
String id = info.preferredID().replace('.', '-'); |
89 |
|
|
|
90 |
String role = reg.role(); |
91 |
String rootFolder = role.isEmpty() ? "Windows2" : "Windows2/Roles/" + role; |
92 |
|
92 |
|
93 |
File settingsFile = layer(e). |
93 |
String rootFolder; |
94 |
file(rootFolder+"/Components/" + id + ".settings"). |
94 |
String[] roles = reg.roles(); |
95 |
contents(settingsFile(e)); |
95 |
if (roles.length == 0) { |
96 |
settingsFile.write(); |
96 |
rootFolder = "Windows2"; |
97 |
|
97 |
generateSettingsAndWstcref(e, rootFolder, id, reg, info); |
98 |
File modeFile = layer(e). |
98 |
} else { |
99 |
file(rootFolder+"/Modes/" + reg.mode() + "/" + id + ".wstcref"). |
99 |
Set<String> uniqueRoles = new HashSet<String>(); |
100 |
position(reg.position()). |
100 |
for (String role : roles) { |
101 |
contents(modeFile(info.preferredID(), reg.openAtStartup())); |
101 |
if (!uniqueRoles.add(role)) { |
102 |
modeFile.write(); |
102 |
throw new LayerGenerationException("Duplicate role name found", e, processingEnv, reg); |
|
|
103 |
} |
104 |
if (role.isEmpty()) { |
105 |
throw new LayerGenerationException("Unnamed role found", e, processingEnv, reg); |
106 |
} |
107 |
rootFolder = "Windows2/Roles/" + role; |
108 |
generateSettingsAndWstcref(e, rootFolder, id, reg, info); |
109 |
} |
110 |
} |
103 |
} |
111 |
} |
104 |
|
112 |
|
105 |
for (Element e : roundEnv.getElementsAnnotatedWith(TopComponent.OpenActionRegistration.class)) { |
113 |
for (Element e : roundEnv.getElementsAnnotatedWith(TopComponent.OpenActionRegistration.class)) { |
Lines 126-131
Link Here
|
126 |
return true; |
134 |
return true; |
127 |
} |
135 |
} |
128 |
|
136 |
|
|
|
137 |
private void generateSettingsAndWstcref(Element e, String rootFolder, String id, Registration reg, Description info) throws LayerGenerationException { |
138 |
File settingsFile = layer(e). |
139 |
file(rootFolder + "/Components/" + id + ".settings"). |
140 |
contents(settingsFile(e)); |
141 |
settingsFile.write(); |
142 |
|
143 |
File modeFile = layer(e). |
144 |
file(rootFolder + "/Modes/" + reg.mode() + "/" + id + ".wstcref"). |
145 |
position(reg.position()). |
146 |
contents(modeFile(info.preferredID(), reg.openAtStartup())); |
147 |
modeFile.write(); |
148 |
} |
149 |
|
129 |
private Description findInfo(Element e) throws LayerGenerationException { |
150 |
private Description findInfo(Element e) throws LayerGenerationException { |
130 |
Element type; |
151 |
Element type; |
131 |
switch (e.asType().getKind()) { |
152 |
switch (e.asType().getKind()) { |