blob: c5b832991a56b2318e536d33627d77a011b97682 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2010 IBM Corporation 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:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.ui.internal.ide.dialogs;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.internal.ide.filesystem.FileSystemConfiguration;
import org.eclipse.ui.internal.ide.filesystem.FileSystemMessages;
import org.eclipse.ui.internal.ide.filesystem.FileSystemSupportRegistry;
/**
* FileSystemSelectionArea is the area used to select the file system.
* @since 3.2
*
*/
public class FileSystemSelectionArea {
private Label fileSystemTitle;
private ComboViewer fileSystems;
/**
* Create a new instance of the receiver.
*/
public FileSystemSelectionArea(){
}
/**
* Create the contents of the receiver in composite.
* @param composite
*/
public void createContents(Composite composite) {
fileSystemTitle = new Label(composite, SWT.NONE);
fileSystemTitle.setText(FileSystemMessages.FileSystemSelection_title);
fileSystemTitle.setFont(composite.getFont());
fileSystems = new ComboViewer(composite, SWT.READ_ONLY);
fileSystems.getControl().setFont(composite.getFont());
fileSystems.setLabelProvider(new LabelProvider() {
@Override
public String getText(Object element) {
return ((FileSystemConfiguration) element).getLabel();
}
});
fileSystems.setContentProvider(new IStructuredContentProvider() {
@Override
public void dispose() {
// Nothing to do
}
@Override
public Object[] getElements(Object inputElement) {
return FileSystemSupportRegistry.getInstance()
.getConfigurations();
}
@Override
public void inputChanged(org.eclipse.jface.viewers.Viewer viewer,
Object oldInput, Object newInput) {
// Nothing to do
}
});
fileSystems.setInput(this);
fileSystems.setSelection(new StructuredSelection(
FileSystemSupportRegistry.getInstance()
.getDefaultConfiguration()));
}
/**
* Return the selected configuration.
* @return FileSystemConfiguration or <code>null</code> if nothing
* is selected.
*/
public FileSystemConfiguration getSelectedConfiguration() {
ISelection selection = fileSystems.getSelection();
if (selection instanceof IStructuredSelection) {
IStructuredSelection structured = (IStructuredSelection) selection;
if (structured.size() == 1) {
return (FileSystemConfiguration) structured.getFirstElement();
}
}
return null;
}
/**
* Set the enablement state of the widget.
* @param enabled
*/
public void setEnabled(boolean enabled) {
fileSystemTitle.setEnabled(enabled);
fileSystems.getControl().setEnabled(enabled);
}
}