package org.openrosa.client.view;
import org.openrosa.client.Context;
import org.openrosa.client.FormDesigner;
import org.openrosa.client.controller.IDataTypeChangeListener;
import org.openrosa.client.controller.IFileListener;
import org.openrosa.client.model.GroupDef;
import org.openrosa.client.model.IFormElement;
import org.openrosa.client.model.OptionDef;
import org.openrosa.client.model.QuestionDef;
import org.openrosa.client.controller.IFormDesignerListener;
import org.openrosa.client.controller.IFormSelectionListener;
import org.openrosa.client.controller.ILocaleListChangeListener;
import com.extjs.gxt.ui.client.Style.ButtonArrowAlign;
import com.extjs.gxt.ui.client.Style.ButtonScale;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.IconAlign;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonGroup;
import com.extjs.gxt.ui.client.widget.button.SplitButton;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Composite;
/**
* This widget is the tool bar for the form designer.
*
* @author adewinter
*
*/
public class Toolbar extends Composite implements ILocaleListChangeListener, IDataTypeChangeListener{
/**
* Tool bar images.
*/
public static interface Images extends ClientBundle{
ImageResource newform();
ImageResource open();
ImageResource save();
ImageResource moveup();
ImageResource movedown();
ImageResource add();
ImageResource addchild();
ImageResource delete();
ImageResource justifyleft();
ImageResource justifyright();
ImageResource cut();
ImageResource copy();
ImageResource paste();
ImageResource alignTop();
ImageResource alignBottom();
ImageResource samewidth();
ImageResource sameheight();
ImageResource samesize();
ImageResource undo();
ImageResource redo();
ImageResource refresh();
ImageResource emptyIcon();
ImageResource addChild();
ImageResource addDate();
ImageResource addNumeric();
ImageResource addDecimal();
ImageResource addMultSelect();
ImageResource addSingSelect();
ImageResource addText();
ImageResource load();
ImageResource menu();
ImageResource localization();
ImageResource showxml();
ImageResource newformmenu();
ImageResource validate();
ImageResource blankbutton();
ImageResource send();
ImageResource save_exit();
ImageResource save_file();
ImageResource exit();
}
/** Main widget for this tool bar. */
private ToolBar toolBar;
/** The tool bar buttons. */
private Menu menu;
private SplitButton menuBut;
private Button previewBut;
private Button openBut;
private Button saveFileBut;
private Button submitBut;
private Button submitButContinue;
private Button exitWithoutSave;
private Button locBut;
private Button addSelect;
private Button txtBut;
private Button intBut;
private Button decBut;
private Button dateBut;
private Button multBut;
private Button singBut,timeBut,datetimeBut,picBut,vidBut,audBut,gpsBut, bcdBut, grpBut, lblBut, rptBut, yesNoBut, longBut;
private Button newBut;
private SplitButton splitItem;
private Button bdelete;
private Button editLocale;
private IFileListener fileListener;
private DesignTabWidget dtabWidget;
/** The images for the tool bar icons. */
public static Images images = GWT.create(Images.class);
/** Listener to the tool bar button click events. */
private IFormDesignerListener controller;
//This should be localized in the same way everything else is, eventually.
String[] buttonLabels = {
"Add Question", //0
"Text Question", //1
"Integer Question", //2
"Decimal Question", //3
"Date Question", //4
"MultiSelect Question", //5
"SingleSelect Question", //6
"Menu","Preview Form XML", //7
"Save To File...", //8
"Load Pasted Text...", //9
"Localization", //10
"Open From File...", //11
"New Xform", //12
"Time Question", //13
"Date+Time Question", //14
"Picture Question", //15
"Video Question", //16
"Audio Question", //17
"GPS Question", //18
"Group Question", //19
"Barcode Question", //20
"Label Question", //21
"Repeat Question"}; //22
String yesNoButtonText = "Yes/No Question";
String longButtonText = "Long Number Question";
// /** Widget to display the list of languages or locales. */
// ListBox localesComboBox = new ListBox(false);
ButtonGroup localeGroup;
/**
* Creates a new instance of the tool bar.
*
* @param images the images for tool bar icons.
* @param controller listener to the tool bar button click events.
*/
public Toolbar(IFormDesignerListener controller,IFileListener fileListener,DesignTabWidget dtab){
this.dtabWidget = dtab;
this.controller = controller;
setupToolbar(fileListener);
setupClickListeners();
Context.getEventBus().addDataTypeChangeListener(this);
// initWidget(toolBar);
}
/**
* Sets up the tool bar.
*/
private void setupToolbar(IFileListener fileListener){
toolBar = new ToolBar();
this.fileListener = fileListener;
//////////////////////FIRST GROUP/////////////////////////////////
ButtonGroup group = new ButtonGroup(1);
group.setHeading("Main Menu");
menuBut = new SplitButton(buttonLabels[7]);
menuBut.setIcon(AbstractImagePrototype.create(images.menu()));
menuBut.setScale(ButtonScale.LARGE);
menuBut.setIconAlign(IconAlign.TOP);
menuBut.setArrowAlign(ButtonArrowAlign.RIGHT);
menu = new Menu();
menu.addStyleName("myMenu");
SeparatorMenuItem menuSep = new SeparatorMenuItem();
menuSep.addStyleName("myMenuSeperator");
newBut = new Button(buttonLabels[13]);
newBut.setIcon(AbstractImagePrototype.create(images.newformmenu()));
newBut.setScale(ButtonScale.LARGE);
newBut.setIconAlign(IconAlign.LEFT);
newBut.addStyleName("myMenuButton");
previewBut = new Button("Preview XML");
previewBut.setIcon(AbstractImagePrototype.create(images.load()));
previewBut.setScale(ButtonScale.LARGE);
previewBut.setIconAlign(IconAlign.LEFT);
previewBut.addStyleName("myMenuButton");
saveFileBut = new Button("Save to Local File");
saveFileBut.setIcon(AbstractImagePrototype.create(images.save_file()));
saveFileBut.setScale(ButtonScale.LARGE);
saveFileBut.setIconAlign(IconAlign.LEFT);
saveFileBut.addStyleName("myMenuButton");
saveFileBut.disable();
openBut = new Button("Load Pasted Text");
openBut.setIcon(AbstractImagePrototype.create(images.open()));
openBut.setScale(ButtonScale.LARGE);
openBut.setIconAlign(IconAlign.LEFT);
openBut.addStyleName("myMenuButton");
submitBut = new Button("Save and Exit");
submitBut.setIcon(AbstractImagePrototype.create(images.save()));
submitBut.setScale(ButtonScale.LARGE);
submitBut.setIconAlign(IconAlign.LEFT);
submitBut.addStyleName("myMenuButton");
submitButContinue = new Button("Save");
submitButContinue.setIcon(AbstractImagePrototype.create(images.save_exit()));
submitButContinue.setScale(ButtonScale.LARGE);
submitButContinue.setIconAlign(IconAlign.LEFT);
submitButContinue.addStyleName("myMenuButton");
exitWithoutSave = new Button("Exit without Saving");
exitWithoutSave.setIcon(AbstractImagePrototype.create(images.exit()));
exitWithoutSave.setScale(ButtonScale.LARGE);
exitWithoutSave.setIconAlign(IconAlign.LEFT);
exitWithoutSave.addStyleName("myMenuButton");
locBut = new Button(buttonLabels[11]);
locBut.setIcon(AbstractImagePrototype.create(images.localization()));
locBut.setScale(ButtonScale.LARGE);
locBut.setIconAlign(IconAlign.LEFT);
locBut.addStyleName("myMenuButton");
locBut.disable(); //feature not ready yet.
menu.add(submitBut);
menu.add(submitButContinue);
menu.add(menuSep);
menu.add(openBut);
menu.add(previewBut);
menu.add(saveFileBut);
menu.add(exitWithoutSave);
//menu.add(locBut);
menuBut.setMenu(menu);
group.addButton(menuBut);
toolBar.add(group);
///////////////////////////////////////////////////////////////////
//////////////////////SECOND GROUP/////////////////////////////////
group = new ButtonGroup(2);
group.setHeading("Add Questions");
splitItem = new SplitButton(buttonLabels[0]);
splitItem.setIcon(AbstractImagePrototype.create(images.add()));
splitItem.setScale(ButtonScale.LARGE);
splitItem.setIconAlign(IconAlign.TOP);
splitItem.setArrowAlign(ButtonArrowAlign.RIGHT);
menu = new Menu();
menu.addStyleName("myMenu");
txtBut = new Button(buttonLabels[1]);
txtBut.setIcon(AbstractImagePrototype.create(images.addText()));
txtBut.setScale(ButtonScale.LARGE);
txtBut.setIconAlign(IconAlign.LEFT);
txtBut.addStyleName("myMenuButton");
intBut = new Button(buttonLabels[2]);
intBut.setIcon(AbstractImagePrototype.create(images.addNumeric()));
intBut.setScale(ButtonScale.LARGE);
intBut.setIconAlign(IconAlign.LEFT);
intBut.addStyleName("myMenuButton");
decBut = new Button(buttonLabels[3]);
decBut.setIcon(AbstractImagePrototype.create(images.addDecimal()));
decBut.setScale(ButtonScale.LARGE);
decBut.setIconAlign(IconAlign.LEFT);
decBut.addStyleName("myMenuButton");
longBut = new Button(longButtonText);
longBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
longBut.setScale(ButtonScale.LARGE);
longBut.setIconAlign(IconAlign.LEFT);
longBut.addStyleName("myMenuButton");
dateBut = new Button(buttonLabels[4]);
dateBut.setIcon(AbstractImagePrototype.create(images.addDate()));
dateBut.setScale(ButtonScale.LARGE);
dateBut.setIconAlign(IconAlign.LEFT);
dateBut.addStyleName("myMenuButton");
multBut = new Button(buttonLabels[5]);
multBut.setIcon(AbstractImagePrototype.create(images.addMultSelect()));
multBut.setScale(ButtonScale.LARGE);
multBut.setIconAlign(IconAlign.LEFT);
multBut.addStyleName("myMenuButton");
singBut = new Button(buttonLabels[6]);
singBut.setIcon(AbstractImagePrototype.create(images.addSingSelect()));
singBut.setScale(ButtonScale.LARGE);
singBut.setIconAlign(IconAlign.LEFT);
singBut.addStyleName("myMenuButton");
timeBut = new Button(buttonLabels[14]);
timeBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
timeBut.setScale(ButtonScale.LARGE);
timeBut.setIconAlign(IconAlign.LEFT);
timeBut.addStyleName("myMenuButton");
datetimeBut = new Button(buttonLabels[15]);
datetimeBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
datetimeBut.setScale(ButtonScale.LARGE);
datetimeBut.setIconAlign(IconAlign.LEFT);
datetimeBut.addStyleName("myMenuButton");
picBut = new Button(buttonLabels[16]);
picBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
picBut.setScale(ButtonScale.LARGE);
picBut.setIconAlign(IconAlign.LEFT);
picBut.addStyleName("myMenuButton");
vidBut = new Button(buttonLabels[17]);
vidBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
vidBut.setScale(ButtonScale.LARGE);
vidBut.setIconAlign(IconAlign.LEFT);
vidBut.addStyleName("myMenuButton");
audBut = new Button(buttonLabels[18]);
audBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
audBut.setScale(ButtonScale.LARGE);
audBut.setIconAlign(IconAlign.LEFT);
audBut.addStyleName("myMenuButton");
gpsBut = new Button(buttonLabels[19]);
gpsBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
gpsBut.setScale(ButtonScale.LARGE);
gpsBut.setIconAlign(IconAlign.LEFT);
gpsBut.addStyleName("myMenuButton");
grpBut = new Button(buttonLabels[20]);
grpBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
grpBut.setScale(ButtonScale.LARGE);
grpBut.setIconAlign(IconAlign.LEFT);
grpBut.addStyleName("myMenuButton");
bcdBut = new Button(buttonLabels[21]);
bcdBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
bcdBut.setScale(ButtonScale.LARGE);
bcdBut.setIconAlign(IconAlign.LEFT);
bcdBut.addStyleName("myMenuButton");
lblBut = new Button(buttonLabels[22]);
lblBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
lblBut.setScale(ButtonScale.LARGE);
lblBut.setIconAlign(IconAlign.LEFT);
lblBut.addStyleName("myMenuButton");
rptBut = new Button(buttonLabels[23]);
rptBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
rptBut.setScale(ButtonScale.LARGE);
rptBut.setIconAlign(IconAlign.LEFT);
rptBut.addStyleName("myMenuButton");
yesNoBut = new Button(yesNoButtonText);
yesNoBut.setIcon(AbstractImagePrototype.create(images.blankbutton()));
yesNoBut.setScale(ButtonScale.LARGE);
yesNoBut.setIconAlign(IconAlign.LEFT);
yesNoBut.addStyleName("myMenuButton");
menu.add(txtBut);
menu.add(intBut);
menu.add(decBut);
menu.add(longBut);
menu.add(dateBut);
menu.add(multBut);
menu.add(singBut);
menu.add(yesNoBut);
menu.add(timeBut);
menu.add(datetimeBut);
menu.add(picBut);
menu.add(vidBut);
menu.add(audBut);
menu.add(gpsBut);
menu.add(bcdBut);
menu.add(lblBut);
menu.add(rptBut);
menu.add(grpBut);
splitItem.setMenu(menu);
group.addButton(splitItem);
addSelect = new Button("Add Select Option");
addSelect.setIcon(AbstractImagePrototype.create(images.addchild()));
addSelect.setIconAlign(IconAlign.TOP);
addSelect.setScale(ButtonScale.LARGE);
addSelect.disable();
group.addButton(addSelect);
bdelete = new Button("Delete", AbstractImagePrototype.create(images.delete()));
bdelete.setScale(ButtonScale.LARGE);
bdelete.setIconAlign(IconAlign.TOP);
group.addButton(bdelete);
group.setHeight(85);
toolBar.add(group);
///////////////////////////////////////////////////////////////////
//////////////////////FOURTH GROUP/////////////////////////////////
group = new ButtonGroup(3);
group.setHeading("Localization");
group.setHeight(97);
group.setBodyStyle("myGroupStyle");
AbstractImagePrototype spacer = AbstractImagePrototype.create(images.emptyIcon());
editLocale = new Button();
editLocale.setText("Edit Languages");
editLocale.setBorders(true);
editLocale.setScale(ButtonScale.SMALL);
// editLocale.disable(); //feature not ready yet
group.addButton(editLocale);
group.setButtonAlign(HorizontalAlignment.CENTER);
group.setWidth(150);
// localesComboBox.addChangeHandler(new ChangeHandler(){
// public void onChange(ChangeEvent event){
// int index = getCurrentLocaleIndex();
// ListBox listBox = (ListBox)event.getSource();
// ItextLocale locale = new ItextLocale(listBox.getValue(listBox.getSelectedIndex()));
// if(!controller.changeLocale(locale))
// localesComboBox.setSelectedIndex(index);
// else
// chkDefault.setValue(locale.getKey().equals(Context.getDefaultLocale().getKey()));
// }
// });
// localesComboBox.setWidth("100px");
// group.add(/*cb*/ localesComboBox);
localeGroup = group;
//group.addStyleName("localizationGroup");
// chkDefault = new CheckBox("Default");
//group.add(chkDefault);
toolBar.add(group);
// Context.addLocaleListChangeListener(this);
}
public ToolBar getToolBar(){
return toolBar;
}
/**
* Setup button click event handlers.
*/
private void setupClickListeners(){
addSelect.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewChildItem();
}
});
bdelete.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.deleteSelectedItem();
}
});
dtabWidget.addFormSelectionListener(new IFormSelectionListener() {
@Override
public void onFormItemSelected(Object formItem) {
// TODO Auto-generated method stub
checkEnableAddSelect((IFormElement)formItem);
}
});
txtBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_TEXT);
splitItem.setText(txtBut.getText());
splitItem.setIcon(txtBut.getIcon());
splitItem.hideMenu();
}
});
intBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_NUMERIC);
splitItem.setText(intBut.getText());
splitItem.setIcon(intBut.getIcon());
splitItem.hideMenu();
}
});
decBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_DECIMAL);
splitItem.setText(decBut.getText());
splitItem.setIcon(decBut.getIcon());
splitItem.hideMenu();
}
});
longBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_LONG);
splitItem.setText(longBut.getText());
splitItem.setIcon(longBut.getIcon());
splitItem.hideMenu();
}
});
dateBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
controller.addNewQuestion(QuestionDef.QTN_TYPE_DATE);
splitItem.setText(dateBut.getText());
splitItem.setIcon(dateBut.getIcon());
splitItem.hideMenu();
}
});
singBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_LIST_EXCLUSIVE);
splitItem.setText(singBut.getText());
splitItem.setIcon(singBut.getIcon());
splitItem.hideMenu();
}
});
multBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_LIST_MULTIPLE);
splitItem.setText(multBut.getText());
splitItem.setIcon(multBut.getIcon());
splitItem.hideMenu();
}
});
// timeBut,datetimeBut,picBut,vidBut,audBut,gpsBut,bcdBut,grpBut,lblBut,rptBut
timeBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_TIME);
splitItem.setText(timeBut.getText());
splitItem.setIcon(timeBut.getIcon());
splitItem.hideMenu();
}
});
datetimeBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_DATE_TIME);
splitItem.setText(datetimeBut.getText());
splitItem.setIcon(datetimeBut.getIcon());
splitItem.hideMenu();
}
});
picBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_IMAGE);
splitItem.setText(picBut.getText());
splitItem.setIcon(picBut.getIcon());
splitItem.hideMenu();
}
});
vidBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_VIDEO);
splitItem.setText(vidBut.getText());
splitItem.setIcon(vidBut.getIcon());
splitItem.hideMenu();
}
});
audBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_AUDIO);
splitItem.setText(audBut.getText());
splitItem.setIcon(audBut.getIcon());
splitItem.hideMenu();
}
});
gpsBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_GPS);
splitItem.setText(gpsBut.getText());
splitItem.setIcon(gpsBut.getIcon());
splitItem.hideMenu();
}
});
bcdBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_BARCODE);
splitItem.setText(bcdBut.getText());
splitItem.setIcon(bcdBut.getIcon());
splitItem.hideMenu();
}
});
grpBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_GROUP);
splitItem.setText(grpBut.getText());
splitItem.setIcon(grpBut.getIcon());
splitItem.hideMenu();
}
});
lblBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_LABEL);
splitItem.setText(lblBut.getText());
splitItem.setIcon(lblBut.getIcon());
splitItem.hideMenu();
}
});
rptBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addNewQuestion(QuestionDef.QTN_TYPE_REPEAT);
splitItem.setText(rptBut.getText());
splitItem.setIcon(rptBut.getIcon());
splitItem.hideMenu();
}
});
yesNoBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
controller.addYesNoQuestion();
splitItem.setText(yesNoBut.getText());
splitItem.setIcon(yesNoBut.getIcon());
splitItem.hideMenu();
}
});
splitItem.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String t = splitItem.getText();
if(t.equals(buttonLabels[0])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_TEXT);
}else if(t.equals(buttonLabels[1])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_TEXT);
}else if(t.equals(buttonLabels[2])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_NUMERIC);
}else if(t.equals(buttonLabels[3])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_DECIMAL);
}else if(t.equals(buttonLabels[4])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_DATE);
}else if(t.equals(buttonLabels[5])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_LIST_MULTIPLE);
}else if(t.equals(buttonLabels[6])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_LIST_EXCLUSIVE);
}else if(t.equals(buttonLabels[14])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_TIME);
}else if(t.equals(buttonLabels[15])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_DATE_TIME);
}else if(t.equals(buttonLabels[16])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_IMAGE);
}else if(t.equals(buttonLabels[17])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_VIDEO);
}else if(t.equals(buttonLabels[18])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_AUDIO);
}else if(t.equals(buttonLabels[19])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_GPS);
}else if(t.equals(buttonLabels[20])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_GROUP);
}else if(t.equals(buttonLabels[21])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_BARCODE);
}else if(t.equals(buttonLabels[22])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_LABEL);
}else if(t.equals(buttonLabels[23])){
controller.addNewQuestion(QuestionDef.QTN_TYPE_REPEAT);
}else if(t.equals(yesNoButtonText)){
controller.addYesNoQuestion();
}else if(t.equals(longButtonText)){
controller.addNewQuestion(QuestionDef.QTN_TYPE_LONG);
}else{
controller.addNewQuestion(QuestionDef.QTN_TYPE_TEXT);
}
}
});
previewBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
menuBut.hideMenu();
fileListener.onPreview(true);
}
});
saveFileBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
//fileListener.onSave(true);
menuBut.hideMenu();
fileListener.saveFile(false);
}
});
submitBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
//fileListener.onSave(true);
menuBut.hideMenu();
fileListener.onSubmit(false);
}
});
submitButContinue.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
// TODO Auto-generated method stub
//fileListener.onSave(true);
menuBut.hideMenu();
fileListener.onSubmit(true);
}
});
exitWithoutSave.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
menuBut.hideMenu();
FormDesigner.enableCloseHandler(false);
History.back();
}
});
menuBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
menuBut.showMenu();
}
});
editLocale.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
fileListener.showItext();
}
});
openBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
menuBut.hideMenu();
fileListener.onOpen();
}
});
newBut.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
fileListener.onNew();
}
});
/*
btnNewForm.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.newForm();}});
btnOpenForm.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.openForm();}});
btnSaveForm.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.saveForm();}});
btnAddNewItem.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewItem();}});
btnAddNewChildItem.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewChildItem();}});
btnDeleteItem.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.deleteSelectedItem();}});
btnMoveItemUp.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.moveItemUp();}});
btnMoveItemDown.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.moveItemDown();}});
btnAlignLeft.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.alignLeft();}});
btnAlignRight.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.alignRight();}});
btnAlignTop.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.alignTop();}});
btnAlignBottom.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.alignBottom();}});
btnCut.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.cutItem();}});
btnCopy.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.copyItem();}});
btnPaste.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.pasteItem();}});
btnSameWidth.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.makeSameWidth();}});
btnSameHeight.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.makeSameHeight();}});
btnSameSize.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.makeSameSize();}});
btnRefresh.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.refresh(this);}});
btnText.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewQuestion(QuestionDef.QTN_TYPE_TEXT);}});
btnNumeric.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewQuestion(QuestionDef.QTN_TYPE_NUMERIC);}});
btnDecimal.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewQuestion(QuestionDef.QTN_TYPE_DECIMAL);}});
btnDate.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewQuestion(QuestionDef.QTN_TYPE_DATE);}});
btnSingle.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewQuestion(QuestionDef.QTN_TYPE_LIST_EXCLUSIVE);}});
btnMulti.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){controller.addNewQuestion(QuestionDef.QTN_TYPE_LIST_MULTIPLE);}});
*/
}
/**
* Populates the locale drop down with a list of locales supported by the form designer.
*/
public void populateLocales(){
/*ListStore<BaseModel> slocales = new ListStore<BaseModel>();
List<Locale> locales = Context.getLocales();
if(locales == null)
return;
for(Locale locale : locales){
BaseModel bm = new BaseModel();
bm.set("key", locale.getKey());
bm.set("name",locale.getName());
slocales.add(bm);
}
BaseModel bm = new BaseModel();
bm.set("key", "AAAAAA");
bm.set("name","AAAAAA");
slocales.add(bm);
bm = new BaseModel();
bm.set("key", "BBBBBB");
bm.set("name","BBBBBB");
slocales.add(bm);
cb.setDisplayField("name");
cb.setFieldLabel("name");
cb.setValueField("key");
cb.setStore(slocales);
cb.clear();
slocales.getModels().clear();*/
// localesComboBox.clear();
//
// List<Locale> locales = Context.getLocales();
// if(locales == null)
// return;
//
// for(Locale locale : locales)
// localesComboBox.addItem(locale.getName(), locale.getKey());
//
// localesComboBox.setSelectedIndex(getCurrentLocaleIndex());
}
// private int getCurrentLocaleIndex(){
// ItextLocale currentLocale = Context.getLocale();
//
// List<Locale> locales = Context.getLocales();
// assert(locales != null);
//
// for(int index = 0; index < locales.size(); index++){
// Locale locale = locales.get(index);
// if(locale.getKey().equals(currentLocale.getKey()))
// return index;
// }
//
// return 0;
// }
public void onLocaleListChanged(){
populateLocales();
}
public void checkEnableAddSelect(IFormElement formItem){
String text = "Add Select Option";
if(formItem instanceof QuestionDef &&
((formItem.getDataType() == QuestionDef.QTN_TYPE_LIST_EXCLUSIVE) ||
(formItem.getDataType() == QuestionDef.QTN_TYPE_LIST_MULTIPLE) ||
(formItem.getDataType() == QuestionDef.QTN_TYPE_REPEAT)))
{
if(formItem.getDataType() == QuestionDef.QTN_TYPE_REPEAT)
text = "Add Repeat Child";
addSelect.enable();
}else if(formItem instanceof OptionDef){
addSelect.enable();
}else if((formItem != null && formItem.getDataType() == QuestionDef.QTN_TYPE_REPEAT) ||
(formItem != null && formItem.getParent() != null && formItem.getParent().getDataType() == QuestionDef.QTN_TYPE_REPEAT)){
text = "Add Repeat Child";
addSelect.enable();
}else if(formItem instanceof GroupDef){
addSelect.enable();
text = "Add Group Child";
}else{
addSelect.disable();
}
addSelect.setText(text);
}
@Override
public void onDataTypeChanged(IFormElement element, int prevDataType) {
checkEnableAddSelect(element);
}
}