Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeTarget.java')
-rw-r--r--build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeTarget.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeTarget.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeTarget.java
new file mode 100644
index 00000000000..2fb19c0734a
--- /dev/null
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeTarget.java
@@ -0,0 +1,139 @@
+package org.eclipse.cdt.make.ui.views;
+
+/*
+ * (c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ */
+
+import java.util.ArrayList;
+
+import org.eclipse.cdt.core.CProjectNature;
+import org.eclipse.cdt.internal.ui.CPluginImages;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+
+
+/**
+ * A leaf is a IResource with a Make Directive.
+ * We use the term Directive instead of Make Targets
+ * to not confuse with remote targets.
+ */
+
+public class MakeTarget implements IAdaptable {
+
+ private static final MakeTarget[] emptyArray= new MakeTarget[0];
+ private IResource resource;
+ private String target;
+
+ public MakeTarget(IResource res) {
+ this(res, "");
+ }
+
+ public MakeTarget(IResource res, String goals) {
+ resource = res;
+ target = (goals == null) ? "" : goals;
+ }
+
+ /**
+ * @see IAdaptable#getAdapter(Object)
+ */
+ public Object getAdapter(Class adapter) {
+ if (adapter == IResource.class) {
+ return resource;
+ }
+ return null;
+ }
+
+ /**
+ */
+ public MakeTarget[] getChildren() {
+ if (resource != null && target.length() == 0) {
+ ArrayList list = new ArrayList();
+ if (resource instanceof IWorkspaceRoot) {
+ IWorkspaceRoot root = (IWorkspaceRoot)resource;
+ IProject [] projects = root.getProjects();
+ for (int i = 0; i < projects.length; i++) {
+ if (projects[i].isOpen()) {
+ try {
+ if (projects[i].hasNature(CProjectNature.C_NATURE_ID)) {
+ list.add (new MakeTarget(projects[i]));
+ }
+ } catch (CoreException e) {
+ }
+ }
+ }
+ } else if (resource instanceof IContainer) {
+ IContainer container = (IContainer)resource;
+ try {
+ IResource[] resources = container.members();
+ for (int i = 0; i < resources.length; i++) {
+ if (resources[i] instanceof IContainer) {
+ list.add (new MakeTarget(resources[i]));
+ }
+ }
+ } catch (CoreException e) {
+ }
+// String [] targets = MakeUtil.getPersistentTargets(resource);
+// for (int i = 0; i < targets.length; i++) {
+// if (targets[i] == null)
+// targets[i] = "";
+// list.add (new MakeTarget(resource, targets[i]));
+// }
+ }
+ return (MakeTarget[])list.toArray(emptyArray);
+ }
+ return emptyArray;
+ }
+
+ /**
+ */
+ public MakeTarget getParent() {
+ if (target.length() == 0)
+ return new MakeTarget(resource.getParent());
+ return new MakeTarget(resource);
+ }
+
+ public String toString() {
+ if (target.length() == 0)
+ return resource.getName();
+ return target;
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ if (isLeaf()) {
+ return CPluginImages.DESC_BUILD_MENU;
+ }
+ IWorkbenchAdapter adapter = (IWorkbenchAdapter)((IAdaptable)resource).getAdapter(IWorkbenchAdapter.class);
+ if (adapter == null)
+ return null;
+ return adapter.getImageDescriptor(resource);
+ }
+
+ public IResource getResource () {
+ return resource;
+ }
+
+ public boolean isLeaf () {
+ return (target.length() != 0);
+ }
+
+ /**
+ * @see Object#equals(Object)
+ */
+ public boolean equals(Object obj) {
+ if (null == obj)
+ return false;
+
+ if (!(obj instanceof MakeTarget))
+ return false;
+
+ MakeTarget other = (MakeTarget)obj;
+ return (resource.equals(other.resource) && target.equals(other.target));
+ }
+}

Back to the top