Skip to content

Commit 5dc84c3

Browse files
author
jantje
committed
#1268 some refactoring
1 parent 6b1ffc7 commit 5dc84c3

File tree

4 files changed

+97
-70
lines changed

4 files changed

+97
-70
lines changed

io.sloeber.core/src/io/sloeber/core/api/CompileDescription.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ private boolean equalCompileOptions(CompileDescription other) {
279279
&& (my_All_CompileOptions.equals(other.my_All_CompileOptions));
280280
}
281281

282-
public static CompileDescription getFromCDTEnvVars(ICConfigurationDescription confDesc) {
282+
public static CompileDescription getFromCDT(ICConfigurationDescription confDesc) {
283283
// TODO Auto-generated method stub
284284
return null;
285285
}

io.sloeber.tests/src/io/sloeber/core/RegressionTest.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import io.sloeber.core.api.BoardDescription;
3131
import io.sloeber.core.api.CodeDescription;
3232
import io.sloeber.core.api.CompileDescription;
33+
import io.sloeber.core.api.OtherDescription;
3334
import io.sloeber.core.api.PackageManager;
3435
import io.sloeber.core.api.Preferences;
3536
import io.sloeber.core.api.SloeberProject;
@@ -430,10 +431,11 @@ public void openAndCloseUsesSavedSettings() throws Exception {
430431

431432
String proj1Name = "openModAndClose1";
432433
BoardDescription proj1BoardDesc = Arduino.uno().getBoardDescriptor();
433-
proj1BoardDesc.setVersionControlled(true);
434+
OtherDescription otherDesc = new OtherDescription();
435+
otherDesc.setVersionControlled(true);
434436
CompileDescription proj1CompileDesc = getBunkersCompileDescription();
435437
IProject proj1 = SloeberProject.createArduinoProject(proj1Name, null, proj1BoardDesc, codeDesc,
436-
proj1CompileDesc, new NullProgressMonitor());
438+
proj1CompileDesc, otherDesc, new NullProgressMonitor());
437439

438440
String proj2Name = "openModAndClose2";
439441
BoardDescription proj2BoardDesc = Arduino.getMega2560Board().getBoardDescriptor();

io.sloeber.ui/src/io/sloeber/ui/project/properties/BoardSelectionPage.java

+91-66
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.File;
44
import java.util.HashMap;
55
import java.util.Map;
6+
import java.util.Map.Entry;
67
import java.util.TreeMap;
78

89
import org.eclipse.cdt.core.parser.util.ArrayUtil;
@@ -30,12 +31,12 @@
3031
import org.eclipse.swt.widgets.Listener;
3132
import org.eclipse.swt.widgets.Text;
3233

33-
import io.sloeber.core.api.SloeberProject;
3434
import io.sloeber.core.api.BoardDescription;
3535
import io.sloeber.core.api.Defaults;
3636
import io.sloeber.core.api.PackageManager;
3737
import io.sloeber.core.api.PasswordManager;
3838
import io.sloeber.core.api.SerialManager;
39+
import io.sloeber.core.api.SloeberProject;
3940
import io.sloeber.ui.Activator;
4041
import io.sloeber.ui.LabelCombo;
4142
import io.sloeber.ui.Messages;
@@ -59,13 +60,14 @@ public class BoardSelectionPage extends AbstractCPropertyTab {
5960
public Text myFeedbackControl;
6061

6162
// GUI elements
62-
protected LabelCombo myControlBoardsTxtFile;
63-
protected LabelCombo mycontrolBoardName;
64-
protected LabelCombo myControlUploadProtocol;
65-
protected LabelCombo myControlUploadPort;
66-
protected LabelCombo[] myBoardOptionCombos = null;
67-
protected Listener myBoardSelectionChangedListener = null;
68-
protected BoardDescription myBoardID = null;
63+
private LabelCombo myControlBoardsTxtFile;
64+
private LabelCombo mycontrolBoardName;
65+
private LabelCombo myControlUploadProtocol;
66+
private LabelCombo myControlUploadPort;
67+
private LabelCombo[] myBoardOptionCombos = null;
68+
private Listener myBoardSelectionChangedListener = null;
69+
private Map<String, BoardDescription> myBoardDescs = new HashMap<>();
70+
private BoardDescription myActiveBoardDesc = null;
6971
private Composite myComposite;
7072
private TreeMap<String, File> myAllBoardsFiles = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
7173
private org.eclipse.swt.widgets.Button myPasswordButton;
@@ -87,25 +89,27 @@ public ICConfigurationDescription getConfdesc() {
8789
@Override
8890
public void handleEvent(Event e) {
8991

92+
getBoardDescription();
9093
File boardFile = getSelectedBoardsFile();
91-
myBoardID.setreferencingBoardsFile(boardFile);
94+
String curBoard = myActiveBoardDesc.getBoardName();
95+
String curProgrammer = myActiveBoardDesc.getProgrammer();
96+
myActiveBoardDesc.setreferencingBoardsFile(boardFile);
9297

9398
/*
9499
* Change the list of available boards
95100
*/
96-
String CurrentBoard = getBoardName();
97-
mycontrolBoardName.setItems(myBoardID.getCompatibleBoards());
98-
mycontrolBoardName.setText(CurrentBoard);
101+
102+
mycontrolBoardName.setItems(myActiveBoardDesc.getCompatibleBoards());
103+
mycontrolBoardName.setText(curBoard);
99104

100105
/*
101106
* Change the list of available upload protocols
102107
*/
103-
String CurrentUploadProtocol = getUpLoadProtocol();
104-
myControlUploadProtocol.setItems(myBoardID.getUploadProtocols());
105-
myControlUploadProtocol.setText(CurrentUploadProtocol);
108+
myControlUploadProtocol.setItems(myActiveBoardDesc.getUploadProtocols());
109+
myControlUploadProtocol.setText(curProgrammer);
106110

107111
if (myControlUploadProtocol.getText().isEmpty()) {
108-
myBoardID.setUploadProtocol(Defaults.getDefaultUploadProtocol());
112+
myActiveBoardDesc.setProgrammer(Defaults.getDefaultUploadProtocol());
109113
myControlUploadProtocol.setText(Defaults.getDefaultUploadProtocol());
110114
}
111115

@@ -118,11 +122,12 @@ public void handleEvent(Event e) {
118122
@Override
119123
public void handleEvent(Event e) {
120124

121-
myBoardID.setBoardName(getBoardName());
125+
getBoardDescription();
126+
myActiveBoardDesc.setBoardName(getBoardName());
122127

123128
for (LabelCombo curLabelCombo : myBoardOptionCombos) {
124-
curLabelCombo.setItems(myBoardID.getMenuItemNamesFromMenuID(curLabelCombo.getID()));
125-
curLabelCombo.setLabel(myBoardID.getMenuNameFromMenuID(curLabelCombo.getID()));
129+
curLabelCombo.setItems(myActiveBoardDesc.getMenuItemNamesFromMenuID(curLabelCombo.getID()));
130+
curLabelCombo.setLabel(myActiveBoardDesc.getMenuNameFromMenuID(curLabelCombo.getID()));
126131
}
127132

128133
isPageComplete();
@@ -138,6 +143,8 @@ public void handleEvent(Event e) {
138143

139144
private ScrolledComposite myScrolledComposite;
140145

146+
private SloeberProject myArduinoProject = null;
147+
141148
@Override
142149
public void createControls(Composite parent, ICPropertyProvider provider) {
143150
super.createControls(parent, provider);
@@ -163,11 +170,11 @@ public void draw(Composite parent) {
163170
myScrolledComposite.setExpandHorizontal(true);
164171

165172
myComposite = new Composite(myScrolledComposite, SWT.NONE);
166-
myBoardID = getBoardID();
167-
if (myBoardID.getActualCoreCodePath() == null) {
168-
Activator.log(
169-
new Status(IStatus.ERROR, Activator.getId(), Messages.BoardSelectionPage_failed_to_find_platform
170-
.replace(Messages.PLATFORM, myBoardID.getReferencingPlatformFile().toString())));
173+
getBoardDescription();
174+
if (myActiveBoardDesc.getActualCoreCodePath() == null) {
175+
Activator.log(
176+
new Status(IStatus.ERROR, Activator.getId(), Messages.BoardSelectionPage_failed_to_find_platform
177+
.replace(Messages.PLATFORM, myActiveBoardDesc.getReferencingPlatformFile().toString())));
171178
}
172179

173180
File[] allBoardsFileNames = PackageManager.getAllBoardsFiles();
@@ -312,9 +319,9 @@ protected void performDefaults() {
312319

313320
@Override
314321
protected void updateData(ICResourceDescription cfg) {
315-
// myBoardID.saveUserSelection();
316-
// myBoardID = new BoardDescription(cfg.getConfiguration());
317-
// setValues();
322+
getValues();
323+
myActiveBoardDesc = myBoardDescs.get(cfg.getConfiguration().getId());
324+
setValues();
318325
}
319326

320327
@Override
@@ -324,33 +331,35 @@ protected void updateButtons() {
324331
}
325332

326333
private void setValues() {
327-
328-
myControlBoardsTxtFile.setText(tidyUpLength(myBoardID.getReferencingBoardsFile().toString()));
329-
mycontrolBoardName.setItems(myBoardID.getCompatibleBoards());
330-
mycontrolBoardName.setText(myBoardID.getBoardName());
334+
getBoardDescription();
335+
myControlBoardsTxtFile.setText(tidyUpLength(myActiveBoardDesc.getReferencingBoardsFile().toString()));
336+
mycontrolBoardName.setItems(myActiveBoardDesc.getCompatibleBoards());
337+
mycontrolBoardName.setText(myActiveBoardDesc.getBoardName());
331338

332339
String CurrentUploadProtocol = getUpLoadProtocol();
333-
myControlUploadProtocol.setItems(myBoardID.getUploadProtocols());
340+
myControlUploadProtocol.setItems(myActiveBoardDesc.getUploadProtocols());
334341
myControlUploadProtocol.setText(CurrentUploadProtocol);
335342
if (getUpLoadProtocol().isEmpty()) {
336-
myControlUploadProtocol.setText(myBoardID.getProgrammer());
343+
myControlUploadProtocol.setText(myActiveBoardDesc.getProgrammer());
337344
if (myControlUploadProtocol.getText().isEmpty()) {
338345
myControlUploadProtocol.setText(Defaults.getDefaultUploadProtocol());
339346
}
340347
}
341348

342-
myControlUploadPort.setValue(myBoardID.getUploadPort());
349+
myControlUploadPort.setValue(myActiveBoardDesc.getUploadPort());
343350

344351
// set the options in the combo boxes before setting the value
345-
Map<String, String> options = myBoardID.getOptions();
352+
Map<String, String> options = myActiveBoardDesc.getOptions();
346353

347354
for (LabelCombo curLabelCombo : myBoardOptionCombos) {
348-
curLabelCombo.setItems(myBoardID.getMenuItemNamesFromMenuID(curLabelCombo.getID()));
355+
curLabelCombo.setItems(myActiveBoardDesc.getMenuItemNamesFromMenuID(curLabelCombo.getID()));
349356
if (options != null) {
350357
String value = options.get(curLabelCombo.getID());
351358
if (value != null) {
352359
try {
353-
curLabelCombo.setValue(myBoardID.getMenuItemNamedFromMenuItemID(value, curLabelCombo.getID()));
360+
curLabelCombo
361+
.setValue(
362+
myActiveBoardDesc.getMenuItemNamedFromMenuItemID(value, curLabelCombo.getID()));
354363
} catch (@SuppressWarnings("unused") Exception e) {
355364
// When this fails no default value will be set
356365
// so nothing to do here
@@ -371,24 +380,39 @@ protected void performApply(ICResourceDescription src, ICResourceDescription dst
371380
doOK();
372381
}
373382

383+
private void getValues() {
384+
myActiveBoardDesc.setreferencingBoardsFile(getSelectedBoardsFile());
385+
myActiveBoardDesc.setUploadPort(getUpLoadPort());
386+
myActiveBoardDesc.setProgrammer(getUpLoadProtocol());
387+
myActiveBoardDesc.setBoardName(getBoardName());
388+
myActiveBoardDesc.setOptions(getOptions());
389+
390+
}
391+
374392
private void doOK() {
375-
myBoardID.setreferencingBoardsFile(getSelectedBoardsFile());
376-
myBoardID.setUploadPort(getUpLoadPort());
377-
myBoardID.setUploadProtocol(getUpLoadProtocol());
378-
myBoardID.setBoardName(getBoardName());
379-
myBoardID.setOptions(getOptions());
393+
myActiveBoardDesc.saveUserSelection();
394+
getValues();
380395
ICConfigurationDescription confdesc = getConfdesc();
381-
396+
ICProjectDescription projDesc = confdesc.getProjectDescription();
382397
try {
383-
IProject project = confdesc.getProjectDescription().getProject();
384-
SloeberProject arduinoProject = SloeberProject.getSloeberProject(project);
385-
arduinoProject.setBoardDescription(confdesc, myBoardID);
386-
398+
for (Entry<String, BoardDescription> curEntry : myBoardDescs.entrySet()) {
399+
ICConfigurationDescription curConfDesc = projDesc.getConfigurationById(curEntry.getKey());
400+
getSloeberProject().setBoardDescription(curConfDesc, curEntry.getValue());
401+
}
387402
} catch (Exception e) {
388403
Activator.log(new Status(IStatus.ERROR, Activator.getId(), Messages.error_adding_arduino_code, e));
389404
}
390405
}
391406

407+
private SloeberProject getSloeberProject() {
408+
if (myArduinoProject == null) {
409+
ICConfigurationDescription confdesc = getConfdesc();
410+
IProject project = confdesc.getProjectDescription().getProject();
411+
myArduinoProject = SloeberProject.getSloeberProject(project);
412+
}
413+
return myArduinoProject;
414+
415+
}
392416

393417
private class ArduinoSelectionPageListener implements Listener {
394418
private AbstractPage myPage;
@@ -416,7 +440,7 @@ protected File getSelectedBoardsFile() {
416440
return null;
417441
}
418442
String selectedText = myControlBoardsTxtFile.getText().trim();
419-
return myAllBoardsFiles.get(selectedText);
443+
return myAllBoardsFiles.get(selectedText);
420444
}
421445

422446
public String getUpLoadPort() {
@@ -444,36 +468,37 @@ private Map<String, String> getOptions() {
444468
if (myBoardOptionCombos == null) {
445469
return null;
446470
}
471+
getBoardDescription();
447472
Map<String, String> options = new HashMap<>();
448473
for (LabelCombo curLabelCombo : myBoardOptionCombos) {
449474
if (curLabelCombo.isVisible()) {
450475
options.put(curLabelCombo.getID(),
451-
myBoardID.getMenuItemIDFromMenuItemName(curLabelCombo.getValue(), curLabelCombo.getID()));
476+
myActiveBoardDesc.getMenuItemIDFromMenuItemName(curLabelCombo.getValue(),
477+
curLabelCombo.getID()));
452478
}
453479
}
454480
return options;
455481
}
456482

457-
public BoardDescription getBoardID() {
458-
if (myBoardID == null) {
483+
public BoardDescription getBoardDescription() {
484+
if (myActiveBoardDesc == null) {
459485
// myBoardID = new BoardDescription(getConfdesc());
460-
ICProjectDescription confDesc = getConfdesc().getProjectDescription();
461-
IProject project = confDesc.getProject();
462-
SloeberProject arduinoProject = SloeberProject.getSloeberProject(project);
463-
myBoardID = arduinoProject.getBoardDescription(confDesc.getActiveConfiguration());
464-
if (myBoardID == null) {
465-
myBoardID = new BoardDescription();
486+
ICConfigurationDescription activeConfDesc = getConfdesc();
487+
if (activeConfDesc == null) {
488+
myActiveBoardDesc = new BoardDescription();
489+
} else {
490+
ICProjectDescription projDesc = getConfdesc().getProjectDescription();
491+
for (ICConfigurationDescription curConfDesc : projDesc.getConfigurations()) {
492+
myBoardDescs.put(curConfDesc.getId(), getSloeberProject().getBoardDescription(curConfDesc));
493+
}
494+
myActiveBoardDesc = myBoardDescs.get(activeConfDesc.getId());
495+
if (myActiveBoardDesc == null) {
496+
myActiveBoardDesc = new BoardDescription();
497+
}
466498
}
467499
}
468-
if (myBoardOptionCombos != null) {// only update the values if the
469-
// page has been drawn
470-
myBoardID.setreferencingBoardsFile(getSelectedBoardsFile());
471-
myBoardID.setBoardName(getBoardName());
472-
myBoardID.setOptions(getOptions());
473-
myBoardID.setUploadPort(getUpLoadPort());
474-
myBoardID.setUploadProtocol(getUpLoadProtocol());
475-
}
476-
return myBoardID;
500+
501+
return myActiveBoardDesc;
477502
}
478503

479504
}

io.sloeber.ui/src/io/sloeber/ui/wizard/newsketch/NewSketchWizardBoardPage.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void createControl(Composite parent) {
5555
}
5656

5757
public BoardDescription getBoardDescriptor() {
58-
return this.mPageLayout.getBoardID();
58+
return this.mPageLayout.getBoardDescription();
5959
}
6060

6161
}

0 commit comments

Comments
 (0)