mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-31 21:05:37 +02:00
update make view to use make target provider
This commit is contained in:
parent
2bb372a867
commit
8043fd6640
5 changed files with 149 additions and 282 deletions
|
@ -44,7 +44,6 @@
|
||||||
%MakeConversionWizard.description
|
%MakeConversionWizard.description
|
||||||
</description>
|
</description>
|
||||||
</wizard>
|
</wizard>
|
||||||
|
|
||||||
<!-- For C++ Wizards -->
|
<!-- For C++ Wizards -->
|
||||||
<wizard
|
<wizard
|
||||||
name="%WizardNewCCMakeProject.name"
|
name="%WizardNewCCMakeProject.name"
|
||||||
|
@ -59,7 +58,7 @@
|
||||||
</description>
|
</description>
|
||||||
</wizard>
|
</wizard>
|
||||||
<wizard
|
<wizard
|
||||||
name="%WizardConvertMakeWizard.name"
|
name="%WizardConvertMakeProject.name"
|
||||||
icon="icons/ctool16/convert-normal.gif"
|
icon="icons/ctool16/convert-normal.gif"
|
||||||
category="org.eclipse.cdt.ui.newCCWizards"
|
category="org.eclipse.cdt.ui.newCCWizards"
|
||||||
class="org.eclipse.cdt.make.ui.wizards.ConvertToMakeProjectWizard"
|
class="org.eclipse.cdt.make.ui.wizards.ConvertToMakeProjectWizard"
|
||||||
|
@ -70,7 +69,6 @@
|
||||||
%MakeConversionWizard.description
|
%MakeConversionWizard.description
|
||||||
</description>
|
</description>
|
||||||
</wizard>
|
</wizard>
|
||||||
|
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.popupMenus">
|
point="org.eclipse.ui.popupMenus">
|
||||||
|
@ -217,10 +215,11 @@
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.actionSets">
|
point="org.eclipse.ui.actionSets">
|
||||||
<actionSet
|
<actionSet
|
||||||
label="%ActionSetMake.label"
|
label="%ActionUpdateActionSet.label"
|
||||||
id="org.eclipse.cdt.make.ui.actionSet1">
|
id="org.eclipse.cdt.make.ui.updateActionSet">
|
||||||
<action
|
<action
|
||||||
label="org.eclipse.cdt.make.ui.action1"
|
label="org.eclipse.cdt.make.ui.action1"
|
||||||
|
class="org.eclipse.cdt.make.ui.actions.UpdateMakeProjectAction"
|
||||||
id="org.eclipse.cdt.make.ui.action1">
|
id="org.eclipse.cdt.make.ui.action1">
|
||||||
</action>
|
</action>
|
||||||
</actionSet>
|
</actionSet>
|
||||||
|
|
|
@ -7,23 +7,15 @@ package org.eclipse.cdt.make.ui.actions;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
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.internal.ui.MakeUIPlugin;
|
||||||
import org.eclipse.cdt.make.ui.views.MakeTarget;
|
import org.eclipse.cdt.make.ui.views.MakeTarget;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
|
||||||
import org.eclipse.core.resources.IWorkspaceRunnable;
|
import org.eclipse.core.resources.IWorkspaceRunnable;
|
||||||
import org.eclipse.core.resources.IncrementalProjectBuilder;
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.OperationCanceledException;
|
import org.eclipse.core.runtime.OperationCanceledException;
|
||||||
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
|
||||||
import org.eclipse.jface.operation.IRunnableContext;
|
import org.eclipse.jface.operation.IRunnableContext;
|
||||||
import org.eclipse.jface.operation.IRunnableWithProgress;
|
import org.eclipse.jface.operation.IRunnableWithProgress;
|
||||||
import org.eclipse.ui.IEditorInput;
|
import org.eclipse.ui.IEditorInput;
|
||||||
|
|
|
@ -5,35 +5,35 @@ package org.eclipse.cdt.make.ui.views;
|
||||||
* All Rights Reserved.
|
* 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.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.ITreeContentProvider;
|
||||||
import org.eclipse.jface.viewers.Viewer;
|
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;
|
protected Viewer viewer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for MakeContentProvider
|
* Constructor for MakeContentProvider
|
||||||
*/
|
*/
|
||||||
public MakeContentProvider() {
|
public MakeContentProvider() {
|
||||||
super();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see ITreeContentProvider#getChildren(Object)
|
* @see ITreeContentProvider#getChildren(Object)
|
||||||
*/
|
*/
|
||||||
public Object[] getChildren(Object obj) {
|
public Object[] getChildren(Object obj) {
|
||||||
if (obj instanceof MakeTarget) {
|
if (obj instanceof IContainer) {
|
||||||
MakeTarget md = (MakeTarget)obj;
|
if (viewer != null) {
|
||||||
return (Object[])md.getChildren();
|
Object input = viewer.getInput();
|
||||||
|
if (input instanceof IMakeTargetProvider) {
|
||||||
|
IMakeTargetProvider provider = (IMakeTargetProvider)obj;
|
||||||
|
return provider.getTargets((IContainer)obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return new Object[0];
|
return new Object[0];
|
||||||
}
|
}
|
||||||
|
@ -42,9 +42,10 @@ public class MakeContentProvider implements ITreeContentProvider, IResourceChang
|
||||||
* @see ITreeContentProvider#getParent(Object)
|
* @see ITreeContentProvider#getParent(Object)
|
||||||
*/
|
*/
|
||||||
public Object getParent(Object obj) {
|
public Object getParent(Object obj) {
|
||||||
if (obj instanceof MakeTarget) {
|
if (obj instanceof IMakeTarget) {
|
||||||
MakeTarget directives = (MakeTarget)obj;
|
return ((IMakeTarget)obj).getContainer();
|
||||||
return directives.getParent();
|
} else if (obj instanceof IContainer) {
|
||||||
|
return ((IContainer)obj).getParent();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -69,10 +70,10 @@ public class MakeContentProvider implements ITreeContentProvider, IResourceChang
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
if (viewer != null) {
|
if (viewer != null) {
|
||||||
Object obj = viewer.getInput();
|
Object obj = viewer.getInput();
|
||||||
if (obj instanceof MakeTarget) {
|
if (obj instanceof IMakeTargetProvider) {
|
||||||
MakeTarget target = (MakeTarget)obj;
|
IMakeTargetProvider provider = (IMakeTargetProvider)obj;
|
||||||
IWorkspace workspace = target.getResource().getWorkspace();
|
provider.removeListener(this);
|
||||||
workspace.removeResourceChangeListener(this);
|
provider = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,86 +84,21 @@ public class MakeContentProvider implements ITreeContentProvider, IResourceChang
|
||||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||||
this.viewer = viewer;
|
this.viewer = viewer;
|
||||||
if (oldInput != null) {
|
if (oldInput != null) {
|
||||||
if (oldInput instanceof MakeTarget) {
|
if (oldInput instanceof IMakeTargetProvider) {
|
||||||
IResource res = ((MakeTarget)oldInput).getResource();
|
((IMakeTargetProvider)oldInput).removeListener(this);
|
||||||
if (res instanceof IWorkspaceRoot) {
|
|
||||||
IWorkspace workspace = res.getWorkspace();
|
|
||||||
workspace.removeResourceChangeListener(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (newInput != null) {
|
if (newInput != null) {
|
||||||
if (newInput instanceof MakeTarget) {
|
if (newInput instanceof IMakeTargetProvider) {
|
||||||
IResource res = ((MakeTarget)newInput).getResource();
|
((IMakeTargetProvider)newInput).addListener(this);
|
||||||
if (res instanceof IWorkspaceRoot) {
|
|
||||||
IWorkspace workspace = res.getWorkspace();
|
|
||||||
workspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resourceChanged (final IResourceChangeEvent event) {
|
/* (non-Javadoc)
|
||||||
final IResourceDelta deltas = event.getDelta();
|
* @see org.eclipse.cdt.make.core.IMakeTargetListener#targetChanged(org.eclipse.cdt.make.core.MakeTargetEvent)
|
||||||
Control ctrl = viewer.getControl();
|
*/
|
||||||
if (ctrl != null && !ctrl.isDisposed()) {
|
public void targetChanged(MakeTargetEvent event) {
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,38 +5,23 @@ package org.eclipse.cdt.make.ui.views;
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.util.Hashtable;
|
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||||
import java.util.Map;
|
import org.eclipse.core.resources.IContainer;
|
||||||
|
import org.eclipse.jface.viewers.LabelProvider;
|
||||||
import org.eclipse.jface.resource.ImageDescriptor;
|
|
||||||
import org.eclipse.jface.viewers.ILabelProvider;
|
|
||||||
import org.eclipse.jface.viewers.ILabelProviderListener;
|
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
|
import org.eclipse.ui.ISharedImages;
|
||||||
|
import org.eclipse.ui.PlatformUI;
|
||||||
|
|
||||||
public class MakeLabelProvider implements ILabelProvider {
|
public class MakeLabelProvider extends LabelProvider {
|
||||||
|
|
||||||
/**
|
|
||||||
* The cache of images that have been dispensed by this provider.
|
|
||||||
* Maps ImageDescriptor->Image.
|
|
||||||
*/
|
|
||||||
private Map imageTable = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see ILabelProvider#getImage(Object)
|
* @see ILabelProvider#getImage(Object)
|
||||||
*/
|
*/
|
||||||
public Image getImage(Object obj) {
|
public Image getImage(Object obj) {
|
||||||
Image image = null;
|
Image image = null;
|
||||||
//obtain the cached image corresponding to the descriptor
|
if (obj instanceof IMakeTarget) {
|
||||||
if (imageTable == null) {
|
} else if (obj instanceof IContainer) {
|
||||||
imageTable = new Hashtable(4);
|
return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
|
||||||
}
|
|
||||||
if (obj instanceof MakeTarget) {
|
|
||||||
ImageDescriptor descriptor = ((MakeTarget)obj).getImageDescriptor();
|
|
||||||
image = (Image) imageTable.get(descriptor);
|
|
||||||
if (image == null) {
|
|
||||||
image = descriptor.createImage();
|
|
||||||
imageTable.put(descriptor, image);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
@ -46,33 +31,10 @@ public class MakeLabelProvider implements ILabelProvider {
|
||||||
*/
|
*/
|
||||||
public String getText(Object obj) {
|
public String getText(Object obj) {
|
||||||
if (obj instanceof MakeTarget) {
|
if (obj instanceof MakeTarget) {
|
||||||
return ((MakeTarget)obj).toString();
|
return ((IMakeTarget)obj).getName();
|
||||||
|
} else if (obj instanceof IContainer) {
|
||||||
|
return ((IContainer)obj).getName();
|
||||||
}
|
}
|
||||||
return "";
|
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) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,27 +5,31 @@ package org.eclipse.cdt.make.ui.views;
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.eclipse.core.resources.ResourcesPlugin;
|
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||||
import org.eclipse.jface.action.Action;
|
|
||||||
import org.eclipse.jface.action.IMenuListener;
|
import org.eclipse.jface.action.IMenuListener;
|
||||||
import org.eclipse.jface.action.IMenuManager;
|
import org.eclipse.jface.action.IMenuManager;
|
||||||
import org.eclipse.jface.action.IToolBarManager;
|
import org.eclipse.jface.action.IToolBarManager;
|
||||||
import org.eclipse.jface.action.MenuManager;
|
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.DoubleClickEvent;
|
||||||
import org.eclipse.jface.viewers.IDoubleClickListener;
|
import org.eclipse.jface.viewers.IDoubleClickListener;
|
||||||
|
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.TreeViewer;
|
import org.eclipse.jface.viewers.TreeViewer;
|
||||||
import org.eclipse.swt.SWT;
|
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.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
|
||||||
import org.eclipse.swt.widgets.Menu;
|
import org.eclipse.swt.widgets.Menu;
|
||||||
import org.eclipse.ui.IActionBars;
|
import org.eclipse.ui.IActionBars;
|
||||||
|
import org.eclipse.ui.part.DrillDownAdapter;
|
||||||
import org.eclipse.ui.part.ViewPart;
|
import org.eclipse.ui.part.ViewPart;
|
||||||
|
|
||||||
public class MakeView extends ViewPart {
|
public class MakeView extends ViewPart {
|
||||||
|
|
||||||
TreeViewer viewer;
|
TreeViewer viewer;
|
||||||
|
DrillDownAdapter drillDownAdapter;
|
||||||
|
|
||||||
public MakeView() {
|
public MakeView() {
|
||||||
super();
|
super();
|
||||||
|
@ -39,9 +43,92 @@ public class MakeView extends ViewPart {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles double clicks in viewer.
|
* @see ContentOutlinePage#createControl
|
||||||
* Opens editor if file double-clicked.
|
|
||||||
*/
|
*/
|
||||||
|
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) {
|
protected void handleDoubleClick(DoubleClickEvent event) {
|
||||||
IStructuredSelection s = (IStructuredSelection) event.getSelection();
|
IStructuredSelection s = (IStructuredSelection) event.getSelection();
|
||||||
Object element = s.getFirstElement();
|
Object element = s.getFirstElement();
|
||||||
|
@ -56,126 +143,17 @@ public class MakeView extends ViewPart {
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
void handleSelectionChanged(SelectionChangedEvent event) {
|
||||||
* called to create the context menu of the outline
|
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
|
||||||
*/
|
// updateStatusLine(sel);
|
||||||
protected void contextMenuAboutToShow(IMenuManager menu) {
|
updateActions(sel);
|
||||||
IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
|
}
|
||||||
Object element = selection.getFirstElement();
|
|
||||||
if (element instanceof MakeTarget) {
|
void updateActions(IStructuredSelection sel) {
|
||||||
final MakeTarget ta = (MakeTarget) element;
|
// deleteAction.selectionChanged(sel);
|
||||||
Action add = new Action("Add...") {
|
// renameAction.selectionChanged(sel);
|
||||||
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"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue