/******************************************************************************* * Copyright (c) 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * QNX Software Systems - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.ui.workingsets; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.viewers.IFilter; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.dialogs.PropertyPage; /** * Property page for the configurations of a working set. * * @author Christian W. Damus (cdamus) * * @since 6.0 */ public class WorkingSetConfigurationsPage extends PropertyPage { private WorkingSetConfigurationBlock block; /** * Initializes me. */ public WorkingSetConfigurationsPage() { super(); noDefaultAndApplyButton(); } @Override protected Control createContents(Composite parent) { Composite result = new Composite(parent, SWT.NONE); GridLayoutFactory.fillDefaults().margins(5, 5).applyTo(result); final WorkspaceSnapshot workspace = WorkingSetConfigurationManager.getDefault() .createWorkspaceSnapshot(); final IWorkingSetProxy.ISnapshot workingSet = getWorkingSet(workspace); if (workingSet == null) { new Label(result, SWT.NONE).setText(WorkingSetMessages.WSetConfigsPage_noProjects); } else { block = new WorkingSetConfigurationBlock(workspace, workingSet); block.setWorkingSetFilter(new IFilter() { public boolean select(Object toTest) { return toTest == workingSet; } }); Control contents = block.createContents(result); contents.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); } return result; } private IWorkingSetProxy.ISnapshot getWorkingSet(WorkspaceSnapshot workspace) { IWorkingSetProxy.ISnapshot result = null; IWorkingSet realWorkingSet = (IWorkingSet) getElement().getAdapter(IWorkingSet.class); if (realWorkingSet != null) { result = workspace.getWorkingSet(realWorkingSet.getName()); if ((result != null) && result.resolveProjects().isEmpty()) { // no C/C++ projects to configure result = null; } } return result; } @Override public boolean performOk() { if (!block.build()) { // user cancelled: don't save, and don't close the property page return false; } block.save(); return true; } }