bndtools.editor.project.BuildOperationsPart Maven / Gradle / Ivy
The newest version!
package bndtools.editor.project;
import org.bndtools.core.ui.icons.Icons;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.WorkspaceJob;
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.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.SectionPart;
import org.eclipse.ui.forms.editor.IFormPage;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ImageHyperlink;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.ide.ResourceUtil;
public class BuildOperationsPart extends SectionPart {
private static final Image refreshImg = Icons.image("icons/arrow_refresh.png");
private static final Image cleanImg = Icons.image("icons/clear.gif");
/**
* Create the SectionPart.
*
* @param parent
* @param toolkit
* @param style
*/
public BuildOperationsPart(Composite parent, FormToolkit toolkit, int style) {
super(parent, toolkit, style);
createClient(getSection(), toolkit);
}
/**
* Fill the section.
*/
private void createClient(Section section, FormToolkit toolkit) {
section.setText("Build Operations");
Composite container = toolkit.createComposite(section);
section.setClient(container);
container.setLayout(new GridLayout(1, false));
ImageHyperlink lnkRebuildProject = toolkit.createImageHyperlink(container, SWT.NONE);
lnkRebuildProject.addHyperlinkListener(new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent e) {
IResource resource = findEditorResource();
if (resource != null) {
RebuildJob job = new RebuildJob(resource.getProject(), IncrementalProjectBuilder.FULL_BUILD);
job.setUser(true);
job.schedule();
}
}
});
toolkit.paintBordersFor(lnkRebuildProject);
lnkRebuildProject.setText("Rebuild Project");
lnkRebuildProject.setImage(refreshImg);
ImageHyperlink lnkCleanProject = toolkit.createImageHyperlink(container, SWT.NONE);
toolkit.paintBordersFor(lnkCleanProject);
lnkCleanProject.setText("Clean Project");
lnkCleanProject.setImage(cleanImg);
lnkCleanProject.addHyperlinkListener(new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent e) {
IResource resource = findEditorResource();
if (resource != null) {
RebuildJob job = new RebuildJob(resource.getProject(), IncrementalProjectBuilder.CLEAN_BUILD);
job.setUser(true);
job.schedule();
}
}
});
}
private IResource findEditorResource() {
IFormPage formPage = (IFormPage) getManagedForm().getContainer();
IResource resource = ResourceUtil.getResource(formPage.getEditorInput());
return resource;
}
private static class RebuildJob extends WorkspaceJob {
private final IProject project;
private final int buildType;
public RebuildJob(IProject project, int buildType) {
super("Rebuild");
this.project = project;
this.buildType = buildType;
}
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
project.build(buildType, monitor);
return Status.OK_STATUS;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy