Skip to content

Commit

Permalink
updated to handle the finish button and target change bug
Browse files Browse the repository at this point in the history
  • Loading branch information
alirana01 committed Nov 14, 2023
1 parent 71e9020 commit d710d91
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,11 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.launchbar.core.ILaunchBarManager;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;
import org.eclipse.ui.console.MessageConsoleStream;
import org.osgi.framework.Bundle;

import com.espressif.idf.core.IDFConstants;
import com.espressif.idf.core.IDFProjectNature;
import com.espressif.idf.core.build.IDFLaunchConstants;
import com.espressif.idf.core.logging.Logger;
import com.espressif.idf.core.util.FileUtil;
import com.espressif.idf.ui.UIPlugin;
Expand All @@ -42,17 +38,13 @@ public class IDFProjectGenerator extends CMakeProjectGenerator

private File sourceTemplatePath;
private boolean copyIntoWorkspace;
private String target;
protected MessageConsoleStream console;
private ILaunchBarManager launchBarManager;

public IDFProjectGenerator(String manifestFile, File source, boolean copyIntoWorkspace, String target)
{
super(manifestFile);
this.sourceTemplatePath = source;
this.copyIntoWorkspace = copyIntoWorkspace;
this.target = target;
launchBarManager = UIPlugin.getService(ILaunchBarManager.class);
}

@Override
Expand All @@ -76,7 +68,6 @@ public void generate(Map<String, Object> model, IProgressMonitor monitor) throws
Logger.log("Source Template path:" + sourceTemplatePath); //$NON-NLS-1$
if (sourceTemplatePath == null)
{
setTarget();
// refresh to see the copied resources in the project explorer
getProject().refreshLocal(IResource.DEPTH_INFINITE, monitor);
return; // let's go with the default generate
Expand All @@ -98,38 +89,10 @@ public void generate(Map<String, Object> model, IProgressMonitor monitor) throws
}
}

setTarget();

// refresh to see the copied resources in the project explorer
project.refreshLocal(IResource.DEPTH_INFINITE, monitor);

}

private void setTarget() throws CoreException
{
ILaunchTarget launchTarget = findSuitableTargetForSelectedTargetString();
launchBarManager.setActiveLaunchTarget(launchTarget);
}

private ILaunchTarget findSuitableTargetForSelectedTargetString()
{
ILaunchTargetManager launchTargetManager = UIPlugin.getService(ILaunchTargetManager.class);
ILaunchTarget[] targets = launchTargetManager
.getLaunchTargetsOfType(IDFLaunchConstants.ESP_LAUNCH_TARGET_TYPE);

for (ILaunchTarget iLaunchTarget : targets)
{
String idfTarget = iLaunchTarget.getAttribute(IDFLaunchConstants.ATTR_IDF_TARGET,
null);
if (idfTarget.contentEquals(target))
{
return iLaunchTarget;
}
}

return null;
}

@Override
public Bundle getSourceBundle()
{
Expand Down Expand Up @@ -171,5 +134,4 @@ protected void copyIDFTemplateToWorkspace(String projectName, File sourceTemplat
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,33 @@

import java.io.File;

import org.eclipse.cdt.debug.internal.core.InternalDebugCoreMessages;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.launchbar.core.ILaunchBarManager;
import org.eclipse.launchbar.core.target.ILaunchTarget;
import org.eclipse.launchbar.core.target.ILaunchTargetManager;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.tools.templates.core.IGenerator;
import org.eclipse.tools.templates.ui.TemplateWizard;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;

import com.espressif.idf.core.IDFConstants;
import com.espressif.idf.core.build.IDFLaunchConstants;
import com.espressif.idf.core.logging.Logger;
import com.espressif.idf.ui.UIPlugin;
import com.espressif.idf.ui.handlers.EclipseHandler;
import com.espressif.idf.ui.handlers.NewProjectHandlerUtil;
import com.espressif.idf.ui.templates.IDFProjectGenerator;
Expand All @@ -33,7 +48,7 @@
@SuppressWarnings("restriction")
public class NewIDFProjectWizard extends TemplateWizard
{

public static final String TARGET_SWITCH_JOB = "TARGET SWITCH JOB"; //$NON-NLS-1$
private NewProjectCreationWizardPage projectCreationWizardPage;

public NewIDFProjectWizard()
Expand Down Expand Up @@ -86,9 +101,19 @@ public boolean performFinish()
selProvider.setSelection(new StructuredSelection(project));
}
}
final String target = projectCreationWizardPage.getSelectedTarget();
this.getShell().addDisposeListener(new DisposeListener()
{
@Override
public void widgetDisposed(DisposeEvent e)
{
TargetSwtichJob targetSwtichJob = new TargetSwtichJob(target);
targetSwtichJob.schedule();
}
});
return performFinish;
}

@Override
protected IGenerator getGenerator()
{
Expand All @@ -110,4 +135,82 @@ protected IGenerator getGenerator()
return generator;
}


private class TargetSwtichJob extends Job
{
private ILaunchBarManager launchBarManager;
private String target;
public TargetSwtichJob(String target)
{
super(TARGET_SWITCH_JOB);
this.target = target;
launchBarManager = UIPlugin.getService(ILaunchBarManager.class);
}


private Job findInternalJob()
{
for (Job job : Job.getJobManager().find(null))
{
if (job.getName().equals(InternalDebugCoreMessages.CoreBuildLaunchBarTracker_Job))
{
return job;
}
}

return null;
}


@Override
protected IStatus run(IProgressMonitor monitor)
{
Job job = findInternalJob();
while (job != null && job.getState() == Job.RUNNING)
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e1)
{
Logger.log(e1);
}
}

Display.getDefault().syncExec(() -> {
ILaunchTarget launchTarget = findSuitableTargetForSelectedTargetString();
try
{
launchBarManager.setActiveLaunchTarget(launchTarget);
}
catch (CoreException e)
{
Logger.log(e);
}
});

return Status.OK_STATUS;

}

private ILaunchTarget findSuitableTargetForSelectedTargetString()
{
ILaunchTargetManager launchTargetManager = UIPlugin.getService(ILaunchTargetManager.class);
ILaunchTarget[] targets = launchTargetManager
.getLaunchTargetsOfType(IDFLaunchConstants.ESP_LAUNCH_TARGET_TYPE);

for (ILaunchTarget iLaunchTarget : targets)
{
String idfTarget = iLaunchTarget.getAttribute(IDFLaunchConstants.ATTR_IDF_TARGET,
null);
if (idfTarget.contentEquals(target))
{
return iLaunchTarget;
}
}

return null;
}
}
}

0 comments on commit d710d91

Please sign in to comment.