package com.onpositive.appwrench.buildpath;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IncrementalProjectBuilder;
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.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbenchPropertyPage;
import org.eclipse.ui.dialogs.PropertyPage;
public class BuildPathPropertyPage extends PropertyPage implements
IWorkbenchPropertyPage {
private Button b;
public BuildPathPropertyPage() {
}
protected Control createContents(Composite parent) {
Composite h=new Composite(parent, SWT.NONE);
h.setLayout(new GridLayout(1,false));
b = new Button(h, SWT.CHECK);
b.setText("Pack referenced Java projects to lib folder");
IProject nq = (IProject) getElement();
try {
String persistentProperty = nq.getPersistentProperty(Activator.PACK_REFERENCED);
if (persistentProperty!=null){
b.setSelection(Boolean.parseBoolean(persistentProperty));
}
} catch (CoreException e) {
throw new IllegalStateException();
}
return h;
}
public boolean performOk() {
final IProject nq = (IProject) getElement();
try {
String persistentProperty = nq.getPersistentProperty(Activator.PACK_REFERENCED);
if (persistentProperty==null){
persistentProperty="";
}
boolean selection = b.getSelection();
String value = ""
+ selection;
nq.setPersistentProperty(Activator.PACK_REFERENCED, value);
if (!persistentProperty.equals(value)){
if (selection){
Job b=new Job("Build"){
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
nq.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
} catch (CoreException e) {
return e.getStatus();
}
return Status.OK_STATUS;
}
};
b.schedule();
}
}
} catch (CoreException e) {
throw new IllegalStateException(e);
}
return super.performOk();
}
}