/******************************************************************************* * Copyright (C) Yutaka Matsuno 2010-2012 All rights reserved. *******************************************************************************/ package net.dependableos.dcase.diagram.editor.ui; import java.util.List; import net.dependableos.dcase.diagram.editor.logic.xmlconv.XSLConverterItem; import net.dependableos.dcase.diagram.editor.message.Messages; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialog; 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.swt.widgets.Text; /** * Enter the new converter name dialog. * */ public class NewConverterDialog extends Dialog { /** * The invalid characters. */ private static final String[] INVALID_CHARACTERS = { ",", //$NON-NLS-1$ ";", //$NON-NLS-1$ "{", //$NON-NLS-1$ "}", //$NON-NLS-1$ "=", //$NON-NLS-1$ }; /** * A dialog grid column. */ private static final int GRID_COLUMN = 2; /** * A text field width. */ private static final int TEXT_FIELD_WIDTH = 200; /** * A converter name value. */ private String name = null; /** * A list of converter item. */ private List<XSLConverterItem> converters = null; /** * A label control. */ private Label nameLabel; /** * A text control. */ private Text nameText; /** * Constructor for the class. * Create new instance. * * @param parentShell A parent shell. * @param converters A list of converter item. */ public NewConverterDialog(Shell parentShell, List<XSLConverterItem> converters) { super(parentShell); this.setConverters(converters); } /** * Returns a converter name. * * @return A converter name. */ public String getName() { return name; } /** * Sets a converter name. * * @param name A converter name. */ public void setName(String name) { this.name = name; } /** * Returns list of converter item. * @return A list of converter item. */ public List<XSLConverterItem> getConverters() { return converters; } /** * Sets list of converter item. * @param converters A list of converter item. */ public void setConverters(List<XSLConverterItem> converters) { this.converters = converters; } /** * Create dialog area. * @param parent A composite object. * @return A control object. */ @Override protected Control createDialogArea(Composite parent) { Composite panel = (Composite) super.createDialogArea(parent); // creates a grid layout. panel.setLayoutData(new GridData(GridData.FILL_BOTH)); GridLayout layout = new GridLayout(); layout.numColumns = GRID_COLUMN; panel.setLayout(layout); // getShell().setText(Messages.NewConverterDialogTitle); createDialogControl(panel); return panel; } /** * Create a dialog controls. * @param panel A composite object. */ private void createDialogControl(Composite panel) { nameLabel = new Label(panel, SWT.LEFT); nameLabel.setText(Messages.NewConverterDialogNameLabel); GridData labelGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); nameLabel.setLayoutData(labelGridData); nameText = new Text(panel, SWT.LEFT | SWT.SINGLE | SWT.BORDER); GridData textGridData = new GridData(GridData.FILL_HORIZONTAL); textGridData.minimumWidth = TEXT_FIELD_WIDTH; nameText.setLayoutData(textGridData); } /** * Pressed OK button. */ @Override protected void okPressed() { setName(nameText.getText()); if (isExistsName(getName())) { MessageDialog.openError(getShell(), Messages.MessageWriter_1, Messages.XSLConverterNameExists); return; } if (hasInvalidCharacter(getName())) { MessageDialog.openError(getShell(), Messages.MessageWriter_1, Messages.XSLConverterIllegalCharacters); return; } super.okPressed(); } /** * Checked exists converter name. * * @param name A target value. * @return True is exists. */ private boolean isExistsName(String name) { for (XSLConverterItem item : getConverters()) { if (item.getName().equals(getName())) { return true; } } return false; } /** * Checked has a invalid character. * * @param name A target value. * @return True is has a invalid character. */ private boolean hasInvalidCharacter(String name) { for (String c : INVALID_CHARACTERS) { if (name.contains(c)) { return true; } } return false; } }