package org.absmodels.abs.plugin.actions.runconfig.java;
import static org.absmodels.abs.plugin.util.UtilityFunctions.showErrorMessage;
import static org.absmodels.abs.plugin.util.UtilityFunctions.standardExceptionHandling;
import org.absmodels.abs.plugin.actions.runconfig.AbstractTab;
import org.absmodels.abs.plugin.util.Images;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
/**
* Tab for setting advanced options
*/
public class JavaTabAdvancedOptions extends AbstractTab {
private Button compileBeforeCheckbox;
private Button ignoreMissingFLIClassesCheckbox;
@Override
public void createControl(Composite parent) {
TabListener myListener = new TabListener(this);
Composite comp = new Composite(parent, SWT.NONE);
setCompositeLayout(comp);
createCompileBeforeCheckbox(myListener, comp);
createFLIignoreMissingClassesCheckbox(myListener, comp);
setControl(comp);
}
private void createFLIignoreMissingClassesCheckbox(TabListener myListener, Composite comp) {
ignoreMissingFLIClassesCheckbox = createCheckButton(comp, "Ignore missing [Foreign] classes");
ignoreMissingFLIClassesCheckbox.addListener(SWT.Selection, myListener);
}
private void createCompileBeforeCheckbox(TabListener myListener, Composite comp) {
compileBeforeCheckbox = createCheckButton(comp, "Skip compilation before run");
compileBeforeCheckbox.addListener(SWT.Selection, myListener);
}
private void setCompositeLayout(Composite comp) {
GridLayout gridLayout = new GridLayout(1, false);
gridLayout.verticalSpacing = 8;
comp.setLayout(gridLayout);
}
@Override
public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
new JavaLaunchConfig(configuration).setDefaults();
}
@Override
public void initializeFrom(ILaunchConfiguration configuration) {
JavaLaunchConfig cfg = new JavaLaunchConfig(configuration);
try {
compileBeforeCheckbox.setSelection( ! cfg.getCompileBefore());
ignoreMissingFLIClassesCheckbox.setSelection(cfg.getIgnoreMissingFLIClasses());
} catch (CoreException e) {
standardExceptionHandling(e);
showErrorMessage("Fatal error!");
}
}
@Override
public void performApply(ILaunchConfigurationWorkingCopy configuration) {
JavaLaunchConfig cfg = new JavaLaunchConfig(configuration);
cfg.setCompileBefore( ! compileBeforeCheckbox.getSelection());
cfg.setIgnoreMissingFLIClasses(ignoreMissingFLIClassesCheckbox.getSelection());
}
@Override
public String getName() {
return "Advanced";
}
@Override
public boolean isValid(ILaunchConfiguration launchConfig) {
return true;
}
@Override
public String getId() {
return "org.abs-models.abs.plugin.javaTab4";
}
@Override
public Image getImage() {
return Images.MAIN_BLOCK_IMAGE;
}
}