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