mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
update new build target dialog
This commit is contained in:
parent
70e982f801
commit
be82338a01
8 changed files with 134 additions and 30 deletions
|
@ -10,8 +10,8 @@ package org.eclipse.cdt.make.internal.ui;
|
|||
|
||||
import org.eclipse.cdt.make.core.MakeBuilder;
|
||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.ui.BuildPathInfoBlock;
|
||||
import org.eclipse.cdt.make.ui.SettingsBlock;
|
||||
import org.eclipse.cdt.make.ui.dialogs.BuildPathInfoBlock;
|
||||
import org.eclipse.cdt.make.ui.dialogs.SettingsBlock;
|
||||
import org.eclipse.cdt.ui.dialogs.BinaryParserBlock;
|
||||
import org.eclipse.cdt.ui.dialogs.ICOptionContainer;
|
||||
import org.eclipse.cdt.ui.dialogs.TabFolderOptionBlock;
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package org.eclipse.cdt.make.internal.ui.part;
|
||||
|
||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
import org.eclipse.jface.viewers.TableViewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
|
||||
public class ListViewerPart extends StructuredViewerPart {
|
||||
|
||||
public ListViewerPart(String[] buttonLabels) {
|
||||
super(buttonLabels);
|
||||
}
|
||||
|
||||
protected StructuredViewer createStructuredViewer(Composite parent, int style) {
|
||||
TableViewer tableViewer = new TableViewer(parent, SWT.SINGLE | SWT.BORDER);
|
||||
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
||||
public void selectionChanged(SelectionChangedEvent e) {
|
||||
ListViewerPart.this.selectionChanged((IStructuredSelection) e.getSelection());
|
||||
}
|
||||
});
|
||||
return tableViewer;
|
||||
}
|
||||
|
||||
protected void buttonSelected(Button button, int index) {
|
||||
}
|
||||
|
||||
protected void selectionChanged(IStructuredSelection selection) {
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -7,6 +7,7 @@ package org.eclipse.cdt.make.ui;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.core.IMakeTargetListener;
|
||||
|
@ -27,12 +28,19 @@ import org.eclipse.jface.viewers.Viewer;
|
|||
import org.eclipse.swt.widgets.Control;
|
||||
|
||||
public class MakeContentProvider implements ITreeContentProvider, IMakeTargetListener, IResourceChangeListener {
|
||||
private boolean bFlatten;
|
||||
|
||||
protected StructuredViewer viewer;
|
||||
|
||||
/**
|
||||
* Constructor for MakeContentProvider
|
||||
*/
|
||||
public MakeContentProvider() {
|
||||
this(false);
|
||||
}
|
||||
|
||||
public MakeContentProvider(boolean flat) {
|
||||
bFlatten = flat;
|
||||
}
|
||||
|
||||
public Object[] getChildren(Object obj) {
|
||||
|
@ -72,6 +80,15 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
|||
}
|
||||
|
||||
public Object[] getElements(Object obj) {
|
||||
if ( bFlatten ) {
|
||||
List list = new ArrayList();
|
||||
Object[] children = getChildren(obj);
|
||||
for( int i = 0; i < children.length; i++ ) {
|
||||
list.add(children[i]);
|
||||
list.addAll(Arrays.asList(getElements(children[i])));
|
||||
}
|
||||
return list.toArray();
|
||||
}
|
||||
return getChildren(obj);
|
||||
}
|
||||
|
||||
|
|
|
@ -8,12 +8,23 @@ package org.eclipse.cdt.make.ui;
|
|||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIImages;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.jface.viewers.LabelProvider;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.ui.model.WorkbenchLabelProvider;
|
||||
|
||||
public class MakeLabelProvider extends LabelProvider {
|
||||
private IPath pathPrefix;
|
||||
|
||||
WorkbenchLabelProvider fLableProvider = new WorkbenchLabelProvider();
|
||||
|
||||
public MakeLabelProvider() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public MakeLabelProvider(IPath removePrefix) {
|
||||
pathPrefix = removePrefix;
|
||||
}
|
||||
/**
|
||||
* @see ILabelProvider#getImage(Object)
|
||||
*/
|
||||
|
@ -31,12 +42,32 @@ public class MakeLabelProvider extends LabelProvider {
|
|||
* @see ILabelProvider#getText(Object)
|
||||
*/
|
||||
public String getText(Object obj) {
|
||||
StringBuffer str = new StringBuffer();
|
||||
if (obj instanceof IMakeTarget) {
|
||||
return ((IMakeTarget)obj).getName();
|
||||
if ( pathPrefix != null) {
|
||||
IPath targetPath = ((IMakeTarget)obj).getContainer().getProjectRelativePath();
|
||||
if ( pathPrefix.isPrefixOf(targetPath) ) {
|
||||
targetPath = targetPath.removeFirstSegments(pathPrefix.segmentCount());
|
||||
}
|
||||
str.append(targetPath.toString());
|
||||
if (targetPath.segmentCount() > 0) {
|
||||
str.append("/");
|
||||
}
|
||||
}
|
||||
str.append(((IMakeTarget)obj).getName());
|
||||
} else if (obj instanceof IContainer) {
|
||||
return fLableProvider.getText(obj);
|
||||
if ( pathPrefix != null ) {
|
||||
IPath targetPath = ((IContainer)obj).getProjectRelativePath();
|
||||
if ( pathPrefix.isPrefixOf(targetPath) ) {
|
||||
targetPath = targetPath.removeFirstSegments(pathPrefix.segmentCount());
|
||||
}
|
||||
str.append(targetPath.toString());
|
||||
str.append("/");
|
||||
} else {
|
||||
return fLableProvider.getText(obj);
|
||||
}
|
||||
}
|
||||
return ""; //$NON-NLS-1$
|
||||
return str.toString();
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
|
|
|
@ -19,6 +19,7 @@ import org.eclipse.core.runtime.QualifiedName;
|
|||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.window.Window;
|
||||
import org.eclipse.ui.IObjectActionDelegate;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.eclipse.ui.IWorkbenchWindow;
|
||||
|
@ -41,14 +42,15 @@ public class BuildTargetAction extends ActionDelegate implements IObjectActionDe
|
|||
dialog.setTarget(new IMakeTarget[] { target });
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
dialog.open();
|
||||
IMakeTarget target = dialog.getTarget();
|
||||
if (target != null) {
|
||||
try {
|
||||
fContainer.setSessionProperty(
|
||||
new QualifiedName(MakeUIPlugin.getUniqueIdentifier(), "lastTarget"),
|
||||
target.getName());
|
||||
} catch (CoreException e1) {
|
||||
if (dialog.open() == Window.OK) {
|
||||
IMakeTarget target = dialog.getTarget();
|
||||
if (target != null) {
|
||||
try {
|
||||
fContainer.setSessionProperty(
|
||||
new QualifiedName(MakeUIPlugin.getUniqueIdentifier(), "lastTarget"),
|
||||
target.getName());
|
||||
} catch (CoreException e1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
* IBM Rational Software - Initial API and implementation
|
||||
* QNX Software Systems - Move to Make plugin
|
||||
***********************************************************************/
|
||||
package org.eclipse.cdt.make.ui;
|
||||
package org.eclipse.cdt.make.ui.dialogs;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.StringTokenizer;
|
|
@ -1,13 +1,16 @@
|
|||
package org.eclipse.cdt.make.ui.dialogs;
|
||||
|
||||
import org.eclipse.cdt.make.core.IMakeTarget;
|
||||
import org.eclipse.cdt.make.internal.ui.part.CheckboxTablePart;
|
||||
import org.eclipse.cdt.make.internal.ui.part.ListViewerPart;
|
||||
import org.eclipse.cdt.make.ui.MakeContentProvider;
|
||||
import org.eclipse.cdt.make.ui.MakeLabelProvider;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.jface.viewers.CheckboxTableViewer;
|
||||
import org.eclipse.jface.viewers.DoubleClickEvent;
|
||||
import org.eclipse.jface.viewers.IDoubleClickListener;
|
||||
import org.eclipse.jface.viewers.StructuredSelection;
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.jface.viewers.ViewerFilter;
|
||||
import org.eclipse.swt.SWT;
|
||||
|
@ -15,12 +18,13 @@ import org.eclipse.swt.layout.GridData;
|
|||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
public class BuildTargetDialog extends Dialog {
|
||||
|
||||
private IMakeTarget[] selected;
|
||||
private CheckboxTableViewer targetListViewer;
|
||||
private StructuredViewer listViewer;
|
||||
private IContainer fContainer;
|
||||
|
||||
public BuildTargetDialog(Shell shell, IContainer container) {
|
||||
|
@ -50,26 +54,41 @@ public class BuildTargetDialog extends Dialog {
|
|||
protected Control createDialogArea(Composite parent) {
|
||||
Composite composite = (Composite) super.createDialogArea(parent);
|
||||
((GridLayout)composite.getLayout()).numColumns = 2;
|
||||
CheckboxTablePart part = new CheckboxTablePart(new String[] { "Select All", "Deselect All", "New" });
|
||||
part.createControl(parent, SWT.NULL, 2);
|
||||
targetListViewer = part.getTableViewer();
|
||||
targetListViewer.setContentProvider(new MakeContentProvider());
|
||||
targetListViewer.addFilter(new ViewerFilter() {
|
||||
Label title = new Label(composite, SWT.NONE);
|
||||
GridData gd = new GridData();
|
||||
gd.horizontalSpan = 2;
|
||||
title.setLayoutData(gd);
|
||||
title.setText("Make Targets for: " + fContainer.getFullPath().toString().substring(1));
|
||||
ListViewerPart part = new ListViewerPart(new String[] { "Add Target...", "Remove Target", "Edit Target..." });
|
||||
part.createControl(composite, SWT.NULL, 2);
|
||||
listViewer = part.getViewer();
|
||||
listViewer.setContentProvider(new MakeContentProvider(true));
|
||||
listViewer.addFilter(new ViewerFilter() {
|
||||
public boolean select(Viewer viewer, Object parentElement, Object element) {
|
||||
return (element instanceof IMakeTarget);
|
||||
}
|
||||
});
|
||||
targetListViewer.setLabelProvider(new MakeLabelProvider());
|
||||
listViewer.setLabelProvider(new MakeLabelProvider(fContainer.getProjectRelativePath()));
|
||||
listViewer.addDoubleClickListener(new IDoubleClickListener() {
|
||||
public void doubleClick(DoubleClickEvent event) {
|
||||
okPressed();
|
||||
}
|
||||
});
|
||||
|
||||
GridData gd = (GridData) part.getControl().getLayoutData();
|
||||
gd.heightHint = 100;
|
||||
gd.widthHint = 100;
|
||||
|
||||
targetListViewer.setInput(fContainer);
|
||||
gd = (GridData) part.getControl().getLayoutData();
|
||||
gd.heightHint = convertHeightInCharsToPixels(15);
|
||||
gd.widthHint = convertWidthInCharsToPixels(50);
|
||||
part.getControl().setLayoutData(gd);
|
||||
|
||||
listViewer.setInput(fContainer);
|
||||
if (selected != null)
|
||||
targetListViewer.setCheckedElements(selected);
|
||||
listViewer.setSelection(new StructuredSelection(selected), true);
|
||||
|
||||
return composite;
|
||||
}
|
||||
|
||||
protected void okPressed() {
|
||||
super.okPressed();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package org.eclipse.cdt.make.ui;
|
||||
package org.eclipse.cdt.make.ui.dialogs;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
Loading…
Add table
Reference in a new issue