mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
This commit is contained in:
parent
0041b93111
commit
2c822f988a
2 changed files with 29 additions and 124 deletions
|
@ -14,19 +14,15 @@ import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||||
import org.eclipse.cdt.make.core.MakeTargetEvent;
|
import org.eclipse.cdt.make.core.MakeTargetEvent;
|
||||||
import org.eclipse.core.resources.IContainer;
|
import org.eclipse.core.resources.IContainer;
|
||||||
import org.eclipse.core.resources.IResource;
|
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.core.resources.IWorkspaceRoot;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.jface.viewers.AbstractTreeViewer;
|
|
||||||
import org.eclipse.jface.viewers.ITreeContentProvider;
|
import org.eclipse.jface.viewers.ITreeContentProvider;
|
||||||
import org.eclipse.jface.viewers.StructuredViewer;
|
import org.eclipse.jface.viewers.StructuredViewer;
|
||||||
import org.eclipse.jface.viewers.Viewer;
|
import org.eclipse.jface.viewers.Viewer;
|
||||||
import org.eclipse.swt.widgets.Control;
|
import org.eclipse.swt.widgets.Control;
|
||||||
|
|
||||||
public class MakeContentProvider implements ITreeContentProvider, IMakeTargetListener, IResourceChangeListener {
|
public class MakeContentProvider implements ITreeContentProvider, IMakeTargetListener {
|
||||||
|
|
||||||
protected boolean bFlatten;
|
protected boolean bFlatten;
|
||||||
|
|
||||||
protected StructuredViewer viewer;
|
protected StructuredViewer viewer;
|
||||||
|
@ -52,13 +48,13 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
} else if (obj instanceof IContainer) {
|
} else if (obj instanceof IContainer) {
|
||||||
ArrayList children = new ArrayList();
|
ArrayList children = new ArrayList();
|
||||||
try {
|
try {
|
||||||
IResource[] resource = ((IContainer) obj).members();
|
IResource[] resource = ((IContainer)obj).members();
|
||||||
for (int i = 0; i < resource.length; i++) {
|
for (int i = 0; i < resource.length; i++) {
|
||||||
if (resource[i] instanceof IContainer) {
|
if (resource[i] instanceof IContainer) {
|
||||||
children.add(resource[i]);
|
children.add(resource[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
children.addAll(Arrays.asList(MakeCorePlugin.getDefault().getTargetManager().getTargets((IContainer) obj)));
|
children.addAll(Arrays.asList(MakeCorePlugin.getDefault().getTargetManager().getTargets((IContainer)obj)));
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
|
@ -69,9 +65,9 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
|
|
||||||
public Object getParent(Object obj) {
|
public Object getParent(Object obj) {
|
||||||
if (obj instanceof IMakeTarget) {
|
if (obj instanceof IMakeTarget) {
|
||||||
return ((IMakeTarget) obj).getContainer();
|
return ((IMakeTarget)obj).getContainer();
|
||||||
} else if (obj instanceof IContainer) {
|
} else if (obj instanceof IContainer) {
|
||||||
return ((IContainer) obj).getParent();
|
return ((IContainer)obj).getParent();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -103,27 +99,7 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
if (this.viewer == null) {
|
if (this.viewer == null) {
|
||||||
MakeCorePlugin.getDefault().getTargetManager().addListener(this);
|
MakeCorePlugin.getDefault().getTargetManager().addListener(this);
|
||||||
}
|
}
|
||||||
this.viewer = (StructuredViewer) viewer;
|
this.viewer = (StructuredViewer)viewer;
|
||||||
IWorkspace oldWorkspace = null;
|
|
||||||
IWorkspace newWorkspace = null;
|
|
||||||
if (oldInput instanceof IWorkspace) {
|
|
||||||
oldWorkspace = (IWorkspace) oldInput;
|
|
||||||
} else if (oldInput instanceof IContainer) {
|
|
||||||
oldWorkspace = ((IContainer) oldInput).getWorkspace();
|
|
||||||
}
|
|
||||||
if (newInput instanceof IWorkspace) {
|
|
||||||
newWorkspace = (IWorkspace) newInput;
|
|
||||||
} else if (newInput instanceof IContainer) {
|
|
||||||
newWorkspace = ((IContainer) newInput).getWorkspace();
|
|
||||||
}
|
|
||||||
if (oldWorkspace != newWorkspace) {
|
|
||||||
if (oldWorkspace != null) {
|
|
||||||
oldWorkspace.removeResourceChangeListener(this);
|
|
||||||
}
|
|
||||||
if (newWorkspace != null) {
|
|
||||||
newWorkspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void targetChanged(final MakeTargetEvent event) {
|
public void targetChanged(final MakeTargetEvent event) {
|
||||||
|
@ -133,6 +109,7 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
case MakeTargetEvent.PROJECT_ADDED :
|
case MakeTargetEvent.PROJECT_ADDED :
|
||||||
case MakeTargetEvent.PROJECT_REMOVED :
|
case MakeTargetEvent.PROJECT_REMOVED :
|
||||||
ctrl.getDisplay().syncExec(new Runnable() {
|
ctrl.getDisplay().syncExec(new Runnable() {
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
if (ctrl != null && !ctrl.isDisposed()) {
|
if (ctrl != null && !ctrl.isDisposed()) {
|
||||||
viewer.refresh();
|
viewer.refresh();
|
||||||
|
@ -144,6 +121,7 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
case MakeTargetEvent.TARGET_CHANGED :
|
case MakeTargetEvent.TARGET_CHANGED :
|
||||||
case MakeTargetEvent.TARGET_REMOVED :
|
case MakeTargetEvent.TARGET_REMOVED :
|
||||||
ctrl.getDisplay().syncExec(new Runnable() {
|
ctrl.getDisplay().syncExec(new Runnable() {
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
if (ctrl != null && !ctrl.isDisposed()) {
|
if (ctrl != null && !ctrl.isDisposed()) {
|
||||||
if (bFlatten) {
|
if (bFlatten) {
|
||||||
|
@ -158,80 +136,4 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void processDelta(IResourceDelta delta) {
|
|
||||||
// Bail out if the widget was disposed.
|
|
||||||
Control ctrl = viewer.getControl();
|
|
||||||
if (ctrl == null || ctrl.isDisposed() || delta == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 changed children recursively.
|
|
||||||
for (int i = 0; i < affectedChildren.length; i++) {
|
|
||||||
processDelta(affectedChildren[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the affected resource
|
|
||||||
IResource resource = delta.getResource();
|
|
||||||
|
|
||||||
// Handle removed children. Issue one update for all removals.
|
|
||||||
affectedChildren = delta.getAffectedChildren(IResourceDelta.REMOVED);
|
|
||||||
if (affectedChildren.length > 0) {
|
|
||||||
ArrayList affected = new ArrayList(affectedChildren.length);
|
|
||||||
for (int i = 0; i < affectedChildren.length; i++) {
|
|
||||||
if (affectedChildren[i].getResource() instanceof IContainer) {
|
|
||||||
affected.add(affectedChildren[i].getResource());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (affected.size() != 0) {
|
|
||||||
if (viewer instanceof AbstractTreeViewer) {
|
|
||||||
((AbstractTreeViewer) viewer).remove(affected.toArray());
|
|
||||||
} else {
|
|
||||||
viewer.refresh(resource);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle added children. Issue one update for all insertions.
|
|
||||||
affectedChildren = delta.getAffectedChildren(IResourceDelta.ADDED);
|
|
||||||
if (affectedChildren.length > 0) {
|
|
||||||
ArrayList affected = new ArrayList(affectedChildren.length);
|
|
||||||
for (int i = 0; i < affectedChildren.length; i++) {
|
|
||||||
if (affectedChildren[i].getResource() instanceof IContainer) {
|
|
||||||
affected.add(affectedChildren[i].getResource());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (affected.size() != 0) {
|
|
||||||
if (viewer instanceof AbstractTreeViewer) {
|
|
||||||
((AbstractTreeViewer) viewer).add(resource, affected.toArray());
|
|
||||||
} else {
|
|
||||||
viewer.refresh(resource);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resourceChanged(IResourceChangeEvent event) {
|
|
||||||
final IResourceDelta delta = event.getDelta();
|
|
||||||
Control ctrl = viewer.getControl();
|
|
||||||
if (ctrl != null && !ctrl.isDisposed()) {
|
|
||||||
// Do a sync exec, not an async exec, since the resource delta
|
|
||||||
// must be traversed in this method. It is destroyed
|
|
||||||
// when this method returns.
|
|
||||||
ctrl.getDisplay().syncExec(new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
processDelta(delta);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,8 +1,7 @@
|
||||||
package org.eclipse.cdt.make.ui.views;
|
package org.eclipse.cdt.make.ui.views;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
* (c) Copyright QNX Software Systems Ltd. 2002. All Rights Reserved.
|
||||||
* All Rights Reserved.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.eclipse.cdt.make.ui.*;
|
import org.eclipse.cdt.make.ui.*;
|
||||||
|
@ -18,6 +17,7 @@ import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||||
import org.eclipse.jface.viewers.TreeViewer;
|
import org.eclipse.jface.viewers.TreeViewer;
|
||||||
|
import org.eclipse.jface.viewers.ViewerSorter;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.events.KeyAdapter;
|
import org.eclipse.swt.events.KeyAdapter;
|
||||||
import org.eclipse.swt.events.KeyEvent;
|
import org.eclipse.swt.events.KeyEvent;
|
||||||
|
@ -41,15 +41,15 @@ public class MakeView extends ViewPart {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see IWorkbenchPart#setFocus()
|
* @see IWorkbenchPart#setFocus()
|
||||||
*/
|
*/
|
||||||
public void setFocus() {
|
public void setFocus() {
|
||||||
viewer.getTree().setFocus();
|
viewer.getTree().setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see ContentOutlinePage#createControl
|
* @see ContentOutlinePage#createControl
|
||||||
*/
|
*/
|
||||||
public void createPartControl(Composite parent) {
|
public void createPartControl(Composite parent) {
|
||||||
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||||
viewer.setUseHashlookup(true);
|
viewer.setUseHashlookup(true);
|
||||||
|
@ -59,16 +59,19 @@ public class MakeView extends ViewPart {
|
||||||
drillDownAdapter = new DrillDownAdapter(viewer);
|
drillDownAdapter = new DrillDownAdapter(viewer);
|
||||||
|
|
||||||
viewer.addDoubleClickListener(new IDoubleClickListener() {
|
viewer.addDoubleClickListener(new IDoubleClickListener() {
|
||||||
|
|
||||||
public void doubleClick(DoubleClickEvent event) {
|
public void doubleClick(DoubleClickEvent event) {
|
||||||
handleDoubleClick(event);
|
handleDoubleClick(event);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
||||||
|
|
||||||
public void selectionChanged(SelectionChangedEvent event) {
|
public void selectionChanged(SelectionChangedEvent event) {
|
||||||
handleSelectionChanged(event);
|
handleSelectionChanged(event);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
viewer.getControl().addKeyListener(new KeyAdapter() {
|
viewer.getControl().addKeyListener(new KeyAdapter() {
|
||||||
|
|
||||||
public void keyPressed(KeyEvent event) {
|
public void keyPressed(KeyEvent event) {
|
||||||
if (event.character == SWT.DEL && event.stateMask == 0) {
|
if (event.character == SWT.DEL && event.stateMask == 0) {
|
||||||
handleDeleteKeyPressed();
|
handleDeleteKeyPressed();
|
||||||
|
@ -78,6 +81,7 @@ public class MakeView extends ViewPart {
|
||||||
|
|
||||||
viewer.setContentProvider(new MakeContentProvider());
|
viewer.setContentProvider(new MakeContentProvider());
|
||||||
viewer.setLabelProvider(new MakeLabelProvider());
|
viewer.setLabelProvider(new MakeLabelProvider());
|
||||||
|
viewer.setSorter(new ViewerSorter());
|
||||||
viewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
|
viewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
|
||||||
getSite().setSelectionProvider(viewer);
|
getSite().setSelectionProvider(viewer);
|
||||||
|
|
||||||
|
@ -106,22 +110,21 @@ public class MakeView extends ViewPart {
|
||||||
private void fillLocalPullDown(IMenuManager manager) {
|
private void fillLocalPullDown(IMenuManager manager) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void hookContextMenu() {
|
private void hookContextMenu() {
|
||||||
MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
|
MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
|
||||||
menuMgr.setRemoveAllWhenShown(true);
|
menuMgr.setRemoveAllWhenShown(true);
|
||||||
menuMgr.addMenuListener(new IMenuListener() {
|
menuMgr.addMenuListener(new IMenuListener() {
|
||||||
|
|
||||||
public void menuAboutToShow(IMenuManager manager) {
|
public void menuAboutToShow(IMenuManager manager) {
|
||||||
MakeView.this.fillContextMenu(manager);
|
MakeView.this.fillContextMenu(manager);
|
||||||
updateActions((IStructuredSelection) viewer.getSelection());
|
updateActions((IStructuredSelection)viewer.getSelection());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Menu menu = menuMgr.createContextMenu(viewer.getControl());
|
Menu menu = menuMgr.createContextMenu(viewer.getControl());
|
||||||
viewer.getControl().setMenu(menu);
|
viewer.getControl().setMenu(menu);
|
||||||
// getSite().registerContextMenu(menuMgr, viewer);
|
// getSite().registerContextMenu(menuMgr, viewer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void fillContextMenu(IMenuManager manager) {
|
protected void fillContextMenu(IMenuManager manager) {
|
||||||
manager.add(buildTargetAction);
|
manager.add(buildTargetAction);
|
||||||
manager.add(addTargetAction);
|
manager.add(addTargetAction);
|
||||||
|
@ -131,7 +134,7 @@ public class MakeView extends ViewPart {
|
||||||
drillDownAdapter.addNavigationActions(manager);
|
drillDownAdapter.addNavigationActions(manager);
|
||||||
|
|
||||||
// Other plug-ins can contribute there actions here
|
// Other plug-ins can contribute there actions here
|
||||||
// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
|
// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void handleDeleteKeyPressed() {
|
protected void handleDeleteKeyPressed() {
|
||||||
|
@ -143,7 +146,7 @@ public class MakeView extends ViewPart {
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleSelectionChanged(SelectionChangedEvent event) {
|
void handleSelectionChanged(SelectionChangedEvent event) {
|
||||||
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
|
IStructuredSelection sel = (IStructuredSelection)event.getSelection();
|
||||||
updateActions(sel);
|
updateActions(sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue