Skip to content

Commit 56e2d04

Browse files
author
jan
committed
Add ui to json update frequency functionality
Externalized some strings
1 parent 4924f85 commit 56e2d04

21 files changed

+252
-166
lines changed

io.sloeber.core/src/io/sloeber/arduinoFramework/api/BoardDescription.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
import io.sloeber.autoBuild.api.IAutoBuildConfigurationDescription;
3636
import io.sloeber.autoBuild.helpers.api.KeyValueTree;
3737
import io.sloeber.core.Activator;
38+
import io.sloeber.core.Messages;
3839
import io.sloeber.core.api.ConfigurationPreferences;
3940
import io.sloeber.core.api.Const;
40-
import io.sloeber.core.api.Preferences;
4141
import io.sloeber.core.api.VersionNumber;
4242
import io.sloeber.core.tools.KeyValue;
4343
import io.sloeber.core.txt.BoardTxtFile;
@@ -1005,7 +1005,7 @@ public Map<String, String> getEnvVars() {
10051005
allVars.putAll(getEnVarPlatformInfo());
10061006
} catch (IOException e) {
10071007
// TODO Auto-generated catch block
1008-
Activator.log(new Status(IStatus.ERROR, CORE_PLUGIN_ID, "failed to get platform paths", e));
1008+
Activator.log(new Status(IStatus.ERROR, CORE_PLUGIN_ID, Messages.BoardDescription_0, e));
10091009
}
10101010

10111011
// boards settings not coming from menu selections
@@ -1078,7 +1078,7 @@ private Map<String, String> getEnVarPlatformInfo() throws IOException {
10781078
return ret;
10791079
}
10801080

