/*
* Copyright (C) Yutaka Matsuno 2010-2012 All rights reserved.
*/
package net.dependableos.dcase.diagram.ui;
import java.util.List;
import net.dependableos.dcase.diagram.ui.AttributeDialog.IAttachmentSelector;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
/**
* The dialog class for selecting the method to specify a attachment.
*/
public class AttachmentSelectorDialog extends Dialog {
/**
* the dialog width.
*/
private static final int INIT_WIDTH = 350;
/**
* column number.
*/
private static final int GRID_COLUMNS = 1;
/**
* the list of attachment selector.
*/
private final List<IAttachmentSelector> selectorList;
/**
* the list of attachment selector.
*/
private IAttachmentSelector selectedSelector;
/**
* constructor.
*
* @param parentShell shell
* @param selectorList the list of attachment selector
*/
public AttachmentSelectorDialog(Shell parentShell, List<IAttachmentSelector> selectorList) {
super(parentShell);
this.selectorList = selectorList;
}
/**
* get dialog size.
*
* @see org.eclipse.jface.dialogs.Dialog#getInitialSize()
* @return Dialog size.
*/
@Override
protected Point getInitialSize() {
Point size = super.getInitialSize();
if (size.x < INIT_WIDTH) {
size.x = INIT_WIDTH;
}
return size;
}
/**
* create dialog area.
* @param parent parent
* @return Control
*/
@Override
protected Control createDialogArea(Composite parent) {
Composite panel = (Composite) super.createDialogArea(parent);
// creates a grid layout.
((GridLayout) panel.getLayout()).numColumns = GRID_COLUMNS;
getShell().setText("Select the method to specify the attachment");
createDialogControl(panel);
return panel;
}
/**
* create dialog control.
*
* @param parent parent
*/
private void createDialogControl(Composite parent) {
for (final IAttachmentSelector selector : selectorList) {
Button button = new Button(parent, SWT.RADIO);
button.setText(selector.getName());
button.addSelectionListener(new SelectionAdapter() {
/* (non-Javadoc)
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent e) {
Button b = (Button) e.widget;
if (b.getSelection()) {
AttachmentSelectorDialog.this.selectedSelector = selector;
}
}
});
}
selectedSelector = selectorList.get(0);
}
/**
* Return the selected attachment selector.
* @return the selected attachment selector
*/
public IAttachmentSelector getAttachmentSelector() {
return selectedSelector;
}
}