/* AWE - Amanzi Wireless Explorer * http://awe.amanzi.org * (C) 2008-2009, AmanziTel AB * * This library is provided under the terms of the Eclipse Public License * as described at http://www.eclipse.org/legal/epl-v10.html. Any use, * reproduction or distribution of the library constitutes recipient's * acceptance of this agreement. * * This library is distributed WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ package org.amanzi.awe.nem.ui.widgets; import java.util.List; import org.amanzi.awe.nem.ui.messages.NEMMessages; import org.amanzi.awe.nem.ui.widgets.TypesCreationDialog.ITypesCreationDialogListener; import org.amanzi.awe.ui.view.widgets.internal.AbstractAWEWidget; import org.amanzi.awe.ui.view.widgets.internal.AbstractAWEWidget.IAWEWidgetListener; import org.amanzi.neo.models.network.NetworkElementType; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Layout; import org.eclipse.swt.widgets.Shell; /** * TODO Purpose of * <p> * </p> * * @author Vladislav_Kondratenko * @since 1.0.0 */ public class TypesCreationDialog extends AbstractAWEWidget<Shell, ITypesCreationDialogListener> implements SelectionListener { public interface ITypesCreationDialogListener extends IAWEWidgetListener { void onNewTypeAdded(String string); } private static final Layout TWO_COLUMN_LAYOUT = new GridLayout(2, false); private static final Point SHELL_SIZE = new Point(300, 100); private Shell shell; private Combo cNodeTypesCombo; private Button bOk; private Button bCancel; private List<String> alreadySelectedTypes; /** * @param parent * @param style * @param listener */ public TypesCreationDialog(Composite parent, int style, ITypesCreationDialogListener listener, List<String> alreadySelected) { super(parent, style, listener); this.alreadySelectedTypes = alreadySelected; } @Override protected Shell createWidget(Composite parent, int style) { shell = new Shell(parent.getShell(), SWT.SHELL_TRIM & (~SWT.RESIZE)); shell.setLayout(TWO_COLUMN_LAYOUT); shell.setText(NEMMessages.CREATE_TYPE_IN_STRUCTURE); shell.setSize(SHELL_SIZE); Label label = new Label(shell, SWT.NONE); label.setText(NEMMessages.TYPE); label.setLayoutData(getGridData()); cNodeTypesCombo = new Combo(shell, SWT.BORDER); cNodeTypesCombo.setLayoutData(getGridData()); fillCombo(); bOk = createButton(NEMMessages.OK); bCancel = createButton(NEMMessages.CANCEL); shell.open(); return shell; } /** * */ private void fillCombo() { boolean isContainSite = alreadySelectedTypes.contains(NetworkElementType.SITE.getId()); for (NetworkElementType type : NetworkElementType.values()) { if (!alreadySelectedTypes.contains(type.getId())) { if (type == NetworkElementType.SECTOR && !isContainSite) { return; } else if (type == NetworkElementType.SECTOR && isContainSite) { cNodeTypesCombo.add(type.getId()); return; } cNodeTypesCombo.add(type.getId()); } else if (alreadySelectedTypes.contains(type.getId()) && type == NetworkElementType.SECTOR) { return; } } } /** * @return */ private Object getGridData() { return new GridData(GridData.FILL_HORIZONTAL); } /** * @param oK * @return */ private Button createButton(String name) { Button button = new Button(shell, SWT.PUSH); button.setText(name); button.setLayoutData(getGridData()); button.addSelectionListener(this); return button; } @Override public void widgetSelected(SelectionEvent e) { if (e.getSource().equals(bCancel)) { shell.close(); } else if (e.getSource().equals(bOk)) { for (ITypesCreationDialogListener listener : getListeners()) { String newType = cNodeTypesCombo.getText(); if (alreadySelectedTypes.contains(newType)) { MessageDialog.openWarning(shell, NEMMessages.TYPES_DIALOG_WARNING_TITLE, NEMMessages.TYPES_DIALOG_WARNING_MESSAGE); } else { listener.onNewTypeAdded(newType); } } shell.close(); } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }