package org.osmorc.facet.ui;
import com.intellij.facet.impl.ProjectFacetsConfigurator;
import com.intellij.facet.impl.ui.FacetEditorImpl;
import com.intellij.facet.ui.FacetConfigurationQuickFix;
import com.intellij.facet.ui.FacetEditorContext;
import com.intellij.facet.ui.FacetEditorValidator;
import com.intellij.facet.ui.ValidationResult;
import com.intellij.openapi.roots.ui.configuration.FacetsProvider;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.Nullable;
import org.osmorc.facet.OsmorcFacet;
import org.osmorc.facet.OsmorcFacetConfiguration;
import javax.swing.*;
public class OsmorcFacetJarEditorValidator extends FacetEditorValidator {
private FacetEditorContext myEditorContext;
private OsmorcFacetJAREditorTab myJarEditorTab;
public OsmorcFacetJarEditorValidator(FacetEditorContext editorContext, OsmorcFacetJAREditorTab jarEditorTab) {
myEditorContext = editorContext;
myJarEditorTab = jarEditorTab;
}
@Nullable
private FacetEditorImpl getFacetEditor() {
FacetsProvider facetsProvider = myEditorContext.getFacetsProvider();
OsmorcFacet osmorcFacet = (OsmorcFacet)myEditorContext.getFacet();
ProjectFacetsConfigurator projectFacetsConfigurator = (ProjectFacetsConfigurator)facetsProvider;
return projectFacetsConfigurator.getEditor(osmorcFacet);
}
@Override
public ValidationResult check() {
OsmorcFacetConfiguration.OutputPathType type = myJarEditorTab.getSelectedOutputPathType();
if (type == OsmorcFacetConfiguration.OutputPathType.SpecificOutputPath) {
String path = myJarEditorTab.getSelectedOutputPath();
if (path.length() == 0) {
return new ValidationResult("You need to specify an output path for your bundle.", new FacetConfigurationQuickFix() {
@Override
public void run(JComponent place) {
FacetEditorImpl facetEditor = getFacetEditor();
if (facetEditor != null) {
facetEditor.setSelectedTabName(myJarEditorTab.getDisplayName());
myJarEditorTab.onOutputPathSelect();
}
}
});
}
}
if (StringUtil.isEmptyOrSpaces(myJarEditorTab.getJarFileName())) {
return new ValidationResult("You need to specify a filename for the JAR file.");
}
return ValidationResult.OK;
}
}