/*
Copyright (C) 2009 by Claas Wilke (claaswilke@gmx.net).
This file is part of the Model Bus GUI of Dresden OCL2 for Eclipse.
Dresden OCL2 for Eclipse is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your option)
any later version.
Dresden OCL2 for Eclipse 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 Lesser General Public License
for more details.
You should have received a copy of the GNU Lesser General Public License along
with Dresden OCL2 for Eclipse. If not, see <http://www.gnu.org/licenses/>.
*/
package org.dresdenocl.modelbus.ui.internal.wizards.util;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.eclipse.ui.views.navigator.ResourceComparator;
import org.dresdenocl.modelbus.ui.internal.ModelBusUIMessages;
/**
* <p>
* A {@link SelectionListener} for receiving browseWorkspace events.
* </p>
*
* @author Claas Wilke
*/
public class BrowseWorkspaceListener extends SelectionAdapter implements
SelectionListener {
/**
* The related {@link AbstractModelBusPage} of this
* {@link BrowseWorkspaceListener}.
*/
private AbstractModelBusPage myPage;
/**
* <p>
* Create a new {@link BrowseWorkspaceListener}.
* </p>
*
* @param aPage
* The related {@link AbstractModelBusPage}.
*/
public BrowseWorkspaceListener(AbstractModelBusPage aPage) {
this.myPage = aPage;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
* .swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent e) {
ElementTreeSelectionDialog dialog;
WorkbenchLabelProvider aWorkbenchLabelProvider;
WorkbenchContentProvider aWorkbenchContentProvider;
int pressedButton;
IResource resource;
/* Create a dialog to select a File. */
aWorkbenchLabelProvider = new WorkbenchLabelProvider();
aWorkbenchContentProvider = new WorkbenchContentProvider();
dialog = new ElementTreeSelectionDialog(this.myPage.getShell(),
aWorkbenchLabelProvider, aWorkbenchContentProvider);
/* Configure the Dialog properties. */
dialog
.setTitle(ModelBusUIMessages.LoadModelInstancePage_BrowseWorkspaceDialogTitle);
dialog
.setMessage(ModelBusUIMessages.LoadModelInstancePage_BrowseWorkspaceDialogDescription);
dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
dialog.setComparator(new ResourceComparator(ResourceComparator.NAME));
dialog.setAllowMultiple(false);
/* Open the dialog. */
do {
pressedButton = dialog.open();
resource = (IResource) dialog.getFirstResult();
}
while (pressedButton != IDialogConstants.CANCEL_ID
&& resource.getType() != IResource.FILE);
/* If OK was pressed set the File path. */
if (pressedButton == IDialogConstants.OK_ID) {
String fileLoc = this.myPage.encodePath(resource);
this.myPage.setFileTextBoxText(fileLoc);
}
// no else.
}
}