1
0
Fork 0
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:
David Inglis 2003-09-04 17:42:03 +00:00
parent 70e982f801
commit be82338a01
8 changed files with 134 additions and 30 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
package org.eclipse.cdt.make.ui;
package org.eclipse.cdt.make.ui.dialogs;
/*
* (c) Copyright QNX Software Systems Ltd. 2002.