blob: 5ee481220d4bf3b093c978dab1f3d8c9aca9746f [file] [log] [blame]
/*
* Copyright (c) 2014-2016, 2018 Eike Stepper (Loehne, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.oomph.version.ui.dialogs;
import org.eclipse.oomph.internal.version.IVersionBuilderArguments;
import org.eclipse.oomph.internal.version.VersionBuilderArguments;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
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.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
/**
* @author Eike Stepper
*/
public class ConfigurationDialog extends TitleAreaDialog implements IVersionBuilderArguments
{
private static final String PATH_LABEL = "Path to release specification file";
private static final String BUILDER_CONFIGURATION = "Version Builder Configuration";
private VersionBuilderArguments values;
private Text releasePathText;
private Button ignoreMalformedVersionsButton;
private Button ignoreFeatureNatureButton;
private Button ignoreSchemaBuilderButton;
private Button ignoreDebugOptionsButton;
private Button ignoreAutomaticModuleNameButton;
private Button ignoreMissingDependencyRangesButton;
private Button ignoreLaxLowerBoundDependencyButton;
private Button ignoreMissingExportVersionsButton;
private Button ignoreFeatureContentChangesButton;
private Button ignoreFeatureContentRedundancyButton;
private Button checkFeatureClosureCompletenessButton;
private Button checkFeatureClosureContentButton;
private Button checkMavenPomButton;
public ConfigurationDialog(Shell parentShell, VersionBuilderArguments defaults)
{
super(parentShell);
setHelpAvailable(false);
values = new VersionBuilderArguments(defaults);
}
@Override
protected void configureShell(Shell newShell)
{
newShell.setText(BUILDER_CONFIGURATION);
super.configureShell(newShell);
}
@Override
protected Control createDialogArea(Composite parent)
{
setTitle(BUILDER_CONFIGURATION);
setMessage("Select a release specification file and check additional settings.");
Composite dialogArea = (Composite)super.createDialogArea(parent);
Composite composite = new Composite(dialogArea, SWT.NONE);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
new Label(composite, SWT.NONE).setText(PATH_LABEL + ": ");
releasePathText = new Text(composite, SWT.BORDER);
releasePathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
String releasePath = values.getReleasePath();
if (releasePath != null)
{
releasePathText.setText(releasePath);
}
releasePathText.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
validate();
}
});
SelectionListener buttonListener = new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
validate();
}
};
ignoreMalformedVersionsButton = new Button(composite, SWT.CHECK);
ignoreMalformedVersionsButton.setText("Ignore malformed versions");
ignoreMalformedVersionsButton.setSelection(values.isIgnoreMalformedVersions());
ignoreMalformedVersionsButton.addSelectionListener(buttonListener);
ignoreFeatureNatureButton = new Button(composite, SWT.CHECK);
ignoreFeatureNatureButton.setText("Ignore feature nature");
ignoreFeatureNatureButton.setSelection(values.isIgnoreFeatureNature());
ignoreFeatureNatureButton.addSelectionListener(buttonListener);
ignoreSchemaBuilderButton = new Button(composite, SWT.CHECK);
ignoreSchemaBuilderButton.setText("Ignore schema builder");
ignoreSchemaBuilderButton.setSelection(values.isIgnoreSchemaBuilder());
ignoreSchemaBuilderButton.addSelectionListener(buttonListener);
ignoreDebugOptionsButton = new Button(composite, SWT.CHECK);
ignoreDebugOptionsButton.setText("Ignore debug options");
ignoreDebugOptionsButton.setSelection(values.isIgnoreDebugOptions());
ignoreDebugOptionsButton.addSelectionListener(buttonListener);
ignoreAutomaticModuleNameButton = new Button(composite, SWT.CHECK);
ignoreAutomaticModuleNameButton.setText("Ignore automatic module name");
ignoreAutomaticModuleNameButton.setSelection(values.isIgnoreAutomaticModuleName());
ignoreAutomaticModuleNameButton.addSelectionListener(buttonListener);
ignoreMissingDependencyRangesButton = new Button(composite, SWT.CHECK);
ignoreMissingDependencyRangesButton.setText("Ignore missing dependency version ranges");
ignoreMissingDependencyRangesButton.setSelection(values.isIgnoreMissingDependencyRanges());
ignoreMissingDependencyRangesButton.addSelectionListener(buttonListener);
ignoreLaxLowerBoundDependencyButton = new Button(composite, SWT.CHECK);
ignoreLaxLowerBoundDependencyButton.setText("Ignore lax lower bound dependency versions");
ignoreLaxLowerBoundDependencyButton.setSelection(values.isIgnoreLaxLowerBoundDependencyVersions());
ignoreLaxLowerBoundDependencyButton.addSelectionListener(buttonListener);
ignoreMissingExportVersionsButton = new Button(composite, SWT.CHECK);
ignoreMissingExportVersionsButton.setText("Ignore missing package export versions");
ignoreMissingExportVersionsButton.setSelection(values.isIgnoreMissingExportVersions());
ignoreMissingExportVersionsButton.addSelectionListener(buttonListener);
ignoreFeatureContentChangesButton = new Button(composite, SWT.CHECK);
ignoreFeatureContentChangesButton.setText("Ignore feature content changes");
ignoreFeatureContentChangesButton.setSelection(values.isIgnoreFeatureContentChanges());
ignoreFeatureContentChangesButton.addSelectionListener(buttonListener);
ignoreFeatureContentRedundancyButton = new Button(composite, SWT.CHECK);
ignoreFeatureContentRedundancyButton.setText("Ignore feature content redundancy");
ignoreFeatureContentRedundancyButton.setSelection(values.isIgnoreFeatureContentRedundancy());
ignoreFeatureContentRedundancyButton.addSelectionListener(buttonListener);
checkFeatureClosureCompletenessButton = new Button(composite, SWT.CHECK);
checkFeatureClosureCompletenessButton.setText("Check feature closure completeness");
checkFeatureClosureCompletenessButton.setSelection(values.isCheckFeatureClosureCompleteness());
checkFeatureClosureCompletenessButton.addSelectionListener(buttonListener);
checkFeatureClosureContentButton = new Button(composite, SWT.CHECK);
checkFeatureClosureContentButton.setText("Check feature closure content");
checkFeatureClosureContentButton.setSelection(values.isCheckFeatureClosureContent());
checkFeatureClosureContentButton.addSelectionListener(buttonListener);
checkMavenPomButton = new Button(composite, SWT.CHECK);
checkMavenPomButton.setText("Check Maven POM");
checkMavenPomButton.setSelection(values.isCheckMavenPom());
checkMavenPomButton.addSelectionListener(buttonListener);
validate();
return dialogArea;
}
protected void validate()
{
if (releasePathText.getText().trim().length() == 0)
{
setErrorMessage(PATH_LABEL + " is empty.");
return;
}
boolean redundancyCheck = !ignoreFeatureContentRedundancyButton.getSelection();
boolean completenessCheck = checkFeatureClosureCompletenessButton.getSelection();
if (redundancyCheck && completenessCheck)
{
setErrorMessage("Redundancy and completeness checks cannot be done at the same time.");
return;
}
setErrorMessage(null);
}
@Override
protected void okPressed()
{
values.setReleasePath(releasePathText.getText());
values.setIgnoreMalformedVersions(ignoreMalformedVersionsButton.getSelection());
values.setIgnoreFeatureNature(ignoreFeatureNatureButton.getSelection());
values.setIgnoreSchemaBuilder(ignoreSchemaBuilderButton.getSelection());
values.setIgnoreDebugOptions(ignoreDebugOptionsButton.getSelection());
values.setIgnoreAutomaticModuleName(ignoreAutomaticModuleNameButton.getSelection());
values.setIgnoreMissingDependencyRanges(ignoreMissingDependencyRangesButton.getSelection());
values.setIgnoreLaxLowerBoundDependencyVersions(ignoreLaxLowerBoundDependencyButton.getSelection());
values.setIgnoreMissingExportVersions(ignoreMissingExportVersionsButton.getSelection());
values.setIgnoreFeatureContentChanges(ignoreFeatureContentChangesButton.getSelection());
values.setIgnoreFeatureContentRedundancy(ignoreFeatureContentRedundancyButton.getSelection());
values.setCheckFeatureClosureCompleteness(checkFeatureClosureCompletenessButton.getSelection());
values.setCheckFeatureClosureContent(checkFeatureClosureContentButton.getSelection());
values.setCheckMavenPom(checkMavenPomButton.getSelection());
super.okPressed();
}
public String getReleasePath()
{
return values.getReleasePath();
}
public String getValidatorClassName()
{
return values.getValidatorClassName();
}
public boolean isIgnoreMalformedVersions()
{
return values.isIgnoreMalformedVersions();
}
public boolean isIgnoreFeatureNature()
{
return values.isIgnoreFeatureNature();
}
public boolean isIgnoreSchemaBuilder()
{
return values.isIgnoreSchemaBuilder();
}
public boolean isIgnoreDebugOptions()
{
return values.isIgnoreDebugOptions();
}
public boolean isIgnoreAutomaticModuleName()
{
return values.isIgnoreAutomaticModuleName();
}
public boolean isIgnoreMissingDependencyRanges()
{
return values.isIgnoreMissingDependencyRanges();
}
public boolean isIgnoreLaxLowerBoundDependencyVersions()
{
return values.isIgnoreLaxLowerBoundDependencyVersions();
}
public boolean isIgnoreMissingExportVersions()
{
return values.isIgnoreMissingExportVersions();
}
public boolean isIgnoreFeatureContentChanges()
{
return values.isIgnoreFeatureContentChanges();
}
public boolean isIgnoreFeatureContentRedundancy()
{
return values.isIgnoreFeatureContentRedundancy();
}
public boolean isCheckFeatureClosureCompleteness()
{
return values.isCheckFeatureClosureCompleteness();
}
public boolean isCheckFeatureClosureContent()
{
return values.isCheckFeatureClosureContent();
}
public boolean isCheckMavenPom()
{
return values.isCheckMavenPom();
}
public void applyTo(IProject project) throws CoreException
{
values.applyTo(project);
}
public int size()
{
return values.size();
}
public boolean isEmpty()
{
return values.isEmpty();
}
public String get(Object key)
{
return values.get(key);
}
public boolean containsKey(Object key)
{
return values.containsKey(key);
}
public String put(String key, String value)
{
return values.put(key, value);
}
public void putAll(Map<? extends String, ? extends String> m)
{
values.putAll(m);
}
public String remove(Object key)
{
return values.remove(key);
}
public void clear()
{
values.clear();
}
public boolean containsValue(Object value)
{
return values.containsValue(value);
}
public Set<String> keySet()
{
return values.keySet();
}
public Collection<String> values()
{
return values.values();
}
public Set<java.util.Map.Entry<String, String>> entrySet()
{
return values.entrySet();
}
@Override
public boolean equals(Object o)
{
return values.equals(o);
}
@Override
public int hashCode()
{
return values.hashCode();
}
}