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); - } }