//
// This file is part of the Prose Development Tools for Eclipse package.
//
// The contents of this file are subject to the Mozilla Public License
// Version 1.1 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://www.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
// for the specific language governing rights and limitations under the
// License.
//
// The Original Code is Prose Development Tools for Eclipse.
//
// The Initial Developer of the Original Code is Angela Nicoara. Portions
// created by Angela Nicoara are Copyright (C) 2006 Angela Nicoara.
// All Rights Reserved.
//
// Contributor(s):
// $Id: ProseRunSelectionDialog.java,v 1.1 2008/11/18 12:23:02 anicoara Exp $
// ==============================================================================
//
package ch.ethz.prose.eclipse.internal.run;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.SelectionDialog;
/**
* @author Angela Nicoara
* @author Johann Gyger
* @version $Id: ProseRunSelectionDialog.java,v 1.1 2008/11/18 12:23:02 anicoara Exp $
*/
public class ProseRunSelectionDialog extends SelectionDialog {
protected ListViewer viewer;
protected Object inputElement;
protected AspectManagerNode node;
/**
* @return Aspect manager
*/
public AspectManagerNode getAspectManager() {
return node;
}
/**
* @param parentShell Parent shell for modal dialog
* @param input Input element
*/
public ProseRunSelectionDialog(Shell parentShell, Object input) {
super(parentShell);
inputElement = input;
setTitle("Prose application selection");
setMessage("Select Prose application to insert aspect.");
}
/* (non-Javadoc)
* Method declared on Dialog.
*/
protected Control createDialogArea(Composite parent) {
// page group
Composite composite = (Composite) super.createDialogArea(parent);
Font font = parent.getFont();
composite.setFont(font);
createMessageArea(composite);
viewer = new ListViewer(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
GridData data = new GridData(GridData.FILL_BOTH);
data.heightHint = 200;
data.widthHint = 450;
viewer.getList().setLayoutData(data);
viewer.setLabelProvider(new AspectManagerLabelProvider());
viewer.setContentProvider(new AspectManagerContentProvider());
viewer.getControl().setFont(font);
viewer.setInput(inputElement);
viewer.setSelection(new StructuredSelection(viewer.getElementAt(0)));
return composite;
}
protected class AspectManagerContentProvider implements IStructuredContentProvider {
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
return ((List) inputElement).toArray();
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
// Ignore
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// Ignore
}
}
protected class AspectManagerLabelProvider extends LabelProvider {
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
*/
public Image getImage(Object element) {
AspectManagerNode node = (AspectManagerNode) element;
return node.getParent().getImage();
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
*/
public String getText(Object element) {
AspectManagerNode node = (AspectManagerNode) element;
return node.getParent() + " [" + node.toString() + "]";
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
protected void okPressed() {
node = (AspectManagerNode) ((IStructuredSelection) viewer.getSelection()).getFirstElement();
super.okPressed();
}
}