From 4924f85cbb076137b3f1021e6ee5d67ab51e5994 Mon Sep 17 00:00:00 2001 From: jan Date: Wed, 23 Oct 2024 02:59:43 +0200 Subject: [PATCH] Prepare preference page for adding json update option --- io.sloeber.ui/META-INF/MANIFEST.MF | 3 +- io.sloeber.ui/src/io/sloeber/ui/Messages.java | 8 +- .../src/io/sloeber/ui/messages.properties | 3 + .../ui/preferences/PreferencePage.java | 175 ++++++++++++------ 4 files changed, 131 insertions(+), 58 deletions(-) diff --git a/io.sloeber.ui/META-INF/MANIFEST.MF b/io.sloeber.ui/META-INF/MANIFEST.MF index d29f92d6..80889069 100644 --- a/io.sloeber.ui/META-INF/MANIFEST.MF +++ b/io.sloeber.ui/META-INF/MANIFEST.MF @@ -16,7 +16,8 @@ Require-Bundle: org.eclipse.ui, org.apache.commons.commons-io, io.sloeber.autoBuild, org.eclipse.jface, - io.sloeber.autoBuild.ui + io.sloeber.autoBuild.ui, + org.eclipse.swt Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ActivationPolicy: lazy Bundle-Vendor: Sloeber.io diff --git a/io.sloeber.ui/src/io/sloeber/ui/Messages.java b/io.sloeber.ui/src/io/sloeber/ui/Messages.java index 319c1882..21b58c23 100644 --- a/io.sloeber.ui/src/io/sloeber/ui/Messages.java +++ b/io.sloeber.ui/src/io/sloeber/ui/Messages.java @@ -66,7 +66,13 @@ public class Messages extends NLS { public static String packageTooltip; public static String PlatformSelectionPage_hide_third_party_url; - public static String platformSelectionTip; + public static String PreferencePage_Internal_Behaviour_Group_Title; + + public static String PreferencePage_Network_Group_Title; + + public static String PreferencePage_UI_Behaviour_Group_Title; + + public static String platformSelectionTip; public static String pleaseWaitForInstallerJob; public static String plotterViewChannel; public static String plotterViewConnectedTo; diff --git a/io.sloeber.ui/src/io/sloeber/ui/messages.properties b/io.sloeber.ui/src/io/sloeber/ui/messages.properties index b148f61d..07ef3985 100644 --- a/io.sloeber.ui/src/io/sloeber/ui/messages.properties +++ b/io.sloeber.ui/src/io/sloeber/ui/messages.properties @@ -5,6 +5,9 @@ BoardSelectionPage_platform_folder=Platform folder BoardSelectionPage_platform_you_want_to_use=The platform you want to use BoardSelectionPage_upload_protocol=Programmer protocol PlatformSelectionPage_hide_third_party_url=Hide 3th party json files +PreferencePage_Internal_Behaviour_Group_Title=Internal behaviour +PreferencePage_Network_Group_Title=Stuff that needs a network +PreferencePage_UI_Behaviour_Group_Title=UI behaviour always=Always arduino_upload_project_handler_build_failed=The build failed\! arduino_upload_project_handler_build_failed_so_no_upload=As the build failed the upload is not executed. diff --git a/io.sloeber.ui/src/io/sloeber/ui/preferences/PreferencePage.java b/io.sloeber.ui/src/io/sloeber/ui/preferences/PreferencePage.java index 6b4bddae..45dc615e 100644 --- a/io.sloeber.ui/src/io/sloeber/ui/preferences/PreferencePage.java +++ b/io.sloeber.ui/src/io/sloeber/ui/preferences/PreferencePage.java @@ -15,13 +15,20 @@ import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.PathEditor; +import org.eclipse.jface.resource.FontRegistry; +import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Group; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.eclipse.ui.themes.ITheme; +import org.eclipse.ui.themes.IThemeManager; import io.sloeber.arduinoFramework.api.BoardsManager; import io.sloeber.arduinoFramework.api.LibraryManager; @@ -187,63 +194,127 @@ public void init(IWorkbench workbench) { */ @Override protected void createFieldEditors() { - final Composite parent = getFieldEditorParent(); + final Composite rootParent = getFieldEditorParent(); + Dialog.applyDialogFont(rootParent); + IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); + ITheme currentTheme = themeManager.getCurrentTheme(); + FontRegistry fontRegistry = currentTheme.getFontRegistry(); + Font headerFont =fontRegistry.get(JFaceResources.HEADER_FONT); - this.arduinoPrivateLibPathPathEditor = new PathEditor(KEY_PRIVATE_LIBRARY_PATHS, Messages.ui_private_lib_path, - Messages.ui_private_lib_path_help, parent); - addField(this.arduinoPrivateLibPathPathEditor); + arduinoPrivateLibPathPathEditor = new PathEditor(KEY_PRIVATE_LIBRARY_PATHS, Messages.ui_private_lib_path, + Messages.ui_private_lib_path_help, rootParent); + addField(arduinoPrivateLibPathPathEditor); - this.arduinoPrivateHardwarePathPathEditor = new PathEditor(KEY_PRIVATE_HARDWARE_PATHS, Messages.ui_private_hardware_path, - Messages.ui_private_hardware_path_help, parent); - addField(this.arduinoPrivateHardwarePathPathEditor); - - Dialog.applyDialogFont(parent); - createLine(parent, 4); - String[][] YesNoAskOptions = new String[][] { { Messages.ui_ask_every_upload, "ASK" }, //$NON-NLS-1$ - { Messages.yes, TRUE }, { Messages.no, FALSE } }; - this.buildBeforeUploadOptionEditor = new ComboFieldEditor(MyPreferences.KEY_BUILD_BEFORE_UPLOAD_OPTION, - Messages.ui_build_before_upload, YesNoAskOptions, parent); - addField(this.buildBeforeUploadOptionEditor); - createLine(parent, 4); - - this.useArduinoToolchainSelectionEditor = new BooleanFieldEditor(KEY_TOOLCHAIN_SELECTION, - Messages.ui_use_arduino_toolchain_selection, BooleanFieldEditor.DEFAULT, parent); - addField(this.useArduinoToolchainSelectionEditor); - - createLine(parent, 4); - this.openSerialMonitorOpensSerialsOptionEditor = new BooleanFieldEditor(MyPreferences.KEY_OPEN_SERIAL_WITH_MONITOR, - Messages.ui_open_serial_with_monitor, BooleanFieldEditor.DEFAULT, parent); - addField(this.openSerialMonitorOpensSerialsOptionEditor); - createLine(parent, 4); + arduinoPrivateHardwarePathPathEditor = new PathEditor(KEY_PRIVATE_HARDWARE_PATHS, Messages.ui_private_hardware_path, + Messages.ui_private_hardware_path_help, rootParent); + addField(arduinoPrivateHardwarePathPathEditor); - this.automaticallyImportLibrariesOptionEditor = new BooleanFieldEditor(KEY_AUTO_IMPORT_LIBRARIES, - Messages.ui_auto_import_libraries, BooleanFieldEditor.DEFAULT, parent); - addField(this.automaticallyImportLibrariesOptionEditor); - this.automaticallyInstallLibrariesOptionEditor = new BooleanFieldEditor(MyPreferences.KEY_AUTO_INSTALL_LIBRARIES, - Messages.ui_auto_install_libraries, BooleanFieldEditor.DEFAULT, parent); - addField(this.automaticallyInstallLibrariesOptionEditor); + Composite parent = new Composite(rootParent, SWT.NONE); + GridData gd1=new GridData(SWT.BEGINNING,SWT.CENTER,false,false); + //gd1.horizontalSpan=2; + parent.setLayoutData(gd1); + parent.setLayout(new GridLayout(1,false)); - this.pragmaOnceHeaderOptionEditor = new BooleanFieldEditor(KEY_PRAGMA_ONCE_HEADERS, Messages.ui_pragma_once_headers, - BooleanFieldEditor.DEFAULT, parent); - addField(this.pragmaOnceHeaderOptionEditor); - this.cleanSerialMonitorAfterUploadEditor = new BooleanFieldEditor(MyPreferences.KEY_CLEAN_MONITOR_AFTER_UPLOAD, - Messages.ui_clean_serial_monitor_after_upload, BooleanFieldEditor.DEFAULT, parent); - addField(this.cleanSerialMonitorAfterUploadEditor); + Group UIboxparent= new Group(parent, SWT.BORDER_SOLID ); + UIboxparent.setText(Messages.PreferencePage_UI_Behaviour_Group_Title); + UIboxparent.setFont(headerFont); + UIboxparent.setLayout(new GridLayout(2,true)); + GridData gd11=new GridData(SWT.FILL,SWT.TOP,true,false); + //gd11.horizontalSpan=4; + UIboxparent.setLayoutData(gd11); - this.switchToSerialMonitorAfterUploadEditor = new BooleanFieldEditor(MyPreferences.SWITCH_TO_MONITOR_AFTER_UPLOAD, - Messages.ui_switch_to_serial_monitor_after_upload, BooleanFieldEditor.DEFAULT, parent); - addField(this.switchToSerialMonitorAfterUploadEditor); + Composite UIbox = new Composite(UIboxparent, SWT.NONE); + GridData gd12=new GridData(SWT.FILL,SWT.TOP,true,false); + gd12.horizontalSpan=2; + UIbox.setLayoutData(gd12); + UIbox.setLayout(new GridLayout(2,false)); - this.enableParallelBuildForNewProjects = new BooleanFieldEditor(MyPreferences.KEY_ENABLE_PARALLEL_BUILD_FOR_NEW_PROJECTS, - Messages.ui_enable_parallel_build_for_new_projects, BooleanFieldEditor.DEFAULT, parent); - addField(this.enableParallelBuildForNewProjects); + String[][] YesNoAskOptions = new String[][] { { Messages.ui_ask_every_upload, "ASK" }, //$NON-NLS-1$ + { Messages.yes, TRUE }, { Messages.no, FALSE } }; + buildBeforeUploadOptionEditor = new ComboFieldEditor(MyPreferences.KEY_BUILD_BEFORE_UPLOAD_OPTION, + Messages.ui_build_before_upload, YesNoAskOptions, UIbox); + addField(buildBeforeUploadOptionEditor); + + Composite UIbox2 = new Composite(UIboxparent, SWT.NONE); + GridData gd13 = new GridData(SWT.FILL, SWT.TOP, true, false); + gd13.horizontalSpan = 2; + UIbox2.setLayoutData(gd13); + UIbox2.setLayout(new GridLayout(2, false)); + Dialog.applyDialogFont(UIbox2); + + openSerialMonitorOpensSerialsOptionEditor = new BooleanFieldEditor(MyPreferences.KEY_OPEN_SERIAL_WITH_MONITOR, + Messages.ui_open_serial_with_monitor, BooleanFieldEditor.DEFAULT, UIbox2); + addField(openSerialMonitorOpensSerialsOptionEditor); + + automaticallyImportLibrariesOptionEditor = new BooleanFieldEditor(KEY_AUTO_IMPORT_LIBRARIES, + Messages.ui_auto_import_libraries, BooleanFieldEditor.DEFAULT, UIbox2); + addField(automaticallyImportLibrariesOptionEditor); + + cleanSerialMonitorAfterUploadEditor = new BooleanFieldEditor(MyPreferences.KEY_CLEAN_MONITOR_AFTER_UPLOAD, + Messages.ui_clean_serial_monitor_after_upload, BooleanFieldEditor.DEFAULT, UIbox2); + addField(cleanSerialMonitorAfterUploadEditor); + + switchToSerialMonitorAfterUploadEditor = new BooleanFieldEditor(MyPreferences.SWITCH_TO_MONITOR_AFTER_UPLOAD, + Messages.ui_switch_to_serial_monitor_after_upload, BooleanFieldEditor.DEFAULT, UIbox2); + addField(switchToSerialMonitorAfterUploadEditor); + + + Group internalBehaviourGroup= new Group(parent, SWT.BORDER_SOLID); + internalBehaviourGroup.setText(Messages.PreferencePage_Internal_Behaviour_Group_Title); + GridData gd2=new GridData(SWT.FILL,SWT.TOP,true,false); + //gd2.horizontalSpan=2; + internalBehaviourGroup.setLayout(new GridLayout(2,true)); + internalBehaviourGroup.setLayoutData(gd2); + internalBehaviourGroup.setFont(headerFont); + + Composite internalBehaviourbox = new Composite(internalBehaviourGroup, SWT.NONE); + GridData gd14 = new GridData(SWT.FILL, SWT.TOP, true, false); + gd14.horizontalSpan = 2; + internalBehaviourbox.setLayoutData(gd14); + internalBehaviourbox.setLayout(new GridLayout(2, false)); + Dialog.applyDialogFont(internalBehaviourbox); + +// internalBehaviourGroup.setBackground(display.getSystemColor(SWT.COLOR_GREEN)); +// internalBehaviourbox.setBackground(display.getSystemColor(SWT.COLOR_RED)); + + useArduinoToolchainSelectionEditor = new BooleanFieldEditor(KEY_TOOLCHAIN_SELECTION, + Messages.ui_use_arduino_toolchain_selection, BooleanFieldEditor.DEFAULT, internalBehaviourbox); + addField(useArduinoToolchainSelectionEditor); + + pragmaOnceHeaderOptionEditor = new BooleanFieldEditor(KEY_PRAGMA_ONCE_HEADERS, Messages.ui_pragma_once_headers, + BooleanFieldEditor.DEFAULT, internalBehaviourbox); + addField(pragmaOnceHeaderOptionEditor); + + enableParallelBuildForNewProjects = new BooleanFieldEditor(MyPreferences.KEY_ENABLE_PARALLEL_BUILD_FOR_NEW_PROJECTS, + Messages.ui_enable_parallel_build_for_new_projects, BooleanFieldEditor.DEFAULT, internalBehaviourbox); + addField(enableParallelBuildForNewProjects); + + Group netWorkGroup= new Group(parent, SWT.BORDER_SOLID); + netWorkGroup.setText(Messages.PreferencePage_Network_Group_Title); + GridData gd3=new GridData(SWT.FILL,SWT.TOP,true,false); + //gd3.horizontalSpan=2; + netWorkGroup.setLayoutData(gd3); + netWorkGroup.setFont(headerFont); + netWorkGroup.setLayout(new GridLayout(2,true)); + + Composite netWorkbox = new Composite(netWorkGroup, SWT.NONE); + GridData gd15 = new GridData(SWT.FILL, SWT.TOP, true, false); + gd15.horizontalSpan = 2; + netWorkbox.setLayoutData(gd15); + netWorkbox.setLayout(new GridLayout(2, false)); + Dialog.applyDialogFont(netWorkbox); + + automaticallyInstallLibrariesOptionEditor = new BooleanFieldEditor(MyPreferences.KEY_AUTO_INSTALL_LIBRARIES, + Messages.ui_auto_install_libraries, BooleanFieldEditor.DEFAULT, netWorkbox); + addField(automaticallyInstallLibrariesOptionEditor); + + enableBonjour = new BooleanFieldEditor(KEY_USE_BONJOUR, + Messages.ui_enable_bonjour, BooleanFieldEditor.DEFAULT, netWorkbox); + addField(enableBonjour); - this.enableBonjour = new BooleanFieldEditor(KEY_USE_BONJOUR, - Messages.ui_enable_bonjour, BooleanFieldEditor.DEFAULT, parent); - addField(this.enableBonjour); } /** @@ -269,13 +340,5 @@ protected void performApply() { super.performApply(); } - private static void createLine(Composite parent, int ncol) { - Label line = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL | SWT.BOLD); - GridData gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.horizontalSpan = ncol; - line.setLayoutData(gridData); - } - - }