1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Remove DeleteResConfigsAction and ExcludeFromBuildAction

Deprecated since CDT 8.0 and not used anywhere.

Change-Id: Ie0dc3e844dfc2edd9ac4e77501372fec7a36c2f2
Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
This commit is contained in:
Marc-Andre Laperle 2019-11-02 12:40:38 -04:00 committed by Marc-André Laperle
parent fd156ed737
commit 058230c13b
3 changed files with 19 additions and 498 deletions

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.cdt.ui" version="2">
<resource path="META-INF/MANIFEST.MF" type="org.eclipse.cdt.ui.actions.DeleteResConfigsAction">
<filter comment="DeleteResConfigsAction has been deprecated since CDT 8.0" id="305324134">
<message_arguments>
<message_argument value="org.eclipse.cdt.ui.actions.DeleteResConfigsAction"/>
<message_argument value="org.eclipse.cdt.ui_6.6.100"/>
</message_arguments>
</filter>
</resource>
<resource path="META-INF/MANIFEST.MF" type="org.eclipse.cdt.ui.actions.ExcludeFromBuildAction">
<filter comment="ExcludeFromBuildAction has been deprecated since CDT 8.0" id="305324134">
<message_arguments>
<message_argument value="org.eclipse.cdt.ui.actions.ExcludeFromBuildAction"/>
<message_argument value="org.eclipse.cdt.ui_6.6.100"/>
</message_arguments>
</filter>
</resource>
</component>

View file

@ -1,236 +0,0 @@
/*******************************************************************************
* Copyright (c) 2007, 2011 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.ui.actions;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.internal.ui.actions.ActionMessages;
import org.eclipse.cdt.internal.ui.actions.DeleteResConfigsHandler;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.newui.AbstractPage;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
import org.eclipse.ui.dialogs.ListSelectionDialog;
/**
* Action which deletes resource description. (If resource description is missing
* one from parent is normally used)
* @deprecated as of CDT 8.0 now using {@link DeleteResConfigsHandler}
*/
@Deprecated
public class DeleteResConfigsAction implements IWorkbenchWindowPulldownDelegate2, IObjectActionDelegate {
protected ArrayList<IResource> objects = null;
private ArrayList<ResCfgData> outData = null;
@Override
public void selectionChanged(IAction action, ISelection selection) {
objects = null;
outData = null;
if (!selection.isEmpty()) {
// case for context menu
if (selection instanceof IStructuredSelection) {
Object[] obs = ((IStructuredSelection) selection).toArray();
if (obs.length > 0) {
for (int i = 0; i < obs.length; i++) {
IResource res = null;
// only folders and files may be affected by this action
if (obs[i] instanceof ICContainer || obs[i] instanceof ITranslationUnit)
res = ((ICElement) obs[i]).getResource();
// project's configuration cannot be deleted
else if (obs[i] instanceof IResource && !(obs[i] instanceof IProject))
res = (IResource) obs[i];
if (res != null) {
IProject p = res.getProject();
if (!p.isOpen())
continue;
if (!CoreModel.getDefault().isNewStyleProject(p))
continue;
IPath path = res.getProjectRelativePath();
// getting description in read-only mode
ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(p, false);
if (prjd == null)
continue;
ICConfigurationDescription[] cfgds = prjd.getConfigurations();
if (cfgds == null || cfgds.length == 0)
continue;
for (ICConfigurationDescription cfgd : cfgds) {
ICResourceDescription rd = cfgd.getResourceDescription(path, true);
if (rd != null) {
if (objects == null)
objects = new ArrayList<>();
objects.add(res);
break; // stop configurations scanning
}
}
}
}
}
}
}
action.setEnabled(objects != null);
}
@Override
public void run(IAction action) {
openDialog();
}
private void openDialog() {
if (objects == null || objects.size() == 0)
return;
// create list of configurations to delete
ListSelectionDialog dialog = new ListSelectionDialog(CUIPlugin.getActiveWorkbenchShell(), objects,
createSelectionDialogContentProvider(), new LabelProvider() {
}, ActionMessages.DeleteResConfigsAction_0);
dialog.setTitle(ActionMessages.DeleteResConfigsAction_1);
if (dialog.open() == Window.OK) {
Object[] selected = dialog.getResult();
if (selected != null && selected.length > 0) {
for (Object element : selected) {
((ResCfgData) element).delete();
AbstractPage.updateViews(((ResCfgData) element).res);
}
}
}
}
// Stores data for resource description with its "parents".
class ResCfgData {
IResource res;
ICProjectDescription prjd;
ICConfigurationDescription cfgd;
ICResourceDescription rdesc;
public ResCfgData(IResource res2, ICProjectDescription prjd2, ICConfigurationDescription cfgd2,
ICResourceDescription rdesc2) {
res = res2;
prjd = prjd2;
cfgd = cfgd2;
rdesc = rdesc2;
}
// performs deletion
public void delete() {
try {
cfgd.removeResourceDescription(rdesc);
CoreModel.getDefault().setProjectDescription(res.getProject(), prjd);
} catch (CoreException e) {
}
}
@Override
public String toString() {
return "[" + cfgd.getName() + "] for " + res.getName(); //$NON-NLS-1$ //$NON-NLS-2$
}
}
private IStructuredContentProvider createSelectionDialogContentProvider() {
return new IStructuredContentProvider() {
@Override
public Object[] getElements(Object inputElement) {
if (outData != null)
return outData.toArray();
outData = new ArrayList<>();
List<?> ls = (List<?>) inputElement;
Iterator<?> it = ls.iterator();
IProject proj = null;
ICProjectDescription prjd = null;
ICConfigurationDescription[] cfgds = null;
// creating list of all res descs for all objects
while (it.hasNext()) {
IResource res = (IResource) it.next();
IPath path = res.getProjectRelativePath();
if (res.getProject() != proj) {
proj = res.getProject();
prjd = CoreModel.getDefault().getProjectDescription(proj);
cfgds = prjd.getConfigurations();
}
if (cfgds != null) {
for (ICConfigurationDescription cfgd : cfgds) {
ICResourceDescription rd = cfgd.getResourceDescription(path, true);
if (rd != null)
outData.add(new ResCfgData(res, prjd, cfgd, rd));
}
}
}
return outData.toArray();
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
};
}
@Override
public void dispose() {
objects = null;
}
// doing nothing
@Override
public void init(IWorkbenchWindow window) {
}
@Override
public Menu getMenu(Menu parent) {
return null;
}
@Override
public Menu getMenu(Control parent) {
return null;
}
@Override
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
}
}