1081-
boolean jsonBasedPlatformManagement = !Preferences.getUseArduinoToolSelection();
1081+
boolean jsonBasedPlatformManagement = !ConfigurationPreferences.getUseArduinoToolSelection();
10821082
if (jsonBasedPlatformManagement) {
10831083
// overrule the Arduino IDE way of working and use the json refereced tools
10841084
ret.putAll(getEnvVarPlatformFileTools(referencingPlatform));

io.sloeber.core/src/io/sloeber/core/Activator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,8 +467,8 @@ public static void log(IStatus status) {
467467
private static synchronized void startup_BoardsManager(IProgressMonitor monitor) {
468468
//ConfigurationPreferences.getUpdateJasonFilesFlag();
469469
Instant currentTime=Instant.now();
470-
Instant latestUpdate= ConfigurationPreferences.getLatestUpdateTime();
471-
Duration requestedDelay=ConfigurationPreferences.getUpdateDelay();
470+
Instant latestUpdate= ConfigurationPreferences.getLatestJsonUpdateTime();
471+
Duration requestedDelay=ConfigurationPreferences.getJsonUpdateDelay();
472472
Instant nextUpdate=latestUpdate.plus(requestedDelay);
473473
boolean needsUpdate = nextUpdate.isBefore(currentTime);
474474

io.sloeber.core/src/io/sloeber/core/Messages.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public class Messages extends NLS {
3939
public static String ArduinoSerial_unable_to_open_serial_port;
4040
public static String ArduinoSerial_Using_1200bps_touch;
4141
public static String ArduinoSerial_Using_comport;
42-
public static String Boards_Failed_to_read_boards;
42+
public static String BoardDescription_0;
43+
public static String Boards_Failed_to_read_boards;
4344
public static String Boards_Get_menu_item_name_from_id_did_not_find;
4445
public static String Boards_menu_ID_not_found;
4546
public static String Boards_menu_name_not_found;

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

Lines changed: 109 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
import java.io.File;
66
import java.time.Duration;
77
import java.time.Instant;
8+
import java.util.HashSet;
89

10+
import org.eclipse.cdt.core.parser.util.StringUtil;
911
import org.eclipse.core.runtime.IPath;
1012
import org.eclipse.core.runtime.Path;
1113
import org.eclipse.core.runtime.preferences.ConfigurationScope;
1214
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
1315
import org.osgi.service.prefs.BackingStoreException;
1416

17+
import cc.arduino.packages.discoverers.SloeberNetworkDiscovery;
18+
import io.sloeber.core.common.InstancePreferences;
19+
1520
/**
1621
* Items on the Configuration level are linked to the ConfigurationScope
1722
* (=eclipse install base).
@@ -29,7 +34,85 @@ public class ConfigurationPreferences {
2934
private static final String POST_PROCESSING_BOARDS_TXT = "post_processing_boards.txt"; //$NON-NLS-1$
3035

3136
private static final String KEY_LATEST_JSON_UPDATE_TIME ="latest time the json files were updated";//$NON-NLS-1$
37+
private static final String KEY_JSON_UPDATE_DELAY="Duration between json file updates";//$NON-NLS-1$
38+
39+
private static String stringSplitter = "\n";//$NON-NLS-1$
40+
private static final String KEY_DISCONNECT_SERIAL_TAGETS = "Target names that require serial disconnect to run";//$NON-NLS-1$
41+
42+
public static void setAutoImportLibraries(boolean booleanValue) {
43+
InstancePreferences.setAutomaticallyImportLibraries(booleanValue);
44+
45+
}
46+
47+
public static void setPragmaOnceHeaders(boolean booleanValue) {
48+
InstancePreferences.setPragmaOnceHeaders(booleanValue);
49+
50+
}
51+
52+
public static boolean getPragmaOnceHeaders() {
53+
return InstancePreferences.getPragmaOnceHeaders();
54+
}
55+
56+
public static boolean getAutoImportLibraries() {
57+
return InstancePreferences.getAutomaticallyImportLibraries();
58+
}
59+
60+
public static void setUseArduinoToolSelection(boolean booleanValue) {
61+
InstancePreferences.setUseArduinoToolSelection(booleanValue);
62+
63+
}
64+
65+
public static boolean getUseArduinoToolSelection() {
66+
return InstancePreferences.getUseArduinoToolSelection();
67+
}
68+
69+
// public static void setUpdateJsonFiles(boolean flag) {
70+
// ConfigurationPreferences.setUpdateJasonFilesFlag(flag);
71+
// }
72+
// public static boolean getUpdateJsonFiles() {
73+
// return ConfigurationPreferences.getUpdateJasonFilesFlag();
74+
// }
75+
76+
/**
77+
*wrapper for ConfigurationPreferences.useBonjour();
78+
*/
79+
public static boolean useBonjour() {
80+
return InstancePreferences.useBonjour();
81+
}
82+
83+
/**
84+
*wrapper for ConfigurationPreferences.setUseBonjour(newFlag);
85+
*/
86+
public static void setUseBonjour(boolean newFlag) {
87+
InstancePreferences.setUseBonjour(newFlag);
88+
if(newFlag) {
89+
SloeberNetworkDiscovery.start();
90+
}else {
91+
SloeberNetworkDiscovery.stop();
92+
}
93+
}
94+
95+
96+
97+
public static String[] getDisconnectSerialTargetsList() {
98+
return getDisconnectSerialTargets().split(stringSplitter);
99+
}
100+
101+
public static String getDisconnectSerialTargets() {
102+
return getString(KEY_DISCONNECT_SERIAL_TAGETS, Defaults.getDefaultDisconnectSerialTargets()).replace("\r", EMPTY);//$NON-NLS-1$
103+
}
104+
105+
public static void setDisconnectSerialTargets(String targets) {
106+
setString(KEY_DISCONNECT_SERIAL_TAGETS, targets);
107+
}
32108

109+
public static void setDisconnectSerialTargets(String targets[]) {
110+
setString(KEY_DISCONNECT_SERIAL_TAGETS, StringUtil.join(targets, stringSplitter));
111+
}
112+
113+
public static void setDisconnectSerialTargets(HashSet<String> targets) {
114+
setString(KEY_DISCONNECT_SERIAL_TAGETS, StringUtil.join(targets, stringSplitter));
115+
}
33116

34117
public static void removeKey(String key) {
35118
IEclipsePreferences myScope = ConfigurationScope.INSTANCE.getNode(NODE_ARDUINO);
@@ -130,7 +213,7 @@ public static IPath getAwkPath() {
130213
return new Path(getInstallationPath().append("tools/awk").toString()); //$NON-NLS-1$
131214
}
132215

133-
public static Instant getLatestUpdateTime() {
216+
public static Instant getLatestJsonUpdateTime() {
134217
return getInstant(KEY_LATEST_JSON_UPDATE_TIME, Instant.now());
135218
}
136219

@@ -139,9 +222,31 @@ public static void setLatestUpdateTime(Instant currentTime) {
139222

140223
}
141224

142-
public static Duration getUpdateDelay() {
143-
// TODO Auto-generated method stub
144-
return Duration.ofDays(10);
225+
public static Duration getJsonUpdateDelay() {
226+
return getDuration(KEY_JSON_UPDATE_DELAY,Defaults.getJsonUpdateDuration());
227+
}
228+
229+
public static void setJsonUpdateDelay(Duration jsunUpdateDuration) {
230+
setDuration(KEY_JSON_UPDATE_DELAY,jsunUpdateDuration);
231+
}
232+
233+
private static void setDuration(String key, Duration value) {
234+
IEclipsePreferences myScope = ConfigurationScope.INSTANCE.getNode(NODE_ARDUINO);
235+
myScope.putLong(key, value.toDays());
236+
try {
237+
myScope.flush();
238+
} catch (BackingStoreException e) {
239+
e.printStackTrace();
240+
}
241+
}
242+
243+
private static Duration getDuration(String key, Duration defaultValue) {
244+
IEclipsePreferences myScope = ConfigurationScope.INSTANCE.getNode(NODE_ARDUINO);
245+
long ret = myScope.getLong(key, 0);
246+
if(ret==0) {
247+
return defaultValue;
248+
}
249+
return Duration.ofDays(ret);
145250
}
146251

147252
}

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static io.sloeber.core.api.Const.*;
44

5+
import java.time.Duration;
6+
57
import org.eclipse.core.runtime.IPath;
68
import org.eclipse.core.runtime.Path;
79

@@ -11,6 +13,8 @@ public class Defaults {
1113
public static final String JANTJE_BOARD_JSON_URL = "https://raw.githubusercontent.com/jantje/hardware/master/package_jantje_index.json";
1214
public static final String DEFAULT_INSTALL_ARCHITECTURE = "avr";
1315
public static final String DEFAULT_INSTALL_MAINTAINER = "arduino";
16+
private static final String DEFAULT_DISCONNECT_SERIAL_TARGETS = "BurnBootLoader\nuploadWithBuild\nuploadWithoutBuild\nuploadWithProgrammerWithBuild\nuploadWithProgrammerWithoutBuild"; //$NON-NLS-1$
17+
1418
public static final String[] DEFAULT_JSON_URLS = {DEFAULT_INSTALL_JSON,
1519
JANTJE_BOARD_JSON_URL,
1620
"https://raw.githubusercontent.com/jantje/ArduinoLibraries/master/library_jantje_index.json",
@@ -29,7 +33,6 @@ public class Defaults {
2933
"LiquidCrystal", "Mouse", "SD", "Servo", "Stepper", "TFT", "WiFi", "CapacitiveSensor" };
3034
public static final String DEFAULT = "Default";
3135

32-
public static final boolean updateJsonFiles = true;
3336
public static final boolean useBonjour = true;
3437
public static final boolean autoInstallLibraries = true;
3538
public static final boolean useArduinoToolSelection = true;
@@ -57,4 +60,12 @@ public static String getPrivateHardwarePath() {
5760
return homPath.append("Arduino").append(ARDUINO_HARDWARE_FOLDER_NAME).toString();
5861
}
5962

63+
public static String getDefaultDisconnectSerialTargets() {
64+
return DEFAULT_DISCONNECT_SERIAL_TARGETS;
65+
}
66+
67+
public static Duration getJsonUpdateDuration() {
68+
return Duration.ofDays(7);
69+
}
70+
6071
}

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

Lines changed: 0 additions & 101 deletions
This file was deleted.

io.sloeber.core/src/io/sloeber/core/messages.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ ArduinoSerial_reset_failed=reset using 1200bps touch failed
1212
ArduinoSerial_unable_to_open_serial_port=Unable to open Serial port "{PORT}"
1313
ArduinoSerial_Using_1200bps_touch=Forcing reset using 1200bps open/close on port : "{PORT}"
1414
ArduinoSerial_Using_comport=Using port "{PORT}" from now onwards
15+
BoardDescription_0=failed to get platform paths
1516
Boards_Failed_to_read_boards=Failed to read arduino boards file "{FILE}"!!
1617
Boards_Get_menu_item_name_from_id_did_not_find=getMenuItemNameFromMenuItemID did not find menu item with ID "{MENUITEMID}" menu ID "{MENUID}" for board "{BOARDID}"
1718
Boards_menu_ID_not_found=menu ID "{ID}" not found

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import io.sloeber.core.api.CompileDescription.WarningLevels;
5353
import io.sloeber.core.api.ISloeberConfiguration;
5454
import io.sloeber.core.api.OtherDescription;
55-
import io.sloeber.core.api.Preferences;
55+
import io.sloeber.core.api.ConfigurationPreferences;
5656
import io.sloeber.core.api.SloeberProject;
5757
import io.sloeber.providers.Arduino;
5858
import io.sloeber.providers.ESP32;
@@ -76,7 +76,7 @@ public class BuildTests {
7676
public static void beforeClass() throws Exception {
7777
Shared.waitForBoardsManager();
7878
Shared.setDeleteProjects(false);
79-
Preferences.setUseBonjour(false);
79+
ConfigurationPreferences.setUseBonjour(false);
8080
installAdditionalBoards();
8181
installAdditionalLibs();
8282
}
@@ -754,7 +754,7 @@ static Stream<Arguments> openAndClosePreservesSettingsValueCmd() throws Exceptio
754754
}
755755

756756
public static Stream<Arguments> NightlyBoardPatronTestData() throws Exception {
757-
Preferences.setUseArduinoToolSelection(true);
757+
ConfigurationPreferences.setUseArduinoToolSelection(true);
758758
CompileDescription compileOptions = new CompileDescription();
759759
MCUBoard zeroBoard = Arduino.zeroProgrammingPort();
760760

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import io.sloeber.core.api.CompileDescription;
4040
import io.sloeber.core.api.ConfigurationPreferences;
4141
import io.sloeber.core.api.ISloeberConfiguration;
42-
import io.sloeber.core.api.Preferences;
42+
import io.sloeber.core.api.ConfigurationPreferences;
4343
import io.sloeber.core.api.Sketch;
4444
import io.sloeber.core.api.SloeberProject;
4545
import io.sloeber.providers.Arduino;
@@ -98,7 +98,7 @@ static Stream<Arguments> uploadBourds() throws Exception {
9898

9999

100100
public static void installAdditionalBoards() {
101-
Preferences.setUseBonjour(false);
101+
ConfigurationPreferences.setUseBonjour(false);
102102
String[] packageUrlsToAdd = { ESP32.packageURL, ESP8266.packageURL };
103103
BoardsManager.addPackageURLs(new HashSet<>(Arrays.asList(packageUrlsToAdd)));
104104

0 commit comments

Comments
 (0)