This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues or pull requests.
vmereports-manager-portlet/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/RepeatableSequence.java

81 lines
2.8 KiB
Java

package org.gcube.portlets.user.reportgenerator.client.targets;
import java.util.ArrayList;
import org.gcube.portlets.d4sreporting.common.shared.ComponentType;
import org.gcube.portlets.d4sreporting.common.shared.SerializableComponent;
import org.gcube.portlets.d4sreporting.common.shared.SerializableRepeatableSequence;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import org.gcube.portlets.user.reportgenerator.client.model.TemplateComponent;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
public class RepeatableSequence extends Composite {
private ArrayList<TemplateComponent> groupedComponents = new ArrayList<TemplateComponent>();
private VerticalPanel myPanel;
private HorizontalPanel buttonPanel = new HorizontalPanel();
private Presenter p;
private Button addAnotherB = new Button("Add another entry");
/**
* constructor used by the system when reading the model
* @param sRS
*/
public RepeatableSequence(Presenter p, SerializableRepeatableSequence sRS) {
this.p = p;
addAnotherB.getElement().getStyle().setMargin(10, Unit.PX);
addAnotherB.getElement().getStyle().setHeight(30, Unit.PX);
addAnotherB.getElement().getStyle().setWidth(200, Unit.PX);
myPanel = new VerticalPanel();
myPanel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT);
int size = sRS.getGroupedComponents().size();
for (int j = 0; j < size; j++) {
SerializableComponent sComp = sRS.getGroupedComponents().get(j);
if (j == size-1) {
myPanel.add(buttonPanel); //add the button before the last element
buttonPanel.setWidth("100%");
buttonPanel.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT);
buttonPanel.add(addAnotherB);
}
add(new TemplateComponent(p.getModel(), sComp, p));
}
initWidget(myPanel);
addAnotherB.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.alert("TODO: Missing Implementation");
}
});
}
public void add(TemplateComponent toAdd) {
if (toAdd.getType() != ComponentType.REPEAT_SEQUENCE_INNER) {
groupedComponents.add(toAdd);
GWT.log("ToAdd= getType " + toAdd.getType());
myPanel.add(toAdd.getContent());
}
}
public ArrayList<TemplateComponent> getGroupedComponents() {
return groupedComponents;
}
public void setGroupedComponents(ArrayList<TemplateComponent> groupedComponents) {
this.groupedComponents = groupedComponents;
}
}