package com.webwoz.wizard.client;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.util.Date;
import java.util.Vector;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.webwoz.wizard.client.DatabaseAccess;
import com.webwoz.wizard.client.wizardlayouts.ChooseLayoutInfoScreen;
import com.webwoz.wizard.client.wizardlayouts.HomeScreen;
import com.webwoz.wizard.client.wizardlayouts.DefaultWizardScreen;
import com.webwoz.wizard.client.wizardlayouts.NoLayoutScreen;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class WebWOZWizard implements EntryPoint, ValueChangeHandler<String> {
// panels to structure layout
private VerticalPanel headPanel;
private HorizontalPanel titlePanel;
private VerticalPanel contentPanel;
private VerticalPanel contentWizardPanel;
private VerticalPanel footPanel;
private VerticalPanel containerPanel;
private HorizontalPanel menuPanel;
private DisclosurePanel menuSettingsPanel;
private DisclosurePanel menuExperimentsPanel;
private VerticalPanel wizardScreenPanel;
private VerticalPanel layoutsPanel;
private VerticalPanel settingsPanel;
private VerticalPanel settingsClientOutputPanel;
private static VerticalPanel settingsClientInputPanel;
private static VerticalPanel settingsWizardOutputPanel;
private static VerticalPanel settingsWizardOutMT;
private HorizontalPanel experimentsPanel;
private VerticalPanel experimentCollectionPanel;
private HorizontalPanel loginPanel;
private static VerticalPanel addExperimentPanel;
private HorizontalPanel experimentNamePanel;
private HorizontalPanel experimentLayoutPanel;
private HorizontalPanel experimentSavePanel;
private HorizontalPanel experimentMediaStoragePanel;
private HorizontalPanel experimentUserStorePanel;
private VerticalPanel userExperimentsCollectionPanel;
private HorizontalPanel experimentClosePanel;
private static VerticalPanel registerUserPanel;
private HorizontalPanel registerUserUserPanel;
private HorizontalPanel registerUserPassPanel;
private HorizontalPanel registerUserButtonPanel;
private VerticalPanel registerUserContainerPanel;
private HorizontalPanel experimentEditPanel;
private VerticalPanel experimentUserEditPanel;
private HorizontalPanel newUserHeadingPanel;
private HorizontalPanel addNewUserPanel;
private HorizontalPanel copyExperimentDataPanel;
private HorizontalPanel errorUserRegistrationPanel;
private HorizontalPanel errorPrimaryUserPanel;
private HorizontalPanel errorAdditionalUserPanel;
private HorizontalPanel noExperimentsPanel;
// Vectors
private Vector<HorizontalPanel> userExperimentsPanels;
private Vector<Label> userExperimentLabels;
private Vector<Button> userExperimentDelButtons;
private Vector<Button> userExperimentEditButtons;
private Vector<HorizontalPanel> experimentUserPanels;
private Vector<Label> experimentUserUserTextBoxes;
private Vector<TextBox> experimentUserPassTextBoxes;
private Vector<Label> experimentUserPassLabels;
private Vector<Button> experimentUserChangeUserButtons;
private Vector<Button> experimentUserDeleteUserButtons;
// list boxes
private ListBox layoutList;
private ListBox experimentList;
private ListBox clientListA;
private ListBox clientListB;
private ListBox experimentLayoutList;
private ListBox experimentDataList;
// labels
private Label headingLabel;
private Label userLabel;
private Label pwLabel;
private Label experimentNameLabel;
private Label experimentLayoutLabel;
private Label experimentMediaStorageLabel;
private Label experimentUserStoreHeadingLabel;
private Label experimentUserStoreNameLabel;
private Label experimentUserStorePassLabel;
private Label userExperimentsHeading;
private Label userNewExperimentHeading;
private Label registerUserUserLabel;
private Label registerUserPassLabel;
private Label newUserStorePassLabel;
private Label newUserHeadingLabel;
private Label clientOutputLabel;
private Label clientInputLabel;
private Label wizardOutputLabel;
private Label loginMessage;
private Label errorUserRegistrationLabel;
private Label errorPrimaryUserRegistrationLabel;
private Label errorAdditionalUserRegistrationLabel;
private Label noExperimentsLabel;
private Label existingUserHeadingLabel;
// buttons
private Button loginButton;
private Button logoutButton;
private Button newExperimentButton;
private Button saveNewExperimentButton;
private Button cancelNewExperimentButton;
private Button registerUserRegsiterButton;
private Button registerUserCloseButton;
private Button changeExperimentNameButton;
private Button changeExperimentMediaServerButton;
private Button changeExperimentLayoutButton;
private Button cancelChangeExperimentButton;
private Button addUserButton;
private Button saveChangeExperimentButton;
// hyperlinks
private Hyperlink registerLink;
// text boxes
private TextBox userTextBox;
private PasswordTextBox pwTextBox;
private TextBox experimentNameTextBox;
private TextBox experimentMediaStorageTextBox;
private TextBox experimentUserStoreNameTextBox;
private TextBox experimentUserStorePassTextBox;
private TextBox registerUserUserTextBox;
private TextBox registerUserPassTextBox;
private TextBox newUserStoreNameTextBox;
private TextBox newUserStorePassTextBox;
// Check boxes
private CheckBox copyExperimentDataCheckBox;
private CheckBox freeTextTabCheckBox;
// Popups
private AddExperimentPopUp addExperimentPopUp;
private RegisterUserPopUp registerUserPopUp;
// other variables
private int[][] components;
private int[] experimentLayouts;
private int newExpId;
private int newUserId;
private int user;
private int experiment;
private int editExpId;
private String sqlRecording;
private String sqlTab;
private String sqlDomainData;
private String sqlSlot;
private String sqlDomainDataSlot;
private String sqlComponents;
private int[] domaindataNew;
private int[] oldSlots;
private int[] newSlots;
private int slotCountCopy;
private String[] experimentPaths;
private String[] experimentSSLangs;
private String[] experimentMTSrc;
private String[] experimentMTTrg;
private String[] experimentMToSrc;
private String[] experimentMToTrg;
private String[] experimentASRlangs;
private String selectedExperimentPath;
private String selectedSSLang;
private String selectedMTSrc;
private String selectedMTTrg;
private String selectedMToSrc;
private String selectedMToTrg;
private String selectedASRlang;
private Screen wizardInterface;
private int experimentToCopy;
private static SettingsMTout mtOut;
private static SettingsMTin mtIn;
private static SettingsASR asrIn;
private static SettingsSS ssOut;
private int asrMod;
private int mtCorMod;
private int mtOutComp;
private String newUser;
private String newPwd;
private Date date;
private int editExpPanel;
// RPC
private DatabaseAccessAsync databaseAccessSvc;
private ComponentFactoryAsync componentFactorySvc;
public void onModuleLoad() {
stopSession();
}
@SuppressWarnings("deprecation")
private void startSession() {
// instantiate variables
// main panels
headPanel = new VerticalPanel();
titlePanel = new HorizontalPanel();
contentPanel = new VerticalPanel();
footPanel = new VerticalPanel();
contentWizardPanel = new VerticalPanel();
containerPanel = new VerticalPanel();
menuPanel = new HorizontalPanel();
menuSettingsPanel = new DisclosurePanel("Settings");
menuExperimentsPanel = new DisclosurePanel("Experiments");
wizardScreenPanel = new VerticalPanel();
layoutsPanel = new VerticalPanel();
settingsPanel = new VerticalPanel();
settingsClientOutputPanel = new VerticalPanel();
settingsClientInputPanel = new VerticalPanel();
settingsWizardOutputPanel = new VerticalPanel();
settingsWizardOutMT = new VerticalPanel();
experimentsPanel = new HorizontalPanel();
experimentCollectionPanel = new VerticalPanel();
loginPanel = new HorizontalPanel();
addExperimentPanel = new VerticalPanel();
experimentNamePanel = new HorizontalPanel();
experimentLayoutPanel = new HorizontalPanel();
experimentSavePanel = new HorizontalPanel();
experimentMediaStoragePanel = new HorizontalPanel();
experimentUserStorePanel = new HorizontalPanel();
userExperimentsCollectionPanel = new VerticalPanel();
experimentClosePanel = new HorizontalPanel();
registerUserPanel = new VerticalPanel();
registerUserUserPanel = new HorizontalPanel();
registerUserPassPanel = new HorizontalPanel();
registerUserButtonPanel = new HorizontalPanel();
registerUserContainerPanel = new VerticalPanel();
experimentEditPanel = new HorizontalPanel();
experimentUserEditPanel = new VerticalPanel();
newUserHeadingPanel = new HorizontalPanel();
addNewUserPanel = new HorizontalPanel();
copyExperimentDataPanel = new HorizontalPanel();
errorUserRegistrationPanel = new HorizontalPanel();
errorPrimaryUserPanel = new HorizontalPanel();
errorAdditionalUserPanel = new HorizontalPanel();
noExperimentsPanel = new HorizontalPanel();
// Vectors
userExperimentsPanels = new Vector<HorizontalPanel>();
userExperimentLabels = new Vector<Label>();
userExperimentDelButtons = new Vector<Button>();
userExperimentEditButtons = new Vector<Button>();
experimentUserPanels = new Vector<HorizontalPanel>();
experimentUserUserTextBoxes = new Vector<Label>();
experimentUserPassTextBoxes = new Vector<TextBox>();
experimentUserPassLabels = new Vector<Label>();
experimentUserChangeUserButtons = new Vector<Button>();
experimentUserDeleteUserButtons = new Vector<Button>();
// list boxes
layoutList = new ListBox();
experimentList = new ListBox();
clientListA = new ListBox();
clientListB = new ListBox();
experimentLayoutList = new ListBox();
experimentDataList = new ListBox();
// labels
headingLabel = new Label();
userLabel = new Label("User Name: ");
pwLabel = new Label("Password: ");
experimentNameLabel = new Label("Experiment Name: ");
experimentLayoutLabel = new Label("Wizard Interface: ");
experimentMediaStorageLabel = new Label("Path to Media: ");
experimentUserStoreHeadingLabel = new Label(
"(Further users can then be added via 'Edit'!)");
experimentUserStoreNameLabel = new Label("User Name:");
experimentUserStorePassLabel = new Label("Password:");
userExperimentsHeading = new Label("Your Existing Experiments");
userNewExperimentHeading = new Label("Add a New Experiment");
registerUserUserLabel = new Label("User Name:");
registerUserPassLabel = new Label("Password:");
newUserStorePassLabel = new Label("Password: ");
newUserHeadingLabel = new Label("Add User: ");
clientOutputLabel = new Label("Client");
clientInputLabel = new Label("Input");
wizardOutputLabel = new Label("Output");
loginMessage = new Label();
errorUserRegistrationLabel = new Label();
errorPrimaryUserRegistrationLabel = new Label();
errorAdditionalUserRegistrationLabel = new Label();
noExperimentsLabel = new Label("< Empty >");
existingUserHeadingLabel = new Label("Experiment Users");
// buttons
loginButton = new Button("Login");
logoutButton = new Button("Logout");
newExperimentButton = new Button("Organise Experiments");
saveNewExperimentButton = new Button("Add Experiment");
cancelNewExperimentButton = new Button("Close");
registerUserRegsiterButton = new Button("Register");
registerUserCloseButton = new Button("Cancel");
changeExperimentNameButton = new Button("Change");
changeExperimentMediaServerButton = new Button("Change");
changeExperimentLayoutButton = new Button("Change");
cancelChangeExperimentButton = new Button("Close");
saveChangeExperimentButton = new Button("Save Changes");
addUserButton = new Button("Add");
// hyperlinks
registerLink = new Hyperlink("Register...", "1");
// text boxes
userTextBox = new TextBox();
pwTextBox = new PasswordTextBox();
experimentNameTextBox = new TextBox();
experimentMediaStorageTextBox = new TextBox();
experimentUserStoreNameTextBox = new TextBox();
experimentUserStorePassTextBox = new TextBox();
registerUserUserTextBox = new TextBox();
registerUserPassTextBox = new TextBox();
newUserStoreNameTextBox = new TextBox();
newUserStorePassTextBox = new TextBox();
// Check boxes
copyExperimentDataCheckBox = new CheckBox(
"Copy utterances and domain data from existing experiment");
freeTextTabCheckBox = new CheckBox("Include Free-Text tab");
// Popups
addExperimentPopUp = null;
registerUserPopUp = null;
addExperimentPopUp = new AddExperimentPopUp();
registerUserPopUp = new RegisterUserPopUp();
// RPC
databaseAccessSvc = GWT.create(DatabaseAccess.class);
componentFactorySvc = GWT.create(ComponentFactory.class);
// add handler
loginButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
login();
}
});
logoutButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
logout();
}
});
pwTextBox.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getCharCode() == KeyCodes.KEY_ENTER) {
login();
}
}
});
userTextBox.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getCharCode() == KeyCodes.KEY_ENTER) {
login();
}
}
});
newExperimentButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
date = new Date();
long userId = (long) (date.getTime());
loadExperimentLayouts();
copyExperimentDataCheckBox.setChecked(false);
experimentNameTextBox.setText("New Experiment");
experimentMediaStorageTextBox.setText("http://...");
experimentUserStoreNameTextBox.setText("u" + userId);
experimentUserStorePassTextBox.setText("Password01");
addExperimentPopUp.center();
}
});
addUserButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
String newUser = clearHiven(newUserStoreNameTextBox.getText());
String newPwd = clearHiven(newUserStorePassTextBox.getText());
checkUserExists(newUser, newPwd, 3);
}
});
saveNewExperimentButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
String newUser = clearHiven(experimentUserStoreNameTextBox
.getText());
String newPwd = clearHiven(experimentUserStorePassTextBox
.getText());
checkUserExists(newUser, newPwd, 2);
}
});
cancelChangeExperimentButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
closeChangeExperiment();
}
});
saveChangeExperimentButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
changeExperimentData();
}
});
changeExperimentNameButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
changeExperimentData();
}
});
changeExperimentLayoutButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
changeExperimentData();
}
});
changeExperimentMediaServerButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
changeExperimentData();
}
});
cancelNewExperimentButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
loadExperiments();
registerUserUserTextBox.setText("");
registerUserPassTextBox.setText("");
addExperimentPopUp.hide();
// change visibility of tabs
if (wizardInterface != null) {
wizardInterface.changeVisibility();
}
}
});
copyExperimentDataCheckBox.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
boolean checked = ((CheckBox) event.getSource()).isChecked();
if (checked) {
experimentDataList.setVisible(true);
} else {
experimentDataList.setVisible(false);
}
}
});
menuSettingsPanel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
public void onClose(CloseEvent<DisclosurePanel> event) {
changeTabVisibility();
}
});
// Reset History: Application starts with no history
String initToken = History.getToken();
if (initToken.length() == 0) {
History.newItem("0");
}
// Add history listener
History.addValueChangeHandler(this);
// hide popup
registerUserPopUp.hide();
// load register panel
buildRegisterUserPanel();
addExperimentPopUp.hide();
// headPanel
headPanel.clear();
String header = "<div id='header'></div>";
headPanel.add(new HTML(header));
// titlePanel
titlePanel.clear();
headingLabel.setText("Welcome!");
headingLabel.setWidth("1080px");
titlePanel.add(headingLabel);
titlePanel.addStyleName("title");
titlePanel.add(logoutButton);
// contentPanel
contentPanel.clear();
loginMessage.setText("");
contentPanel.add(loginPanel);
loginMessage.setStyleName("loginMessage");
contentPanel.add(loginMessage);
// footPanel
footPanel.clear();
String foot = "<div style=\"margin-bottom: 15px; margin-top:10px\"> </div>";
footPanel.add(new HTML(foot));
footPanel.setWidth("1160px");
// load login screen
loadLoginScreen();
RootPanel.get("head").add(headPanel);
RootPanel.get("title").add(titlePanel);
RootPanel.get("content").add(contentPanel);
RootPanel.get("foot").add(footPanel);
}
private void stopSession() {
// stop reload in wizardInterface
if (wizardInterface != null) {
wizardInterface.stopReload();
wizardInterface = null;
}
// clear elements
RootPanel.get("head").clear();
RootPanel.get("title").clear();
RootPanel.get("content").clear();
RootPanel.get("foot").clear();
RootPanel.get().clear();
// start new session
startSession();
}
private void login() {
String sql = "Select * from user where name = '"
+ userTextBox.getText() + "' and pw = '" + pwTextBox.getText()
+ "' and role = 1";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
if (result != null) {
setUser(Integer.parseInt(result[0][0]));
loginPanel.clear();
registerUserPanel.clear();
logoutButton.setVisible(true);
loginMessage.setText("");
// load wizard screen
loadWizardScreen();
} else {
// clear login if no user is found
pwTextBox.setText("");
userTextBox.setText("");
loginMessage.setText("Sorry! Wrong user name or password ");
}
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void logout() {
stopSession();
}
private void loadLoginScreen() {
loginPanel.clear();
loginPanel.add(userLabel);
userLabel.setStyleName("label");
loginPanel.add(userTextBox);
userTextBox.setStyleName("text");
loginPanel.add(pwLabel);
pwLabel.setStyleName("label");
loginPanel.add(pwTextBox);
pwTextBox.setStyleName("text");
loginPanel.add(loginButton);
loginButton.setStyleName("button");
logoutButton.setStyleName("button");
loginPanel.add(registerLink);
// deactivate registration in case you want to control the amount of
// wizards using the system
// registerLink.setVisible(false);
registerLink.setStyleName("link");
logoutButton.setVisible(false);
loginPanel.setStyleName("loginPanel");
loginPanel.setVisible(true);
headingLabel.setText("Welcome!");
pwTextBox.setText("");
userTextBox.setText("");
}
private void loadWizardScreen() {
// load experiment edit panel
loadExperimentEditPanel();
// load menu
loadMenu();
// wizardScreenPanel
wizardScreenPanel.clear();
headingLabel.setText("WebWOZ Wizard of Oz Prototyping Platform");
wizardScreenPanel.add(new HomeScreen().getScreen());
// containerPanel
containerPanel.clear();
containerPanel.add(wizardScreenPanel);
containerPanel.setWidth("930px");
// contentWizardPanel
contentWizardPanel.clear();
contentWizardPanel.add(menuPanel);
contentWizardPanel.add(containerPanel);
contentWizardPanel.addStyleName("contentPanel");
contentPanel.clear();
contentPanel.add(contentWizardPanel);
// wizard layout handler
layoutList.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
changeLayout();
menuPanel.setVisible(false);
}
});
// clientA layout handler
clientListA.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
// changeClient();
}
});
// clientB layout handler
clientListB.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
// changeClient();
}
});
// experiment handler
experimentList.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
changeExperiment();
}
});
}
private void loadMenu() {
menuSettingsPanel.clear();
menuSettingsPanel.add(settingsPanel);
menuSettingsPanel.setOpen(false);
menuSettingsPanel.setVisible(false);
menuExperimentsPanel.clear();
experimentCollectionPanel.clear();
experimentCollectionPanel.setStyleName("marginBottom");
experimentCollectionPanel.add(experimentsPanel);
menuExperimentsPanel.add(experimentCollectionPanel);
menuExperimentsPanel.setOpen(true);
menuPanel.clear();
menuPanel.add(menuExperimentsPanel);
menuPanel.add(menuSettingsPanel);
menuPanel.setStyleName("menuPanel");
menuPanel.setVisible(true);
}
private void loadExperiments() {
String sql = "Select * from experiment where userid = " + user
+ " order by id asc";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
experimentList.clear();
if (result != null) {
experimentLayouts = new int[result.length + 1];
experimentPaths = new String[result.length + 1];
experimentSSLangs = new String[result.length + 1];
experimentMTSrc = new String[result.length + 1];
experimentMTTrg = new String[result.length + 1];
experimentMToSrc = new String[result.length + 1];
experimentMToTrg = new String[result.length + 1];
experimentASRlangs = new String[result.length + 1];
experimentList.addItem("-", "0");
experimentLayouts[0] = 0;
experimentSSLangs[0] = "-";
experimentPaths[0] = "-";
experimentMTSrc[0] = "-";
experimentMTTrg[0] = "-";
experimentMToSrc[0] = "-";
experimentMToTrg[0] = "-";
experimentASRlangs[0] = "-";
for (int i = 0; i < result.length; i++) {
experimentLayouts[i + 1] = Integer
.parseInt(result[i][6]);
experimentPaths[i + 1] = result[i][5];
experimentSSLangs[i + 1] = result[i][8];
experimentMTSrc[i + 1] = result[i][9];
experimentMTTrg[i + 1] = result[i][10];
experimentMToSrc[i + 1] = result[i][11];
experimentMToTrg[i + 1] = result[i][12];
experimentASRlangs[i + 1] = result[i][13];
experimentList.addItem(result[i][1] + " ("
+ result[i][0] + ")", result[i][0]);
}
noExperimentsPanel.setVisible(false);
userExperimentsCollectionPanel.setVisible(true);
} else {
userExperimentsCollectionPanel.setVisible(false);
noExperimentsPanel.setVisible(true);
experimentList.addItem("-", "0");
}
// add list to panel
experimentsPanel.clear();
experimentsPanel.add(experimentList);
experimentList.setStyleName("list");
// add possibility to create a new experiment
experimentsPanel.add(newExperimentButton);
newExperimentButton.setStyleName("button");
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void addExperimentDelButton(Button b, final int expid,
final int panel) {
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
userExperimentsPanels.get(panel).clear();
deleteExperiment(expid);
}
});
}
private void addExperimentEditButton(Button b, final int expid,
final int panel) {
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
editExpId = expid;
editExpPanel = panel;
getExperimentData();
}
});
}
private void buildSettingsPanel(final int experimentid) {
String sql = "Select * from experimentcomponent where experimentid = "
+ experimentid + " order by rank asc";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
settingsPanel.clear();
settingsClientOutputPanel.clear();
clientOutputLabel.setStyleName("strong");
settingsClientOutputPanel.setStyleName("marginBottom");
settingsClientOutputPanel.add(clientOutputLabel);
settingsClientInputPanel.clear();
clientInputLabel.setStyleName("strong");
settingsClientInputPanel
.setStyleName("settingsComponentsPanel");
settingsClientInputPanel.add(clientInputLabel);
settingsWizardOutputPanel.clear();
wizardOutputLabel.setStyleName("strong");
settingsWizardOutputPanel
.setStyleName("settingsComponentsPanel");
settingsWizardOutputPanel
.addStyleName("settingsComponentsPanel");
settingsWizardOutputPanel.add(wizardOutputLabel);
settingsPanel.add(settingsClientInputPanel);
settingsPanel.add(settingsWizardOutputPanel);
settingsPanel.add(settingsClientOutputPanel);
if (result != null) {
// Output
settingsClientOutputPanel.add(new SettingsClient(
experimentid).getScreen());
asrMod = 0;
mtCorMod = 0;
mtOutComp = 0;
for (int i = 0; i < result.length; i++) {
switch (Integer.parseInt(result[i][2])) {
case 1: // ASR
asrIn = new SettingsASR(experimentid,
selectedExperimentPath, selectedSSLang,
selectedMTSrc, selectedMTTrg,
selectedMToSrc, selectedMToTrg,
selectedASRlang, getUser());
settingsClientInputPanel.add(asrIn.getScreen(
Integer.parseInt(result[i][3]),
Integer.parseInt(result[i][4]),
Integer.parseInt(result[i][5])));
asrMod = Integer.parseInt(result[i][4]);
break;
case 2: // MT in
mtIn = new SettingsMTin(experimentid,
selectedExperimentPath, selectedSSLang,
selectedMTSrc, selectedMTTrg,
selectedMToSrc, selectedMToTrg,
selectedASRlang, getUser());
settingsClientInputPanel.add(mtIn.getScreen(
Integer.parseInt(result[i][3]),
Integer.parseInt(result[i][4]),
Integer.parseInt(result[i][5])));
mtCorMod = Integer.parseInt(result[i][4]);
break;
case 5: // MT out
mtOut = new SettingsMTout(experimentid,
selectedExperimentPath, selectedSSLang,
selectedMTSrc, selectedMTTrg,
selectedMToSrc, selectedMToTrg,
selectedASRlang, getUser());
settingsWizardOutMT = mtOut.getScreen(
Integer.parseInt(result[i][3]),
Integer.parseInt(result[i][4]),
Integer.parseInt(result[i][5]));
settingsWizardOutputPanel.add(settingsWizardOutMT);
mtOutComp = Integer.parseInt(result[i][3]);
break;
case 6: // SS
ssOut = new SettingsSS(experimentid,
selectedExperimentPath, selectedSSLang,
selectedMTSrc, selectedMTTrg,
selectedMToSrc, selectedMToTrg,
selectedASRlang, getUser());
settingsWizardOutputPanel.add(ssOut.getScreen(
Integer.parseInt(result[i][3]),
Integer.parseInt(result[i][4]),
Integer.parseInt(result[i][5])));
break;
default:
break;
}
}
if (asrMod > 0) {
changeVisiblility(2);
} else {
changeVisiblility(3);
}
if (asrMod > 0 | mtCorMod > 0) {
changeVisiblility(4);
} else {
changeVisiblility(5);
}
if (mtOutComp > 0) {
changeVisiblility(6);
} else {
changeVisiblility(7);
}
settingsClientInputPanel.add(new HTML("<hr />"));
settingsWizardOutputPanel.add(new HTML("<hr />"));
menuSettingsPanel.setVisible(true);
} else {
}
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void changeLayout() {
// clear wizard screen and stop reload
wizardScreenPanel.clear();
if (wizardInterface != null) {
wizardInterface.stopReload();
wizardInterface = null;
}
menuSettingsPanel.setVisible(false);
int i = experimentLayouts[experimentList.getSelectedIndex()];
switch (i) {
case 0:
wizardInterface = new ChooseLayoutInfoScreen();
wizardScreenPanel.add(wizardInterface.getScreen());
break;
case 1:
wizardInterface = new DefaultWizardScreen(
Integer.parseInt(experimentList.getValue(experimentList
.getSelectedIndex())), user);
wizardScreenPanel.add(wizardInterface.getScreen());
menuExperimentsPanel.setOpen(false);
menuSettingsPanel.setVisible(true);
menuSettingsPanel.setOpen(false);
break;
// space for more screen layouts
default:
wizardInterface = new NoLayoutScreen();
wizardScreenPanel.add(wizardInterface.getScreen());
break;
}
}
private void changeExperiment() {
// set experiment variables
selectedExperimentPath = experimentPaths[experimentList
.getSelectedIndex()];
selectedSSLang = experimentSSLangs[experimentList.getSelectedIndex()];
selectedMTSrc = experimentMTSrc[experimentList.getSelectedIndex()];
selectedMTTrg = experimentMTTrg[experimentList.getSelectedIndex()];
selectedMToSrc = experimentMToSrc[experimentList.getSelectedIndex()];
selectedMToTrg = experimentMToTrg[experimentList.getSelectedIndex()];
selectedASRlang = experimentASRlangs[experimentList.getSelectedIndex()];
experiment = Integer.parseInt(experimentList.getValue(experimentList
.getSelectedIndex()));
// load layout for experiment
changeLayout();
// load LTCs for the experiment
clearComponents();
loadLTCs();
// load LTC settings for experiment
buildSettingsPanel(experiment);
}
private void loadLTCs() {
String sql = "Select * from experimentcomponent where experimentid = "
+ experiment + " order by rank asc";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
if (result != null) {
components = new int[result.length][3];
for (int i = 0; i < result.length; i++) {
// add components to local array
components[i][0] = Integer.parseInt(result[i][2]);
components[i][1] = Integer.parseInt(result[i][3]);
components[i][2] = Integer.parseInt(result[i][4]);
}
addComponents();
} else {
// System.out.println("No components defined for this experiment!");
}
layoutList.clear();
layoutsPanel.clear();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void addComponents() {
// Initialize the service remote procedure call
if (componentFactorySvc == null) {
componentFactorySvc = GWT.create(ComponentFactory.class);
}
AsyncCallback<Void> callback = new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(Void result) {
}
};
componentFactorySvc.pushComponents(components, Integer
.parseInt(experimentList.getValue(experimentList
.getSelectedIndex())), selectedExperimentPath,
selectedSSLang, selectedMTSrc, selectedMTTrg, selectedMToSrc,
selectedMToTrg, selectedASRlang, getUser(), callback);
}
private void clearComponents() {
// clear local field
components = null;
// Initialize the service remote procedure call
if (componentFactorySvc == null) {
componentFactorySvc = GWT.create(ComponentFactory.class);
}
AsyncCallback<Void> callback = new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(Void result) {
}
};
componentFactorySvc.clearComponents(callback);
}
public void saveExperiment(final String us, final String pw) {
String expName = clearHiven(experimentNameTextBox.getText());
String expServer = clearHiven(experimentMediaStorageTextBox.getText());
String sql = "Insert into experiment (name, mediaserver, layout, userid) values ('"
+ expName
+ "', '"
+ expServer
+ "', "
+ experimentLayoutList.getValue(experimentLayoutList
.getSelectedIndex()) + ", " + user + ");";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
newExpId = Integer.parseInt(result);
// System.out.println("Experiment: " + newExpId);
saveUser(us, pw);
}
};
databaseAccessSvc.storeData(sql, callback);
}
public void saveUser(String us, String pw) {
String sql = "Insert into user (name, pw, role) values ('" + us
+ "', '" + pw + "', 2);";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
newUserId = Integer.parseInt(result);
// System.out.println("User: " + newUserId);
insertExperimentUser();
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void insertExperimentUser() {
String sql = "Insert into experimentuser values (" + newExpId + ", "
+ newUserId + ");";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
@SuppressWarnings("deprecation")
public void onSuccess(String result) {
// System.out.println("ExperimentUser inserted!");
if (!copyExperimentDataCheckBox.isChecked()) {
createNewExperimentEnvironment();
} else {
addExperiment();
}
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void loadExperimentLayouts() {
String sql = "Select * from layout";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
experimentLayoutList.clear();
if (result != null) {
;
for (int i = 0; i < result.length; i++) {
experimentLayoutList
.addItem(result[i][1], result[i][0]);
}
} else {
}
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
public void setUser(int user) {
this.user = user;
}
public int getUser() {
return user;
}
private static class AddExperimentPopUp extends PopupPanel {
public AddExperimentPopUp() {
// Set the dialog box's caption.
setWidth("430px");
setHeight("270px");
// Enable animation.
setAnimationEnabled(true);
setGlassEnabled(true);
setWidget(addExperimentPanel);
}
}
private static class RegisterUserPopUp extends PopupPanel {
public RegisterUserPopUp() {
// Set the dialog box's caption.
setWidth("300px");
setHeight("100px");
// Enable animation.
setAnimationEnabled(true);
setGlassEnabled(true);
setWidget(registerUserPanel);
}
}
private void createNewExperimentEnvironment() {
String sql = " Insert into recording (expid, semkey, section, rank, origtext, origaudiofile, origmmfile, transtext, transaudiofile, transmmfile) values ("
+ newExpId
+ ", 'Welcome', 1, 7, 'Welcome to ABC Bank. To start, please say your account number or say I do not have one.' , 'http://kdeg-vm-14.cs.tcd.ie:8180/mediaexamples/Scenario01_01.mp3', '', '', '', '');";
sql = sql
+ " Insert into tab (tabname, exp, rank, notes) values ('Stored Utterances',"
+ newExpId
+ ", 0, 'Please welcome and identify the customer.');";
sql = sql
+ " Insert into recording (expid, semkey, section, rank, origtext, origaudiofile, origmmfile, transtext, transaudiofile, transmmfile) values ("
+ newExpId
+ ", 'Correct', 0, 7, 'Is that correct?' , 'http://kdeg-vm-14.cs.tcd.ie:8180/mediaexamples/Scenario02_03.mp3', '', '', '', '');";
// components
sql = sql
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", 0, 0, 0, 0);"; // Wizard
sql = sql
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", 1, 1, 0, 0);"; // ASR
sql = sql
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", 2, 2, 0, 0);"; // MT in
sql = sql
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", 3, 3, 0, 0);"; // NLU
sql = sql
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", 4, 4, 0, 0);"; // NLG
sql = sql
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", 5, 5, 0, 0);"; // MT out
sql = sql
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", 6, 6, 1, 0);"; // SS
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
// System.out.println("Experiment Environment created (Recording, Tab, Standard Experiment Components!");
addExperiment();
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void deleteExperiment(int id) {
String sql = "Delete from recording where expid =" + id + ";";
sql = sql + " Delete from domaindata where expid =" + id + ";";
sql = sql + " Delete from tab where exp =" + id + ";";
sql = sql + " Delete from experimentuser where expid=" + id + ";";
sql = sql + " Delete from slot where expid =" + id + ";";
sql = sql + " Delete from experiment where id =" + id + ";";
sql = sql + " Delete from experimentcomponent where experimentid ="
+ id + ";";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
}
};
databaseAccessSvc.storeData(sql, callback);
}
@SuppressWarnings("deprecation")
private void addExperiment() {
int i = userExperimentsPanels.size();
userExperimentsPanels.add(i, new HorizontalPanel());
userExperimentLabels.add(i, new Label(experimentNameTextBox.getText()));
userExperimentDelButtons.add(i, new Button("Delete"));
userExperimentEditButtons.add(i, new Button("Edit"));
addExperimentDelButton(userExperimentDelButtons.get(i), newExpId, i);
addExperimentEditButton(userExperimentEditButtons.get(i), newExpId, i);
userExperimentLabels.get(i).setWidth("150px");
userExperimentDelButtons.get(i).setStyleName("button");
userExperimentEditButtons.get(i).setStyleName("button");
userExperimentsPanels.get(i).add(userExperimentLabels.get(i));
userExperimentsPanels.get(i).add(userExperimentDelButtons.get(i));
userExperimentsPanels.get(i).add(userExperimentEditButtons.get(i));
// add them to the collection panel
userExperimentsCollectionPanel.add(userExperimentsPanels.get(i));
// end list
// resest textbox values
experimentNameTextBox.setText("New Experiment");
experimentMediaStorageTextBox.setText("http://...");
experimentLayoutList.setItemSelected(0, true);
date = new Date();
long newUserId = (long) (date.getTime());
experimentUserStoreNameTextBox.setText("u" + newUserId);
experimentUserStorePassTextBox.setText("Password01");
noExperimentsPanel.setVisible(false);
userExperimentsCollectionPanel.setVisible(true);
if (copyExperimentDataCheckBox.isChecked()) {
copyRecording();
} else {
}
}
public void copyRecording() {
experimentToCopy = Integer.parseInt(experimentDataList
.getValue(experimentDataList.getSelectedIndex()));
String sql = "Select * from recording where expid = "
+ experimentToCopy + " order by id";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
sqlRecording = "";
for (int i = 0; i < result.length; i++) {
sqlRecording = sqlRecording
+ " Insert into recording (expid, semkey, section, rank, origtext, origaudiofile, origmmfile, transtext, transaudiofile, transmmfile) values ("
+ newExpId + ", '" + result[i][2] + "', "
+ result[i][3] + ", " + result[i][4] + ", '"
+ result[i][5] + "', '" + result[i][6] + "', '"
+ result[i][7] + "', '" + result[i][8] + "', '"
+ result[i][9] + "', '" + result[i][10] + "');";
}
System.out.println("Copied recording!");
copyComponents();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
public void copyComponents() {
String sql = "Select * from experimentcomponent where experimentid = "
+ experimentToCopy;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
sqlComponents = "";
for (int i = 0; i < result.length; i++) {
sqlComponents = sqlComponents
+ " Insert into experimentcomponent (experimentid, rank, componenttype, component, componentmode) values ("
+ newExpId + ", " + result[i][1] + ", "
+ result[i][2] + ", " + result[i][3] + ", "
+ result[i][4] + ");";
}
System.out.println("Copied components!");
copyTab();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
public void copyTab() {
String sql = "Select * from tab where exp = " + experimentToCopy;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
@SuppressWarnings("deprecation")
public void onSuccess(String[][] result) {
sqlTab = "";
for (int i = 0; i < result.length; i++) {
sqlTab = sqlTab
+ " Insert into tab (tabname, exp, rank) values ('"
+ result[i][1] + "', " + newExpId + ", "
+ result[i][3] + ");";
}
// add free text tab if requested
if (freeTextTabCheckBox.isChecked()) {
sqlTab = sqlTab
+ " Update experiment set freetext = 1 where id = "
+ newExpId + ";";
}
// System.out.println("Copied tabs!");
copyDomainData();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
public void copyDomainData() {
String sql = "Select * from domaindata where expid = "
+ experimentToCopy;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
sqlDomainData = "";
for (int i = 0; i < result.length; i++) {
sqlDomainData = sqlDomainData
+ " Insert into domaindata (expid, semkey, section, rank, origtext, origaudiofile, origmmfile, transtext, transaudiofile, transmmfile) values ("
+ newExpId + ", '" + result[i][2] + "', "
+ result[i][3] + ", " + result[i][4] + ", '"
+ result[i][5] + "', '" + result[i][6] + "', '"
+ result[i][7] + "', '" + result[i][8] + "', '"
+ result[i][9] + "', '" + result[i][10] + "');";
}
// System.out.println("Copied domain data!");
copySlot();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
public void copySlot() {
String sql = "Select * from slot where expid = " + experimentToCopy;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
sqlSlot = "";
for (int i = 0; i < result.length; i++) {
sqlSlot = sqlSlot
+ " Insert into slot (expid, name, value, type, rank) values ("
+ newExpId + ", '" + result[i][2] + "', '"
+ result[i][3] + "', " + result[i][4] + ", "
+ result[i][5] + ");";
}
// System.out.println("Copied filter!");
getSlotCount();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
public void getSlotCount() {
String sql = "Select distinct(name) from slot where expid = "
+ experimentToCopy;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
setSlotCountCopy(result.length);
// System.out.println("Slot count to copy: " + slotCountCopy);
insertDomainData();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void insertDomainData() {
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
// System.out.println("Domain data inserted!");
getNewDomainDataIds();
}
};
databaseAccessSvc.storeData(sqlDomainData, callback);
}
public void getNewDomainDataIds() {
String sql = "Select * from domaindata where expid = " + newExpId
+ " order by id";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
sqlDomainDataSlot = "";
domaindataNew = new int[result.length];
for (int i = 0; i < result.length; i++) {
domaindataNew[i] = Integer.parseInt(result[i][0]);
}
// System.out.println("New domain data ids retrieved!");
insertSlotData();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void insertSlotData() {
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
// System.out.println("Filters inserted!");
getSlotIds();
}
};
databaseAccessSvc.storeData(sqlSlot, callback);
}
public void getSlotIds() {
String sql = "Select * from slot where expid in (" + newExpId + ", "
+ experimentToCopy + ") order by id";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
oldSlots = new int[result.length / 2];
newSlots = new int[result.length / 2];
int x = 0;
for (int i = 0; i < result.length / 2; i++) {
oldSlots[x] = Integer.parseInt(result[i][0]);
x++;
}
x = 0;
for (int j = result.length / 2; j < result.length; j++) {
newSlots[x] = Integer.parseInt(result[j][0]);
x++;
}
// System.out.println("Slot comparison created!");
copyDomainDataSlot();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
public void copyDomainDataSlot() {
String sql = "Select * from domaindata inner join domaindataslot where domaindata.id = domaindataslot.dataid and domaindata.expid = "
+ experimentToCopy + " order by domaindata.id";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
sqlDomainDataSlot = "";
int k = 0;
for (int i = 0; i < result.length; i++) {
int x = 0;
for (int j = 0; j < oldSlots.length; j++) {
if (oldSlots[j] == Integer.parseInt(result[i][12])) {
x = j;
}
}
sqlDomainDataSlot = sqlDomainDataSlot
+ " Insert into domaindataslot (dataid, slotid) values ("
+ domaindataNew[k] + ", " + newSlots[x] + ");";
// only got to the next domaindata id if data for all slots
// are inserted
if ((i + 1) % slotCountCopy == 0) {
k++;
}
}
// System.out.println("Slots copied!");
insertCopy();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void insertCopy() {
String sql = sqlRecording + sqlTab + sqlDomainDataSlot + sqlComponents;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
@SuppressWarnings("deprecation")
public void onSuccess(String result) {
System.out
.println("Recordings, Tabs, DomaindataSlots and Components inserted!");
// set check boxes visible true and uncheck them
copyExperimentDataCheckBox.setVisible(true);
copyExperimentDataCheckBox.setChecked(false);
experimentDataList.setVisible(false);
freeTextTabCheckBox.setVisible(true);
freeTextTabCheckBox.setChecked(false);
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void buildRegisterUserPanel() {
registerUserPanel.clear();
registerUserUserPanel.clear();
registerUserPassPanel.clear();
registerUserButtonPanel.clear();
registerUserContainerPanel.clear();
registerUserUserPanel.clear();
registerUserUserPanel.add(registerUserUserLabel);
registerUserUserLabel.setWidth("100px");
registerUserUserPanel.add(registerUserUserTextBox);
registerUserUserTextBox.setWidth("150px");
registerUserUserPanel.setStyleName("registerUser");
registerUserPassPanel.clear();
registerUserPassPanel.add(registerUserPassLabel);
registerUserPassLabel.setWidth("100px");
registerUserPassPanel.add(registerUserPassTextBox);
registerUserPassTextBox.setWidth("150px");
registerUserPassPanel.setStyleName("registerUser");
errorUserRegistrationPanel.clear();
errorUserRegistrationPanel.add(errorUserRegistrationLabel);
errorUserRegistrationLabel.setStyleName("errorUserRegistrationLabel");
errorUserRegistrationLabel.setText("");
registerUserButtonPanel.clear();
registerUserButtonPanel.add(registerUserCloseButton);
registerUserCloseButton.setStyleName("button");
registerUserButtonPanel.add(registerUserRegsiterButton);
registerUserRegsiterButton.setStyleName("button");
registerUserButtonPanel.setStyleName("registerUserButtons");
registerUserContainerPanel.clear();
registerUserContainerPanel.add(registerUserUserPanel);
registerUserContainerPanel.add(registerUserPassPanel);
registerUserContainerPanel.add(errorUserRegistrationPanel);
registerUserContainerPanel.add(registerUserButtonPanel);
registerUserContainerPanel.setStyleName("registerUser");
registerUserPanel.clear();
registerUserPanel.add(registerUserContainerPanel);
registerUserCloseButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
History.newItem("0");
registerUserPopUp.hide();
}
});
registerUserRegsiterButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
History.newItem("0");
newUser = clearHiven(registerUserUserTextBox.getText());
newPwd = clearHiven(registerUserPassTextBox.getText());
checkUserExists(newUser, newPwd, 1);
}
});
}
public void onValueChange(ValueChangeEvent<String> event) {
int i = Integer.parseInt(event.getValue());
switch (i) {
case 1:
registerUserUserTextBox.setText("");
registerUserPassTextBox.setText("");
registerUserPopUp.center();
registerUserPopUp.show();
break;
default:
break;
}
}
private void checkUserExists(final String user, final String pwd,
final int mode) {
String sql = "Select * from user where name = '" + user + "';";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
if (result != null) {
switch (mode) {
case 1:
registerUserUserTextBox.setText("");
registerUserPassTextBox.setText("");
errorUserRegistrationLabel
.setText("Error: User Name already exists!");
break;
case 2:
experimentUserStorePassTextBox.setText("");
experimentUserStoreNameTextBox.setText("");
errorPrimaryUserRegistrationLabel
.setText("Error: User Name already exists!");
break;
case 3:
newUserStoreNameTextBox.setText("");
newUserStorePassTextBox.setText("");
errorAdditionalUserRegistrationLabel
.setText("Error: User Name already exists!");
break;
}
} else {
switch (mode) {
case 1:
errorUserRegistrationLabel.setText("");
registerUser(user, pwd);
registerUserPopUp.hide();
break;
case 2:
errorPrimaryUserRegistrationLabel.setText("");
saveExperiment(user, pwd);
break;
case 3:
errorAdditionalUserRegistrationLabel.setText("");
addUser(user, pwd);
break;
}
}
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void registerUser(String user, String pw) {
String sql = "Insert into user (name, pw, role) values ('" + user
+ "', '" + pw + "', 1)";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void closeChangeExperiment() {
userExperimentsCollectionPanel.setVisible(true);
userExperimentsHeading.setText("Your Existing Experiments");
userNewExperimentHeading.setVisible(true);
userExperimentLabels.get(editExpPanel).setText(
experimentNameTextBox.getText());
existingUserHeadingLabel.setVisible(false);
experimentNameTextBox.setText("New Experiment");
experimentMediaStorageTextBox.setText("http://...");
experimentLayoutList.setItemSelected(0, true);
experimentUserStoreHeadingLabel
.setText("(Further users can then be added via 'Edit'!)");
experimentUserEditPanel.setVisible(false);
experimentUserStorePanel.setVisible(true);
experimentSavePanel.setVisible(true);
experimentClosePanel.setVisible(true);
experimentEditPanel.setVisible(false);
errorPrimaryUserPanel.setVisible(true);
errorAdditionalUserPanel.setVisible(false);
copyExperimentDataPanel.setVisible(true);
changeExperimentNameButton.setVisible(false);
changeExperimentLayoutButton.setVisible(false);
changeExperimentMediaServerButton.setVisible(false);
newUserHeadingPanel.setVisible(false);
addNewUserPanel.setVisible(false);
saveChangeExperimentButton.setVisible(false);
}
@SuppressWarnings("deprecation")
private void openChangeExperiment() {
userExperimentsHeading.setText("General Settings");
userExperimentsCollectionPanel.setVisible(false);
userNewExperimentHeading.setVisible(false);
saveChangeExperimentButton.setVisible(true);
existingUserHeadingLabel.setVisible(true);
experimentUserStoreHeadingLabel.setVisible(false);
experimentUserEditPanel.setVisible(true);
experimentUserStorePanel.setVisible(false);
experimentSavePanel.setVisible(false);
experimentClosePanel.setVisible(false);
experimentEditPanel.setVisible(true);
errorPrimaryUserPanel.setVisible(false);
errorAdditionalUserPanel.setVisible(true);
changeExperimentNameButton.setVisible(true);
changeExperimentLayoutButton.setVisible(true);
changeExperimentMediaServerButton.setVisible(true);
newUserHeadingPanel.setVisible(true);
addNewUserPanel.setVisible(true);
copyExperimentDataPanel.setVisible(false);
if (copyExperimentDataCheckBox.isChecked()) {
copyExperimentDataCheckBox.setChecked(false);
}
experimentDataList.setVisible(false);
newUserStoreNameTextBox.setText("");
newUserStorePassTextBox.setText("");
}
private void getExperimentData() {
String sql = "Select * from experiment where id = " + editExpId;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
if (result != null) {
// get name and media server
experimentNameTextBox.setText(result[0][1]);
experimentMediaStorageTextBox.setText(result[0][5]);
// get layout
for (int i = 0; i < experimentLayoutList.getItemCount(); i++) {
if (experimentLayoutList.getValue(i).equals(
result[0][6])) {
experimentLayoutList.setItemSelected(i, true);
}
}
// get users
getExperimentUsers();
}
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void getExperimentUsers() {
String sql = "Select * from user inner join experimentuser where user.id = experimentuser.userid and experimentuser.expid = "
+ editExpId + " and role = 2 order by id asc";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
experimentUserEditPanel.clear();
experimentUserPanels.clear();
experimentUserUserTextBoxes.clear();
experimentUserPassTextBoxes.clear();
experimentUserPassLabels.clear();
experimentUserChangeUserButtons.clear();
experimentUserDeleteUserButtons.clear();
if (result != null) {
for (int i = 0; i < result.length; i++) {
experimentUserPanels.add(i, new HorizontalPanel());
experimentUserUserTextBoxes.add(i, new Label());
experimentUserUserTextBoxes.get(i)
.setText(result[i][1]);
experimentUserUserTextBoxes.get(i).setStyleName(
"textleft");
experimentUserUserTextBoxes.get(i).setWidth("136px");
experimentUserPassLabels
.add(i, new Label("Password: "));
experimentUserPassLabels.get(i).setStyleName(
"labelMiddle");
experimentUserPassTextBoxes.add(i, new TextBox());
experimentUserPassTextBoxes.get(i)
.setText(result[i][2]);
experimentUserPassTextBoxes.get(i).setStyleName(
"textLeft");
experimentUserChangeUserButtons.add(i, new Button(
"Change"));
experimentUserChangeUserButtons.get(i).setStyleName(
"button");
addUserChangeButton(
experimentUserChangeUserButtons.get(i),
Integer.parseInt(result[i][0]), i);
experimentUserDeleteUserButtons.add(i, new Button(
"Delete"));
experimentUserDeleteUserButtons.get(i).setStyleName(
"button");
addUserDelButton(
experimentUserDeleteUserButtons.get(i),
Integer.parseInt(result[i][0]), i);
// turn delete button of for the first user
if (i == 0) {
experimentUserDeleteUserButtons.get(i).setVisible(
false);
}
experimentUserPanels.get(i).add(
experimentUserUserTextBoxes.get(i));
experimentUserPanels.get(i).add(
experimentUserPassLabels.get(i));
experimentUserPanels.get(i).add(
experimentUserPassTextBoxes.get(i));
experimentUserPanels.get(i).add(
experimentUserChangeUserButtons.get(i));
experimentUserPanels.get(i).add(
experimentUserDeleteUserButtons.get(i));
experimentUserEditPanel
.add(experimentUserPanels.get(i));
}
// get free-text tab
getExperimentFreeTextTab();
}
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void getExperimentFreeTextTab() {
String sql = "Select freetext from experiment where id = " + editExpId;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
@SuppressWarnings("deprecation")
public void onSuccess(String[][] result) {
if (result != null) {
if (Integer.parseInt(result[0][0]) == 1) {
freeTextTabCheckBox.setChecked(true);
} else {
freeTextTabCheckBox.setChecked(false);
}
}
openChangeExperiment();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void addUserDelButton(Button b, final int userid, final int panel) {
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
experimentUserEditPanel.remove(panel);
deleteUserData(userid);
}
});
}
private void addUserChangeButton(Button b, final int userid, final int panel) {
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
changeUserData(userid, panel);
}
});
}
private void changeExperimentData() {
String expName = clearHiven(experimentNameTextBox.getText());
String expServer = clearHiven(experimentMediaStorageTextBox.getText());
String sql = "Update experiment set name = '"
+ expName
+ "', mediaserver = '"
+ expServer
+ "', layout = "
+ experimentLayoutList.getValue(experimentLayoutList
.getSelectedIndex()) + " where id = " + editExpId;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
updateFreeTextTab();
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void changeUserData(int uId, int pId) {
String sql = "Update user set name = '"
+ experimentUserUserTextBoxes.get(pId).getText() + "', pw = '"
+ experimentUserPassTextBoxes.get(pId).getText()
+ "' where id = " + uId;
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void deleteUserData(int uId) {
String sql = "Delete from user where id = " + uId + ";";
sql = sql + "Delete from experimentuser where userid = " + uId + ";";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void addUser(String user, String pw) {
String sql = "Insert into user (name, pw, role) values ('" + user
+ "', '" + pw + "', 2); ";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
getLastUser();
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void getLastUser() {
String sql = "Select id from user order by id desc";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
if (result != null) {
insertExperimentUser(Integer.parseInt(result[0][0]));
}
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
private void insertExperimentUser(final int uId) {
String sql = "Insert into experimentuser values (" + editExpId + ", "
+ uId + "); ";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
getExperimentUsers();
addNewUser(uId);
newUserStoreNameTextBox.setText("");
newUserStorePassTextBox.setText("");
}
};
databaseAccessSvc.storeData(sql, callback);
}
private void addNewUser(int user) {
// start experiment list for organizing experiments
// create elements
int i = experimentUserPanels.size();
experimentUserPanels.add(i, new HorizontalPanel());
experimentUserUserTextBoxes.add(i, new Label());
experimentUserUserTextBoxes.get(i).setText(
newUserStoreNameTextBox.getText());
experimentUserUserTextBoxes.get(i).setStyleName("textleft");
experimentUserUserTextBoxes.get(i).setWidth("250px");
experimentUserPassLabels.add(i, new Label("Password: "));
experimentUserPassLabels.get(i).setStyleName("labelMiddle");
experimentUserPassTextBoxes.add(i, new TextBox());
experimentUserPassTextBoxes.get(i).setText(
newUserStorePassTextBox.getText());
experimentUserPassTextBoxes.get(i).setStyleName("textLeft");
experimentUserChangeUserButtons.add(i, new Button("Change"));
experimentUserChangeUserButtons.get(i).setStyleName("button");
addUserChangeButton(experimentUserChangeUserButtons.get(i), user, i);
experimentUserDeleteUserButtons.add(i, new Button("Delete"));
experimentUserDeleteUserButtons.get(i).setStyleName("button");
addUserDelButton(experimentUserDeleteUserButtons.get(i), user, i);
experimentUserPanels.get(i).add(experimentUserUserTextBoxes.get(i));
experimentUserPanels.get(i).add(experimentUserPassLabels.get(i));
experimentUserPanels.get(i).add(experimentUserPassTextBoxes.get(i));
experimentUserPanels.get(i).add(experimentUserChangeUserButtons.get(i));
experimentUserPanels.get(i).add(experimentUserDeleteUserButtons.get(i));
experimentUserEditPanel.add(experimentUserPanels.get(i));
}
public void setSlotCountCopy(int slotCountCopy) {
this.slotCountCopy = slotCountCopy;
}
public int getSlotCountCopy() {
return slotCountCopy;
}
private void loadExperimentEditPanel() {
String sql = "Select * from experiment where userid = " + user
+ " order by id asc";
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String[][]> callback = new AsyncCallback<String[][]>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String[][] result) {
userExperimentsPanels.clear();
userExperimentLabels.clear();
userExperimentDelButtons.clear();
userExperimentEditButtons.clear();
userExperimentsCollectionPanel.clear();
experimentDataList.clear();
if (result != null) {
for (int i = 0; i < result.length; i++) {
// start experiment list for organizing experiments
// create elements
userExperimentsPanels.add(i, new HorizontalPanel());
userExperimentLabels.add(i, new Label(result[i][1]));
userExperimentDelButtons.add(i, new Button("Delete"));
userExperimentEditButtons.add(i, new Button("Edit"));
// add click handler and style
addExperimentDelButton(userExperimentDelButtons.get(i),
Integer.parseInt(result[i][0]), i);
addExperimentEditButton(
userExperimentEditButtons.get(i),
Integer.parseInt(result[i][0]), i);
userExperimentLabels.get(i).setWidth("150px");
userExperimentDelButtons.get(i).setStyleName("button");
userExperimentEditButtons.get(i).setStyleName("button");
// add them to the panel
userExperimentsPanels.get(i).add(
userExperimentLabels.get(i));
userExperimentsPanels.get(i).add(
userExperimentDelButtons.get(i));
userExperimentsPanels.get(i).add(
userExperimentEditButtons.get(i));
// add them to the collection panel
userExperimentsCollectionPanel
.add(userExperimentsPanels.get(i));
// end list
// allow copying experiment data
experimentDataList.addItem(result[i][1], result[i][0]);
}
}
experimentNamePanel.clear();
experimentNamePanel.add(experimentNameLabel);
experimentNameLabel.setStyleName("label");
experimentNameLabel.setWidth("120px");
experimentNamePanel.add(experimentNameTextBox);
experimentNameTextBox.setStyleName("text");
changeExperimentNameButton.setStyleName("button");
changeExperimentNameButton.setVisible(false);
experimentLayoutPanel.clear();
experimentLayoutPanel.add(experimentLayoutLabel);
experimentLayoutLabel.setStyleName("label");
experimentLayoutLabel.setWidth("120px");
experimentLayoutPanel.add(experimentLayoutList);
experimentLayoutList.setStyleName("list");
changeExperimentLayoutButton.setStyleName("button");
changeExperimentLayoutButton.setVisible(false);
experimentMediaStoragePanel.clear();
experimentMediaStoragePanel.add(experimentMediaStorageLabel);
experimentMediaStorageLabel.setStyleName("label");
experimentMediaStorageLabel.setWidth("120px");
experimentMediaStoragePanel.add(experimentMediaStorageTextBox);
experimentMediaStorageTextBox.setWidth("221px");
changeExperimentMediaServerButton.setStyleName("button");
changeExperimentMediaServerButton.setVisible(false);
experimentUserStorePanel.clear();
experimentUserStorePanel.add(experimentUserStoreNameLabel);
experimentUserStoreNameLabel.setStyleName("label");
experimentUserStoreNameLabel.setWidth("70px");
experimentUserStorePanel.add(experimentUserStoreNameTextBox);
experimentUserStoreNameTextBox.setWidth("100px");
experimentUserStoreNameTextBox.setStyleName("textLeft");
experimentUserStorePanel.add(experimentUserStorePassLabel);
experimentUserStorePassLabel.setStyleName("labelMiddle");
experimentUserStorePassLabel.setWidth("50px");
experimentUserStorePanel.add(experimentUserStorePassTextBox);
experimentUserStorePassTextBox.setWidth("100px");
experimentUserStorePassTextBox.setStyleName("textLeft");
errorPrimaryUserPanel.clear();
errorPrimaryUserPanel.add(errorPrimaryUserRegistrationLabel);
errorPrimaryUserRegistrationLabel
.setStyleName("errorUserRegistrationLabel");
errorPrimaryUserRegistrationLabel.setText("");
// add user
addNewUserPanel.clear();
addNewUserPanel.add(newUserStoreNameTextBox);
newUserStoreNameTextBox.setStyleName("text");
addNewUserPanel.add(newUserStorePassLabel);
newUserStorePassLabel.setStyleName("labelMiddle");
addNewUserPanel.add(newUserStorePassTextBox);
newUserStorePassTextBox.setStyleName("textLeft");
addNewUserPanel.add(addUserButton);
addUserButton.setStyleName("button");
errorAdditionalUserPanel.clear();
errorAdditionalUserPanel
.add(errorAdditionalUserRegistrationLabel);
errorAdditionalUserRegistrationLabel
.setStyleName("errorUserRegistrationLabel");
errorAdditionalUserRegistrationLabel.setText("");
errorPrimaryUserPanel.clear();
errorPrimaryUserPanel.add(errorPrimaryUserRegistrationLabel);
errorPrimaryUserRegistrationLabel
.setStyleName("errorUserRegistrationLabel");
errorPrimaryUserRegistrationLabel.setText("");
experimentSavePanel.clear();
experimentSavePanel.setStyleName("experimentSavePanel");
experimentSavePanel.add(saveNewExperimentButton);
saveNewExperimentButton.setStyleName("button");
experimentEditPanel.clear();
experimentEditPanel.setStyleName("experimentEditClosePanel");
cancelChangeExperimentButton.setStyleName("button");
experimentEditPanel.add(cancelChangeExperimentButton);
experimentEditPanel.setVisible(false);
experimentClosePanel.clear();
experimentClosePanel.setStyleName("experimentClosePanel");
experimentClosePanel.add(cancelNewExperimentButton);
cancelNewExperimentButton.setStyleName("button");
userExperimentsHeading.setStyleName("userExperimentHeading");
userNewExperimentHeading.setStyleName("userExperimentHeading");
newUserHeadingPanel.clear();
newUserHeadingPanel.add(newUserHeadingLabel);
// copying experiment data
copyExperimentDataPanel.clear();
copyExperimentDataPanel.add(copyExperimentDataCheckBox);
copyExperimentDataPanel.add(experimentDataList);
experimentDataList.setStyleName("experimentDataList");
experimentDataList.setVisible(false);
addExperimentPanel.clear();
addExperimentPanel.add(userExperimentsHeading);
addExperimentPanel.add(userExperimentsCollectionPanel);
userExperimentsCollectionPanel.setStyleName("marginBottom20");
noExperimentsPanel.add(noExperimentsLabel);
addExperimentPanel.add(noExperimentsPanel);
noExperimentsPanel.setStyleName("marginBottom20");
addExperimentPanel.add(userNewExperimentHeading);
addExperimentPanel.add(experimentNamePanel);
experimentNamePanel.setStyleName("marginBottom05");
addExperimentPanel.add(freeTextTabCheckBox);
freeTextTabCheckBox.setStyleName("marginBottom05");
saveChangeExperimentButton
.setStyleName("saveChangeExperimentButton");
addExperimentPanel.add(saveChangeExperimentButton);
addExperimentPanel.add(experimentUserStorePanel);
experimentUserStorePanel.setStyleName("marginTop05");
addExperimentPanel.add(experimentUserStoreHeadingLabel);
addExperimentPanel.add(existingUserHeadingLabel);
addExperimentPanel.add(errorPrimaryUserPanel);
addExperimentPanel.add(experimentUserEditPanel);
existingUserHeadingLabel
.setStyleName("existingUserHeadingLabel");
addExperimentPanel.add(newUserHeadingPanel);
addExperimentPanel.add(addNewUserPanel);
addExperimentPanel.add(errorAdditionalUserPanel);
addExperimentPanel.add(experimentSavePanel);
addExperimentPanel.add(experimentClosePanel);
addExperimentPanel.add(experimentEditPanel);
addExperimentPanel.setStyleName("addExperimentPanel");
newUserHeadingPanel.setVisible(false);
addNewUserPanel.setVisible(false);
existingUserHeadingLabel.setVisible(false);
saveChangeExperimentButton.setVisible(false);
loadExperiments();
}
};
databaseAccessSvc.retrieveData(sql, callback);
}
@SuppressWarnings("deprecation")
private void updateFreeTextTab() {
String sql = "";
if (freeTextTabCheckBox.isChecked()) {
sql = sql + "Update experiment set freetext = 1 where id = "
+ editExpId;
} else {
sql = sql + "Update experiment set freetext = 0 where id = "
+ editExpId;
}
// Initialize the service remote procedure call
if (databaseAccessSvc == null) {
databaseAccessSvc = GWT.create(DatabaseAccess.class);
}
AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(String result) {
}
};
databaseAccessSvc.storeData(sql, callback);
}
public static void changeVisiblility(int mode) {
switch (mode) {
case 0:
settingsWizardOutMT.setVisible(false);
mtOut.turnOffComponent();
break;
case 1:
settingsWizardOutMT.setVisible(true);
break;
case 2:
mtIn.turnOffComponent();
ssOut.turnOffRecSpeech();
break;
case 3:
mtIn.turnOnVisibility(1);
ssOut.turnOnRecSpeech();
break;
case 4:
asrIn.turnOffCorrectionMode();
ssOut.turnOffRecSpeech();
break;
case 5:
asrIn.turnOnCorrVisibility(1);
ssOut.turnOnRecSpeech();
break;
case 6:
ssOut.turnOffRecSpeech();
break;
case 7:
ssOut.turnOnRecSpeech();
break;
}
}
public void changeTabVisibility() {
wizardInterface.changeVisibility();
}
private String clearHiven(String source) {
source = source.replaceAll("\"", "");
return source.replaceAll("'", " ");
}
}