in progress on #23587

This commit is contained in:
Francesco Mangiacrapa 2022-07-06 11:06:35 +02:00
parent b7836b33ae
commit 71e26af6dd
8 changed files with 192 additions and 147 deletions

View File

@ -387,7 +387,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
if (cardsPerIT != null) { if (cardsPerIT != null) {
orderedCards.addAll(cardsPerIT); orderedCards.addAll(cardsPerIT);
buildNewCards(profileID, orderedCards); buildNewCards(profileID, handlerDeclarationDV.getItemType(), orderedCards);
return; return;
} }
@ -443,7 +443,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
orderedCards.addAll(gnaCardsModels); orderedCards.addAll(gnaCardsModels);
mapGcubeProfilePerItemType.put(handlerDeclarationDV.getItemType(), mapGcubeProfilePerItemType.put(handlerDeclarationDV.getItemType(),
new ArrayList<GeoNaFormCardModel>(orderedCards)); new ArrayList<GeoNaFormCardModel>(orderedCards));
buildNewCards(profileID, orderedCards); buildNewCards(profileID, handlerDeclarationDV.getItemType(), orderedCards);
} }
} }
@ -487,7 +487,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
return geoNaFormCardModel; return geoNaFormCardModel;
} }
private void buildNewCards(String profileID, Collection<GeoNaFormCardModel> orderedCards) { private void buildNewCards(String profileID, String itemTypeTitle, Collection<GeoNaFormCardModel> orderedCards) {
projectSavedWithSuccess = false; // resetting state of saving projectSavedWithSuccess = false; // resetting state of saving
mainTabPanel.setLoaderVisible("Loading...", true); mainTabPanel.setLoaderVisible("Loading...", true);
geoNaMainForm.setVisibleFormActions(true); geoNaMainForm.setVisibleFormActions(true);
@ -516,13 +516,13 @@ public class GeoPortalDataEntryApp implements EntryPoint {
geoNaMainForm.enableButtonSave(true); geoNaMainForm.enableButtonSave(true);
mainTabPanel.setLoaderVisible("", false); mainTabPanel.setLoaderVisible("", false);
TreeItemPanel tip = new TreeItemPanel(profileID, orderedCards, appManagerBus); TreeItemPanel tip = new TreeItemPanel(profileID, itemTypeTitle, orderedCards, appManagerBus);
geoNaMainForm.addTree(tip); geoNaMainForm.addTree(tip);
// RootPanel.get(GeoPortalDataEntryApp.DIV_PORTLET_ID).add(tip.getTree()); // RootPanel.get(GeoPortalDataEntryApp.DIV_PORTLET_ID).add(tip.getTree());
} }
private void resetUI() { private void resetUI() {
geoNaMainForm.reset(); geoNaMainForm.resetUI();
mapForms.clear(); mapForms.clear();
} }
@ -680,52 +680,71 @@ public class GeoPortalDataEntryApp implements EntryPoint {
@Override @Override
public void onTreeItemEvent(TreeItemEvent treeItemEvent) { public void onTreeItemEvent(TreeItemEvent treeItemEvent) {
NodeItem selectedNode = treeItemEvent.getSelectItem(); TreeItem selectedItem = treeItemEvent.getSelectItem();
if (selectedNode == null) { NodeItem selectedNode = treeItemEvent.selectedAsNodeItem();
TreeItem selectedItem = geoNaMainForm.getTreeItemPanel().getSelectItem();
if (selectedItem == null) {
if(selectedItem==null) selectedItem = geoNaMainForm.getTreeItemPanel().getSelectItem();
if (selectedItem == null)
return; return;
selectedNode = (NodeItem) selectedItem.getWidget(); selectedNode = (NodeItem) selectedItem.getWidget();
} }
GeoNaFormCardModel nodeCard = selectedNode.getGeoNaFormCardModel(); GeoNaFormCardModel nodeCard = selectedNode.getGeoNaFormCardModel();
switch (treeItemEvent.getActionPerformed()) { switch (treeItemEvent.getActionPerformed()) {
case SELECTED: case SELECTED: {
geoNaMainForm.enableButtonRemoveSection(false); geoNaMainForm.enableButtonRemoveSection(false);
geoNaMainForm.enableButtonDuplicateSection(false); geoNaMainForm.enableButtonDuplicateSection(false);
geoNaMainForm.setSelectedForm(nodeCard.getMetadataForm()); geoNaMainForm.setSelectedForm(nodeCard.getMetadataForm());
int nodeCount = geoNaMainForm.getTreeItemPanel().countNodeForFullPath(selectedNode.getJsonSectionFullPath());
// if(nodeCount>1) {
if(nodeCount>1) { // geoNaMainForm.enableButtonRemoveSection(true);
geoNaMainForm.enableButtonRemoveSection(true); // }
} //
if (nodeCard.getFormCard().isInternalRepeatibleForm()) {
if(nodeCard.getFormCard().isInternalRepeatibleForm()) {
geoNaMainForm.enableButtonDuplicateSection(true); geoNaMainForm.enableButtonDuplicateSection(true);
} }
if (selectedNode.isCanBeDeleted()) {
break; geoNaMainForm.enableButtonRemoveSection(true);
case DELETE: }
break; break;
}
case DELETE: {
geoNaMainForm.getTreeItemPanel().removeChild(selectedItem.getParentItem(), selectedItem, selectedNode.getJsonSectionFullPath());
geoNaMainForm.resetInputPanel();
break;
}
case DUPLICATE: case DUPLICATE: {
GWT.log("DUPLICATE node: " + selectedNode); GWT.log("DUPLICATE node: " + selectedNode);
int nodeCountPerJSONFullPAth = geoNaMainForm.getTreeItemPanel()
.countNodeForFullPath(selectedNode.getJsonSectionFullPath());
if (nodeCountPerJSONFullPAth >= nodeCard.getFormCard().getMaxFormRepeatability()) {
DialogInform di = new DialogInform(new Image(Images.ICONS.accessDenied()), "Maximun reached",
"Maximun number of data reached for " + nodeCard.getFormCard().getTitle());
di.center();
return;
}
GeoNaFormCardModel newNodeFormCard = buildNewFormCardModelFromProfile(nodeCard.getGcubeProfile(), GeoNaFormCardModel newNodeFormCard = buildNewFormCardModelFromProfile(nodeCard.getGcubeProfile(),
-1, nodeCard.getMetadataProfileBean(), OPERATION.UPDATE); -1, nodeCard.getMetadataProfileBean(), OPERATION.UPDATE);
geoNaMainForm.getTreeItemPanel().addChild(selectedNode.getParentTreeItem(), newNodeFormCard, true, boolean canBeDuplicated = newNodeFormCard.getFormCard().isInternalRepeatibleForm();
selectedNode.getJsonSectionFullPath()); geoNaMainForm.getTreeItemPanel().addChild(selectedNode.getParentTreeItem(), newNodeFormCard,
canBeDuplicated, true, selectedNode.getJsonSectionFullPath());
break; break;
}
default: default:
break; break;

View File

@ -1,10 +1,9 @@
package org.gcube.portlets.user.geoportaldataentry.client.events; package org.gcube.portlets.user.geoportaldataentry.client.events;
import java.util.List;
import org.gcube.portlets.user.geoportaldataentry.client.ui.tree.NodeItem; import org.gcube.portlets.user.geoportaldataentry.client.ui.tree.NodeItem;
import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.user.client.ui.TreeItem;
/** /**
@ -17,7 +16,7 @@ import com.google.gwt.event.shared.GwtEvent;
*/ */
public class TreeItemEvent extends GwtEvent<TreeItemEventHandler> { public class TreeItemEvent extends GwtEvent<TreeItemEventHandler> {
public static Type<TreeItemEventHandler> TYPE = new Type<TreeItemEventHandler>(); public static Type<TreeItemEventHandler> TYPE = new Type<TreeItemEventHandler>();
private NodeItem selectItem; private TreeItem treeItem;
private ACTION actionPerformed; private ACTION actionPerformed;
/** /**
@ -37,8 +36,8 @@ public class TreeItemEvent extends GwtEvent<TreeItemEventHandler> {
* @param selectItems the select items * @param selectItems the select items
* @param action the action * @param action the action
*/ */
public TreeItemEvent(NodeItem selectItem, ACTION action) { public TreeItemEvent(TreeItem treeItem, ACTION action) {
this.selectItem = selectItem; this.treeItem = treeItem;
this.actionPerformed = action; this.actionPerformed = action;
} }
@ -79,8 +78,16 @@ public class TreeItemEvent extends GwtEvent<TreeItemEventHandler> {
* *
* @return the select items * @return the select items
*/ */
public NodeItem getSelectItem() { public TreeItem getSelectItem() {
return selectItem; return treeItem;
}
public NodeItem selectedAsNodeItem(){
if(treeItem!=null) {
return (NodeItem) treeItem.getWidget();
}
return null;
} }
/** /**

View File

@ -189,7 +189,7 @@ public class GeonaMainTabPanel extends Composite {
alertSearchFor.setText(searchForFields.get(0).getDisplayName()); alertSearchFor.setText(searchForFields.get(0).getDisplayName());
alertSortBy.setText(toLabelFilter((initialSortFilter.getOrderByFields().get(0)), initialSortFilter.getOrder())); alertSortBy.setText(toLabelFilter((initialSortFilter.getOrderByFields().get(0)), initialSortFilter.getOrder()));
pageHeaderDataEntry.setHeight("25px"); //pageHeaderDataEntry.setHeight("25px");
bindEvents(); bindEvents();
resetSearch.setIconSize(IconSize.TWO_TIMES); resetSearch.setIconSize(IconSize.TWO_TIMES);
resetSearch.setType(ButtonType.LINK); resetSearch.setType(ButtonType.LINK);

View File

@ -52,6 +52,18 @@
padding-top: 6px; padding-top: 6px;
margin-top: 2px; margin-top: 2px;
} }
.sub-page-header {
height: 25px;
margin: 0 !important;
}
.sub-page-header h1 {
}
.sub-page-header small {
font-size: 18px;
}
</ui:style> </ui:style>
<g:HTMLPanel> <g:HTMLPanel>
<b:PageHeader subtext="data entry facility" <b:PageHeader subtext="data entry facility"
@ -83,7 +95,9 @@
<b:Paragraph>select "Create New Project"</b:Paragraph> <b:Paragraph>select "Create New Project"</b:Paragraph>
</b:Hero> </b:Hero>
<b:PageHeader subtext=" " <b:PageHeader subtext=" "
ui:field="pageHeaderDataEntry" visible="false"> </b:PageHeader> ui:field="pageHeaderDataEntry"
addStyleNames="{style.sub-page-header}" visible="false">
</b:PageHeader>
</g:HTMLPanel> </g:HTMLPanel>
<r:LoaderIcon ui:field="loader"></r:LoaderIcon> <r:LoaderIcon ui:field="loader"></r:LoaderIcon>

View File

@ -69,8 +69,8 @@ public class GeonaDataEntryMainForm extends Composite {
@UiField @UiField
ScrollPanel inputPanel; ScrollPanel inputPanel;
@UiField // @UiField
TabPanel mainTabPanel; // TabPanel mainTabPanel;
@UiField @UiField
AlertBlock alertFormAction; AlertBlock alertFormAction;
@ -89,7 +89,7 @@ public class GeonaDataEntryMainForm extends Composite {
private LinkedHashMap<String, MetadataFormCard> mapForms = new LinkedHashMap<String, MetadataFormCard>(); private LinkedHashMap<String, MetadataFormCard> mapForms = new LinkedHashMap<String, MetadataFormCard>();
private List<Tab> listTabs = new ArrayList<Tab>(); //private List<Tab> listTabs = new ArrayList<Tab>();
private HandlerManager appManagerBus; private HandlerManager appManagerBus;
@ -168,55 +168,63 @@ public class GeonaDataEntryMainForm extends Composite {
// createNewCard(profileID, tabHeading, geonFormModel); // createNewCard(profileID, tabHeading, geonFormModel);
// } // }
/** // /**
* Creates the new card. // * Creates the new card.
* // *
* @param profileID the profile ID // * @param profileID the profile ID
* @param tabHeading the tab heading // * @param tabHeading the tab heading
* @param geonFormModel the geon form model // * @param geonFormModel the geon form model
*/ // */
private void createNewCard(String profileID, String tabHeading, final GeoNaFormCardModel geonFormModel) { // private void createNewCard(String profileID, String tabHeading, final GeoNaFormCardModel geonFormModel) {
final Tab tab = new Tab(); // final Tab tab = new Tab();
tab.setHeading(tabHeading); // tab.setHeading(tabHeading);
// MetadataFormCard mfc = new MetadataFormCard(tab, createMetadataForm, // // MetadataFormCard mfc = new MetadataFormCard(tab, createMetadataForm,
// repeatible); // // repeatible);
MetadataFormCard mfc = new MetadataFormCard(tab, geonFormModel, appManagerBus); // MetadataFormCard mfc = new MetadataFormCard(tab, geonFormModel, appManagerBus);
listTabs.add(tab); // listTabs.add(tab);
mainTabPanel.add(tab); // mainTabPanel.add(tab);
//
if (listTabs.size() == 1) { // if (listTabs.size() == 1) {
tab.setActive(true); // tab.setActive(true);
mainTabPanel.selectTab(0); // mainTabPanel.selectTab(0);
} // }
//
mapForms.put(tabHeading, mfc); // mapForms.put(tabHeading, mfc);
} // }
/** /**
* Reset. * Reset.
*/ */
public void reset() { public void resetUI() {
navbarTree.setVisible(false); navbarTree.setVisible(false);
mapForms.clear(); mapForms.clear();
mainTabPanel.clear(); //mainTabPanel.clear();
listTabs.clear(); inputPanel.clear();
//listTabs.clear();
} }
/** /**
* Select tab. * Reset.
*
* @param index the index
*/ */
public void selectTab(int index) { public void resetInputPanel() {
inputPanel.clear();
GWT.log("Selecting tab index: " + index + " of " + listTabs.size());
if (listTabs.size() < index) {
mainTabPanel.selectTab(index);
}
} }
// /**
// * Select tab.
// *
// * @param index the index
// */
// public void selectTab(int index) {
//
// GWT.log("Selecting tab index: " + index + " of " + listTabs.size());
//
// if (listTabs.size() < index) {
// mainTabPanel.selectTab(index);
//
// }
// }
/** /**
* Save data. * Save data.
* *

View File

@ -51,8 +51,8 @@
<g:ScrollPanel ui:field="inputPanel" <g:ScrollPanel ui:field="inputPanel"
addStyleNames="{style.w80}"></g:ScrollPanel> addStyleNames="{style.w80}"></g:ScrollPanel>
</g:HTMLPanel> </g:HTMLPanel>
<b:TabPanel ui:field="mainTabPanel" tabPosition="left"> <!-- <b:TabPanel ui:field="mainTabPanel" tabPosition="left">
</b:TabPanel> </b:TabPanel> -->
<b:AlertBlock type="DEFAULT" visible="false" <b:AlertBlock type="DEFAULT" visible="false"
close="false" ui:field="alertFormAction"></b:AlertBlock> close="false" ui:field="alertFormAction"></b:AlertBlock>
<b:FormActions ui:field="formActions" visible="false"> <b:FormActions ui:field="formActions" visible="false">

View File

@ -36,58 +36,25 @@ public class NodeItem extends Composite {
private String jsonSectionFullPath; private String jsonSectionFullPath;
// public NodeItem(TreeItem parent, GcubeProfileDV profile, CreateMetadataForm baseForm, Integer minOccurs, private boolean canBeDuplicated;
// Integer maxOccurs, boolean canBeDuplicated, boolean canBeDeleted) {
// initWidget(uiBinder.createAndBindUi(this));
// this.profile = profile;
// this.baseForm = baseForm;
// htmlNode.setHTML(profile.getSectionTitle());
// buttonAdd.setVisible(false);
// buttonRemove.setVisible(false);
//
// if (canBeDuplicated) {
// buttonAdd.setIcon(IconType.COPY);
// buttonAdd.getElement().getStyle().setProperty("pointerEvents", "none");
// buttonAdd.getElement().getStyle().setProperty("textDecoration", "none");
// buttonAdd.getElement().getStyle().setColor("#555");
// buttonAdd.setVisible(true);
//
// }
//
// if (canBeDeleted) {
// buttonRemove.setIcon(IconType.TRASH);
// buttonRemove.getElement().getStyle().setProperty("pointerEvents", "none");
// buttonRemove.getElement().getStyle().setProperty("textDecoration", "none");
// buttonRemove.getElement().getStyle().setColor("#555");
// buttonRemove.setVisible(true);
// }
//
// htmlNode.addClickHandler(new ClickHandler() {
//
// @Override
// public void onClick(ClickEvent event) {
// // TODO Auto-generated method stub
//
// }
// });
//
// }
public NodeItem(TreeItem parent, GeoNaFormCardModel geoNaFormCardModel, boolean canBeDeleted, private boolean canBeDeleted;
String jsonSectionFullPath) {
public NodeItem(TreeItem parent, GeoNaFormCardModel geoNaFormCardModel, boolean canBeDuplicated,
boolean canBeDeleted, String jsonSectionFullPath) {
initWidget(uiBinder.createAndBindUi(this)); initWidget(uiBinder.createAndBindUi(this));
this.geoNaFormCardModel = geoNaFormCardModel; this.geoNaFormCardModel = geoNaFormCardModel;
this.parentTreeItem = parent; this.parentTreeItem = parent;
this.jsonSectionFullPath = jsonSectionFullPath; this.jsonSectionFullPath = jsonSectionFullPath;
this.canBeDuplicated = canBeDuplicated;
this.canBeDeleted = canBeDeleted;
htmlNode.setHTML(geoNaFormCardModel.getGcubeProfile().getSectionTitle()); htmlNode.setHTML(geoNaFormCardModel.getGcubeProfile().getSectionTitle());
buttonAdd.setVisible(false); buttonAdd.setVisible(false);
buttonRemove.setVisible(false); buttonRemove.setVisible(false);
boolean canBeDuplicated = geoNaFormCardModel.getFormCard().isInternalRepeatibleForm();
if (canBeDuplicated) { if (canBeDuplicated) {
buttonAdd.setIcon(IconType.COPY); buttonAdd.setIcon(IconType.COPY);
buttonAdd.getElement().getStyle().setProperty("pointerEvents", "none"); //buttonAdd.getElement().getStyle().setProperty("pointerEvents", "none");
buttonAdd.getElement().getStyle().setProperty("textDecoration", "none"); buttonAdd.getElement().getStyle().setProperty("textDecoration", "none");
buttonAdd.getElement().getStyle().setColor("#555"); buttonAdd.getElement().getStyle().setColor("#555");
buttonAdd.setVisible(true); buttonAdd.setVisible(true);
@ -96,7 +63,7 @@ public class NodeItem extends Composite {
if (canBeDeleted) { if (canBeDeleted) {
buttonRemove.setIcon(IconType.TRASH); buttonRemove.setIcon(IconType.TRASH);
buttonRemove.getElement().getStyle().setProperty("pointerEvents", "none"); //buttonRemove.getElement().getStyle().setProperty("pointerEvents", "none");
buttonRemove.getElement().getStyle().setProperty("textDecoration", "none"); buttonRemove.getElement().getStyle().setProperty("textDecoration", "none");
buttonRemove.getElement().getStyle().setColor("#555"); buttonRemove.getElement().getStyle().setColor("#555");
buttonRemove.setVisible(true); buttonRemove.setVisible(true);
@ -130,4 +97,12 @@ public class NodeItem extends Composite {
return jsonSectionFullPath; return jsonSectionFullPath;
} }
public boolean isCanBeDeleted() {
return canBeDeleted;
}
public boolean isCanBeDuplicated() {
return canBeDuplicated;
}
} }

View File

@ -24,13 +24,18 @@ public class TreeItemPanel {
private Tree tree = new Tree(); private Tree tree = new Tree();
private HandlerManager appManagerBus; private HandlerManager appManagerBus;
private HashMap<String, List<TreeItem>> treeItemParents = new HashMap<String, List<TreeItem>>(); private HashMap<String, List<TreeItem>> treeItemParents = new HashMap<String, List<TreeItem>>();
private String itemTypeTitle;
private String profileID;
// Create a tree with a few items in it. // Create a tree with a few items in it.
public TreeItemPanel(String itemType, Collection<GeoNaFormCardModel> gnaCardsModels, HandlerManager appManagerBus) { public TreeItemPanel(String profileID, String itemTypeTitle, Collection<GeoNaFormCardModel> gnaCardsModels,
HandlerManager appManagerBus) {
this.appManagerBus = appManagerBus; this.appManagerBus = appManagerBus;
this.itemTypeTitle = itemTypeTitle;
this.profileID = profileID;
TreeItem root = new TreeItem(); TreeItem root = new TreeItem();
root.setHTML(itemType); root.setHTML(itemTypeTitle);
// TreeMap<String, List<TreeItem>> mapParentSections = new TreeMap<String, // TreeMap<String, List<TreeItem>> mapParentSections = new TreeMap<String,
// List<TreeItem>>(); // List<TreeItem>>();
@ -64,7 +69,7 @@ public class TreeItemPanel {
GcubeProfileDV profile = geoNaFormCardModel.getGcubeProfile(); GcubeProfileDV profile = geoNaFormCardModel.getGcubeProfile();
String parentName = profile.getParentName(); String parentName = profile.getParentName();
String jsonSectionFullPath = getJSONFullPathFromProfile(profile); String jsonSectionFullPath = getJSONFullPathFromProfile(profile);
if (parentName == null || parentName.isEmpty()) { if (parentName == null || parentName.isEmpty()) {
parentName = JSON_ROOT_PATH; parentName = JSON_ROOT_PATH;
} }
@ -74,8 +79,10 @@ public class TreeItemPanel {
GWT.log("tree jsonSection: " + jsonSectionFullPath + " parent " + parentName + " name: " GWT.log("tree jsonSection: " + jsonSectionFullPath + " parent " + parentName + " name: "
+ profile.getSectionName() + " title: " + profile.getSectionTitle()); + profile.getSectionName() + " title: " + profile.getSectionTitle());
TreeItem child = addChild(listParent.get(0), geoNaFormCardModel, false, jsonSectionFullPath); boolean canBeDuplicated = geoNaFormCardModel.getFormCard().isInternalRepeatibleForm();
TreeItem child = addChild(listParent.get(0), geoNaFormCardModel, canBeDuplicated, false,
jsonSectionFullPath);
} }
tree.addItem(root); tree.addItem(root);
@ -83,10 +90,12 @@ public class TreeItemPanel {
@Override @Override
public void onSelection(SelectionEvent<TreeItem> event) { public void onSelection(SelectionEvent<TreeItem> event) {
NodeItem nodeItem = (NodeItem) event.getSelectedItem().getWidget(); TreeItem treeItem = event.getSelectedItem();
NodeItem nodeItem = (NodeItem) treeItem.getWidget();
GWT.log("Selected: " + nodeItem.getGeoNaFormCardModel().getGcubeProfile()); GWT.log("Selected: " + nodeItem.getGeoNaFormCardModel().getGcubeProfile());
appManagerBus.fireEvent(new TreeItemEvent(nodeItem, ACTION.SELECTED)); appManagerBus.fireEvent(new TreeItemEvent(treeItem, ACTION.SELECTED));
} }
}); });
@ -113,34 +122,48 @@ public class TreeItemPanel {
return jsonSectionFullPath; return jsonSectionFullPath;
} }
public TreeItem addChild(TreeItem parent, GeoNaFormCardModel geoNaFormCardModel, boolean canBeDeleted, String jsonSectionFullPath) { public TreeItem addChild(TreeItem parent, GeoNaFormCardModel geoNaFormCardModel, boolean canBeDuplicated,
boolean canBeDeleted, String jsonSectionFullPath) {
GWT.log("Adding child to parent: " + parent.getText()); GWT.log("Adding child to parent: " + parent.getText());
TreeItem child = new TreeItem(new NodeItem(parent, geoNaFormCardModel, canBeDeleted, jsonSectionFullPath)); TreeItem child = new TreeItem(
new NodeItem(parent, geoNaFormCardModel, canBeDuplicated, canBeDeleted, jsonSectionFullPath));
parent.addItem(child); parent.addItem(child);
// if the path section is not the root // if the path section is not the root
if (jsonSectionFullPath.compareTo(JSON_ROOT_PATH) != 0) { if (jsonSectionFullPath.compareTo(JSON_ROOT_PATH) != 0) {
List<TreeItem> listNodeParents = treeItemParents.get(jsonSectionFullPath); List<TreeItem> listNodeParents = treeItemParents.get(jsonSectionFullPath);
if(listNodeParents==null) { if (listNodeParents == null) {
listNodeParents = new ArrayList<TreeItem>(); listNodeParents = new ArrayList<TreeItem>();
} }
listNodeParents.add(child); listNodeParents.add(child);
treeItemParents.put(jsonSectionFullPath, listNodeParents); treeItemParents.put(jsonSectionFullPath, listNodeParents);
} }
return child; return child;
} }
public int countNodeForFullPath(String jsonSectionFullPath){ public void removeChild(TreeItem parent, TreeItem item, String jsonSectionFullPath) {
GWT.log("Removing child to parent: " + parent.getText());
List<TreeItem> nodes = treeItemParents.get(jsonSectionFullPath); List<TreeItem> nodes = treeItemParents.get(jsonSectionFullPath);
if(nodes != null) if (nodes != null) {
nodes.remove(item);
treeItemParents.put(jsonSectionFullPath, nodes);
}
parent.removeItem(item);
}
public int countNodeForFullPath(String jsonSectionFullPath) {
List<TreeItem> nodes = treeItemParents.get(jsonSectionFullPath);
if (nodes != null)
return nodes.size(); return nodes.size();
return 0; return 0;
} }
@ -151,10 +174,9 @@ public class TreeItemPanel {
public TreeItem getSelectItem() { public TreeItem getSelectItem() {
return tree.getSelectedItem(); return tree.getSelectedItem();
} }
public int getNodeIndex(TreeItem parent,TreeItem item){ public int getNodeIndex(TreeItem parent, TreeItem item) {
return parent.getChildIndex(item); return parent.getChildIndex(item);
} }
} }