Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTargetManager.java')
-rw-r--r--build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTargetManager.java320
1 files changed, 0 insertions, 320 deletions
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTargetManager.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTargetManager.java
deleted file mode 100644
index edaa4c7d2a2..00000000000
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/MakeTargetManager.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002,2003 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
-***********************************************************************/
-package org.eclipse.cdt.make.internal.core;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Vector;
-import java.util.Map.Entry;
-
-import org.eclipse.cdt.make.core.IMakeTarget;
-import org.eclipse.cdt.make.core.IMakeTargetListener;
-import org.eclipse.cdt.make.core.IMakeTargetManager;
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.core.MakeTargetEvent;
-import org.eclipse.core.resources.ICommand;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-public class MakeTargetManager implements IMakeTargetManager, IResourceChangeListener {
- private static String TARGET_BUILD_EXT = "MakeTargetBuilder"; //$NON-NLS-1$
-
- private static String TARGETS_EXT = "targets"; //$NON-NLS-1$
-
- private ListenerList listeners = new ListenerList();
- private HashMap projectMap = new HashMap();
- private HashMap builderMap;
- protected Vector fProjects = new Vector();
-
- public MakeTargetManager() {
- }
-
- public IMakeTarget createTarget(IProject project, String name, String targetBuilderID) throws CoreException {
- return new MakeTarget(this, project, targetBuilderID, name);
- }
-
- public void addTarget(IContainer container, IMakeTarget target) throws CoreException {
- if (container instanceof IWorkspaceRoot) {
- throw new CoreException(new Status(IStatus.ERROR, MakeCorePlugin.getUniqueIdentifier(), -1, MakeCorePlugin.getResourceString("MakeTargetManager.add_to_workspace_root"), null)); //$NON-NLS-1$
- }
- if (target.getContainer() != null) {
- throw new CoreException(new Status(IStatus.ERROR, MakeCorePlugin.getUniqueIdentifier(), -1, MakeCorePlugin.getResourceString("MakeTargetManager.add_temporary_target"), null)); //$NON-NLS-1$
- }
- IProject project = container.getProject();
- ProjectTargets projectTargets = (ProjectTargets)projectMap.get(project);
- if (projectTargets == null) {
- projectTargets = readTargets(project);
- }
- ((MakeTarget)target).setContainer(container);
- projectTargets.add((MakeTarget)target);
- writeTargets(projectTargets);
- notifyListeners(new MakeTargetEvent(this, MakeTargetEvent.TARGET_ADD, target));
- }
-
- public void removeTarget(IMakeTarget target) throws CoreException {
- IProject project = target.getContainer().getProject();
- ProjectTargets projectTargets = (ProjectTargets)projectMap.get(project);
- if (projectTargets == null) {
- projectTargets = readTargets(project);
- }
- projectTargets.remove(target);
- writeTargets(projectTargets);
- notifyListeners(new MakeTargetEvent(this, MakeTargetEvent.TARGET_REMOVED, target));
- }
-
- public void renameTarget(IMakeTarget target, String name) throws CoreException {
- IProject project = target.getContainer().getProject();
- ProjectTargets projectTargets = (ProjectTargets)projectMap.get(project);
- if (projectTargets == null) {
- projectTargets = readTargets(project);
- }
- if (!projectTargets.contains((MakeTarget)target)) {
- throw new CoreException(new Status(IStatus.ERROR, MakeCorePlugin.getUniqueIdentifier(), -1, MakeCorePlugin.getResourceString("MakeTargetManager.target_exists"), null)); //$NON-NLS-1$
- }
- ((MakeTarget)target).setName(name);
- writeTargets(projectTargets);
- notifyListeners(new MakeTargetEvent(this, MakeTargetEvent.TARGET_CHANGED, target));
- }
-
- public IMakeTarget[] getTargets(IContainer container) throws CoreException {
- ProjectTargets projectTargets = (ProjectTargets)projectMap.get(container.getProject());
- if (projectTargets == null) {
- projectTargets = readTargets(container.getProject());
- }
- return projectTargets.get(container);
- }
-
- public IMakeTarget findTarget(IContainer container, String name) {
- ProjectTargets projectTargets = (ProjectTargets)projectMap.get(container.getProject());
- if (projectTargets == null) {
- projectTargets = readTargets(container.getProject());
- }
- return projectTargets.findTarget(container, name);
- }
-
- public IProject[] getTargetBuilderProjects() throws CoreException {
- return (IProject[])fProjects.toArray(new IProject[fProjects.size()]);
- }
-
- public String[] getTargetBuilders(IProject project) {
- if (fProjects.contains(project) || hasTargetBuilder(project)) {
- try {
- Vector ids = new Vector();
- IProjectDescription description = project.getDescription();
- ICommand builder[] = description.getBuildSpec();
- for (int i = 0; i < builder.length; i++) {
- Iterator entries = builderMap.entrySet().iterator();
- while (entries.hasNext()) {
- Map.Entry entry = (Entry)entries.next();
- if (entry.getValue().equals(builder[i].getBuilderName())) {
- ids.add(entry.getKey());
- }
- }
- }
- return (String[])ids.toArray(new String[ids.size()]);
- } catch (CoreException e) {
- }
- }
- return new String[0];
- }
-
- public boolean hasTargetBuilder(IProject project) {
- try {
- if (project.isAccessible()) {
- IProjectDescription description = project.getDescription();
- ICommand builder[] = description.getBuildSpec();
- for (int j = 0; j < builder.length; j++) {
- if (builderMap.containsValue(builder[j].getBuilderName())) {
- return true;
- }
- }
- }
- } catch (CoreException e) {
- }
- return false;
- }
-
- public void startup() {
- initializeBuilders();
- IProject project[] = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- for (int i = 0; i < project.length; i++) {
- if (hasTargetBuilder(project[i])) {
- fProjects.add(project[i]);
- }
- }
- ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
- }
-
- public void shutdown() {
- ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
- }
-
- public void resourceChanged(IResourceChangeEvent event) {
- IResourceDelta delta = event.getDelta();
- if (delta != null) {
- try {
- delta.accept(new MakeTargetVisitor());
- } catch (CoreException e) {
- MakeCorePlugin.log(e);
- }
- }
- }
-
- class MakeTargetVisitor implements IResourceDeltaVisitor {
- /**
- * @see IResourceDeltaVisitor#visit(IResourceDelta)
- */
- public boolean visit(IResourceDelta delta) {
- if (delta == null) {
- return false;
- }
- IResource resource = delta.getResource();
- if (resource.getType() == IResource.PROJECT) {
- IProject project = (IProject)resource;
- int flags = delta.getFlags();
- int deltaKind = delta.getKind();
- if (deltaKind == IResourceDelta.ADDED) {
- if (hasTargetBuilder(project)) {
- fProjects.add(project);
- notifyListeners(new MakeTargetEvent(MakeTargetManager.this, MakeTargetEvent.PROJECT_ADDED, project));
- }
- } else if (deltaKind == IResourceDelta.REMOVED) {
- if (fProjects.contains(project)) {
- deleteTargets(project);
- fProjects.remove(project);
- notifyListeners(new MakeTargetEvent(MakeTargetManager.this, MakeTargetEvent.PROJECT_REMOVED, project));
- }
- } else if (deltaKind == IResourceDelta.CHANGED) {
- if (0 != (flags & IResourceDelta.DESCRIPTION)) {
- if (fProjects.contains(project) && !hasTargetBuilder(project)) {
- fProjects.remove(project);
- projectMap.remove(project);
- notifyListeners(new MakeTargetEvent(MakeTargetManager.this, MakeTargetEvent.PROJECT_REMOVED, project));
- } else if (!fProjects.contains(project) && hasTargetBuilder(project)) {
- fProjects.add(project);
- notifyListeners(new MakeTargetEvent(MakeTargetManager.this, MakeTargetEvent.PROJECT_ADDED, project));
- }
- }
- if (0 != (flags & IResourceDelta.OPEN)) {
- if (!project.isOpen() && fProjects.contains(project)) {
- fProjects.remove(project);
- projectMap.remove(project);
- notifyListeners(new MakeTargetEvent(MakeTargetManager.this, MakeTargetEvent.PROJECT_REMOVED, project));
- } else if (project.isOpen() && hasTargetBuilder(project) && !fProjects.contains(project)) {
- fProjects.add(project);
- notifyListeners(new MakeTargetEvent(MakeTargetManager.this, MakeTargetEvent.PROJECT_ADDED, project));
- }
- }
- }
- return false;
- }
- return resource instanceof IWorkspaceRoot;
- }
- }
-
- protected void writeTargets(ProjectTargets projectTargets) throws CoreException {
- IPath targetFilePath =
- MakeCorePlugin.getDefault().getStateLocation().append(projectTargets.getProject().getName()).addFileExtension(
- TARGETS_EXT);
- File targetFile = targetFilePath.toFile();
- try {
- FileOutputStream file = new FileOutputStream(targetFile);
- projectTargets.saveTargets(file);
- } catch (IOException e) {
- throw new CoreException(
- new Status(IStatus.ERROR, MakeCorePlugin.getUniqueIdentifier(), -1, "Error writing target file", e));
- }
- }
-
- protected ProjectTargets readTargets(IProject project) {
- IPath targetFilePath =
- MakeCorePlugin.getDefault().getStateLocation().append(project.getName()).addFileExtension(TARGETS_EXT);
- File targetFile = targetFilePath.toFile();
- ProjectTargets projectTargets = null;
- if (targetFile.exists()) {
- try {
- projectTargets = new ProjectTargets(this, project, new FileInputStream(targetFile));
- } catch (FileNotFoundException e) {
- }
- }
- if (projectTargets == null) {
- projectTargets = new ProjectTargets(this, project);
- }
- projectMap.put(project, projectTargets);
- return projectTargets;
- }
-
- protected void deleteTargets(IProject project) {
- IPath targetFilePath =
- MakeCorePlugin.getDefault().getStateLocation().append(project.getName()).addFileExtension(TARGETS_EXT);
- File targetFile = targetFilePath.toFile();
- if (targetFile.exists()) {
- targetFile.delete();
- }
- projectMap.remove(project);
- }
-
- protected void initializeBuilders() {
- builderMap = new HashMap();
- IExtensionPoint point = MakeCorePlugin.getDefault().getDescriptor().getExtensionPoint(MakeTargetManager.TARGET_BUILD_EXT);
- IExtension[] ext = point.getExtensions();
- for (int i = 0; i < ext.length; i++) {
- IConfigurationElement[] element = ext[i].getConfigurationElements();
- for (int j = 0; j < element.length; j++) {
- if (element[j].getName().equals("builder")) { //$NON-NLS-1$
- String builderID = element[j].getAttribute("builderID"); //$NON-NLS-1$
- String targetID = element[j].getAttribute("id"); //$NON-NLS-1$
- builderMap.put(targetID, builderID);
- }
- }
- }
- }
-
- protected void notifyListeners(MakeTargetEvent event) {
- Object[] list = listeners.getListeners();
- for (int i = 0; i < list.length; i++) {
- ((IMakeTargetListener)list[i]).targetChanged(event);
- }
- }
-
- public void addListener(IMakeTargetListener listener) {
- listeners.add(listener);
- }
-
- public void removeListener(IMakeTargetListener listener) {
- listeners.remove(listeners);
- }
-
- public String getBuilderID(String targetBuilderID) {
- return (String)builderMap.get(targetBuilderID);
- }
-} \ No newline at end of file

Back to the top