package com.xaraya.wizard; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; 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.Text; public class XarayaModuleFilePage extends WizardPage implements Listener { IStructuredSelection selection; //Xaraya stuff private Text modversionid; private Text modversionversion; private Text modversiondescription; private Text modversionofficial; private Text modversionauthor; private Text modversioncontact; private Text modversionsecurityschema; private Text modversionclass; private Text modversioncategory; private Button officialButton; private Button xarUserApi; private Button xarUserGui; private Button xarAdminApi; private Button xarAdminGui; public XarayaModuleFilePage(String argument) { super(argument); setTitle(XarayaModuleMessages.getString("Xaraya.label.module")); setDescription(XarayaModuleMessages.getString("Xaraya.label.details")); setPageComplete(false); } public void createControl(Composite parent) { // create the composite to hold the widgets GridData gd; Composite composite = new Composite(parent, SWT.NULL); // create the desired layout for this wizard page GridLayout gl = new GridLayout(); int ncol = 4; gl.numColumns = ncol; composite.setLayout(gl); Group detailsgrp = new Group(composite, SWT.NULL); detailsgrp.setText(XarayaModuleMessages.getString("Xaraya.label.detailsgrp")/*"Module details"*/); detailsgrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); detailsgrp.setLayout(new GridLayout()); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversionid")/*"modversionid"*/); modversionid = new Text(detailsgrp, SWT.BORDER); modversionid.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversionid.addListener(SWT.KeyUp, this); modversionid.setFocus(); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversionversion")/*"modversionversion"*/); modversionversion = new Text(detailsgrp, SWT.BORDER); modversionversion.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversionversion.addListener(SWT.KeyUp, this); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversionDescription")/*"modversionDescription"*/); modversiondescription = new Text(detailsgrp, SWT.BORDER); modversiondescription.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversiondescription.addListener(SWT.KeyUp, this); // new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversionofficial")/*"modversionofficial"*/); // modversionofficial = new Text(detailsgrp, SWT.BORDER); // modversionofficial.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // modversionofficial.addListener(SWT.KeyUp, this); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversionauthor")/*"modversionauthor"*/); modversionauthor = new Text(detailsgrp, SWT.BORDER); modversionauthor.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversionauthor.addListener(SWT.KeyUp, this); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversioncontact")/*"modversioncontact"*/); modversioncontact = new Text(detailsgrp, SWT.BORDER); modversioncontact.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversioncontact.addListener(SWT.KeyUp, this); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversionsecurityschema")/*"modversionsecurityschema"*/); modversionsecurityschema = new Text(detailsgrp, SWT.BORDER); modversionsecurityschema.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversionsecurityschema.addListener(SWT.KeyUp, this); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversionclass")/*"modversionclass"*/); modversionclass = new Text(detailsgrp, SWT.BORDER); modversionclass.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversionclass.addListener(SWT.KeyUp, this); new Label (detailsgrp, SWT.NONE).setText(XarayaModuleMessages.getString("Xaraya.label.modversioncategory")/*"modversioncategory"*/); modversioncategory = new Text(detailsgrp, SWT.BORDER); modversioncategory.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); modversioncategory.addListener(SWT.KeyUp, this); Composite compo = new Composite(composite, SWT.NONE); gl = new GridLayout(); ncol = 1; gl.numColumns = ncol; compo.setLayout(gl); //Group officialgrp = new Group(composite, SWT.NONE); Group officialgrp = new Group(compo, SWT.NONE); officialgrp.setText(XarayaModuleMessages.getString("Xaraya.label.officialgrp")/*"Module details"*/); officialgrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); officialgrp.setLayout(new GridLayout()); officialButton = new Button(officialgrp, SWT.CHECK); officialButton.setText(XarayaModuleMessages.getString("Xaraya.label.official")); gd = new GridData(GridData.FILL_HORIZONTAL); //gd.horizontalSpan = ncol; officialButton.setLayoutData(gd); officialButton.setSelection(false); //Group autoGensgrp = new Group(composite, SWT.NONE); Group autoGensgrp = new Group(compo, SWT.NONE); autoGensgrp.setText(XarayaModuleMessages.getString("Xaraya.label.autoGensgrp")); autoGensgrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); autoGensgrp.setLayout(new GridLayout()); xarUserApi = new Button(autoGensgrp, SWT.CHECK); xarUserApi.setText(XarayaModuleMessages.getString("Xaraya.label.xarUserApi")); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = ncol; xarUserApi.setLayoutData(gd); xarUserApi.setSelection(false); xarUserGui = new Button(autoGensgrp, SWT.CHECK); xarUserGui.setText(XarayaModuleMessages.getString("Xaraya.label.xarUserGui")); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = ncol; xarUserGui.setLayoutData(gd); xarUserGui.setSelection(false); xarAdminApi = new Button(autoGensgrp, SWT.CHECK); xarAdminApi.setText(XarayaModuleMessages.getString("Xaraya.label.xarAdminApi")); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = ncol; xarAdminApi.setLayoutData(gd); xarAdminApi.setSelection(false); xarAdminGui = new Button(autoGensgrp, SWT.CHECK); xarAdminGui.setText(XarayaModuleMessages.getString("Xaraya.label.xarAdminGui")); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = ncol; xarAdminGui.setLayoutData(gd); xarAdminGui.setSelection(false); // set the composite as the control for this page setControl(composite); addListeners(); } private void addListeners() { officialButton.addListener(SWT.Selection, this); xarUserApi.addListener(SWT.Selection, this); xarUserGui.addListener(SWT.Selection, this); xarAdminApi.addListener(SWT.Selection, this); xarAdminGui.addListener(SWT.Selection, this); } public void handleEvent(Event event) { setPageComplete(validatePage()); } // public boolean canFlipToNextPage() // { // if (getErrorMessage() != null) return false; // if (isPageComplete() && validatePage()) { // saveDataToModel(); // return true; // } // return false; // } public boolean canFinish(){ if (isPageComplete() /*&& validatePage()*/) { saveDataToModel(); return true; } return false; } private boolean validateText(Text input){ String buf = input.getText(); if ((buf!=null) && (buf.trim().length() >0)) return true; else return false; } public boolean isNumeric(Text input) { //there is something in the field to check.. StringBuffer buf = new StringBuffer(input.getText()); for (int i=0; i < buf.length(); i++){ if (!( Character.isDigit(buf.charAt(i)) //is it a number || (buf.charAt(i) == '.') //is it a decimal point || (buf.charAt(i) == '_'))) //is it an under_score (incase of 1_2) return false; } return true; } private boolean validatePage() { StringBuffer buf = new StringBuffer(); if (!validateText(modversionid)) buf.append("Id field incomplete"); else if (!isNumeric(modversionid)) buf.append("Id field must be numeric"); else if (!validateText(modversionversion)) buf.append("Version field incomplete"); else if (!isNumeric(modversionversion)) buf.append("Version must be numeric"); else if (!validateText(modversiondescription)) buf.append("Description field incomplete"); else if (!validateText(modversionauthor)) buf.append("Author field incomplete"); else if (!validateText(modversioncontact)) buf.append("Contact field incomplete"); else if (!validateText(modversionsecurityschema)) buf.append("Security schema field incomplete"); else if (!validateText(modversionclass)) buf.append("Class field incomplete"); else if (!validateText(modversioncategory)) buf.append("Category field incomplete"); if (buf.length() == 0) { //setErrorMessage("Module ready for creation"); setErrorMessage(null); return true; } setErrorMessage(buf.toString()); return false; } public void saveDataToModel() { XarayaVersionModel.setModversionid(modversionid.getText()); XarayaVersionModel.setModversionversion(modversionversion.getText()); XarayaVersionModel.setModversiondescription(modversiondescription.getText()); XarayaVersionModel.setModversionauthor(modversionauthor.getText()); XarayaVersionModel.setModversioncontact(modversioncontact.getText()); XarayaVersionModel.setModversionsecurityschema(modversionsecurityschema.getText()); XarayaVersionModel.setModversionclass(modversionclass.getText()); XarayaVersionModel.setModversioncategory(modversioncategory.getText()); XarayaVersionModel.setUserApi(xarUserApi.getSelection()); XarayaVersionModel.setUserGui(xarUserGui.getSelection()); XarayaVersionModel.setAdminApi(xarAdminApi.getSelection()); XarayaVersionModel.setAdminGui(xarAdminGui.getSelection()); XarayaVersionModel.setModversionofficial( (officialButton.getSelection()) ? "1" : "0"); XarayaVersionModel.setModversionadmin( (xarAdminGui.getSelection()) ? "1" : "0" ); XarayaVersionModel.setModversionuser( (xarUserGui.getSelection()) ? "1" : "0" ); } }