diff options
author | Eike Stepper | 2012-08-28 12:01:41 +0000 |
---|---|---|
committer | Eike Stepper | 2012-08-28 12:01:41 +0000 |
commit | 75c6827aa0a46243d7e8a5e6e542cea46947286f (patch) | |
tree | 8ccf2a8aad52aa1ac81500e79bc24d212f7e852b /plugins/org.eclipse.emf.cdo.releng.version.ui | |
parent | 5a8360ab2bbf49f8eb9a84d48f31fee7af28bfe0 (diff) | |
download | cdo-75c6827aa0a46243d7e8a5e6e542cea46947286f.tar.gz cdo-75c6827aa0a46243d7e8a5e6e542cea46947286f.tar.xz cdo-75c6827aa0a46243d7e8a5e6e542cea46947286f.zip |
Add Manage Ignored Releases
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.releng.version.ui')
4 files changed, 198 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.releng.version.ui/plugin.xml b/plugins/org.eclipse.emf.cdo.releng.version.ui/plugin.xml index f530571d43..772ccaf344 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version.ui/plugin.xml +++ b/plugins/org.eclipse.emf.cdo.releng.version.ui/plugin.xml @@ -90,4 +90,13 @@ </markerResolutionGenerator> </extension> + <extension + point="org.eclipse.ui.preferencePages"> + <page + class="org.eclipse.emf.cdo.releng.version.ui.preferences.VersionBuilderPreferencePage" + id="org.eclipse.emf.cdo.releng.version.ui.preferences.VersionBuilderPreferencePage" + name="Extended Version Management"> + </page> + </extension> + </plugin> diff --git a/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java new file mode 100644 index 0000000000..2c89e3265f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/preferences/VersionBuilderPreferencePage.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.version.ui.preferences; + +import org.eclipse.emf.cdo.releng.internal.version.Activator; +import org.eclipse.emf.cdo.releng.version.VersionUtil; + +import org.eclipse.jface.preference.PreferencePage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +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.List; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +import java.util.ArrayList; +import java.util.Collections; + +/** + * @author Eike Stepper + */ +public class VersionBuilderPreferencePage extends PreferencePage implements IWorkbenchPreferencePage +{ + public VersionBuilderPreferencePage() + { + super("XXX"); + setDescription("Manage ignored releases:"); + } + + public void init(IWorkbench workbench) + { + // Do nothing + } + + @Override + protected Control createContents(Composite parent) + { + GridLayout layout = new GridLayout(); + layout.marginWidth = 0; + layout.marginHeight = 0; + layout.numColumns = 2; + + Composite composite = new Composite(parent, SWT.NONE); + composite.setLayout(layout); + + final List list = new List(composite, SWT.BORDER | SWT.SINGLE); + list.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); + + java.util.List<String> ignoredReleases = new ArrayList<String>(Activator.getIgnoredReleases()); + Collections.sort(ignoredReleases); + for (String releasePath : ignoredReleases) + { + list.add(releasePath); + } + + final Button button = new Button(composite, SWT.PUSH); + button.setText("Remove"); + button.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + button.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent e) + { + String releasePath = getSelectedReleasePath(list); + if (releasePath != null) + { + list.remove(releasePath); + Activator.getIgnoredReleases().remove(releasePath); + VersionUtil.cleanReleaseProjects(releasePath); + adjustEnablement(list, button); + } + } + }); + + adjustEnablement(list, button); + list.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent e) + { + adjustEnablement(list, button); + } + }); + + return composite; + } + + private String getSelectedReleasePath(List list) + { + String[] selection = list.getSelection(); + if (selection != null && selection.length != 0) + { + return selection[0]; + } + + return null; + } + + private void adjustEnablement(final List list, final Button button) + { + button.setEnabled(getSelectedReleasePath(list) != null); + } +} diff --git a/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/quickfixes/ReleasePathResolution.java b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/quickfixes/ReleasePathResolution.java new file mode 100644 index 0000000000..b584e871b1 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/quickfixes/ReleasePathResolution.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.releng.version.ui.quickfixes; + +import org.eclipse.emf.cdo.releng.internal.version.VersionBuilderArguments; +import org.eclipse.emf.cdo.releng.version.Markers; +import org.eclipse.emf.cdo.releng.version.VersionUtil; +import org.eclipse.emf.cdo.releng.version.ui.Activator; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IProject; + +import java.util.Set; + +/** + * @author Eike Stepper + */ +public class ReleasePathResolution extends AbstractResolution +{ + public ReleasePathResolution(IMarker marker) + { + super(marker, "Add to ignored releases", Activator.CORRECTION_CONFIGURE_GIF); + } + + @Override + protected boolean isApplicable(IMarker marker) + { + return Markers.RELEASE_PATH_PROBLEM.equals(Markers.getProblemType(marker)); + } + + @Override + public String getDescription() + { + IMarker marker = getMarker(); + IProject project = marker.getResource().getProject(); + VersionBuilderArguments arguments = new VersionBuilderArguments(project); + + return "Add '" + + arguments.getReleasePath() + + "' to the set of ignored releases in the Version Management preferences. To re-enable this release use the Preferences dialog and manage the set of ignored releases."; + } + + @Override + protected void apply(IMarker marker) throws Exception + { + IProject project = marker.getResource().getProject(); + VersionBuilderArguments arguments = new VersionBuilderArguments(project); + final String releasePath = arguments.getReleasePath(); + + Set<String> ignoredReleases = org.eclipse.emf.cdo.releng.internal.version.Activator.getIgnoredReleases(); + if (ignoredReleases.add(releasePath)) + { + VersionUtil.cleanReleaseProjects(releasePath); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/quickfixes/VersionResolutionGenerator.java b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/quickfixes/VersionResolutionGenerator.java index d790f5d0f9..a8c03bc0ba 100644 --- a/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/quickfixes/VersionResolutionGenerator.java +++ b/plugins/org.eclipse.emf.cdo.releng.version.ui/src/org/eclipse/emf/cdo/releng/version/ui/quickfixes/VersionResolutionGenerator.java @@ -68,6 +68,10 @@ public class VersionResolutionGenerator implements IMarkerResolutionGenerator2 { resolutions.add(new RootProjectResolution(marker)); } + else if (Markers.RELEASE_PATH_PROBLEM.equals(problemType)) + { + resolutions.add(new ReleasePathResolution(marker)); + } String ignoreOption = Markers.getQuickFixConfigureOption(marker); if (ignoreOption != null) @@ -106,6 +110,11 @@ public class VersionResolutionGenerator implements IMarkerResolutionGenerator2 return true; } + if (Markers.RELEASE_PATH_PROBLEM.equals(problemType)) + { + return true; + } + return false; } } |