Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public void runApp() {
final boolean[] roundedButtons = new boolean[]{true};
final boolean[] includeLocalizationBundles = new boolean[]{true};
final ProjectOptions.PreviewLanguage[] previewLanguage = new ProjectOptions.PreviewLanguage[]{ProjectOptions.PreviewLanguage.ENGLISH};
final ProjectOptions.JavaVersion[] javaVersion = new ProjectOptions.JavaVersion[]{ProjectOptions.JavaVersion.JAVA_8};
final RadioButton[] templateButtons = new RadioButton[Template.values().length];
final SpanLabel summaryLabel = new SpanLabel();
final TemplatePreviewPanel previewPanel = new TemplatePreviewPanel(selectedTemplate[0]);
Expand All @@ -69,7 +70,7 @@ public void runApp() {
public void run() {
ProjectOptions options = new ProjectOptions(
selectedThemeMode[0], selectedAccent[0], roundedButtons[0],
includeLocalizationBundles[0], previewLanguage[0]
includeLocalizationBundles[0], previewLanguage[0], javaVersion[0]
);
previewPanel.setTemplate(selectedTemplate[0]);
previewPanel.setOptions(options);
Expand Down Expand Up @@ -99,13 +100,15 @@ public void run() {
final Container idePanel = createIdeSelectorPanel(selectedIde, refresh);
final Container themePanel = createThemeOptionsPanel(selectedThemeMode, selectedAccent, roundedButtons, refresh);
final Container localizationPanel = createLocalizationPanel(includeLocalizationBundles, previewLanguage, refresh, previewPanel);
final Container javaPanel = createJavaOptionsPanel(javaVersion, refresh);
themePanelRef[0] = themePanel;
final Container settingsPanel = BoxLayout.encloseY(summaryLabel);

Accordion advancedAccordion = new Accordion();
advancedAccordion.addContent("IDE", idePanel);
advancedAccordion.addContent("Theme Customization", themePanel);
advancedAccordion.addContent("Localization", localizationPanel);
advancedAccordion.addContent("Java Version", javaPanel);
advancedAccordion.addContent("Current Settings", settingsPanel);
advancedAccordion.setAutoClose(false);
advancedAccordion.setScrollable(false);
Expand Down Expand Up @@ -133,7 +136,7 @@ public void run() {
String packageName = packageField.getText() == null ? "" : packageField.getText().trim();
ProjectOptions options = new ProjectOptions(
selectedThemeMode[0], selectedAccent[0], roundedButtons[0],
includeLocalizationBundles[0], previewLanguage[0]
includeLocalizationBundles[0], previewLanguage[0], javaVersion[0]
);
GeneratorModel.create(selectedIde[0], selectedTemplate[0], appName, packageName, options).generate();
});
Expand Down Expand Up @@ -314,6 +317,31 @@ private Container createThemeOptionsPanel(ProjectOptions.ThemeMode[] selectedThe
);
}


private Container createJavaOptionsPanel(ProjectOptions.JavaVersion[] javaVersion, Runnable onSelectionChanged) {
Container selector = new Container(new GridLayout(2, 1));
selector.setUIID("InitializrChoicesGrid");
ButtonGroup group = new ButtonGroup();

for (ProjectOptions.JavaVersion version : ProjectOptions.JavaVersion.values()) {
RadioButton button = new RadioButton(version.label);
button.setToggle(true);
button.setUIID("InitializrChoice");
group.add(button);
selector.add(button);
if (version == javaVersion[0]) {
button.setSelected(true);
}
button.addActionListener(evt -> {
if (button.isSelected()) {
javaVersion[0] = version;
onSelectionChanged.run();
}
});
}
return selector;
}

private Container createTemplateSelector(Template[] selectedTemplate, RadioButton[] templateButtons, Runnable onSelectionChanged) {
Container selector = new Container(new GridLayout(2, 2));
selector.setUIID("InitializrChoicesGrid");
Expand Down Expand Up @@ -509,6 +537,7 @@ private String createSummary(String appName, String packageName, Template templa
+ "Rounded Buttons: " + (options.roundedButtons ? "Yes" : "No") + "\n"
+ "Localization Bundles: " + (options.includeLocalizationBundles ? "Yes" : "No") + "\n"
+ "Preview Language: " + options.previewLanguage.label + "\n"
+ "Java: " + options.javaVersion.label + "\n"
+ "Kotlin: " + (template.IS_KOTLIN ? "Yes" : "No");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,13 +179,17 @@ private byte[] applyDataReplacements(String targetPath, byte[] sourceData) throw
content = StringUtil.replaceAll(content, "myappname", appName.toLowerCase());
if ("common/codenameone_settings.properties".equals(targetPath)) {
content = replaceProperty(content, "codename1.kotlin", String.valueOf(template.IS_KOTLIN));
content = applyJavaVersionSettings(content);
}
if (options.includeLocalizationBundles && isBareTemplate()) {
content = injectLocalizationBootstrap(targetPath, content);
}
if (isBareTemplate() && "common/src/main/css/theme.css".equals(targetPath)) {
content += buildThemeOverrides();
}
if ("common/pom.xml".equals(targetPath)) {
content = applyJavaVersionToPom(content);
}
if ("pom.xml".equals(targetPath)) {
content = replaceTagValue(content, "cn1.plugin.version", CN1_PLUGIN_VERSION);
}
Expand All @@ -196,6 +200,23 @@ private byte[] applyDataReplacements(String targetPath, byte[] sourceData) throw
}



private String applyJavaVersionSettings(String content) {
if (options.javaVersion == ProjectOptions.JavaVersion.JAVA_17_EXPERIMENTAL) {
content = replaceProperty(content, "codename1.arg.java.version", "17");
}
return content;
}

private String applyJavaVersionToPom(String content) {
if (options.javaVersion != ProjectOptions.JavaVersion.JAVA_17_EXPERIMENTAL) {
return content;
}
content = StringUtil.replaceAll(content, "<source>1.8</source>", "<source>17</source>");
content = StringUtil.replaceAll(content, "<target>1.8</target>", "<target>17</target>");
return content;
}

private String injectLocalizationBootstrap(String targetPath, String content) {
String javaMainPath = "common/src/main/java/" + packageName.replace('.', '/') + "/" + appName + ".java";
String kotlinMainPath = "common/src/main/kotlin/" + packageName.replace('.', '/') + "/" + appName + ".kt";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,22 +43,41 @@ public enum Accent {
ORANGE
}

public enum JavaVersion {
JAVA_8("Java 8"),
JAVA_17_EXPERIMENTAL("Java 17 (Experimental)");

public final String label;

JavaVersion(String label) {
this.label = label;
}

@Override
public String toString() {
return label;
}
}

public final ThemeMode themeMode;
public final Accent accent;
public final boolean roundedButtons;
public final boolean includeLocalizationBundles;
public final PreviewLanguage previewLanguage;
public final JavaVersion javaVersion;

public ProjectOptions(ThemeMode themeMode, Accent accent, boolean roundedButtons,
boolean includeLocalizationBundles, PreviewLanguage previewLanguage) {
boolean includeLocalizationBundles, PreviewLanguage previewLanguage,
JavaVersion javaVersion) {
this.themeMode = themeMode;
this.accent = accent;
this.roundedButtons = roundedButtons;
this.includeLocalizationBundles = includeLocalizationBundles;
this.previewLanguage = previewLanguage == null ? PreviewLanguage.ENGLISH : previewLanguage;
this.javaVersion = javaVersion == null ? JavaVersion.JAVA_8 : javaVersion;
}

public static ProjectOptions defaults() {
return new ProjectOptions(ThemeMode.LIGHT, Accent.DEFAULT, true, true, PreviewLanguage.ENGLISH);
return new ProjectOptions(ThemeMode.LIGHT, Accent.DEFAULT, true, true, PreviewLanguage.ENGLISH, JavaVersion.JAVA_8);
}
}
Loading
Loading