Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 9f1dcee

Browse files
committedMar 20, 2018
The Java compilation error has been fixed
1 parent 18b4016 commit 9f1dcee

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed
 

‎app/src/processing/app/Editor.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2524,9 +2524,13 @@ public void handleAddBuildSettings(){
25242524
String value = e.getText().replace(setting + ":", "").replace("\"", "").trim();
25252525
return new String[]{setting, value};
25262526
}).collect(LinkedHashMap::new, (map, menu) -> map.put(menu[0], menu[1]), LinkedHashMap::putAll);
2527-
sketch.setBuildSettings(findTab(sketch.getPrimaryFile()), settingsMap);
2528-
handleSave(true);
2529-
System.out.println("Build settings header should be added");
2527+
handleSave(true);
2528+
Optional<EditorTab> optionalEditorTab = tabs.stream().filter(tab -> tab.getSketch().getSketch().equals(sketch)).findFirst();
2529+
if(optionalEditorTab.isPresent()){
2530+
optionalEditorTab.get().setText(sketch.setBuildSettings(sketch, settingsMap));
2531+
handleSave(true);
2532+
System.out.println("Build settings header should be added");
2533+
}
25302534
}
25312535

25322536
private void handleBurnBootloader() {

‎app/src/processing/app/EditorTab.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ public void setText(String what) {
434434
}
435435
}
436436

437+
437438
/**
438439
* This method loads the build settings from the main .INO file and sets the Arduino IDE accordingly
439440
*/

‎arduino-core/src/processing/app/Sketch.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import cc.arduino.files.DeleteFilesOnShutdown;
1111
import processing.app.helpers.FileUtils;
12-
import processing.app.EditorTab;
1312

1413
import static processing.app.I18n.tr;
1514

@@ -166,24 +165,23 @@ private static int ordinalIndexOf(String str, String substr, int n) {
166165
return pos;
167166
}
168167

169-
private void removeBuildSettingsHeader(EditorTab tab){
170-
if(tab.getText().contains(buildToolsHeader)) {
171-
int headerStartIndex = tab.getText().indexOf(buildToolsHeader);
172-
int headerStopIndex = tab.getText().indexOf(buildToolsHeaderEnd);
168+
private String removeBuildSettingsHeader(Sketch sketch){
169+
if(sketch.getPrimaryFile().getProgram().contains(buildToolsHeader)) {
170+
int headerStartIndex = sketch.getPrimaryFile().getProgram().indexOf(buildToolsHeader);
171+
int headerStopIndex = sketch.getPrimaryFile().getProgram().indexOf(buildToolsHeaderEnd);
173172
if (headerStartIndex > headerStopIndex) {
174173
System.err.println("The build tool header is not the first comment block in your file! Please fix this.");
175-
for (int i = 0; i < tab.getText().length(); i++) {
176-
if (headerStartIndex < ordinalIndexOf(tab.getText(), buildToolsHeaderEnd, i)) {
177-
headerStopIndex = ordinalIndexOf(tab.getText(), buildToolsHeaderEnd, i);
174+
for (int i = 0; i < sketch.getPrimaryFile().getProgram().length(); i++) {
175+
if (headerStartIndex < ordinalIndexOf(sketch.getPrimaryFile().getProgram(), buildToolsHeaderEnd, i)) {
176+
headerStopIndex = ordinalIndexOf(sketch.getPrimaryFile().getProgram(), buildToolsHeaderEnd, i);
178177
break;
179178
}
180179
}
181180
}
182-
String header = tab.getText().substring(headerStartIndex, headerStopIndex + buildToolsHeaderEnd.length());
183-
tab.setText(tab.getText().replace(header, ""));
184-
// Run this method again so we are sure that there aren't any headers left
185-
removeBuildSettingsHeader(tab);
181+
String header = sketch.getPrimaryFile().getProgram().substring(headerStartIndex, headerStopIndex + buildToolsHeaderEnd.length());
182+
return sketch.getPrimaryFile().getProgram().replace(header, "");
186183
}
184+
return sketch.getPrimaryFile().getProgram();
187185
}
188186

189187
/**
@@ -233,16 +231,17 @@ private boolean isBuildSettingsEqual(LinkedHashMap<String,String> first, LinkedH
233231
return first.keySet().containsAll(second.keySet()) && first.values().containsAll(second.values());
234232
}
235233

236-
public void setBuildSettings(EditorTab tab, LinkedHashMap<String, String> buildSettings){
237-
if(tab.getSketch().getSketch() != this){
238-
return;
234+
public String setBuildSettings(Sketch sketch, LinkedHashMap<String, String> buildSettings){
235+
if(sketch != this){
236+
return "";
239237
}
240238

241239
String customBoardSettingsHeader = buildSettings.entrySet().stream().map(entry-> String.format(" * %s: %s\n", entry.getKey(), entry.getValue())).collect(Collectors.joining("", buildToolsHeader, "*/"));
242-
if(!isBuildSettingsEqual(getBuildSettingsFromProgram(tab.getText()),buildSettings)){
243-
removeBuildSettingsHeader(tab);
244-
tab.setText(customBoardSettingsHeader + ((tab.getText().charAt(0) == '\n') ? "" : "\n") + tab.getText());
240+
if(!isBuildSettingsEqual(getBuildSettingsFromProgram(sketch.getPrimaryFile().getProgram()),buildSettings)){
241+
String headerLessProgram = removeBuildSettingsHeader(sketch);
242+
return customBoardSettingsHeader + ((headerLessProgram.charAt(0) == '\n') ? "" : "\n") + headerLessProgram;
245243
}
244+
return "";
246245
}
247246

248247
public int getCodeCount() {

0 commit comments

Comments
 (0)
Please sign in to comment.