/*******************************************************************************
* Copyright © 2010, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.ide.rui.visualeditor.internal.wizards.newvariable;
import java.util.List;
import java.util.Locale;
import org.eclipse.edt.ide.core.internal.search.PartDeclarationInfo;
import org.eclipse.edt.ide.core.model.EGLCore;
import org.eclipse.edt.ide.rui.visualeditor.internal.editor.EvEditor;
import org.eclipse.edt.ide.rui.visualeditor.internal.editor.EvHelp;
import org.eclipse.edt.ide.rui.visualeditor.internal.nl.Messages;
import org.eclipse.edt.ide.rui.visualeditor.internal.wizards.newvariable.NewEGLVariableWizardUtil.DataType;
import org.eclipse.edt.ide.rui.visualeditor.internal.wizards.util.EGLNameValidator;
import org.eclipse.edt.ide.rui.visualeditor.internal.wizards.util.NameFinder;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
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.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
public class NewEGLVariableWizardPage extends WizardPage {
private EvEditor evEditor;
private PartDeclarationInfo selectedPartDeclarationInfo;
private String fieldName;
private String fieldType;
private String fieldTypePackage;
private boolean isArray;
private boolean hasDimensions;
private String firstDimension;
private String secondDimension;
private String[] supportedPrimitiveTypes;
private Group typeCreationGroup;
private Composite typeAreaComposite;
private Composite primitiveTypeComposite;
private Composite dataItemComposite;
private Composite recordComposite;
private Text fieldNameText;
private Combo dataTypeCombo;
private Text searchDataItemText;
private Text searchRecordText;
private Table searchDataItemTable;
private Table searchRecordTable;
private Text previewText;
private Text firstDimensionsText;
private Text secondDimensionsText;
private Button isArrayButton;
class SupportedPrimitiveType{
public static final String STRING = "string";
public static final String LIMITED_STRING = "string(n)";
public static final String DATE = "date";
public static final String TIME = "time";
public static final String TIMESTAMP = "timestamp";
public static final String SMALLINT = "smallint";
public static final String INT = "int";
public static final String BIGINT = "bigint";
public static final String BIN = "bin";
public static final String SMALLFLOAT = "smallfloat";
public static final String FLOAT = "float";
public static final String DECIMAL = "decimal";
public static final String NUM = "num";
public static final String NUMBER = "number";
public static final String MONEY = "money";
public static final String BOOLEAN = "boolean";
}
protected NewEGLVariableWizardPage(EvEditor evEditor) {
super(Messages.NL_NEVWP_Title);
this.setTitle(Messages.NL_NEVWP_Title);
this.setDescription(Messages.NL_NEVWP_Description);
this.evEditor = evEditor;
this.supportedPrimitiveTypes = new String[]{SupportedPrimitiveType.STRING, SupportedPrimitiveType.LIMITED_STRING, SupportedPrimitiveType.BOOLEAN,
SupportedPrimitiveType.DATE, SupportedPrimitiveType.TIME, SupportedPrimitiveType.TIMESTAMP,
SupportedPrimitiveType.SMALLINT, SupportedPrimitiveType.INT, SupportedPrimitiveType.BIGINT,
/*SupportedPrimitiveType.BIN,*/ SupportedPrimitiveType.SMALLFLOAT, SupportedPrimitiveType.FLOAT,
SupportedPrimitiveType.DECIMAL, /*SupportedPrimitiveType.NUM, SupportedPrimitiveType.MONEY, SupportedPrimitiveType.NUMBER*/};
NameFinder.getInstance().initralize(evEditor.getEditorInput());
}
public String getFieldTypePackage(){
return fieldTypePackage;
}
public String getFieldName(){
return fieldName;
}
public String getFieldType(){
return fieldType;
}
public String getTemplate(){
String preivew = previewText.getText();
String template = preivew.substring(preivew.lastIndexOf(" "), preivew.length()-1).trim();
return template;
}
public void createControl(Composite parent) {
EvHelp.setHelp( parent, EvHelp.NEW_EGL_VARIABLE_WIZARD );
setPageComplete(false);
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
createNewDataVariableArea(composite);
createPreviewArea(composite);
this.setControl(composite);
}
private void clean(){
setPageComplete(false);
fieldName = null;
fieldType = null;
fieldTypePackage = null;
firstDimension = null;
secondDimension = null;
isArray = false;
fieldNameText.setText("");
dataTypeCombo.deselectAll();
searchDataItemText.setText("");
searchRecordText.setText("");
searchDataItemTable.deselectAll();
searchRecordTable.deselectAll();
previewText.setText("");
firstDimensionsText.setText("");
secondDimensionsText.setText("");
firstDimensionsText.setEnabled(false);
secondDimensionsText.setEnabled(false);
}
private void createNewDataVariableArea(Composite composite){
Group group = new Group(composite, SWT.NONE);
group.setLayoutData(new GridData(GridData.FILL_BOTH));
group.setLayout(new GridLayout(3, false));
//Type Selection Group
Group typeSelectionGroup = new Group(group, SWT.NONE);
typeSelectionGroup.setText(Messages.NL_NEVWP_Type_Selection_Group);
typeSelectionGroup.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
typeSelectionGroup.setLayout(new GridLayout(1, false));
final Button recordButton = new Button(typeSelectionGroup, SWT.RADIO);
recordButton.setText(Messages.NL_NEVWP_Record_Button);
recordButton.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
if(recordButton.getSelection()){
clean();
((StackLayout)typeAreaComposite.getLayout()).topControl = recordComposite;
typeAreaComposite.layout();
isArrayButton.setEnabled(true);
}
}
public void widgetDefaultSelected(SelectionEvent e) {}
});
//TODO EDT 0.7 does not support dataitem
// final Button dataItemButton = new Button(typeSelectionGroup, SWT.RADIO);
// dataItemButton.setText(Messages.NL_NEVWP_DataItem_Button);
// dataItemButton.addSelectionListener(new SelectionListener(){
//
// public void widgetSelected(SelectionEvent e) {
// if(dataItemButton.getSelection()){
// clean();
// ((StackLayout)typeAreaComposite.getLayout()).topControl = dataItemComposite;
// typeAreaComposite.layout();
// }
// }
//
// public void widgetDefaultSelected(SelectionEvent e) {}
//
// });
final Button primitiveTypeButton = new Button(typeSelectionGroup, SWT.RADIO);
primitiveTypeButton.setText(Messages.NL_NEVWP_Primitive_Type_Button);
primitiveTypeButton.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
if(primitiveTypeButton.getSelection()){
clean();
((StackLayout)typeAreaComposite.getLayout()).topControl = primitiveTypeComposite;
typeAreaComposite.layout();
}
}
public void widgetDefaultSelected(SelectionEvent e) {}
});
//-------------------
//Type Creation Group
typeCreationGroup = new Group(group, SWT.NONE);
typeCreationGroup.setText(Messages.NL_NEVWP_Type_Creation_Group);
typeCreationGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
typeCreationGroup.setLayout(new GridLayout(1, false));
typeAreaComposite = new Composite(typeCreationGroup, SWT.NONE);
typeAreaComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
typeAreaComposite.setLayout(new StackLayout());
createPrimitiveTypeArea();
createDataItemArea();
createRecordArea();
Label fieldNameLabel = new Label(typeCreationGroup, SWT.NONE);
fieldNameLabel.setText(Messages.NL_NEVWP_Field_Name_Label);
fieldNameText = new Text(typeCreationGroup, SWT.BORDER);
fieldNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fieldNameText.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent e) {
if(isFieldNameValid(fieldNameText.getText())){
fieldName = fieldNameText.getText();
updatePreview();
}else{
setPageComplete(false);
};
}
});
//-------------------
//Array Properties Group
Group arrayPropertiesGroup = new Group(group, SWT.NONE);
arrayPropertiesGroup.setText(Messages.NL_NEVWP_Array_Properties_Group);
arrayPropertiesGroup.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
arrayPropertiesGroup.setLayout(new GridLayout(1, false));
isArrayButton = new Button(arrayPropertiesGroup, SWT.CHECK);
isArrayButton.setText(Messages.NL_NEVWP_Is_Array_Button);
//isArrayButton
isArrayButton.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
if(isArrayButton.getSelection()){
isArray = true;
updatePreview();
}else{
isArray = false;
updatePreview();
}
}
public void widgetDefaultSelected(SelectionEvent e) {}
});
}
private boolean isFieldNameValid(String fieldName){
setErrorMessage(null);
if(fieldName == null || fieldName.equals("")){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Field_Name_Is_None);
return false;
}
else if(NameFinder.getInstance().isFieldNameExist(fieldName)){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Field_Name_Is_Duplicate);
return false;
}
else{
List messages = EGLNameValidator.validateEGLName(fieldName, EGLNameValidator.PART, null);
if (!messages.isEmpty()){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Field_Name_Is_Not_Valid);
return false;
}
}
return true;
}
private void createPrimitiveTypeArea(){
primitiveTypeComposite = new Composite(typeAreaComposite, SWT.NONE);
primitiveTypeComposite.setLayout(new GridLayout(1, false));
Group primitiveTypeDetailGroup = new Group(primitiveTypeComposite, SWT.NONE);
primitiveTypeDetailGroup.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Group);
primitiveTypeDetailGroup.setLayout(new GridLayout(1, false));
primitiveTypeDetailGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
Composite primitiveTypeDetailComposite = new Composite(primitiveTypeDetailGroup, SWT.NONE);
primitiveTypeDetailComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
primitiveTypeDetailComposite.setLayout(new FillLayout(SWT.VERTICAL));
//dataTypeComposite
Composite dataTypeComposite = new Composite(primitiveTypeDetailComposite, SWT.NONE);
dataTypeComposite.setLayout(new GridLayout(1, false));
Label dataTypeLabel = new Label(dataTypeComposite, SWT.NONE);
dataTypeLabel.setText(Messages.NL_NEVWP_Primitive_Type_Label);
dataTypeCombo = new Combo(dataTypeComposite, SWT.BORDER|SWT.READ_ONLY);
dataTypeCombo.setItems(supportedPrimitiveTypes);
//dimensionsComposite
Composite dimensionsComposite = new Composite(primitiveTypeDetailComposite, SWT.NONE);
dimensionsComposite.setLayout(new GridLayout(3, false));
Label dimensionsLabel = new Label(dimensionsComposite, SWT.NONE);
GridData dimensionsLabelGridData = new GridData();
dimensionsLabelGridData.horizontalSpan = 3;
dimensionsLabel.setText(Messages.NL_NEVWP_Primitive_Dimensions_Label);
dimensionsLabel.setLayoutData(dimensionsLabelGridData);
firstDimensionsText = new Text(dimensionsComposite, SWT.BORDER);
firstDimensionsText.setEnabled(false);
Label middleDimensionsLabel = new Label(dimensionsComposite, SWT.NONE);
middleDimensionsLabel.setText(",");
secondDimensionsText = new Text(dimensionsComposite, SWT.BORDER);
secondDimensionsText.setEnabled(false);
firstDimensionsText.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent e) {
String firstDim = firstDimensionsText.getText();
String secondDim = secondDimensionsText.getText();
if(isDimensionsValid(firstDim, secondDim)){
firstDimension = firstDim;
updatePreview();
}else{
setPageComplete(false);
}
}
});
secondDimensionsText.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent e) {
String firstDim = firstDimensionsText.getText();
String secondDim = secondDimensionsText.getText();
if(isDimensionsValid(firstDim, secondDim)){
secondDimension = secondDim;
updatePreview();
}else{
setPageComplete(false);
}
}
});
//typeDetailMessageText
final Text typeDetailMessageText = new Text(primitiveTypeDetailGroup, SWT.READ_ONLY);
typeDetailMessageText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
dataTypeCombo.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
int index = dataTypeCombo.getSelectionIndex();
fieldType = supportedPrimitiveTypes[index];
setDefaultFieldName(fieldNameText);
updateTypeDetailMessageText();
updatePreview();
}
private void disableDimensionsComposite(){
firstDimensionsText.setEnabled(false);
secondDimensionsText.setEnabled(false);
hasDimensions = false;
}
private void enableDimensionsComposite(String firstDim, String secondDim){
firstDimensionsText.setEnabled(true);
secondDimensionsText.setEnabled(true);
secondDimensionsText.setEditable(true);
hasDimensions = true;
firstDimensionsText.setText(firstDim);
secondDimensionsText.setText(secondDim);
firstDimension = firstDim;
secondDimension = secondDim;
}
private void updateTypeDetailMessageText(){
if(fieldType != null){
secondDimensionsText.setVisible(true);
if(fieldType.equals(SupportedPrimitiveType.BIGINT)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Bigint);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.BIN)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Bin);
enableDimensionsComposite("4", "0");
secondDimensionsText.setEditable(false);
}
if(fieldType.equals(SupportedPrimitiveType.BOOLEAN)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Boolean);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.DATE)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Date);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.DECIMAL)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Decimal);
enableDimensionsComposite("8", "0");
}
if(fieldType.equals(SupportedPrimitiveType.FLOAT)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Float);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.INT)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Int);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.MONEY)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Money);
enableDimensionsComposite("16", "2");
}
if(fieldType.equals(SupportedPrimitiveType.NUM)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Num);
enableDimensionsComposite("16", "2");
}
if(fieldType.equals(SupportedPrimitiveType.SMALLFLOAT)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Smallfloat);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.SMALLINT)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Smallint);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.STRING)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_String);
disableDimensionsComposite();
}
if (fieldType.equals(SupportedPrimitiveType.LIMITED_STRING)) {
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Limited_String);
enableDimensionsComposite("1", "");
secondDimensionsText.setVisible(false);
}
if(fieldType.equals(SupportedPrimitiveType.TIME)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Time);
disableDimensionsComposite();
}
if(fieldType.equals(SupportedPrimitiveType.TIMESTAMP)){
typeDetailMessageText.setText(Messages.NL_NEVWP_Primitive_Type_Detail_Message_Timestamp);
disableDimensionsComposite();
}
}
}
public void widgetDefaultSelected(SelectionEvent e) {}
});
}
private boolean isDimensionsValid(String firstDim, String secondDim){
setErrorMessage(null);
//must has firstDimension
if(firstDimensionsText.isEnabled() && secondDimensionsText.isEnabled()){
if(firstDim == null || firstDim.equals("")){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_None);
return false;
}
try{
int iFirstDim = Integer.parseInt(firstDim);
if (iFirstDim < 0 || firstDim.trim().equals("-0")) {
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_None);
return false;
}
//has secondDimension
if(secondDim != null && !secondDim.equals("")){
int iSecondDim = Integer.parseInt(secondDim);
if (iSecondDim < 0 || secondDim.trim().equals("-0")) {
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_None);
return false;
}
if(iFirstDim < iSecondDim){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_First_Is_Small_Then_Second);
return false;
}
}
//verify firstDimension
if(fieldType.equals(SupportedPrimitiveType.BIN)){
if((iFirstDim != 4 && iFirstDim != 9 && iFirstDim != 18)){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_Not_Valid);
return false;
}
}
if(fieldType.equals(SupportedPrimitiveType.DECIMAL)){
if((iFirstDim <1 || iFirstDim > 32)){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_Not_Valid);
return false;
}
}
if(fieldType.equals(SupportedPrimitiveType.MONEY)){
if((iFirstDim <2 || iFirstDim > 32)){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_Not_Valid);
return false;
}
}
if(fieldType.equals(SupportedPrimitiveType.NUM)){
if((iFirstDim <1 || iFirstDim > 32)){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_Not_Valid);
return false;
}
}
if (fieldType.equals(SupportedPrimitiveType.LIMITED_STRING)) {
if ((iFirstDim == 0)) {
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_Not_Valid);
return false;
}
}
}catch(Exception e){
setErrorMessage(Messages.NL_NEVWP_Error_Message_Primitive_Type_Dimensions_Is_None);
return false;
}
}
return true;
}
private void createDataItemArea(){
dataItemComposite = new Composite(typeAreaComposite, SWT.NONE);
dataItemComposite.setLayout(new GridLayout(1, false));
Group searchDataItemGroup = new Group(dataItemComposite, SWT.NONE);
searchDataItemGroup.setText(Messages.NL_NEVWP_Search_DataItem_Group);
searchDataItemGroup.setLayout(new GridLayout(1, false));
searchDataItemGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
searchDataItemText = new Text(searchDataItemGroup, SWT.BORDER);
searchDataItemText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
searchDataItemText.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent e) {
searchDataItemTable.removeAll();
fillSearchTable(searchDataItemTable, DataType.DataItem, searchDataItemText.getText());
}
});
searchDataItemTable = new Table(searchDataItemGroup, SWT.BORDER|SWT.V_SCROLL|SWT.H_SCROLL);
GridData searchDataItemTableGridData = new GridData(GridData.FILL_BOTH);
searchDataItemTableGridData.heightHint = 100;
searchDataItemTable.setLayoutData(searchDataItemTableGridData);
fillSearchTable(searchDataItemTable, DataType.DataItem, null);
searchDataItemTable.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
handleSearchTableSelection(e);
fieldType = selectedPartDeclarationInfo.getPartName();
fieldTypePackage = selectedPartDeclarationInfo.getPackageName();
setDefaultFieldName(fieldNameText);
updatePreview();
}
public void widgetDefaultSelected(SelectionEvent e) {}
});
}
private void createRecordArea(){
recordComposite = new Composite(typeAreaComposite, SWT.NONE);
recordComposite.setLayout(new GridLayout(1, false));
Group searchRecordGroup = new Group(recordComposite, SWT.NONE);
searchRecordGroup.setText(Messages.NL_NEVWP_Search_Record_Group);
searchRecordGroup.setLayout(new GridLayout(1, false));
searchRecordGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
searchRecordText = new Text(searchRecordGroup, SWT.BORDER);
searchRecordText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
searchRecordText.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent e) {
searchRecordTable.removeAll();
fillSearchTable(searchRecordTable, DataType.Record, searchRecordText.getText());
}
});
searchRecordTable = new Table(searchRecordGroup, SWT.BORDER|SWT.V_SCROLL|SWT.H_SCROLL);
GridData searchRecordTableGridData = new GridData(GridData.FILL_BOTH);
searchRecordTableGridData.heightHint = 100;
searchRecordTable.setLayoutData(searchRecordTableGridData);
fillSearchTable(searchRecordTable, DataType.Record, null);
searchRecordTable.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
handleSearchTableSelection(e);
fieldType = selectedPartDeclarationInfo.getPartName();
fieldTypePackage = selectedPartDeclarationInfo.getPackageName();
setDefaultFieldName(fieldNameText);
updatePreview();
}
public void widgetDefaultSelected(SelectionEvent e) {}
});
}
private void setDefaultFieldName(Text fieldNameText){
String tempFieldName = "my" + fieldType;
if (fieldType.equals(SupportedPrimitiveType.LIMITED_STRING)) {
tempFieldName = tempFieldName.substring(0, tempFieldName.length() - 3);
}
fieldName = tempFieldName;
int i = 0;
while(NameFinder.getInstance().isFieldNameExist(fieldName)){
i++;
fieldName = tempFieldName + i;
}
fieldNameText.setText(fieldName);
}
private void updatePreview(){
StringBuffer sbPreview = new StringBuffer();
if(fieldName != null && fieldType != null){
if (fieldType.equals(SupportedPrimitiveType.LIMITED_STRING)) {
sbPreview.append(fieldName).append(" ").append("string");
} else {
sbPreview.append(fieldName).append(" ").append(fieldType);
}
if(hasDimensions){
sbPreview.append("(");
if(firstDimension != null && !firstDimension.equals("")){
sbPreview.append(firstDimension);
if(secondDimension != null && !secondDimension.equals("")){
sbPreview.append(",").append(secondDimension);
}
}
sbPreview.append(")");
}
if(fieldType.equals(SupportedPrimitiveType.TIMESTAMP)){
sbPreview.append("(\"HHmmss\")");
}
if(isArray){
sbPreview.append("[").append("]");
}
sbPreview.append(";");
setPageComplete(true);
}
previewText.setText(sbPreview.toString());
}
private void fillSearchTable(Table searchTable, DataType dataType, String partName){
List<PartDeclarationInfo> partDeclarationInfos = NewEGLVariableWizardUtil.getAvailableParts(EGLCore.create(evEditor.getProject()), dataType);
for(PartDeclarationInfo partDeclarationInfo : partDeclarationInfos){
boolean isAddToTable = false;
if(partName == null){
isAddToTable = true;
}else if(partDeclarationInfo.getPartName().toUpperCase().startsWith(partName.toUpperCase())){
isAddToTable = true;
}
if(isAddToTable){
StringBuffer sbRecordlabel = new StringBuffer(partDeclarationInfo.getPartName()).append(" (");
if(partDeclarationInfo.getPackageName() != null){
sbRecordlabel.append(partDeclarationInfo.getPackageName()).append("/");
}
sbRecordlabel.append(partDeclarationInfo.getFileName()).append(".").append(partDeclarationInfo.getExtension()).append(")");
TableItem tableItem = new TableItem(searchTable, SWT.NONE);
tableItem.setImage(NewEGLVariableWizardUtil.getImage(dataType));
tableItem.setText(sbRecordlabel.toString());
tableItem.setData(partDeclarationInfo);
}
}
};
private void handleSearchTableSelection(SelectionEvent e){
Table table = (Table)e.getSource();
TableItem tableItem = (TableItem)table.getSelection()[0];
selectedPartDeclarationInfo = (PartDeclarationInfo)tableItem.getData();
}
private void createPreviewArea(Composite composite){
//@bd1a Start
int style = SWT.NONE;
if(Locale.getDefault().toString().toLowerCase().indexOf("ar") != -1) {
style |= SWT.LEFT_TO_RIGHT;
}
//@bd1a End
Group group = new Group(composite, style); //@bd1c
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
group.setLayout(new GridLayout(1, false));
group.setText(Messages.NL_NEVWP_Preview_Group);
previewText = new Text(group, SWT.READ_ONLY);
previewText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
}
}