package org.reldb.dbrowser.ui.content.rel.var;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.graphics.Image;
import org.reldb.dbrowser.ui.RevDatabase;
import org.reldb.dbrowser.ui.content.rel.DbTreeAction;
import org.reldb.dbrowser.ui.content.rel.DbTreeItem;
import org.reldb.dbrowser.ui.content.rel.NewItemDialog;
import org.reldb.dbrowser.ui.content.rel.RelPanel;
import org.reldb.rel.client.Connection.ExecuteResult;
public class VarCreator extends DbTreeAction {
public VarCreator(RelPanel relPanel) {
super(relPanel);
}
@Override
public void go(DbTreeItem item, Image image) {
RevDatabase database = new RevDatabase(relPanel.getConnection());
VarTypeDialog namer = new VarTypeDialog(database, relPanel.getShell());
String typeString = namer.open();
if (typeString == null)
return;
if (typeString.equalsIgnoreCase("REAL")) {
NewItemDialog varNameDialog = new NewItemDialog(relPanel.getShell(), "Variable" + database.getUniqueNumber());
if (varNameDialog.open() != NewItemDialog.OK)
return;
String varname = varNameDialog.getName();
if (database.relvarExists(varname)) {
MessageDialog.openInformation(relPanel.getShell(), "Note", "A variable named " + varname + " already exists.");
return;
}
ExecuteResult result = relPanel.getConnection().execute("VAR " + varname + " REAL RELATION {} KEY {};");
if (result.failed()) {
MessageDialog.openError(relPanel.getShell(), "Error", "Unable to create variable " + varname + ": " + result.getErrorMessage());
return;
}
relPanel.redisplayed();
DbTreeItem newItem = new DbTreeItem(item, varname);
CTabItem tab = relPanel.getTab(newItem);
if (tab != null)
tab.dispose();
VarRealDesignerTab varDesignTab = new VarRealDesignerTab(relPanel, newItem);
varDesignTab.setImage(image);
relPanel.getTabFolder().setSelection(varDesignTab);
} else {
VarExternalDefinitionDialog veDialog = new VarExternalDefinitionDialog(database, relPanel.getShell(), typeString, "Variable" + database.getUniqueNumber());
if (veDialog.create())
relPanel.redisplayed();
}
}
}