View file

@ -1,262 +0,0 @@
/*******************************************************************************
* Copyright (c) 2007, 2011 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.ui.actions;
import java.util.ArrayList;
import java.util.Iterator;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.internal.ui.actions.ActionMessages;
import org.eclipse.cdt.internal.ui.actions.ExcludeFromBuildHandler;
import org.eclipse.cdt.internal.ui.newui.Messages;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.newui.AbstractPage;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
import org.eclipse.ui.dialogs.ListSelectionDialog;
/**
* Action which excludes resources from build.
* @deprecated as of CDT 8.0 now using {@link ExcludeFromBuildHandler}
*/
@Deprecated
public class ExcludeFromBuildAction implements IWorkbenchWindowPulldownDelegate2, IObjectActionDelegate {
protected ArrayList<IResource> objects = null;
protected ArrayList<String> cfgNames = null;
@Override
public void selectionChanged(IAction action, ISelection selection) {
objects = null;
cfgNames = null;
boolean cfgsOK = true;
if (!selection.isEmpty()) {
// case for context menu
if (selection instanceof IStructuredSelection) {
Object[] obs = ((IStructuredSelection) selection).toArray();
if (obs.length > 0) {
for (int i = 0; i < obs.length && cfgsOK; i++) {
// if project selected, don't do anything
if ((obs[i] instanceof IProject) || (obs[i] instanceof ICProject)) {
cfgsOK = false;
break;
}
IResource res = null;
// only folders and files may be affected by this action
if (obs[i] instanceof ICContainer || obs[i] instanceof ITranslationUnit) {
res = ((ICElement) obs[i]).getResource();
} else if (obs[i] instanceof IResource) {
// project's configuration cannot be deleted
res = (IResource) obs[i];
}
if (res != null) {
ICConfigurationDescription[] cfgds = getCfgsRead(res);
if (cfgds == null || cfgds.length == 0)
continue;
if (objects == null)
objects = new ArrayList<>();
objects.add(res);
if (cfgNames == null) {
cfgNames = new ArrayList<>(cfgds.length);
for (int j = 0; j < cfgds.length; j++) {
if (!canExclude(res, cfgds[j])) {
cfgNames = null;
cfgsOK = false;
break;
}
cfgNames.add(cfgds[j].getName());
}
} else {
if (cfgNames.size() != cfgds.length) {
cfgsOK = false;
} else {
for (int j = 0; j < cfgds.length; j++) {
if (!canExclude(res, cfgds[j]) || !cfgNames.contains(cfgds[j].getName())) {
cfgsOK = false;
break;
}
}
}
}
}
}
}
}
}
action.setEnabled(cfgsOK && objects != null);
}
private boolean canExclude(IResource res, ICConfigurationDescription cfg) {
IPath p = res.getFullPath();
ICSourceEntry[] ent = cfg.getSourceEntries();
boolean state = CDataUtil.isExcluded(p, ent);
return CDataUtil.canExclude(p, (res instanceof IFolder), !state, ent);
}
private void setExclude(IResource res, ICConfigurationDescription cfg, boolean exclude) {
try {
ICSourceEntry[] newEntries = CDataUtil.setExcluded(res.getFullPath(), (res instanceof IFolder), exclude,
cfg.getSourceEntries());
cfg.setSourceEntries(newEntries);
} catch (CoreException e) {
CUIPlugin.log(e);
}
}
@Override
public void run(IAction action) {
openDialog();
}
private ICConfigurationDescription[] getCfgsRead(IResource res) {
IProject p = res.getProject();
if (!p.isOpen())
return null;
if (!CoreModel.getDefault().isNewStyleProject(p))
return null;
ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(p, false);
if (prjd == null)
return null;
return prjd.getConfigurations();
}
private void openDialog() {
if (objects == null || objects.size() == 0)
return;
// create list of configurations to delete
ListSelectionDialog dialog = new ListSelectionDialog(CUIPlugin.getActiveWorkbenchShell(), cfgNames,
createSelectionDialogContentProvider(), new LabelProvider() {
}, ActionMessages.ExcludeFromBuildAction_0);
dialog.setTitle(ActionMessages.ExcludeFromBuildAction_1);
boolean[] status = new boolean[cfgNames.size()];
Iterator<IResource> it = objects.iterator();
while (it.hasNext()) {
IResource res = it.next();
ICConfigurationDescription[] cfgds = getCfgsRead(res);
IPath p = res.getFullPath();
for (int i = 0; i < cfgds.length; i++) {
boolean b = CDataUtil.isExcluded(p, cfgds[i].getSourceEntries());
if (b)
status[i] = true;
}
}
ArrayList<String> lst = new ArrayList<>();
for (int i = 0; i < status.length; i++)
if (status[i])
lst.add(cfgNames.get(i));
if (lst.size() > 0)
dialog.setInitialElementSelections(lst);
if (dialog.open() == Window.OK) {
Object[] selected = dialog.getResult(); // may be empty
Iterator<IResource> it2 = objects.iterator();
while (it2.hasNext()) {
IResource res = it2.next();
IProject p = res.getProject();
if (!p.isOpen())
continue;
// get writable description
ICProjectDescription prjd = CoreModel.getDefault().getProjectDescription(p, true);
if (prjd == null)
continue;
ICConfigurationDescription[] cfgds = prjd.getConfigurations();
for (int i = 0; i < cfgds.length; i++) {
boolean exclude = false;
for (int j = 0; j < selected.length; j++) {
if (cfgds[i].getName().equals(selected[j])) {
exclude = true;
break;
}
}
setExclude(res, cfgds[i], exclude);
}
try {
CoreModel.getDefault().setProjectDescription(p, prjd);
} catch (CoreException e) {
CUIPlugin.logError(Messages.AbstractPage_11 + e.getLocalizedMessage());
}
AbstractPage.updateViews(res);
}
}
}
private IStructuredContentProvider createSelectionDialogContentProvider() {
return new IStructuredContentProvider() {
@Override
public Object[] getElements(Object inputElement) {
return cfgNames.toArray();
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
};
}
@Override
public void dispose() {
objects = null;
}
// doing nothing
@Override
public void init(IWorkbenchWindow window) {
}
@Override
public Menu getMenu(Menu parent) {
return null;
}
@Override
public Menu getMenu(Control parent) {
return null;
}
@Override
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
}
}