diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java index 86930364fd1..e0f3347910d 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java @@ -4732,7 +4732,6 @@ public class ManagedBuildManager extends AbstractCExtension { } } } - } /** diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java index 73ed1a76769..d36a1d8f5f6 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java @@ -1447,7 +1447,7 @@ public class GeneratedMakefileBuilder extends ACBuilder { OutputStream stdout = buildRunnerHelper.getOutputStream(); OutputStream stderr = buildRunnerHelper.getErrorStream(); - buildRunnerHelper.greeting(ManagedMakeMessages.getResourceString("BuildFilesHandler.buildingSelectedFiles"), cfgName, toolchainName, isSupported); //$NON-NLS-1$ + buildRunnerHelper.greeting(ManagedMakeMessages.getResourceString("GeneratedMakefileBuilder.buildingSelectedFiles"), cfgName, toolchainName, isSupported); //$NON-NLS-1$ buildRunnerHelper.printLine(ManagedMakeMessages.getResourceString("ManagedMakeBuilder.message.internal.builder.header.note")); //$NON-NLS-1$ // Build artifacts for each file in the project @@ -1574,7 +1574,7 @@ public class GeneratedMakefileBuilder extends ACBuilder { ErrorParserManager epm = new ErrorParserManager(project, des.getDefaultBuildDirLocationURI(), this, errorParsers); buildRunnerHelper.prepareStreams(epm, null , console, new SubProgressMonitor(monitor, TICKS_STREAM_PROGRESS_MONITOR)); - buildRunnerHelper.greeting(ManagedMakeMessages.getResourceString("CleanFilesHandler.cleanSelectedFiles"), cfgName, toolchainName, isSupported); //$NON-NLS-1$ + buildRunnerHelper.greeting(ManagedMakeMessages.getResourceString("GeneratedMakefileBuilder.cleanSelectedFiles"), cfgName, toolchainName, isSupported); //$NON-NLS-1$ buildRunnerHelper.printLine(ManagedMakeMessages.getResourceString("ManagedMakeBuilder.message.internal.builder.header.note")); //$NON-NLS-1$ for (IFile file : files) { diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties index 458e8f3806b..004db2f11db 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties @@ -115,7 +115,7 @@ UserDefinedMacroSupplier.storeOutputStream.wrong.arguments=Failed to persist mac # BuildMacroStatus messages BuildMacroStatus.status.macro.undefined=Macro {0} is undefined -BuildFilesHandler.buildingSelectedFiles=Building Selected Files +GeneratedMakefileBuilder.buildingSelectedFiles=Building Selected Files BuildDescriptionGnuMakefileGenerator.0=IO exception occurred: BuildDescriptionGnuMakefileGenerator.1=IO exception occurred: BuildMacroStatus.status.reference.eachother=Macros {0} and {1} reference each other @@ -144,8 +144,7 @@ ManagedBuilderCorePlugin.resourceChangeHandlingInitializationJob=Initializing Re InternalBuilder.msg.header=Internal Builder: {0} InternalBuilder.nothing.todo=Nothing to be done for project {0} CfgScannerConfigUtil_ErrorNotSupported=Only type {0} is supported in this method. -CleanFilesHandler.cleanSelectedFiles=Cleaning Selected Files -CleanFilesHandler.cleaningFiles=Cleaning files +GeneratedMakefileBuilder.cleanSelectedFiles=Cleaning Selected Files BuilderFactory.1=can not find builder with the specified id FolderInfo.4=converter invocation failed MbsMacroSupplier.1=tool parent must be one of configuration, toolchain, or resource configuration diff --git a/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF index ff182a48d1d..9efcfcd54ae 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF +++ b/build/org.eclipse.cdt.managedbuilder.ui/META-INF/MANIFEST.MF @@ -22,7 +22,8 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)", org.eclipse.ui;bundle-version="[3.2.0,4.0.0)", org.eclipse.ui.console;bundle-version="[3.5.100,4.0.0)", org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)", - org.eclipse.ui.navigator;bundle-version="[3.2.0,4.0.0)";resolution:=optional + org.eclipse.ui.navigator;bundle-version="[3.2.0,4.0.0)";resolution:=optional, + org.eclipse.core.expressions Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: com.ibm.icu.text diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties index 6d22cd22fa1..93aea465d5f 100755 --- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties +++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.properties @@ -37,13 +37,14 @@ propSettingsPrefName=Property Pages Settings MngResourceProp.name=C/C++ Build # The Project Converter page -ConvertTargetAction.label=Convert To... +command.convertTarget.label=Convert To... +command.convertTarget.name=Convert To # Build/clean selected files actions -BuildSelectedFiles.label=Build Selected &File(s) +command.buildFiles.label=Build Selected &File(s) command.buildFiles.name=Build Selected File(s) command.buildFiles.description=Rebuilds the selected source files -CleanSelectedFiles.label=C&lean Selected File(s) +command.cleanFiles.label=C&lean Selected File(s) command.cleanFiles.name=Clean Selected File(s) command.cleanFiles.description=Deletes build output files for the selected source files @@ -83,7 +84,7 @@ Tool.settings=Tool Settings Build.steps=Build Steps Build.artifact=Build Artifact Builder.settings=Builder Settings -WBB.settings=Behaviour +WBB.settings=Behavior Refresh.policy=Refresh Policy Includes=Includes Includes.tooltip=Includes list diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml index 32606262601..357e384856c 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml @@ -50,6 +50,10 @@ description="%command.buildFiles.description" categoryId="org.eclipse.cdt.managedbuilder.ui.category.build" id="org.eclipse.cdt.managedbuilder.ui.buildFiles"/> + + @@ -89,7 +96,7 @@ @@ -109,24 +116,46 @@ + + + + + + + + + + + + + + + + + + + + + + + - - - - files; BuildFilesJob(List filesToBuild) { - super(ManagedMakeMessages.getResourceString("BuildFilesHandler.buildingSelectedFiles")); //$NON-NLS-1$ + super(Messages.BuildFilesHandler_buildingSelectedFiles); files = filesToBuild; } diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/CleanFilesHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/CleanFilesHandler.java index 5e12e8bf17c..37074ee9126 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/CleanFilesHandler.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/CleanFilesHandler.java @@ -21,7 +21,6 @@ import org.eclipse.cdt.internal.ui.util.AbstractResourceActionHandler; import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; import org.eclipse.cdt.managedbuilder.internal.core.GeneratedMakefileBuilder; -import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IFile; @@ -115,7 +114,7 @@ public class CleanFilesHandler extends AbstractResourceActionHandler { private final List files; private CleanFilesJob(List filesToBuild) { - super(ManagedMakeMessages.getResourceString("CleanFilesHandler.cleaningFiles")); //$NON-NLS-1$ + super(Messages.CleanFilesHandler_cleaningFiles); files = filesToBuild; } diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetAction.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetAction.java deleted file mode 100644 index 89a70eecdff..00000000000 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetAction.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2012 Intel Corporation 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: - * Intel Corporation - initial API and implementation - * Anna Dushistova (MontaVista) - [366771]Converter fails to convert a CDT makefile project - *******************************************************************************/ -package org.eclipse.cdt.managedbuilder.internal.ui.actions; - -import java.util.Vector; - -import org.eclipse.cdt.managedbuilder.core.IBuildObject; -import org.eclipse.cdt.managedbuilder.core.IConfiguration; -import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; -import org.eclipse.cdt.managedbuilder.core.IManagedProject; -import org.eclipse.cdt.managedbuilder.core.IProjectType; -import org.eclipse.cdt.managedbuilder.core.IToolChain; -import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; -import org.eclipse.cdt.managedbuilder.internal.ui.Messages; -import org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIPlugin; -import org.eclipse.cdt.ui.CUIPlugin; -import org.eclipse.core.resources.IProject; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.actions.ActionDelegate; - -public class ConvertTargetAction - extends ActionDelegate - implements IObjectActionDelegate { - - private IProject selectedProject = null; - - public static final String PREFIX = "ProjectConvert"; //$NON-NLS-1$ - public static final String PROJECT_CONVERTER_DIALOG = PREFIX + ".title"; //$NON-NLS-1$ - - public static void initStartup() { - return; - } - - @Override - public void selectionChanged(IAction action, ISelection selection) { - if (selection instanceof IStructuredSelection) { - IStructuredSelection sel = (IStructuredSelection) selection; - Object obj = sel.getFirstElement(); - if (obj instanceof IProject) { - IProject project = (IProject)obj; - // Save the selected project. - setSelectedProject(project); - return; - } - } - setSelectedProject(null); - } - - private IProjectType getProjectType(IProject project) { - IProjectType projectType = null; - - // Get the projectType from project. - IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); - if (info != null) { - IManagedProject managedProject = info.getManagedProject(); - if ( managedProject != null ) - projectType = managedProject.getProjectType(); - } - return projectType; - } - - private Vector getProjectToolchains(IProject project) { - Vector projectToolchains = new Vector(); - - // Get the projectType from project. - IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); - if (info != null) { - IConfiguration[] configs = info.getManagedProject().getConfigurations(); - for (IConfiguration config : configs) { - IToolChain tc = config.getToolChain(); - if (tc != null) { - projectToolchains.add(tc); - } - } - } - return projectToolchains; - } - - @Override - public void run(IAction action) { - Shell shell = CUIPlugin.getActiveWorkbenchShell(); - - // Check whether the converters available for the selected project - // If there are no converters display error dialog otherwise display converters list - - if( ManagedBuildManager.hasTargetConversionElements(getProjectType(getSelectedProject())) == true || - ManagedBuildManager.hasAnyTargetConversionElements(getProjectToolchains(getSelectedProject()))) { - handleConvertTargetAction(); - } else { - MessageDialog.openError(shell,Messages.ConvertTargetAction_No_Converter, - NLS.bind(Messages.ProjectConvert_noConverterErrordialog_message, new String[] {getSelectedProject().getName()}) ); - } - } - - private void handleConvertTargetAction() { - Shell shell = ManagedBuilderUIPlugin.getDefault().getShell(); - - String projectName = getSelectedProject().getName(); - String title = NLS.bind(Messages.ProjectConvert_title, new String(projectName)); - ConvertTargetDialog dialog = new ConvertTargetDialog(shell, getSelectedProject(), title); - if ( dialog.open() == ConvertTargetDialog.OK ) { - if ( ConvertTargetDialog.isConversionSuccessful() == false) { - MessageDialog.openError(shell, Messages.ProjectConvert_conversionErrordialog_title, - NLS.bind(Messages.ProjectConvert_conversionErrordialog_message, projectName)); - } - } - return; - } - - @Override - public void setActivePart(IAction action, IWorkbenchPart targetPart) { - // TODO Auto-generated method stub - } - - /** - * @return Returns the selectedProject. - */ - private IProject getSelectedProject() { - return selectedProject; - } - - /** - * @param selectedProject The selectedProject to set. - */ - private void setSelectedProject(IProject selectedProject) { - this.selectedProject = selectedProject; - } -} diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetDialog.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetDialog.java index e5de8c8b859..812220e1b3a 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetDialog.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetDialog.java @@ -7,13 +7,15 @@ * * Contributors: * Intel Corporation - initial API and implementation - * Anna Dushistova (MontaVista) - [366771]Converter fails to convert a CDT makefile project + * Anna Dushistova (MontaVista) - [366771] Converter fails to convert a CDT makefile project + * Sergey Prigogin (Google) *******************************************************************************/ package org.eclipse.cdt.managedbuilder.internal.ui.actions; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Vector; import org.eclipse.cdt.managedbuilder.core.IBuildObject; import org.eclipse.cdt.managedbuilder.core.IConfiguration; @@ -23,7 +25,7 @@ import org.eclipse.cdt.managedbuilder.core.IManagedProject; import org.eclipse.cdt.managedbuilder.core.IProjectType; import org.eclipse.cdt.managedbuilder.core.IToolChain; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; -import org.eclipse.cdt.managedbuilder.internal.ui.Messages; +import org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIPlugin; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; @@ -39,35 +41,33 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class ConvertTargetDialog extends Dialog { - final private String title; - protected List convertersList; + protected org.eclipse.swt.widgets.List convertersList; private IProject project; private Map conversionElements; private IConfigurationElement selectedConversionElement; private static boolean isConversionSuccessful = false; public static final String PREFIX = "ProjectConvert"; //$NON-NLS-1$ - public static final String CONVERTERS_LIST = PREFIX +".convertersList"; //$NON-NLS-1$ - + public static final String CONVERTERS_LIST = PREFIX + ".convertersList"; //$NON-NLS-1$ /** - * @param parentShell - * @param project - * @param title The title of the dialog + * @param parentShell the parent shell + * @param project the project to convert + * @param title the title of the dialog */ protected ConvertTargetDialog(Shell parentShell, IProject project, String title) { super(parentShell); this.title = title; setProject(project); - if (getProjectType() != null) { - conversionElements = ManagedBuildManager.getConversionElements(getProjectType()); + IProjectType projectType = getProjectType(); + if (projectType != null) { + conversionElements = ManagedBuildManager.getConversionElements(projectType); } for (IBuildObject tc : getProjectToolchains()) { Map converters = ManagedBuildManager.getConversionElements(tc); @@ -80,34 +80,29 @@ public class ConvertTargetDialog extends Dialog { } } - setShellStyle(getShellStyle()|SWT.RESIZE); + setShellStyle(getShellStyle() | SWT.RESIZE); } @Override protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { - handleConverterSelection(); IConvertManagedBuildObject convertBuildObject = null; try { - convertBuildObject = (IConvertManagedBuildObject) getSelectedConversionElement() - .createExecutableExtension("class"); //$NON-NLS-1$ + convertBuildObject = + (IConvertManagedBuildObject) getSelectedConversionElement().createExecutableExtension("class"); //$NON-NLS-1$ } catch (CoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + ManagedBuilderUIPlugin.log(e); } if (convertBuildObject != null) { - String fromId = getSelectedConversionElement().getAttribute( - "fromId"); //$NON-NLS-1$ - String toId = getSelectedConversionElement().getAttribute( - "toId"); //$NON-NLS-1$ + String fromId = getSelectedConversionElement().getAttribute("fromId"); //$NON-NLS-1$ + String toId = getSelectedConversionElement().getAttribute("toId"); //$NON-NLS-1$ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(getProject()); if (info != null) { IManagedProject managedProject = info.getManagedProject(); if (managedProject != null) { - if (convertBuildObject.convert(managedProject, fromId, - toId, true) == null) { + if (convertBuildObject.convert(managedProject, fromId, toId, true) == null) { setConversionSuccessful(false); } else { setConversionSuccessful(true); @@ -135,7 +130,6 @@ public class ConvertTargetDialog extends Dialog { @Override protected Control createDialogArea(Composite parent) { - Composite comp = new Composite(parent, SWT.NULL); comp.setFont(parent.getFont()); comp.setLayout(new GridLayout(1, true)); @@ -149,7 +143,7 @@ public class ConvertTargetDialog extends Dialog { convertersListGroup.setLayoutData(new GridData(GridData.FILL_BOTH)); // Create the current config List - convertersList = new List(convertersListGroup, SWT.SINGLE|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER); + convertersList = new org.eclipse.swt.widgets.List(convertersListGroup, SWT.SINGLE|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER); convertersList.setFont(convertersListGroup.getFont()); GridData data = new GridData(GridData.FILL_BOTH); convertersList.setLayoutData(data); @@ -240,22 +234,21 @@ public class ConvertTargetDialog extends Dialog { ConvertTargetDialog.isConversionSuccessful = isConversionSuccessful; } - private Vector getProjectToolchains() { - Vector projectToolchains = new Vector(); + private List getProjectToolchains() { + List projectToolchains = new ArrayList<>(); // Get the projectType from project. IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(getProject()); if (info != null) { IConfiguration[] configs = info.getManagedProject().getConfigurations(); for (IConfiguration config : configs) { - IToolChain tc = config.getToolChain(); - if (tc != null) { - projectToolchains.add(tc); + IToolChain toolchain = config.getToolChain(); + if (toolchain != null) { + projectToolchains.add(toolchain); } } } return projectToolchains; } - } diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetHandler.java new file mode 100644 index 00000000000..8c45bef2e17 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ConvertTargetHandler.java @@ -0,0 +1,107 @@ +/******************************************************************************* + * Copyright (c) 2005, 2014 Intel Corporation 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: + * Intel Corporation - initial API and implementation + * Anna Dushistova (MontaVista) - [366771] Converter fails to convert a CDT makefile project + * Sergey Prigogin (Google) + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.internal.ui.actions; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.cdt.internal.ui.util.AbstractResourceActionHandler; +import org.eclipse.cdt.managedbuilder.core.IBuildObject; +import org.eclipse.cdt.managedbuilder.core.IConfiguration; +import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; +import org.eclipse.cdt.managedbuilder.core.IManagedProject; +import org.eclipse.cdt.managedbuilder.core.IProjectType; +import org.eclipse.cdt.managedbuilder.core.IToolChain; +import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.handlers.HandlerUtil; + +public class ConvertTargetHandler extends AbstractResourceActionHandler { + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + Shell shell = HandlerUtil.getActiveShellChecked(event); + + IProject project; + IStructuredSelection selection = getSelection(event); + if (selection.size() != 1) + return null; + + Object obj = selection.getFirstElement(); + if (!(obj instanceof IProject)) + return null; + + project = (IProject) obj; + + // Check whether the converters available for the selected project. + // If there are no converters display error dialog otherwise display converters list. + if (hasTargetConverters(project)) { + handleConvertTargetAction(project, shell); + } else { + MessageDialog.openError(shell, Messages.ConvertTargetHandler_No_Converter, + NLS.bind(Messages.ProjectConvert_noConverterErrorDialog_message, new String[] {project.getName()}) ); + } + return null; + } + + public static boolean hasTargetConverters(IProject project) { + return ManagedBuildManager.hasTargetConversionElements(getProjectType(project)) || + ManagedBuildManager.hasAnyTargetConversionElements(getProjectToolchains(project)); + } + + private static IProjectType getProjectType(IProject project) { + IProjectType projectType = null; + + // Get the projectType from project. + IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); + if (info != null) { + IManagedProject managedProject = info.getManagedProject(); + if (managedProject != null) + projectType = managedProject.getProjectType(); + } + return projectType; + } + + private static List getProjectToolchains(IProject project) { + List projectToolchains = new ArrayList<>(); + + // Get the projectType from project. + IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); + if (info != null) { + IConfiguration[] configs = info.getManagedProject().getConfigurations(); + for (IConfiguration config : configs) { + IToolChain toolchain = config.getToolChain(); + if (toolchain != null) { + projectToolchains.add(toolchain); + } + } + } + return projectToolchains; + } + + private static void handleConvertTargetAction(IProject project, Shell shell) { + String title = NLS.bind(Messages.ProjectConvert_title, project.getName()); + ConvertTargetDialog dialog = new ConvertTargetDialog(shell, project, title); + if (dialog.open() != ConvertTargetDialog.OK) + return; + if (!ConvertTargetDialog.isConversionSuccessful()) { + MessageDialog.openError(shell, Messages.ProjectConvert_conversionErrordialog_title, + NLS.bind(Messages.ProjectConvert_conversionErrordialog_message, project.getName())); + } + } +} diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/Messages.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/Messages.java new file mode 100644 index 00000000000..313b1070c65 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/Messages.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2010, 2011 Andrew Gvozdev 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: + * Andrew Gvozdev - Initial API and implementation + * IBM Corporation + * Sergey Prigogin (Google) + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.internal.ui.actions; + +import org.eclipse.osgi.util.NLS; + +class Messages extends NLS { + public static String BuildFilesHandler_buildingSelectedFiles; + public static String CleanFilesHandler_cleaningFiles; + public static String ConvertTargetHandler_No_Converter; + public static String ProjectConvert_noConverterErrorDialog_message; + public static String ProjectConvert_title; + public static String ProjectConvert_conversionErrordialog_message; + public static String ProjectConvert_conversionErrordialog_title; + public static String ProjectConvert_convertersList; + + static { + // Initialize resource bundle. + NLS.initializeMessages(Messages.class.getName(), Messages.class); + } + + private Messages() { + } +} diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/Messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/Messages.properties new file mode 100755 index 00000000000..5f20f5f6693 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/Messages.properties @@ -0,0 +1,24 @@ +############################################################################### +# Copyright (c) 2000, 2011 IBM Corporation, QNX Software Systems, 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: +# IBM - Initial API and implementation +# Andrew Gvozdev (Quoin Inc.) - Combined managedbuilder.ui bundles to NLS message format, bug 318812 +# Sergey Prigogin (Google) +############################################################################### + +BuildFilesHandler_buildingSelectedFiles=Building Selected Files +CleanFilesHandler_cleanSelectedFiles=Cleaning Selected Files +CleanFilesHandler_cleaningFiles=Cleaning files + +# Project Conversion Dialog messages +ProjectConvert_conversionErrordialog_title=Project Conversion Error +ProjectConvert_conversionErrordialog_message=Error has occurred during the conversion of the project {0} . +ProjectConvert_noConverterErrorDialog_message=There are no converters available to convert the project {0} . +ProjectConvert_title=Project Converters for {0} +ProjectConvert_convertersList=Converters List +ConvertTargetHandler_No_Converter=No converter diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ProjectPropertyTester.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ProjectPropertyTester.java new file mode 100644 index 00000000000..5f13d48f9a2 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/actions/ProjectPropertyTester.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2014 Google, Inc 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: + * Sergey Prigogin (Google) - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.internal.ui.actions; + +import org.eclipse.core.expressions.PropertyTester; +import org.eclipse.core.resources.IProject; + +public class ProjectPropertyTester extends PropertyTester { + private static final String PROP_HAS_TARGET_CONVERTERS = "hasTargetConverters"; //$NON-NLS-1$ + + @Override + public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { + if (!(receiver instanceof IProject) || args.length != 0) + return false; + if (property.equals(PROP_HAS_TARGET_CONVERTERS)) { + return ConvertTargetHandler.hasTargetConverters((IProject) receiver); + } + return false; + } +} diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml index 1d840b89267..5cfce5c2437 100644 --- a/core/org.eclipse.cdt.ui/plugin.xml +++ b/core/org.eclipse.cdt.ui/plugin.xml @@ -3406,7 +3406,8 @@ id="org.eclipse.cdt.ui.indexer"> - + @@ -3417,7 +3418,8 @@ id="org.eclipse.cdt.ui.fileTypes"> - + @@ -3428,7 +3430,8 @@ id="org.eclipse.cdt.ui.cHelp"> - + @@ -3439,7 +3442,8 @@ name="%CDTLanguagesProperty.name"> - + @@ -3463,7 +3467,8 @@ id="org.eclipse.cdt.ui.propertyPages.CodeFormatterPreferencePage"> - + @@ -3475,7 +3480,8 @@ - + @@ -3487,9 +3493,10 @@ - + + value="org.eclipse.cdt.core/language.settings.providers.disabled=false"/> @@ -3769,7 +3776,8 @@ - + @@ -3797,7 +3805,8 @@ - + @@ -3811,7 +3820,8 @@ - + @@ -3844,7 +3854,8 @@ - + @@ -3858,7 +3869,8 @@ - + @@ -3878,7 +3890,8 @@ - + @@ -3898,7 +3911,8 @@ - + @@ -3913,7 +3927,8 @@ - + @@ -3928,7 +3943,8 @@ - + @@ -3943,7 +3959,8 @@ - + @@ -3958,7 +3975,8 @@ - + @@ -3972,7 +3990,8 @@ - +