Files
HeidiSQL/extra/jheidi/schemaTreeEventsMySQL.ajl

130 lines
3.1 KiB
Plaintext

NodeInfo node = argObj("node");
final WindowContext context = argObj("windowContext");
Tabs tabs = context.get("/mainTabs");
String selectedTab = tabs.selected();
String nodeType = node.getType();
boolean dbChanged = false;
boolean tableChanged = false;
log.debug("node type = " + nodeType);
log.debug("selected tab = " + selectedTab);
if ( nodeType == null )
{
tabs.select("Host");
args().put("selectedTab", "Host");
context.put("currentDB", null);
script("resetTabsMySQL", args());
}
else if ( "db" == nodeType )
{
Panel tab = tabs.select("Database");
if ( !node.getText().equals(context.get("currentDB")) )
{
dbChanged = true;
}
}
else if ( "table" == nodeType )
{
String dbName = node.getParent().getText();
Panel tab = tabs.get("Table");
if ("Host" == selectedTab || "Database" == selectedTab)
{
tabs.select("Table");
}
if (!node.getParent().getText().equals(context.get("currentDB")))
{
dbChanged = true;
}
if ( !node.getText().equals(context.get("currentTable")) || dbChanged )
{
tableChanged = true;
}
}
if (dbChanged)
{
String dbName = tabs.selected() == "Database"?node.getText():node.getParent().getText();
log.debug("selectedTab: " + selectedTab + " dbName: " + dbName);
context.put("currentDB", dbName);
context.remove("currentTable");
args().put("selectedTab", "Database");
script("resetTabsMySQL", args());
args().put("dbName", dbName);
args().put("workerKey", dbName);
Worker w = worker("showTableStatusMySQLWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING);
//in case its already running dont run the detector
if (!w.isCancelled())
LongRunningTask.detect(dbName, "progressWaiter", args(), w , 250);
//superficiality just to keep the pbar stack in order
//since we cant guarantee which one of the threads will be detected long
//in the "right" order"
if ( tableChanged )
{
try
{
Thread.sleep(25);
} catch (Exception e) {}
}
}
if (tableChanged)
{
String dbName = node.getParent().getText();
String tableName = node.getText();
context.put("currentTable", tableName);
args().put("dbName", dbName);
args().put("tableName", tableName);
args().put("workerKey", dbName+tableName);
Worker w = worker("loadTableInfoMySQLWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING);
//in case its already running dont run the detector
if ( !w.isCancelled() )
LongRunningTask.detect(dbName+tableName, "progressWaiter", args(), w , 250);
//superficial for the gui
try
{
Thread.sleep(25);
} catch (Exception e) {}
args().put("workerKey", "loadTableDataMySQLWorker" + dbName + tableName);
w = worker("loadTableDataMySQLWorker", args(), Worker.RunOption.LET_FINISH_IF_RUNNING);
if ( !w.isCancelled() )
LongRunningTask.detect("loadTableDataMySQLWorker" + dbName+tableName, "progressWaiter", args(), w , 250);
}