diff options
author | Andrew Ferrazzutti | 2014-08-13 19:33:13 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2014-09-04 20:48:11 +0000 |
commit | a8dceb1039f19c1e25ac0e86646da0aac1dc2942 (patch) | |
tree | 0841159511d40ae1a64e003aebad648e014922f6 | |
parent | e25ab73d894f4df5d90c7f980aa8e70d8ae55536 (diff) | |
download | org.eclipse.linuxtools-a8dceb1039f19c1e25ac0e86646da0aac1dc2942.tar.gz org.eclipse.linuxtools-a8dceb1039f19c1e25ac0e86646da0aac1dc2942.tar.xz org.eclipse.linuxtools-a8dceb1039f19c1e25ac0e86646da0aac1dc2942.zip |
RPM: Edit targets of "Build RPM" commands.
-The "Build RPM" toolbar button now only targets the currently
active .spec file editor rather than the active selection.
-Prevent RPM Builds from being possible for projects without
an RPM nature.
-Prevent RPM popup menu options from appearing when the active
selection contains more than one element.
Change-Id: I31aa2c5827b2fa4acf692f764a64dbd7b4fc25d9
Signed-off-by: Andrew Ferrazzutti <aferrazz@redhat.com>
Reviewed-on: https://git.eclipse.org/r/31564
Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
Tested-by: Alexander Kurtakov <akurtako@redhat.com>
3 files changed, 77 insertions, 37 deletions
diff --git a/rpm/org.eclipse.linuxtools.rpm.core/plugin.xml b/rpm/org.eclipse.linuxtools.rpm.core/plugin.xml index d4d8fbeb97..8fca7b0b70 100644 --- a/rpm/org.eclipse.linuxtools.rpm.core/plugin.xml +++ b/rpm/org.eclipse.linuxtools.rpm.core/plugin.xml @@ -27,25 +27,30 @@ point="org.eclipse.core.expressions.definitions"> <definition id="org.eclipse.linuxtools.rpm.core.rpmfile"> - <iterate - ifEmpty="false"> - <or> - <adapt - type="org.eclipse.core.resources.IProject"> - <test - property="org.eclipse.core.resources.projectNature" - value="org.eclipse.linuxtools.rpm.core.rpmnature"> - </test> - </adapt> - <adapt - type="org.eclipse.core.resources.IResource"> - <test - property="org.eclipse.core.resources.name" - value="*.spec"> - </test> - </adapt> - </or> - </iterate> + <and> + <count + value="1"> + </count> + <iterate + ifEmpty="false"> + <or> + <adapt + type="org.eclipse.core.resources.IProject"> + <test + property="org.eclipse.core.resources.projectNature" + value="org.eclipse.linuxtools.rpm.core.rpmnature"> + </test> + </adapt> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.name" + value="*.spec"> + </test> + </adapt> + </or> + </iterate> + </and> </definition> </extension> </plugin> diff --git a/rpm/org.eclipse.linuxtools.rpm.ui/plugin.xml b/rpm/org.eclipse.linuxtools.rpm.ui/plugin.xml index 661fd9e3f7..4be0a6113c 100644 --- a/rpm/org.eclipse.linuxtools.rpm.ui/plugin.xml +++ b/rpm/org.eclipse.linuxtools.rpm.ui/plugin.xml @@ -224,6 +224,11 @@ name="buildType" optional="false"> </commandParameter> + <commandParameter + id="actOnEditor" + name="actOnEditor" + optional="true"> + </commandParameter> </command> </extension> <extension @@ -265,6 +270,10 @@ name="buildType" value="ALL"> </parameter> + <parameter + name="actOnEditor" + value="true"> + </parameter> </command> </toolbar> </menuContribution> @@ -280,6 +289,10 @@ name="buildType" value="SOURCE"> </parameter> + <parameter + name="actOnEditor" + value="true"> + </parameter> </command> <command commandId="rpmEditor.build.command" @@ -291,6 +304,10 @@ name="buildType" value="BINARY"> </parameter> + <parameter + name="actOnEditor" + value="true"> + </parameter> </command> <command commandId="rpmEditor.build.command" @@ -302,6 +319,10 @@ name="buildType" value="ALL"> </parameter> + <parameter + name="actOnEditor" + value="true"> + </parameter> </command> </menuContribution> </extension> diff --git a/rpm/org.eclipse.linuxtools.rpm.ui/src/org/eclipse/linuxtools/internal/rpm/ui/handlers/SpecfileEditorRPMBuildHandler.java b/rpm/org.eclipse.linuxtools.rpm.ui/src/org/eclipse/linuxtools/internal/rpm/ui/handlers/SpecfileEditorRPMBuildHandler.java index 0a09076d51..db2bd85b96 100644 --- a/rpm/org.eclipse.linuxtools.rpm.ui/src/org/eclipse/linuxtools/internal/rpm/ui/handlers/SpecfileEditorRPMBuildHandler.java +++ b/rpm/org.eclipse.linuxtools.rpm.ui/src/org/eclipse/linuxtools/internal/rpm/ui/handlers/SpecfileEditorRPMBuildHandler.java @@ -29,6 +29,7 @@ import org.eclipse.linuxtools.rpm.core.RPMProject; import org.eclipse.linuxtools.rpm.core.RPMProjectLayout; import org.eclipse.linuxtools.rpm.ui.RPMExportOperation; import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchSite; @@ -42,16 +43,19 @@ import org.eclipse.ui.part.EditorPart; */ public class SpecfileEditorRPMBuildHandler extends AbstractHandler { + private static final String BUILD_TYPE = "buildType"; //$NON-NLS-1$ + private static final String ON_EDITOR = "actOnEditor"; //$NON-NLS-1$ protected RPMProject rpj; @Override public Object execute(ExecutionEvent event) throws ExecutionException { final IResource resource = getResource(event); - final String eventBuildType = event.getParameter("buildType"); //$NON-NLS-1$ rpj = getRPMProject(resource); - Job job = new RPMExportOperation(rpj, eventBuildType); - job.setUser(true); - job.schedule(); + if (rpj != null) { + Job job = new RPMExportOperation(rpj, event.getParameter(BUILD_TYPE)); + job.setUser(true); + job.schedule(); + } return null; } @@ -61,6 +65,17 @@ public class SpecfileEditorRPMBuildHandler extends AbstractHandler { * @return The resource that was selected. */ private static IResource getResource(ExecutionEvent event) { + final boolean actOnEditor = Boolean.valueOf(event.getParameter(ON_EDITOR)); + if (actOnEditor) { + IEditorPart epart = HandlerUtil.getActiveEditor(event); + if (epart != null) { + IEditorInput input = epart.getEditorInput(); + if (input instanceof IFileEditorInput) { + return ((IFileEditorInput) input).getFile(); + } + } + return null; + } IWorkbenchPart part = HandlerUtil.getActivePart(event); if (part == null) { return null; @@ -102,23 +117,22 @@ public class SpecfileEditorRPMBuildHandler extends AbstractHandler { * @return The RPMProject of the resource passed in. */ private static RPMProject getRPMProject(IResource resource) { - RPMProject rc = null; - try { - IProject parentProject = resource.getProject(); + if (resource != null) { + try { + IProject parentProject = resource.getProject(); - // determine if project selected is an RPMProject - if (parentProject.hasNature(IRPMConstants.RPM_NATURE_ID)) { - if (parentProject.getPersistentProperty(new QualifiedName(IRPMConstants.RPM_CORE_ID, IRPMConstants.SPECS_FOLDER)) != null){ - rc = new RPMProject(parentProject, RPMProjectLayout.RPMBUILD); - } else { - rc = new RPMProject(parentProject, RPMProjectLayout.FLAT); + // determine if project selected is an RPMProject + if (parentProject.hasNature(IRPMConstants.RPM_NATURE_ID)) { + if (parentProject.getPersistentProperty(new QualifiedName(IRPMConstants.RPM_CORE_ID, IRPMConstants.SPECS_FOLDER)) != null){ + return new RPMProject(parentProject, RPMProjectLayout.RPMBUILD); + } else { + return new RPMProject(parentProject, RPMProjectLayout.FLAT); + } } - } else { - rc = new RPMProject(parentProject, RPMProjectLayout.FLAT); + } catch (CoreException e) { + Activator.logError(Messages.getString("SpecfileEditorRPMBuildHandler.logRPMProjectError"), e); //$NON-NLS-1$ } - } catch (CoreException e) { - Activator.logError(Messages.getString("SpecfileEditorRPMBuildHandler.logRPMProjectError"), e); //$NON-NLS-1$ } - return rc; + return null; } } |