/**
*
*/
package fr.inria.soctrace.framesoc.ui.piechart.view;
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.RGB;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import fr.inria.soctrace.framesoc.ui.colors.FramesocColor;
import fr.inria.soctrace.framesoc.ui.listeners.TextListener;
/**
* @author "Generoso Pagano <generoso.pagano@inria.fr>"
*/
public class MergeItemsDialog extends Dialog {
private TextListener label = new TextListener("");
private FramesocColor color = FramesocColor.BLACK;
private Text labelText;
protected MergeItemsDialog(Shell parentShell) {
super(parentShell);
}
@Override
protected Control createDialogArea(Composite parent) {
Composite all = (Composite) super.createDialogArea(parent);
all.setLayout(new GridLayout(1, false));
Group grpMergedItem = new Group(all, SWT.NONE);
grpMergedItem.setText("Merged Item");
grpMergedItem.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
grpMergedItem.setLayout(new GridLayout(2, false));
Label labelLabel = new Label(grpMergedItem, SWT.NONE);
labelLabel.setText("Label:");
labelText = new Text(grpMergedItem, SWT.BORDER);
labelText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
labelText.addModifyListener(label);
Label labelColor = new Label(grpMergedItem, SWT.NONE);
labelColor.setText("Color:");
Composite composite = new Composite(grpMergedItem, SWT.NONE);
GridLayout gl_composite = new GridLayout(2, false);
gl_composite.verticalSpacing = 0;
gl_composite.marginWidth = 0;
gl_composite.marginHeight = 0;
gl_composite.horizontalSpacing = 0;
composite.setLayout(gl_composite);
composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
final Composite colorComposite = new Composite(composite, SWT.BORDER);
GridData gd_colorComposite = new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1);
gd_colorComposite.heightHint = 27;
gd_colorComposite.widthHint = 40;
colorComposite.setLayoutData(gd_colorComposite);
colorComposite.setBackground(color.getSwtColor());
colorComposite.addListener(SWT.MouseUp, new Listener() {
@Override
public void handleEvent(Event event) {
changeColor(colorComposite);
}
});
Button buttonColor = new Button(composite, SWT.NONE);
buttonColor.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
buttonColor.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
changeColor(colorComposite);
}
});
buttonColor.setText("Change Color");
all.pack();
return all;
}
private void changeColor(Composite colorComposite) {
ColorDialog dlg = new ColorDialog(getShell());
RGB rgb = dlg.open();
if (rgb != null) {
if (color != null) {
color.dispose();
}
color = new FramesocColor(rgb.red, rgb.green, rgb.blue);
}
colorComposite.setBackground(color.getSwtColor());
}
public String getLabel() {
return label.getText();
}
public FramesocColor getColor() {
return color;
}
}