/* 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.properties;
import sharpen.core.*;
import sharpen.ui.dialogs.*;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.dialogs.*;
import org.eclipse.ui.model.*;
import sharpen.builder.*;
public class SharpenBuilderPropertyPage extends PropertyPage {
private Text _outputPath;
/**
* Constructor for SamplePropertyPage.
*/
public SharpenBuilderPropertyPage() {
super();
}
private Group createGroup(Composite parent, String groupLabel) {
Group group = new Group(parent, SWT.SHADOW_IN);
group.setText(groupLabel);
group.setLayout(new RowLayout(SWT.VERTICAL));
return group;
}
private void createOutputFolderGroup(Composite composite, final ISharpenProject configuration) {
Group group = createGroup(composite, "Output Folder: ");
_outputPath = new Text(group, SWT.NONE);
_outputPath.setEditable(false);
setOutputFolder(configuration.getTargetProject());
Button button = new Button(group, SWT.PUSH);
button.setText("Browse...");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent evt) {
FolderSelectionDialog dlg = new FolderSelectionDialog(getShell(), new WorkbenchLabelProvider(), new WorkbenchContentProvider());
dlg.setTitle("Select Output Location: ");
dlg.setInput(JavaModelUtility.workspaceRoot());
dlg.setInitialSelection(getOutputFolder());
dlg.addFilter(new ViewerFilter() {
public boolean select(Viewer viewer, Object parentElement, Object element) {
return element instanceof IContainer;
}
});
if (FolderSelectionDialog.OK == dlg.open())
{
setOutputFolder((IContainer) dlg.getFirstResult());
}
}
});
}
private void setOutputFolder(IContainer outputFolder) {
String path = outputFolder.getFullPath().toPortableString();
_outputPath.setText(path);
_outputPath.setData(outputFolder);
_outputPath.setToolTipText(path);
_outputPath.pack();
}
private IFolder getOutputFolder() {
return (IFolder)_outputPath.getData();
}
@Override
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new RowLayout(SWT.VERTICAL));
try {
ISharpenProject configuration = SharpenProject.create(selectedProject());
createOutputFolderGroup(composite, configuration);
} catch (CoreException e) {
e.printStackTrace();
}
return composite;
}
private IProject selectedProject() {
return (IProject) getElement().getAdapter(IProject.class);
}
}