item selection corrected in the treepanel adding the "expand" management event

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/databases-manager-portlet@98620 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Loredana Liccardo 2014-07-14 16:25:40 +00:00
parent f307b54848
commit 8085d50fec
1 changed files with 403 additions and 279 deletions

View File

@ -16,6 +16,8 @@ import org.gcube.portlets.user.databasesmanager.client.utils.ConstantsPortlet;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.EventType;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.event.TreePanelEvent;
@ -95,6 +97,15 @@ public class GxtTreePanel extends LayoutContainer {
TreePanelEvent<FileModel> tpe = (TreePanelEvent) ce;
EventType typeEvent = tpe.getType();
// boolean rightClick = false;
//
// if (typeEvent == Events.OnMouseDown) {
//
// if (ce.isRightClick()){
// rightClick = true;
// }
// }
int type = ce.getEventTypeInt();
switch (type) {
case Event.ONCLICK:
@ -111,6 +122,8 @@ public class GxtTreePanel extends LayoutContainer {
// break;
}
// view.onEvent(tpe);
}
};
@ -164,12 +177,6 @@ public class GxtTreePanel extends LayoutContainer {
List<FileModel> data = treePanel.getSelectionModel()
.getSelectedItems();
treePanel.setExpanded(data.get(0), true); // expand
// level of
// the
// element
// selected
FileModel selectedItem = data.get(0);
value = data.get(0).get("name");
@ -200,18 +207,146 @@ public class GxtTreePanel extends LayoutContainer {
// recover the appropriate information whenever an
// element is selected
setInfoOnSelectedItem(data.get(0));
// setInfoOnSelectedItem(data.get(0));
treePanel.setExpanded(data.get(0), true); // expand
// level of
// the
// element
// selected
// do not make a rpc call
if ((data.get(0).isLoaded() == true)) {
setInfoOnSelectedItem(data.get(0));
// fire event when an item has been selected in the
// tree
eventBus.fireEvent(new SelectedItemEvent());
} else if (data.get(0).isDatabase()) {
setInfoOnSelectedItem(data.get(0));
// fire event when an item has been selected in the
// tree
eventBus.fireEvent(new SelectedItemEvent());
} else if (data.get(0).isSchema()) {
setInfoOnSelectedItem(data.get(0));
// fire event when an item has been selected in the
// tree
eventBus.fireEvent(new SelectedItemEvent());
}
// // check to make the RPC call only one time. The
// // selected item has not loaded
// if ((numChildrenFolder == 0)
// && (data.get(0).isLoaded() != true)) {
//
// // treePanel.disableEvents(true);
//
// // selectedItem.setIsSchema(false);
//
// switch (treeDepthSelectedItem) {
// // case 1:
// //
// // loadResources(data.get(0));
// // break;
//
// case 2: // the selected item is the resource
// // selectedItem.setIsSchema(false);
//
// // to mask the tree panel
// treePanel.mask("Loading", "x-mask-loading");
//
// loadDBInfo(data.get(0), treePanel);
// // loadDBInfo(data.get(0));
// break;
//
// case 3: // the selected item is a database
//
// if (selectedItem.getDatabaseType().equals(
// ConstantsPortlet.POSTGRES)) {
//
// // to mask the tree panel
// treePanel.mask("Loading", "x-mask-loading");
// // load schema for postgres database
//
// // selectedItem.setIsSchema(false);
// loadSchema(data.get(0));
// }
// // else {
// // // System.out.println("database mysql: " +
// // // data.get(0).getName() +
// // // data.get(0).getDatabaseType());
// //
// // // load tables for mysql database
// // loadTables(data.get(0));
// // }
// break;
//
// // case 4: // load tables for postgres database
// // // selectedItem.setIsSchema(false);
// // loadTables(data.get(0));
// // break;
//
// }
// }
// else {
// //if the selected item has already been been loaded
//
// setInfoOnSelectedItem(data.get(0));
// }
// // fire event when an item has been selected in the
// tree
// eventBus.fireEvent(new SelectedItemEvent());
}
});
treePanel.addListener(Events.Expand,
new Listener<TreePanelEvent<FileModel>>() {
public void handleEvent(final TreePanelEvent<FileModel> be) {
rootLogger.log(Level.INFO, "Expand");
FileModel selectedItem = (FileModel) (be.getNode()
.getModel());
rootLogger.log(Level.INFO,
"selected: " + selectedItem.getName());
// select the expanded item
treePanel.getSelectionModel()
.select(selectedItem, true);
int numChildrenFolder = store
.getChildCount(selectedItem);
setInfoOnSelectedItem(selectedItem);
// get the depth level
treeDepthSelectedItem = store.getDepth(selectedItem);
rootLogger.log(Level.INFO, "selectedItem level depth: "
+ treeDepthSelectedItem);
// check to make the RPC call only one time. The
// selected item has not loaded
if ((numChildrenFolder == 0)
&& (data.get(0).isLoaded() != true)) {
// treePanel.disableEvents(true);
&& (selectedItem.isLoaded() != true)) {
if (treeDepthSelectedItem!=1){
treePanel.disableEvents(true);
}
// selectedItem.setIsSchema(false);
switch (treeDepthSelectedItem) {
@ -222,55 +357,48 @@ public class GxtTreePanel extends LayoutContainer {
case 2: // the selected item is the resource
// selectedItem.setIsSchema(false);
// to mask the tree panel
treePanel.mask("Loading", "x-mask-loading");
loadDBInfo(data.get(0), treePanel);
// loadDBInfo(data.get(0));
loadDBInfo(selectedItem, treePanel);
// loadDBInfo(data.get(0));
break;
case 3: // the selected item is a database
if (selectedItem.getDatabaseType().equals(
ConstantsPortlet.POSTGRES)) {
// to mask the tree panel
treePanel.mask("Loading", "x-mask-loading");
// load schema for postgres database
// selectedItem.setIsSchema(false);
loadSchema(data.get(0));
}
// else {
// // System.out.println("database mysql: " +
// // data.get(0).getName() +
// // data.get(0).getDatabaseType());
//
// // load tables for mysql database
// loadTables(data.get(0));
// }
loadSchema(selectedItem);
}
// else {
// // System.out.println("database mysql: " +
// // data.get(0).getName() +
// // data.get(0).getDatabaseType());
//
// // load tables for mysql database
// loadTables(data.get(0));
// }
break;
// case 4: // load tables for postgres database
// // selectedItem.setIsSchema(false);
// loadTables(data.get(0));
// break;
// case 4: // load tables for postgres database
// // selectedItem.setIsSchema(false);
// loadTables(data.get(0));
// break;
}
// fire event when an item has been selected in the
// tree
eventBus.fireEvent(new SelectedItemEvent());
}
// else {
// //if the selected item has already been been loaded
//
// setInfoOnSelectedItem(data.get(0));
// }
// fire event when an item has been selected in the tree
eventBus.fireEvent(new SelectedItemEvent());
}
});
@ -364,18 +492,15 @@ public class GxtTreePanel extends LayoutContainer {
}
// int numChildrenFolder = store.getChildCount(element);
addChildren(element, result);
element.setIsLoaded(true);
if (result.size()==0){
element.setIsExpanded(false);
treePanel.setExpanded(element, false);
if (result.size() == 0) {
element.setIsExpanded(false);
treePanel.setExpanded(element, false);
}
if (tree.isMasked())
tree.unmask();
@ -392,7 +517,8 @@ public class GxtTreePanel extends LayoutContainer {
}
// load information fo a database
private void loadDBInfo(final FileModel element, final TreePanel<FileModel> tree) {
private void loadDBInfo(final FileModel element,
final TreePanel<FileModel> tree) {
// System.out.println("Start RPC - getDBInfo");
@ -421,9 +547,7 @@ public class GxtTreePanel extends LayoutContainer {
if (treePanel.isMasked())
treePanel.unmask();
tree.enableEvents(true);
}
@ -556,14 +680,13 @@ public class GxtTreePanel extends LayoutContainer {
// set the database type considering the driver
// infromation
child.setDatabaseType(DatabaseType);
if (DatabaseType.equals(ConstantsPortlet.MYSQL)){
if (DatabaseType.equals(ConstantsPortlet.MYSQL)) {
child.setIsExpanded(false);
treePanel.setExpanded(child, false);
}
children.add(child);
@ -590,17 +713,17 @@ public class GxtTreePanel extends LayoutContainer {
// // fire event
// eventBus.fireEvent(new DisplayDBInfoEvent());
if (result.size()==0){
if (result.size() == 0) {
element.setIsExpanded(false);
treePanel.setExpanded(element, false);
}
}
if (treePanel.isMasked())
treePanel.unmask();
tree.enable();
// tree.enable();
tree.enableEvents(true);
}
@ -654,7 +777,7 @@ public class GxtTreePanel extends LayoutContainer {
if (treePanel.isMasked())
treePanel.unmask();
treePanel.enableEvents(true);
}
@ -676,7 +799,7 @@ public class GxtTreePanel extends LayoutContainer {
// loadTables(element);
rootLogger.log(Level.INFO, "the database has not schema");
element.setIsExpanded(false);
treePanel.setExpanded(element, false);
@ -694,7 +817,7 @@ public class GxtTreePanel extends LayoutContainer {
for (int i = 0; i < result.size(); i++) {
// element.setIsSchema(true);
// element.setIsSchema(true);
result.get(i).setIsSchema(true);
result.get(i).setIsExpanded(false);
treePanel.setExpanded(result.get(i), false);
@ -702,16 +825,16 @@ public class GxtTreePanel extends LayoutContainer {
addChildren(element, result);
// element.setIsLoaded(true);
// element.setIsLoaded(true);
// }
}
element.setIsLoaded(true);
if (treePanel.isMasked())
treePanel.unmask();
treePanel.enableEvents(true);
}
@ -726,105 +849,107 @@ public class GxtTreePanel extends LayoutContainer {
}
private void loadTables(final FileModel element) {
if (treePanel.isMasked())
treePanel.unmask();
//fire event to manage the tables loading
// eventBus.fireEvent(new LoadTablesEvent());
// fire event to manage the tables loading
// eventBus.fireEvent(new LoadTablesEvent());
// System.out.println("Start RPC - getTables");
// rootLogger.log(Level.SEVERE, "GxtTreePanel-> Start RPC - getTables");
// rootLogger.log(Level.SEVERE, "Start RPC - getTables");
//
// // recover data inputs
//
// LinkedHashMap<String, String> dataInput = new LinkedHashMap<String, String>();
//
// // check if the element is a schema or a database
//
// // System.out.println("element is a schema: " + element.isSchema());
// //
// // if (element.isSchema()) {
// //
// // System.out.println("element is a schema: " + element.isSchema());
// //
// // FileModel database = store.getParent(element);
// // FileModel resource = store.getParent(database);
// //
// // dataInput.put("ResourceName", resource.getName());
// // dataInput.put("DatabaseName", database.getName());
// // dataInput.put("SchemaName", element.getName());
// //
// // System.out.println("schema name: " + element.getName());
// //
// // rootLogger.log(Level.INFO, "ResourceName: " + resource.getName());
// // rootLogger.log(Level.INFO, "DatabaseName: " + database.getName());
// // rootLogger.log(Level.INFO, "SchemaName: " + element.getName());
// //
// // // System.out.println(parent1.getName());
// // // System.out.println(parent.getName());
// // // System.out.println(element.getName());
// //
// // }
// //
// // if (element.isDatabase()) {
// //
// // System.out.println("element is a database: " + element.isDatabase());
// //
// // FileModel resource = store.getParent(element);
// // // FileModel parent1 = store.getParent(parent);
// //
// // dataInput.put("ResourceName", resource.getName());
// // dataInput.put("DatabaseName", element.getName());
// // dataInput.put("SchemaName", "");
// //
// // rootLogger.log(Level.INFO, "ResourceName: " + resource.getName());
// // rootLogger.log(Level.INFO, "DatabaseName: " + element.getName());
// // rootLogger.log(Level.INFO, "SchemaName: " + "");
// //
// // // System.out.println(parent1.getName());
// // // System.out.println(parent.getName());
// // // System.out.println(element.getName());
// //
// // }
//
// String resource = "";
// String database = "";
// String schema = "";
//
// if (element.isDatabase()) { // the selected item is a database
//
// rootLogger.log(Level.INFO, "element is a database ");
//
// database = element.getName();
// resource = store.getParent(element).getName();
//
// dataInput.put("ResourceName", resource);
// dataInput.put("DatabaseName", database);
// dataInput.put("SchemaName", "");
//
// } else { // the selected item is a schema
//
// rootLogger.log(Level.INFO, "element is a schema ");
//
// FileModel db = store.getParent(element);
// database = db.getName();
//
// resource = store.getParent(db).getName();
// schema = element.getName();
//
// dataInput.put("ResourceName", resource);
// dataInput.put("DatabaseName", database);
// dataInput.put("SchemaName", schema);
//
// // dataInput.put("ResourceName", resource.getName());
// // dataInput.put("DatabaseName", database.getName());
// // dataInput.put("SchemaName", element.getName());
//
// }
// rootLogger.log(Level.SEVERE, "Start RPC - getTables");
//
// // recover data inputs
//
// LinkedHashMap<String, String> dataInput = new LinkedHashMap<String,
// String>();
//
// // check if the element is a schema or a database
//
// // System.out.println("element is a schema: " + element.isSchema());
// //
// // if (element.isSchema()) {
// //
// // System.out.println("element is a schema: " + element.isSchema());
// //
// // FileModel database = store.getParent(element);
// // FileModel resource = store.getParent(database);
// //
// // dataInput.put("ResourceName", resource.getName());
// // dataInput.put("DatabaseName", database.getName());
// // dataInput.put("SchemaName", element.getName());
// //
// // System.out.println("schema name: " + element.getName());
// //
// // rootLogger.log(Level.INFO, "ResourceName: " + resource.getName());
// // rootLogger.log(Level.INFO, "DatabaseName: " + database.getName());
// // rootLogger.log(Level.INFO, "SchemaName: " + element.getName());
// //
// // // System.out.println(parent1.getName());
// // // System.out.println(parent.getName());
// // // System.out.println(element.getName());
// //
// // }
// //
// // if (element.isDatabase()) {
// //
// // System.out.println("element is a database: " +
// element.isDatabase());
// //
// // FileModel resource = store.getParent(element);
// // // FileModel parent1 = store.getParent(parent);
// //
// // dataInput.put("ResourceName", resource.getName());
// // dataInput.put("DatabaseName", element.getName());
// // dataInput.put("SchemaName", "");
// //
// // rootLogger.log(Level.INFO, "ResourceName: " + resource.getName());
// // rootLogger.log(Level.INFO, "DatabaseName: " + element.getName());
// // rootLogger.log(Level.INFO, "SchemaName: " + "");
// //
// // // System.out.println(parent1.getName());
// // // System.out.println(parent.getName());
// // // System.out.println(element.getName());
// //
// // }
//
// String resource = "";
// String database = "";
// String schema = "";
//
// if (element.isDatabase()) { // the selected item is a database
//
// rootLogger.log(Level.INFO, "element is a database ");
//
// database = element.getName();
// resource = store.getParent(element).getName();
//
// dataInput.put("ResourceName", resource);
// dataInput.put("DatabaseName", database);
// dataInput.put("SchemaName", "");
//
// } else { // the selected item is a schema
//
// rootLogger.log(Level.INFO, "element is a schema ");
//
// FileModel db = store.getParent(element);
// database = db.getName();
//
// resource = store.getParent(db).getName();
// schema = element.getName();
//
// dataInput.put("ResourceName", resource);
// dataInput.put("DatabaseName", database);
// dataInput.put("SchemaName", schema);
//
// // dataInput.put("ResourceName", resource.getName());
// // dataInput.put("DatabaseName", database.getName());
// // dataInput.put("SchemaName", element.getName());
//
// }
// FileModel database = store.getParent(element);
// FileModel resource = store.getParent(database);
@ -846,123 +971,122 @@ public class GxtTreePanel extends LayoutContainer {
// rootLogger.log(Level.INFO, "DatabaseName: " + database.getName());
// rootLogger.log(Level.INFO, "SchemaName: " + element.getName());
// rootLogger.log(Level.INFO, "ResourceName: " + resource);
// rootLogger.log(Level.INFO, "DatabaseName: " + database);
// rootLogger.log(Level.INFO, "SchemaName: " + schema);
// rootLogger.log(Level.INFO, "ResourceName: " + resource);
// rootLogger.log(Level.INFO, "DatabaseName: " + database);
// rootLogger.log(Level.INFO, "SchemaName: " + schema);
// System.out.println(parent1.getName());
// System.out.println(parent.getName());
// System.out.println(element.getName());
// // call remote service
//
// RPCservice.getTables(dataInput, new AsyncCallback<List<FileModel>>() {
//
// @Override
// public void onFailure(Throwable caught) {
// // Window.alert(caught.getMessage());
// // System.out.println("FAILURE");
// rootLogger.log(Level.SEVERE, "FAILURE RPC getTables");
//
// // no tables are available (the schema has not table)
// if (caught.getMessage().equals(
// "java.lang.Exception: Result not available")) {
//
// element.setIsExpanded(false);
//
// treePanel.setExpanded(element, false);
//
// element.setIsLoaded(true);
//
// if (treePanel.isMasked())
// treePanel.unmask();
//
// treePanel.enableEvents(true);
//
// }
//
// // MessageBox.alert("Error ","<br/>Message:"+caught.getMessage(),
// // null);
//
// }
//
// @Override
// public void onSuccess(List<FileModel> result) {
//
//
//
// // System.out.println("SUCCESS");
//
// rootLogger.log(Level.SEVERE, "SUCCESS RPC getTables");
//
// if (result.size() == 0) { // the database has not tables
//
// // System.out.println("the database has not tables");
//
// rootLogger.log(Level.SEVERE, "the database has not tables");
//
// // loadTables(element);
//// element.setIsExpanded(false);
////
//// treePanel.setExpanded(element, false);
//
// } else {
//
// for (int i = 0; i < result.size(); i++) {
//
// result.get(i).setIsTable(true);
//
//// result.get(i).setIsExpanded(false);
//
// result.get(i).setIsLoaded(true);
//
// // result.get(i).setIsSchema(false);
//
// // element.setIsLoaded(true);
//
// // ppritn check
// // System.out.println(result.get(i).getName());
//
// // rootLogger.log(Level.INFO, "table: "
// // + result.get(i).getName());
//
// }
//
// // int numChildrenFolder = store.getChildCount(element);
//
// // if (numChildrenFolder == 0) {
//
//
// //addChildren(element, result);
//
// //
//
// // }
// }
//
// element.setIsLoaded(true);
//
// element.setIsExpanded(false);
// treePanel.setExpanded(element, false);
//
// if (treePanel.isMasked())
// treePanel.unmask();
//
// treePanel.enableEvents(true);
//
// //fire event
// eventBus.fireEvent(new LoadTablesEvent());
//
//
//
// }
// });
//
// //System.out.println("End RPC - getTables");
//
// rootLogger.log(Level.SEVERE, "End RPC getTables");
// // call remote service
//
// RPCservice.getTables(dataInput, new AsyncCallback<List<FileModel>>()
// {
//
// @Override
// public void onFailure(Throwable caught) {
// // Window.alert(caught.getMessage());
// // System.out.println("FAILURE");
// rootLogger.log(Level.SEVERE, "FAILURE RPC getTables");
//
// // no tables are available (the schema has not table)
// if (caught.getMessage().equals(
// "java.lang.Exception: Result not available")) {
//
// element.setIsExpanded(false);
//
// treePanel.setExpanded(element, false);
//
// element.setIsLoaded(true);
//
// if (treePanel.isMasked())
// treePanel.unmask();
//
// treePanel.enableEvents(true);
//
// }
//
// // MessageBox.alert("Error ","<br/>Message:"+caught.getMessage(),
// // null);
//
// }
//
// @Override
// public void onSuccess(List<FileModel> result) {
//
//
//
// // System.out.println("SUCCESS");
//
// rootLogger.log(Level.SEVERE, "SUCCESS RPC getTables");
//
// if (result.size() == 0) { // the database has not tables
//
// // System.out.println("the database has not tables");
//
// rootLogger.log(Level.SEVERE, "the database has not tables");
//
// // loadTables(element);
// // element.setIsExpanded(false);
// //
// // treePanel.setExpanded(element, false);
//
// } else {
//
// for (int i = 0; i < result.size(); i++) {
//
// result.get(i).setIsTable(true);
//
// // result.get(i).setIsExpanded(false);
//
// result.get(i).setIsLoaded(true);
//
// // result.get(i).setIsSchema(false);
//
// // element.setIsLoaded(true);
//
// // ppritn check
// // System.out.println(result.get(i).getName());
//
// // rootLogger.log(Level.INFO, "table: "
// // + result.get(i).getName());
//
// }
//
// // int numChildrenFolder = store.getChildCount(element);
//
// // if (numChildrenFolder == 0) {
//
//
// //addChildren(element, result);
//
// //
//
// // }
// }
//
// element.setIsLoaded(true);
//
// element.setIsExpanded(false);
// treePanel.setExpanded(element, false);
//
// if (treePanel.isMasked())
// treePanel.unmask();
//
// treePanel.enableEvents(true);
//
// //fire event
// eventBus.fireEvent(new LoadTablesEvent());
//
//
//
// }
// });
//
// //System.out.println("End RPC - getTables");
//
// rootLogger.log(Level.SEVERE, "End RPC getTables");
}