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+ }
0 commit comments