From b9c4271080258b8390ae78c932ff6b1bda24934b Mon Sep 17 00:00:00 2001 From: Ali Azam Rana <85216275+alirana01@users.noreply.github.com> Date: Thu, 27 Jul 2023 14:38:04 +0200 Subject: [PATCH] updated ui as per discussion --- .../espressif/idf/ui/dialogs/URLDialog.java | 85 ------------------- .../ui/tools/ToolsInstallationHandler.java | 14 +-- .../idf/ui/tools/messages.properties | 2 +- .../ManageToolsInstallationWizardPage.java | 17 ++++ 4 files changed, 25 insertions(+), 93 deletions(-) delete mode 100644 bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/URLDialog.java diff --git a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/URLDialog.java b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/URLDialog.java deleted file mode 100644 index fd9e2aa3b..000000000 --- a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/URLDialog.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright 2023 Espressif Systems (Shanghai) PTE LTD. All rights reserved. - * Use is subject to license terms. - *******************************************************************************/ -package com.espressif.idf.ui.dialogs; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.program.Program; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Shell; - -import com.espressif.idf.core.logging.Logger; - -/** - * URL Dialog class that can show multiple external web URLs in the text and - * make them click able and launches the default program to open them - * @author Ali Azam Rana - * - */ -public class URLDialog extends Dialog -{ - private static final String URL_REGEX = "\\b((http|https)://)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)"; //$NON-NLS-1$ - - private String text; - private String title; - - public URLDialog(Shell parentShell, String title, String text) - { - super(parentShell); - this.text = text; - this.title = title; - } - - @Override - protected Control createDialogArea(Composite parent) - { - Composite container = new Composite((Composite) super.createDialogArea(parent), SWT.NONE); - container.setLayout(new GridLayout()); - Link link = new Link(container, SWT.NONE); - link.setText(getTextForLinkControl()); - link.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true)); - link.addListener(SWT.Selection, e -> Program.launch(e.text)); - return container; - } - - @Override - protected void configureShell(Shell newShell) - { - super.configureShell(newShell); - newShell.setText(title); - } - - private String getTextForLinkControl() - { - StringBuilder stringBuilder = new StringBuilder(); - Pattern pattern = Pattern.compile(URL_REGEX); - Matcher matcher = pattern.matcher(text); - int startIndex = 0, endIndex = text.length(); - while (matcher.find()) - { - String url = matcher.group(); - Logger.log("URL Found: " + url); - endIndex = text.indexOf(url); - stringBuilder.append(text.substring(startIndex, endIndex)); - stringBuilder.append(""); //$NON-NLS-1$ - stringBuilder.append(url); - stringBuilder.append(""); //$NON-NLS-1$ - startIndex = endIndex + url.length(); - endIndex = text.length(); - } - if (stringBuilder.toString().isEmpty()) - { - stringBuilder.append(text); - } - return stringBuilder.toString(); - } -} diff --git a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/ToolsInstallationHandler.java b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/ToolsInstallationHandler.java index 448d6c0ac..8547327ca 100644 --- a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/ToolsInstallationHandler.java +++ b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/ToolsInstallationHandler.java @@ -49,7 +49,6 @@ import com.espressif.idf.core.util.IDFUtil; import com.espressif.idf.core.util.StringUtil; import com.espressif.idf.ui.UIPlugin; -import com.espressif.idf.ui.dialogs.URLDialog; import com.espressif.idf.ui.tools.wizard.pages.ManageToolsInstallationWizardPage; import com.espressif.idf.ui.update.InstallToolsHandler; @@ -638,21 +637,22 @@ else if (environment.containsKey("Path")) StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(Messages.MissingToolsValidationMessage_A); - stringBuilder.append(System.lineSeparator()); for (ToolsVO toolsVO : missingToolsVOs) { stringBuilder.append(toolsVO.getName()); - stringBuilder.append(System.lineSeparator()); + stringBuilder.append(" "); } stringBuilder.append(Messages.MissingToolsValidationMessage_B); - stringBuilder.append(System.lineSeparator()); + stringBuilder.append(""); stringBuilder.append(Messages.MissingToolsValidationLink); + stringBuilder.append(""); + + logQueue.add(stringBuilder.toString()); manageToolsInstallationWizardPage.getShell().getDisplay().asyncExec(() -> { - URLDialog urlDialog = new URLDialog(manageToolsInstallationWizardPage.getShell(), "Missing Tools", - stringBuilder.toString()); - urlDialog.open(); + manageToolsInstallationWizardPage.getLinkForDoc().setText(stringBuilder.toString()); + manageToolsInstallationWizardPage.getLinkForDoc().setVisible(true); }); } diff --git a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/messages.properties b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/messages.properties index 3ce48d71e..017182328 100644 --- a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/messages.properties +++ b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/messages.properties @@ -108,5 +108,5 @@ IDFDownloadWizard_UpdatingIDFPathMessage=Updating IDF_PATH to: {0} FilterTargetBoxToolTip=Filter the tools based on the target selection of ESP chips ShowAvailableVersionsOnlyToolTip=Shows the versions that are available already and downloaded. The versions should be in the espressif home directory to be visible with this. MissingToolsValidationMessage_A=Following required tools are missing: -MissingToolsValidationMessage_B=Please visit the Link below to see configuration for these tools +MissingToolsValidationMessage_B=Please visit the Link to see configuration for these tools MissingToolsValidationLink=https://github.com/espressif/idf-eclipse-plugin/blob/master/docs/MissingToolsManualPathUpdateGuide.md diff --git a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/wizard/pages/ManageToolsInstallationWizardPage.java b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/wizard/pages/ManageToolsInstallationWizardPage.java index 194a90a30..fff211bbb 100644 --- a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/wizard/pages/ManageToolsInstallationWizardPage.java +++ b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/tools/wizard/pages/ManageToolsInstallationWizardPage.java @@ -28,11 +28,13 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.ProgressBar; @@ -110,6 +112,7 @@ public class ManageToolsInstallationWizardPage extends WizardPage implements ITo private Preferences scopedPreferenceStore; private Button forceDownloadBtn; private Listener[] listenersForFinish; + private Link linkForDoc; public ManageToolsInstallationWizardPage(WizardDialog parentWizardDialog, ToolsJsonParser toolsJsonParser) { @@ -270,6 +273,10 @@ public void widgetSelected(SelectionEvent e) progressBar.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); progressBar.setVisible(false); + linkForDoc = new Link(logAreaComposite, SWT.WRAP | SWT.MULTI); + linkForDoc.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 3)); + linkForDoc.addListener(SWT.Selection, e -> Program.launch(e.text)); + linkForDoc.setVisible(false); createButtonsBar(logAreaComposite); setButtonsEnabled(itemChecked); @@ -942,6 +949,16 @@ public void afterDeleteToolMessage() } } + public Link getLinkForDoc() + { + return linkForDoc; + } + + public void setLinkForDoc(Link linkForDoc) + { + this.linkForDoc = linkForDoc; + } + private class SelectRecommendedButtonSelectionAdapter extends SelectionAdapter { @Override