1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 10:16:03 +02:00

cpath ui update

This commit is contained in:
David Inglis 2004-04-28 20:27:04 +00:00
parent 2a0432dada
commit fe6b0c576b
3 changed files with 74 additions and 39 deletions

View file

@ -126,7 +126,7 @@ public class CPathContainerWizard extends Wizard {
addPage(fContainerPage);
}
if (fFilterType != -1) {
fFilterPage = new CPathFilterPage(fFilterType);
fFilterPage = new CPathFilterPage(fCurrProject, fFilterType);
}
super.addPages();
}
@ -162,7 +162,9 @@ public class CPathContainerWizard extends Wizard {
fContainerPage = getContainerPage(selected);
return fContainerPage;
} else if (page == fContainerPage) {
fFilterPage.setEntries(fContainerPage.getContainerEntries()[0]);
if ( fContainerPage.getContainerEntries().length > 0 ) {
fFilterPage.setParentEntry(fContainerPage.getContainerEntries()[0]);
}
}
return super.getNextPage(page);
}
@ -193,13 +195,14 @@ public class CPathContainerWizard extends Wizard {
return false;
}
}
boolean canFinish = false;
if (fContainerPage != null) {
return fContainerPage.isPageComplete();
canFinish = fContainerPage.isPageComplete();
}
if (fFilterPage != null) {
return fFilterPage.isPageComplete();
if (canFinish == true && fFilterPage != null) {
canFinish = fFilterPage.isPageComplete();
}
return false;
return canFinish;
}
public static int openWizard(Shell shell, CPathContainerWizard wizard) {

View file

@ -8,10 +8,17 @@
***********************************************************************/
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
import java.util.Arrays;
import java.util.List;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.model.IPathEntryContainer;
import org.eclipse.cdt.internal.ui.viewsupport.ListContentProvider;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
@ -31,12 +38,14 @@ public class CPathFilterPage extends WizardPage {
private final int fFilterType;
private CheckboxTableViewer viewer;
private IPathEntry fContainerPath;
private IPathEntry fParentEntry;
private List fPaths;
private ICProject fCProject;
protected CPathFilterPage(int filterType) {
protected CPathFilterPage(ICProject cProject, int filterType) {
super("CPathFilterPage"); //$NON-NLS-1$
fFilterType = filterType;
fCProject = cProject;
}
@ -85,8 +94,24 @@ public class CPathFilterPage extends WizardPage {
protected void handleSelectionChanged(IStructuredSelection selection) {
}
public void setEntries(IPathEntry entry) {
fContainerPath = entry;
public void setParentEntry(IPathEntry entry) {
fParentEntry = entry;
if (fParentEntry.getEntryKind() == IPathEntry.CDT_PROJECT) {
IProject project = CUIPlugin.getWorkspace().getRoot().getProject(fParentEntry.getPath().segment(0));
if (project.isAccessible()) {
ICProject cProject = CoreModel.getDefault().create(project);
try {
fPaths = Arrays.asList(cProject.getRawPathEntries());
} catch (CModelException e) {
}
}
} else if (fParentEntry.getEntryKind() == IPathEntry.CDT_CONTAINER) {
try {
IPathEntryContainer container = CoreModel.getPathEntryContainer(fParentEntry.getPath(), fCProject);
fPaths = Arrays.asList(container.getPathEntries());
} catch (CModelException e) {
}
}
}
public IPathEntry[] getSelectedEntries() {

View file

@ -1,11 +1,10 @@
/*
/***********************************************************************************************************************************
* Created on Apr 27, 2004
*
*
* Copyright (c) 2002,2003 QNX Software Systems Ltd.
*
* Contributors:
* QNX Software Systems - Initial API and implementation
***********************************************************************/
* Contributors: QNX Software Systems - Initial API and implementation
**********************************************************************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
import java.util.ArrayList;
@ -20,9 +19,9 @@ import org.eclipse.cdt.ui.wizards.ICPathContainerPage;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
@ -31,11 +30,11 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.model.WorkbenchContentProvider;
public class ProjectContainerPage extends WizardPage implements ICPathContainerPage {
private int fFilterType;
private CheckboxTableViewer viewer;
private ICProject fCProject;
private class WorkbenchCPathContentProvider extends WorkbenchContentProvider {
@ -45,7 +44,7 @@ public class ProjectContainerPage extends WizardPage implements ICPathContainerP
IPathEntry[] entries = ((ICProject) element).getRawPathEntries();
List list = new ArrayList(entries.length);
for (int i = 0; i < entries.length; i++) {
if (entries[i].isExported()) {
if (fFilterType == entries[i].getEntryKind() && entries[i].isExported()) {
list.add(CPElement.createFromExisting(entries[i], (ICProject) element));
}
}
@ -63,7 +62,7 @@ public class ProjectContainerPage extends WizardPage implements ICPathContainerP
try {
IPathEntry[] entries = ((ICProject) element).getRawPathEntries();
for (int i = 0; i < entries.length; i++) {
if (entries[i].isExported()) {
if (fFilterType == entries[i].getEntryKind() && entries[i].isExported()) {
return true;
}
}
@ -89,20 +88,25 @@ public class ProjectContainerPage extends WizardPage implements ICPathContainerP
setDescription(CPathEntryMessages.getString("ProjectContainerPage.description")); //$NON-NLS-1$
setImageDescriptor(CPluginImages.DESC_WIZBAN_ADD_LIBRARY);
fFilterType = filterType;
validatePage();
}
public void initialize(ICProject project, IPathEntry[] currentEntries) {
fCProject = project;
}
public boolean finish() {
return false;
return true;
}
public IPathEntry[] getContainerEntries() {
return new IPathEntry[0];
return /*viewer != null ? (IPathEntry[]) viewer.getCheckedElements(): */new IPathEntry[0];
}
public void setSelection(IPathEntry containerEntry) {
if (containerEntry != null) {
viewer.setSelection(new StructuredSelection(containerEntry));
}
}
public void createControl(Composite parent) {
@ -116,34 +120,37 @@ public class ProjectContainerPage extends WizardPage implements ICPathContainerP
GridData gd = new GridData();
gd.horizontalSpan = 2;
label.setLayoutData(gd);
viewer =
CheckboxTableViewer.newCheckList(
container,
SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
viewer = CheckboxTableViewer.newCheckList(container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
viewer.setContentProvider(new WorkbenchCPathContentProvider());
viewer.setLabelProvider(new CPElementLabelProvider());
viewer.addCheckStateListener(new ICheckStateListener() {
public void checkStateChanged(CheckStateChangedEvent event) {
// Prevent user to change checkbox states
viewer.setChecked(event.getElement(), !event.getChecked());
}
});
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent e) {
handleSelectionChanged((IStructuredSelection) e.getSelection());
validatePage();
}
});
gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = 400;
gd.heightHint = 300;
viewer.getTable().setLayoutData(gd);
viewer.addFilter(new ViewerFilter() {
public boolean select(Viewer viewer, Object parentElement, Object element) {
return true;
}
});
setControl(container);
validatePage();
}
protected void handleSelectionChanged(IStructuredSelection selection) {
// dinglis-TODO Auto-generated method stub
/**
* Method validatePage.
*/
private void validatePage() {
setPageComplete(getSelected() != null);
}
}
private IPathEntry getSelected() {
return getContainerEntries().length > 0 ? getContainerEntries()[0] : null;
}
}