Skip to content

Commit 0917e35

Browse files
authored
fix(menuconfig): add menuconfig option in ESP-IDF menu (#1052)
1 parent e574281 commit 0917e35

4 files changed

Lines changed: 78 additions & 0 deletions

File tree

bundles/com.espressif.idf.sdk.config.ui/plugin.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@
3939
</reference>
4040
</visibleWhen>
4141
</command>
42+
<command
43+
commandId="com.espressif.idf.sdk.config.ui.command.menuConfig"
44+
icon="icons/sdkconfig.png"
45+
label="Menu Config"
46+
style="push">
47+
</command>
4248
</menuContribution>
4349
</extension>
4450
<extension
@@ -48,6 +54,11 @@
4854
id="com.espressif.idf.sdk.config.ui.command.setdefault"
4955
name="%command.name">
5056
</command>
57+
<command
58+
defaultHandler="com.espressif.idf.sdk.config.ui.OpenSdkConfigEditor"
59+
id="com.espressif.idf.sdk.config.ui.command.menuConfig"
60+
name="Open MenuConfig">
61+
</command>
5162
</extension>
5263
<extension
5364
point="org.eclipse.core.expressions.definitions">

bundles/com.espressif.idf.sdk.config.ui/src/com/espressif/idf/sdk/config/ui/Messages.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class Messages extends NLS
2727
public static String SDKConfigurationEditor_SDKConfiguration;
2828
public static String SDKConfigurationEditor_StartingJSONConfigServer;
2929
public static String SDKConfigurationEditor_UnableFindKConfigFile;
30+
public static String SDKConfigFileNotFound_ErrorMessage;
31+
public static String SDKConfigurationFileNotFound_Title;
3032
static
3133
{
3234
// initialize resource bundle
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.espressif.idf.sdk.config.ui;
2+
3+
import org.eclipse.core.commands.AbstractHandler;
4+
import org.eclipse.core.commands.ExecutionEvent;
5+
import org.eclipse.core.commands.ExecutionException;
6+
import org.eclipse.core.resources.IFile;
7+
import org.eclipse.core.resources.IProject;
8+
import org.eclipse.core.resources.IWorkspaceRoot;
9+
import org.eclipse.core.resources.ResourcesPlugin;
10+
import org.eclipse.core.runtime.CoreException;
11+
import org.eclipse.jface.dialogs.MessageDialog;
12+
import org.eclipse.ui.IWorkbenchPage;
13+
import org.eclipse.ui.handlers.HandlerUtil;
14+
import org.eclipse.ui.ide.IDE;
15+
16+
public class OpenSdkConfigEditor extends AbstractHandler
17+
{
18+
19+
private static final String SDKCONFIG_FILE_NAME = "sdkconfig";
20+
21+
@Override
22+
public Object execute(ExecutionEvent event) throws ExecutionException
23+
{
24+
IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
25+
IProject project = getCurrentProject();
26+
try
27+
{
28+
IFile sdkConfigFile = project.getFile(SDKCONFIG_FILE_NAME);
29+
if (sdkConfigFile.exists())
30+
{
31+
IDE.openEditor(page, sdkConfigFile);
32+
}
33+
else
34+
{
35+
MessageDialog.openError(HandlerUtil.getActiveShell(event), Messages.SDKConfigurationFileNotFound_Title,
36+
Messages.SDKConfigFileNotFound_ErrorMessage);
37+
}
38+
}
39+
catch (CoreException e)
40+
{
41+
throw new ExecutionException("Error opening sdkconfig file", e);
42+
}
43+
44+
return null;
45+
}
46+
47+
/**
48+
* Get the currently selected project in the workspace.
49+
*/
50+
private IProject getCurrentProject()
51+
{
52+
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
53+
IProject[] projects = root.getProjects();
54+
for (IProject project : projects)
55+
{
56+
if (project.isOpen() && project.getFile(SDKCONFIG_FILE_NAME).exists())
57+
{
58+
return project;
59+
}
60+
}
61+
return null;
62+
}
63+
}

bundles/com.espressif.idf.sdk.config.ui/src/com/espressif/idf/sdk/config/ui/messages.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@ SDKConfigurationEditor_SaveChanges=Do you want to save the changes in the Design
1616
SDKConfigurationEditor_SDKConfiguration=SDK Configuration
1717
SDKConfigurationEditor_StartingJSONConfigServer=Starting JSON Configuration Server
1818
SDKConfigurationEditor_UnableFindKConfigFile=Unable to find kconfig_menus.json in the build config folder.\n
19+
SDKConfigFileNotFound_ErrorMessage=No sdkconfig file found in the project.
20+
SDKConfigurationFileNotFound_Title=sdkconfig missing

0 commit comments

Comments
 (0)