diff --git a/build/org.eclipse.cdt.make.ui/plugin.xml b/build/org.eclipse.cdt.make.ui/plugin.xml
index ac8f5b25402..cd454901d9e 100644
--- a/build/org.eclipse.cdt.make.ui/plugin.xml
+++ b/build/org.eclipse.cdt.make.ui/plugin.xml
@@ -44,7 +44,6 @@
%MakeConversionWizard.description
-
-
@@ -217,10 +215,11 @@
+ label="%ActionUpdateActionSet.label"
+ id="org.eclipse.cdt.make.ui.updateActionSet">
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/MakeBuild.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/MakeBuild.java
index 62f2e8faeba..313f39bc700 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/MakeBuild.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/MakeBuild.java
@@ -7,23 +7,15 @@ package org.eclipse.cdt.make.ui.actions;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import org.eclipse.cdt.make.core.IMakeBuilderInfo;
-import org.eclipse.cdt.make.core.MakeBuilder;
-import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
import org.eclipse.cdt.make.ui.views.MakeTarget;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.ui.IEditorInput;
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeContentProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeContentProvider.java
index 77848aa5977..da47c935b6d 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeContentProvider.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeContentProvider.java
@@ -5,35 +5,35 @@ package org.eclipse.cdt.make.ui.views;
* All Rights Reserved.
*/
+import org.eclipse.cdt.make.core.IMakeTarget;
+import org.eclipse.cdt.make.core.IMakeTargetListener;
+import org.eclipse.cdt.make.core.IMakeTargetProvider;
+import org.eclipse.cdt.make.core.MakeTargetEvent;
import org.eclipse.core.resources.IContainer;
-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.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Control;
-
-public class MakeContentProvider implements ITreeContentProvider, IResourceChangeListener {
+public class MakeContentProvider implements ITreeContentProvider, IMakeTargetListener {
protected Viewer viewer;
/**
* Constructor for MakeContentProvider
*/
public MakeContentProvider() {
- super();
}
/**
* @see ITreeContentProvider#getChildren(Object)
*/
public Object[] getChildren(Object obj) {
- if (obj instanceof MakeTarget) {
- MakeTarget md = (MakeTarget)obj;
- return (Object[])md.getChildren();
+ if (obj instanceof IContainer) {
+ if (viewer != null) {
+ Object input = viewer.getInput();
+ if (input instanceof IMakeTargetProvider) {
+ IMakeTargetProvider provider = (IMakeTargetProvider)obj;
+ return provider.getTargets((IContainer)obj);
+ }
+ }
}
return new Object[0];
}
@@ -42,9 +42,10 @@ public class MakeContentProvider implements ITreeContentProvider, IResourceChang
* @see ITreeContentProvider#getParent(Object)
*/
public Object getParent(Object obj) {
- if (obj instanceof MakeTarget) {
- MakeTarget directives = (MakeTarget)obj;
- return directives.getParent();
+ if (obj instanceof IMakeTarget) {
+ return ((IMakeTarget)obj).getContainer();
+ } else if (obj instanceof IContainer) {
+ return ((IContainer)obj).getParent();
}
return null;
}
@@ -69,10 +70,10 @@ public class MakeContentProvider implements ITreeContentProvider, IResourceChang
public void dispose() {
if (viewer != null) {
Object obj = viewer.getInput();
- if (obj instanceof MakeTarget) {
- MakeTarget target = (MakeTarget)obj;
- IWorkspace workspace = target.getResource().getWorkspace();
- workspace.removeResourceChangeListener(this);
+ if (obj instanceof IMakeTargetProvider) {
+ IMakeTargetProvider provider = (IMakeTargetProvider)obj;
+ provider.removeListener(this);
+ provider = null;
}
}
}
@@ -83,86 +84,21 @@ public class MakeContentProvider implements ITreeContentProvider, IResourceChang
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.viewer = viewer;
if (oldInput != null) {
- if (oldInput instanceof MakeTarget) {
- IResource res = ((MakeTarget)oldInput).getResource();
- if (res instanceof IWorkspaceRoot) {
- IWorkspace workspace = res.getWorkspace();
- workspace.removeResourceChangeListener(this);
- }
+ if (oldInput instanceof IMakeTargetProvider) {
+ ((IMakeTargetProvider)oldInput).removeListener(this);
}
}
if (newInput != null) {
- if (newInput instanceof MakeTarget) {
- IResource res = ((MakeTarget)newInput).getResource();
- if (res instanceof IWorkspaceRoot) {
- IWorkspace workspace = res.getWorkspace();
- workspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
- }
+ if (newInput instanceof IMakeTargetProvider) {
+ ((IMakeTargetProvider)newInput).addListener(this);
}
}
}
- public void resourceChanged (final IResourceChangeEvent event) {
- final IResourceDelta deltas = event.getDelta();
- Control ctrl = viewer.getControl();
- if (ctrl != null && !ctrl.isDisposed()) {
- // Get the affected resource
- ctrl.getDisplay().syncExec(new Runnable() {
- public void run() {
- processDelta (deltas);
- }
- });
- }
- }
-
- void processDelta (IResourceDelta delta) {
- // Bail out if the widget was disposed.
- Control ctrl = viewer.getControl();
- if (ctrl == null || ctrl.isDisposed()) {
- return;
- }
-
- if (delta == null) {
- return;
- }
-
- int changeFlags = delta.getFlags();
-
- IResourceDelta[] affectedChildren =
- delta.getAffectedChildren(IResourceDelta.CHANGED);
-
- // Not interested in Content changes.
- for (int i = 0; i < affectedChildren.length; i++) {
- if ((affectedChildren[i].getFlags() & IResourceDelta.TYPE) != 0) {
- return;
- }
- }
-
- // handle open and closing.
- if ((changeFlags & (IResourceDelta.OPEN | IResourceDelta.SYNC)) != 0) {
- ctrl.setRedraw(false);
- viewer.refresh();
- ctrl.setRedraw(true);
- return;
- }
-
- // Handle changed children recursively.
- for (int i = 0; i < affectedChildren.length; i++) {
- processDelta(affectedChildren[i]);
- }
-
- // We are only interested in creation and deletion of folders.
- affectedChildren = delta.getAffectedChildren(IResourceDelta.REMOVED | IResourceDelta.ADDED);
- if (affectedChildren.length > 0) {
- for (int i = 0; i < affectedChildren.length; i++) {
- IResource r = affectedChildren[i].getResource();
- if (r instanceof IContainer) {
- ctrl.setRedraw(false);
- viewer.refresh();
- ctrl.setRedraw(true);
- break;
- }
- }
- }
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.make.core.IMakeTargetListener#targetChanged(org.eclipse.cdt.make.core.MakeTargetEvent)
+ */
+ public void targetChanged(MakeTargetEvent event) {
+
}
}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeLabelProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeLabelProvider.java
index 3da97ecd610..d1ee6f70140 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeLabelProvider.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeLabelProvider.java
@@ -5,38 +5,23 @@ package org.eclipse.cdt.make.ui.views;
* All Rights Reserved.
*/
-import java.util.Hashtable;
-import java.util.Map;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.cdt.make.core.IMakeTarget;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
-public class MakeLabelProvider implements ILabelProvider {
-
- /**
- * The cache of images that have been dispensed by this provider.
- * Maps ImageDescriptor->Image.
- */
- private Map imageTable = null;
+public class MakeLabelProvider extends LabelProvider {
/**
* @see ILabelProvider#getImage(Object)
*/
public Image getImage(Object obj) {
Image image = null;
- //obtain the cached image corresponding to the descriptor
- if (imageTable == null) {
- imageTable = new Hashtable(4);
- }
- if (obj instanceof MakeTarget) {
- ImageDescriptor descriptor = ((MakeTarget)obj).getImageDescriptor();
- image = (Image) imageTable.get(descriptor);
- if (image == null) {
- image = descriptor.createImage();
- imageTable.put(descriptor, image);
- }
+ if (obj instanceof IMakeTarget) {
+ } else if (obj instanceof IContainer) {
+ return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
}
return image;
}
@@ -46,33 +31,10 @@ public class MakeLabelProvider implements ILabelProvider {
*/
public String getText(Object obj) {
if (obj instanceof MakeTarget) {
- return ((MakeTarget)obj).toString();
+ return ((IMakeTarget)obj).getName();
+ } else if (obj instanceof IContainer) {
+ return ((IContainer)obj).getName();
}
return "";
}
-
- /**
- * @see IBaseLabelProvider#addListener(ILabelProviderListener)
- */
- public void addListener(ILabelProviderListener arg0) {
- }
-
- /**
- * @see IBaseLabelProvider#dispose()
- */
- public void dispose() {
- }
-
- /**
- * @see IBaseLabelProvider#isLabelProperty(Object, String)
- */
- public boolean isLabelProperty(Object arg0, String arg1) {
- return false;
- }
-
- /**
- * @see IBaseLabelProvider#removeListener(ILabelProviderListener)
- */
- public void removeListener(ILabelProviderListener arg0) {
- }
}
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
index 289322d1927..e98b9a8376e 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java
@@ -5,27 +5,31 @@ package org.eclipse.cdt.make.ui.views;
* All Rights Reserved.
*/
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.jface.action.Action;
+import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.part.DrillDownAdapter;
import org.eclipse.ui.part.ViewPart;
public class MakeView extends ViewPart {
-
+
TreeViewer viewer;
+ DrillDownAdapter drillDownAdapter;
public MakeView() {
super();
@@ -39,9 +43,92 @@ public class MakeView extends ViewPart {
}
/**
- * Handles double clicks in viewer.
- * Opens editor if file double-clicked.
+ * @see ContentOutlinePage#createControl
*/
+ public void createPartControl(Composite parent) {
+ viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ viewer.setUseHashlookup(true);
+ viewer.setContentProvider(new MakeContentProvider());
+ viewer.setLabelProvider(new MakeLabelProvider());
+
+ drillDownAdapter = new DrillDownAdapter(viewer);
+
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ handleDoubleClick(event);
+ }
+ });
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ handleSelectionChanged(event);
+ }
+ });
+ viewer.getControl().addKeyListener(new KeyAdapter() {
+ public void keyPressed(KeyEvent event) {
+ if (event.character == SWT.DEL && event.stateMask == 0) {
+ handleDeleteKeyPressed();
+ }
+ }
+ });
+
+ viewer.setContentProvider(new MakeContentProvider());
+ viewer.setLabelProvider(new MakeLabelProvider());
+ viewer.setInput(MakeCorePlugin.getDefault().getTargetProvider());
+ getSite().setSelectionProvider(viewer);
+
+ makeActions();
+ hookContextMenu();
+ contributeToActionBars();
+ }
+
+ private void makeActions() {
+ // dinglis-TODO Auto-generated method stub
+
+ }
+ private void contributeToActionBars() {
+ IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+ }
+
+ private void fillLocalToolBar(IToolBarManager toolBar) {
+ drillDownAdapter.addNavigationActions(toolBar);
+ }
+
+ private void fillLocalPullDown(IMenuManager manager) {
+ }
+
+
+ private void hookContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ MakeView.this.fillContextMenu(manager);
+ updateActions((IStructuredSelection) viewer.getSelection());
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+
+ protected void fillContextMenu(IMenuManager manager) {
+// manager.add(deleteAction);
+// manager.add(renameAction);
+ manager.add(new Separator());
+ drillDownAdapter.addNavigationActions(manager);
+ // Other plug-ins can contribute there actions here
+ manager.add(new Separator("Additions"));
+ }
+
+ protected void handleDeleteKeyPressed() {
+ // dinglis-TODO Auto-generated method stub
+
+ }
+
+
protected void handleDoubleClick(DoubleClickEvent event) {
IStructuredSelection s = (IStructuredSelection) event.getSelection();
Object element = s.getFirstElement();
@@ -56,126 +143,17 @@ public class MakeView extends ViewPart {
//}
}
- /**
- * called to create the context menu of the outline
- */
- protected void contextMenuAboutToShow(IMenuManager menu) {
- IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
- Object element = selection.getFirstElement();
- if (element instanceof MakeTarget) {
- final MakeTarget ta = (MakeTarget) element;
- Action add = new Action("Add...") {
- public void run() {
- InputDialog dialog =
- new InputDialog(getViewSite().getShell(), "Target Dialog: ", "Enter Target(s): ", null, null);
- dialog.open();
- String value = dialog.getValue();
- if (value != null && value.length() > 0) {
-// IResource res = ta.getResource();
-// MakeUtil.addPersistentTarget(res, value);
- viewer.getControl().setRedraw(false);
- viewer.refresh();
- viewer.getControl().setRedraw(true);
- viewer.expandToLevel(ta, 2);
- }
- }
- };
- Action edit = new Action("Edit...") {
- public void run() {
- String oldtarget = ta.toString();
- InputDialog dialog =
- new InputDialog(getViewSite().getShell(), "Target Dialog: ", "Enter Target(s): ", oldtarget, null);
- dialog.open();
- String value = dialog.getValue();
- if (value != null && value.length() > 0 && !value.equals(oldtarget)) {
-// IResource res = ta.getResource();
-// MakeUtil.replacePersistentTarget(res, oldtarget, value);
- viewer.getControl().setRedraw(false);
- viewer.refresh();
- viewer.getControl().setRedraw(true);
- viewer.expandToLevel(ta, 2);
- }
- }
- };
-
- Action del = new Action("Delete") {
- public void run() {
- String target = ta.toString();
- if (target != null) {
-// IResource res = ta.getResource();
-// MakeUtil.removePersistentTarget(res, target);
- viewer.getControl().setRedraw(false);
- viewer.refresh();
- viewer.getControl().setRedraw(true);
- }
- }
- };
-
-// Action build = new MakeBuildAction(new MakeTarget[] { ta }, getViewSite().getShell(), "Build");
-
- menu.add(add);
- menu.add(edit);
- menu.add(del);
- //menu.add (new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-// menu.add(build);
- if (ta.isLeaf()) {
- add.setEnabled(false);
- } else {
- edit.setEnabled(false);
- del.setEnabled(false);
- }
- }
- //menu.add (new Separator(IWorkbenchActionConstants.MB_ADDITIONS+"-end"));
+ void handleSelectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection sel = (IStructuredSelection) event.getSelection();
+// updateStatusLine(sel);
+ updateActions(sel);
+ }
+
+ void updateActions(IStructuredSelection sel) {
+// deleteAction.selectionChanged(sel);
+// renameAction.selectionChanged(sel);
}
- private void contributeToActionBars() {
- IActionBars bars = getViewSite().getActionBars();
-// fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- }
- private void fillLocalToolBar(IToolBarManager toolBar) {
- Action refreshAllAction = new Action("Refresh") {
- public void run() {
- viewer.refresh();
- }
- };
- toolBar.add(refreshAllAction);
- }
-
- /**
- * @see ContentOutlinePage#createControl
- */
- public void createPartControl(Composite parent) {
-
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setUseHashlookup(true);
- viewer.setContentProvider(new MakeContentProvider());
- viewer.setLabelProvider(new MakeLabelProvider());
-
- MenuManager manager = new MenuManager("#PopUp");
- manager.setRemoveAllWhenShown(true);
- manager.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- contextMenuAboutToShow(manager);
- }
- });
-
- Control control = viewer.getControl();
- Menu menu = manager.createContextMenu(control);
- control.setMenu(menu);
-
- viewer.setInput(new MakeTarget(ResourcesPlugin.getWorkspace().getRoot()));
-
- viewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- handleDoubleClick(event);
- }
- });
-
- contributeToActionBars();
-
- getSite().setSelectionProvider(viewer);
- }
}