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,16 +207,144 @@ public class GxtTreePanel extends LayoutContainer {
// recover the appropriate information whenever an
// element is selected
// 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)) {
&& (selectedItem.isLoaded() != true)) {
// treePanel.disableEvents(true);
if (treeDepthSelectedItem!=1){
treePanel.disableEvents(true);
}
// selectedItem.setIsSchema(false);
@ -226,14 +361,12 @@ public class GxtTreePanel extends LayoutContainer {
// to mask the tree panel
treePanel.mask("Loading", "x-mask-loading");
loadDBInfo(data.get(0), treePanel);
loadDBInfo(selectedItem, treePanel);
// loadDBInfo(data.get(0));
break;
case 3: // the selected item is a database
if (selectedItem.getDatabaseType().equals(
ConstantsPortlet.POSTGRES)) {
@ -242,7 +375,7 @@ public class GxtTreePanel extends LayoutContainer {
// load schema for postgres database
// selectedItem.setIsSchema(false);
loadSchema(data.get(0));
loadSchema(selectedItem);
}
// else {
// // System.out.println("database mysql: " +
@ -260,16 +393,11 @@ public class GxtTreePanel extends LayoutContainer {
// 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
// fire event when an item has been selected in the
// tree
eventBus.fireEvent(new SelectedItemEvent());
}
}
});
@ -365,8 +493,6 @@ public class GxtTreePanel extends LayoutContainer {
// int numChildrenFolder = store.getChildCount(element);
addChildren(element, result);
element.setIsLoaded(true);
@ -376,7 +502,6 @@ public class GxtTreePanel extends LayoutContainer {
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");
@ -422,8 +548,6 @@ public class GxtTreePanel extends LayoutContainer {
if (treePanel.isMasked())
treePanel.unmask();
tree.enableEvents(true);
}
@ -563,7 +687,6 @@ public class GxtTreePanel extends LayoutContainer {
treePanel.setExpanded(child, false);
}
children.add(child);
@ -599,7 +722,7 @@ public class GxtTreePanel extends LayoutContainer {
if (treePanel.isMasked())
treePanel.unmask();
tree.enable();
// tree.enable();
tree.enableEvents(true);
@ -741,7 +864,8 @@ public class GxtTreePanel extends LayoutContainer {
//
// // 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
//
@ -772,7 +896,8 @@ public class GxtTreePanel extends LayoutContainer {
// //
// // if (element.isDatabase()) {
// //
// // System.out.println("element is a database: " + element.isDatabase());
// // System.out.println("element is a database: " +
// element.isDatabase());
// //
// // FileModel resource = store.getParent(element);
// // // FileModel parent1 = store.getParent(parent);
@ -856,7 +981,8 @@ public class GxtTreePanel extends LayoutContainer {
// // call remote service
//
// RPCservice.getTables(dataInput, new AsyncCallback<List<FileModel>>() {
// RPCservice.getTables(dataInput, new AsyncCallback<List<FileModel>>()
// {
//
// @Override
// public void onFailure(Throwable caught) {
@ -962,8 +1088,6 @@ public class GxtTreePanel extends LayoutContainer {
//
// rootLogger.log(Level.SEVERE, "End RPC getTables");
}
// public boolean getSelectedItemIsSchema() {