/* Copyright (C) 2004 - 2008 Versant Inc. http://www.db4o.com
This file is part of the sharpen open source java to c# translator.
sharpen is free software; you can redistribute it and/or modify it under
the terms of version 2 of the GNU General Public License as published
by the Free Software Foundation and as clarified by db4objects' GPL
interpretation policy, available at
http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
Suite 350, San Mateo, CA 94403, USA.
sharpen is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
package sharpen.ui.dialogs;
import org.eclipse.core.resources.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.window.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.dialogs.*;
import org.eclipse.ui.views.navigator.*;
/**
*/
public class FolderSelectionDialog extends ElementTreeSelectionDialog implements ISelectionChangedListener {
private Button fNewFolderButton;
private IContainer fSelectedContainer;
public FolderSelectionDialog(Shell parent, ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
super(parent, labelProvider, contentProvider);
setComparator(new ResourceComparator(ResourceComparator.NAME));
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createDialogArea(Composite parent) {
Composite result= (Composite)super.createDialogArea(parent);
getTreeViewer().addSelectionChangedListener(this);
Button button = new Button(result, SWT.PUSH);
button.setText("Select Output Folder");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
newFolderButtonPressed();
}
});
button.setFont(parent.getFont());
fNewFolderButton= button;
applyDialogFont(result);
return result;
}
private void updateNewFolderButtonState() {
IStructuredSelection selection= (IStructuredSelection) getTreeViewer().getSelection();
fSelectedContainer= null;
if (selection.size() == 1) {
Object first= selection.getFirstElement();
if (first instanceof IContainer) {
fSelectedContainer= (IContainer) first;
}
}
fNewFolderButton.setEnabled(fSelectedContainer != null);
}
protected void newFolderButtonPressed() {
NewFolderDialog dialog= new NewFolderDialog(getShell(), fSelectedContainer);
if (dialog.open() == Window.OK) {
TreeViewer treeViewer= getTreeViewer();
treeViewer.refresh(fSelectedContainer);
Object createdFolder= dialog.getResult()[0];
treeViewer.reveal(createdFolder);
treeViewer.setSelection(new StructuredSelection(createdFolder));
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
*/
public void selectionChanged(SelectionChangedEvent event) {
updateNewFolderButtonState();
}
}