/**
*
*/
package org.goko.core.internal;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.wb.swt.ResourceManager;
import org.goko.common.preferences.fieldeditor.preference.ComboFieldEditor;
import org.goko.core.feature.TargetBoard;
/**
* @author PsyKo
*
*/
public class TargetBoardSelectionDialog extends Dialog {
private ComboFieldEditor targetBoardCombo;
private List<TargetBoard> lstTargetBoard;
private String targetBoard;
/**
* Create the dialog.
* @param parentShell
*/
public TargetBoardSelectionDialog() {
super((Shell)null);
setShellStyle(SWT.CLOSE | SWT.BORDER | SWT.TITLE);
}
/**
* Create contents of the dialog.
* @param parent
*/
@Override
protected Control createDialogArea(Composite parent) {
getShell().setText("Select your machine controller");
getShell().setImage(ResourceManager.getPluginImage("Goko", "icons/launch/goko.ico"));
Composite container = (Composite) super.createDialogArea(parent);
GridLayout gl_container = new GridLayout(1, false);
gl_container.verticalSpacing = 0;
gl_container.marginWidth = 0;
gl_container.marginHeight = 0;
gl_container.horizontalSpacing = 0;
container.setLayout(gl_container);
Composite composite_1 = new Composite(container, SWT.NONE);
composite_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
GridLayout gl_composite_1 = new GridLayout(1, false);
gl_composite_1.marginHeight = 8;
gl_composite_1.marginWidth = 8;
composite_1.setLayout(gl_composite_1);
Label lblSelectYourOperating = new Label(composite_1, SWT.NONE);
lblSelectYourOperating.setText("Select your machine controller :");
Composite composite = new Composite(container, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
GridData gd_composite = new GridData(SWT.FILL, SWT.CENTER, true, true, 1, 1);
gd_composite.heightHint = 60;
composite.setLayoutData(gd_composite);
targetBoardCombo = new ComboFieldEditor(composite, SWT.READ_ONLY);
((GridData) targetBoardCombo.getControl().getLayoutData()).widthHint = 100;
targetBoardCombo.setLabel("Controller");
targetBoardCombo.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1));
initComboContent();
return container;
}
private void initComboContent(){
Collections.sort(lstTargetBoard, new Comparator<TargetBoard>() {
@Override
public int compare(TargetBoard o1, TargetBoard o2) {
return o1.getCode().compareTo(o2.getCode());
}
});
String[][] entry = new String[lstTargetBoard.size()][];
int i = 0;
for (TargetBoard board : lstTargetBoard) {
entry[i] = new String[]{board.getLabel(), board.getId()};
i = i + 1;
}
targetBoardCombo.setEntry(entry);
}
/** (inheritDoc)
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
@Override
protected void okPressed() {
if(StringUtils.isNotBlank(targetBoardCombo.getValue())){
targetBoard = targetBoardCombo.getValue();
super.okPressed();
}
}
/** (inheritDoc)
* @see org.eclipse.jface.dialogs.Dialog#cancelPressed()
*/
@Override
protected void cancelPressed() {
targetBoard = StringUtils.EMPTY;
super.cancelPressed();
}
/**
* Create contents of the button bar.
* @param parent
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}
/**
* @return the lstTargetBoard
*/
public List<TargetBoard> getLstTargetBoard() {
return lstTargetBoard;
}
/**
* @param lstTargetBoard the lstTargetBoard to set
*/
public void setLstTargetBoard(List<TargetBoard> lstTargetBoard) {
this.lstTargetBoard = lstTargetBoard;
}
/**
* @return the targetBoard
*/
public String getTargetBoard() {
return targetBoard;
}
/**
* @param targetBoard the targetBoard to set
*/
public void setTargetBoard(String targetBoard) {
this.targetBoard = targetBoard;
}
}