diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java index abc6355..f5d7296 100644 --- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java +++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java @@ -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 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 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>() { + public void handleEvent(final TreePanelEvent 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 tree) { + private void loadDBInfo(final FileModel element, + final TreePanel 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 dataInput = new LinkedHashMap(); -// -// // 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 dataInput = new LinkedHashMap(); + // + // // 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>() { -// -// @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 ","
Message:"+caught.getMessage(), -// // null); -// -// } -// -// @Override -// public void onSuccess(List 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>() + // { + // + // @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 ","
Message:"+caught.getMessage(), + // // null); + // + // } + // + // @Override + // public void onSuccess(List 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"); }