1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 00:45:28 +02:00

update make view to use make target provider

This commit is contained in:
David Inglis 2003-08-19 02:22:13 +00:00
parent 2bb372a867
commit 8043fd6640
5 changed files with 149 additions and 282 deletions

View file

@ -44,7 +44,6 @@
%MakeConversionWizard.description
</description>
</wizard>
<!-- For C++ Wizards -->
<wizard
name="%WizardNewCCMakeProject.name"
@ -59,7 +58,7 @@
</description>
</wizard>
<wizard
name="%WizardConvertMakeWizard.name"
name="%WizardConvertMakeProject.name"
icon="icons/ctool16/convert-normal.gif"
category="org.eclipse.cdt.ui.newCCWizards"
class="org.eclipse.cdt.make.ui.wizards.ConvertToMakeProjectWizard"
@ -70,7 +69,6 @@
%MakeConversionWizard.description
</description>
</wizard>
</extension>
<extension
point="org.eclipse.ui.popupMenus">
@ -217,10 +215,11 @@
<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="%ActionSetMake.label"
id="org.eclipse.cdt.make.ui.actionSet1">
label="%ActionUpdateActionSet.label"
id="org.eclipse.cdt.make.ui.updateActionSet">
<action
label="org.eclipse.cdt.make.ui.action1"
class="org.eclipse.cdt.make.ui.actions.UpdateMakeProjectAction"
id="org.eclipse.cdt.make.ui.action1">
</action>
</actionSet>

View file

@ -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;

View file

@ -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) {
}
}

View file

@ -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) {
}
}

View file

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