package com.redhat.ceylon.eclipse.code.preferences;
import static com.redhat.ceylon.eclipse.core.builder.CeylonBuilder.areAstAwareIncrementalBuildsEnabled;
import static com.redhat.ceylon.eclipse.core.builder.CeylonBuilder.compileToJava;
import static com.redhat.ceylon.eclipse.core.builder.CeylonBuilder.compileToJs;
import static com.redhat.ceylon.eclipse.core.builder.CeylonBuilder.getSuppressedWarnings;
import static com.redhat.ceylon.eclipse.core.builder.CeylonBuilder.getVerbose;
import static com.redhat.ceylon.eclipse.core.builder.CeylonBuilder.isExplodeModulesEnabled;
import static com.redhat.ceylon.eclipse.java2ceylon.Java2CeylonProxies.modelJ2C;
import static com.redhat.ceylon.eclipse.util.InteropUtils.toCeylonBoolean;
import static com.redhat.ceylon.eclipse.util.InteropUtils.toCeylonString;
import org.eclipse.core.resources.IProject;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.dialogs.PropertyPage;
import com.redhat.ceylon.eclipse.core.builder.CeylonNature;
import com.redhat.ceylon.eclipse.ui.CeylonPlugin;
import com.redhat.ceylon.ide.common.model.BaseCeylonProject;
import com.redhat.ceylon.ide.common.model.CeylonProjectConfig;
public class CeylonRepoPropertiesPage extends PropertyPage {
public static final String ID =
CeylonPlugin.PLUGIN_ID + ".preferences.repos";
private CeylonRepoConfigBlock block;
@Override
public boolean performOk() {
if (!isValid()) {
return false;
}
IProject project = getSelectedProject();
BaseCeylonProject ceylonProject =
modelJ2C().ceylonModel()
.getProject(project);
CeylonProjectConfig projectConfig =
ceylonProject.getConfiguration();
block.applyToConfiguration(projectConfig);
projectConfig.setOutputRepo(block.getOutputRepo());
projectConfig.setProjectSuppressWarningsEnum(
getSuppressedWarnings(project));
projectConfig.setProjectOverrides(
toCeylonString(block.getOverrides()));
projectConfig.setProjectFlatClasspath(
toCeylonBoolean(block.getFlatClasspath()));
projectConfig.setProjectAutoExportMavenDependencies(
toCeylonBoolean(block.getAutoExportMavenDependencies()));
projectConfig.setProjectFullyExportMavenDependencies(
toCeylonBoolean(block.getFullyExportMavenDependencies()));
projectConfig.save();
if (CeylonNature.isEnabled(project)) {
boolean explodeModules =
isExplodeModulesEnabled(project);
boolean compileJs = compileToJs(project);
boolean compileJava = compileToJava(project);
boolean astAwareIncrementalBuildsEnabled =
areAstAwareIncrementalBuildsEnabled(project);
String verbose = getVerbose(project);
new CeylonNature(block.getSystemRepo(),
explodeModules, compileJava, compileJs,
astAwareIncrementalBuildsEnabled,
verbose).addToProject(project);
}
return true;
}
@Override
protected void performDefaults() {
block.performDefaults();
super.performDefaults();
}
@Override
protected Control createContents(Composite composite) {
IProject project = getSelectedProject();
block = new CeylonRepoConfigBlock(
new CeylonRepoConfigBlock.ValidationCallback() {
@Override
public void validationResultChange
(boolean isValid, String message) {
setValid(isValid);
setErrorMessage(message);
}
});
block.initContents(composite);
block.initState(project,
project.isOpen() &&
CeylonNature.isEnabled(project));
return composite;
}
private IProject getSelectedProject() {
return (IProject)
getElement().getAdapter(IProject.class);
}
}