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/SequenceWidget.java

126 lines
4.2 KiB
Java

package org.gcube.portlets.user.reportgenerator.client.targets;
import java.util.ArrayList;
import org.gcube.portlets.d4sreporting.common.shared.BasicComponent;
import org.gcube.portlets.d4sreporting.common.shared.ComponentType;
import org.gcube.portlets.d4sreporting.common.shared.Metadata;
import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence;
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.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 SequenceWidget extends Composite {
private VerticalPanel myPanel;
private Button addAnotherB = new Button("Add another Entry");
private Button removeThisB = new Button("Remove Entry");
private Presenter p;
private HorizontalPanel buttonPanel = new HorizontalPanel();
HorizontalPanel buttonsWrapperPanel = new HorizontalPanel();
private ClientRepeatableSequence owner;
private RepeatableSequence repSequence;
private ArrayList<TemplateComponent> seqGroupedComponents = new ArrayList<TemplateComponent>();
public SequenceWidget(Presenter p, ClientRepeatableSequence owner, RepeatableSequence repSequence, boolean isFirst, boolean isNew) {
this.p = p;
this.owner = owner;
this.repSequence = repSequence;
addAnotherB.getElement().getStyle().setMargin(10, Unit.PX);
addAnotherB.getElement().getStyle().setWidth(130, Unit.PX);
addAnotherB.addStyleName("addEntryButton");
myPanel = new VerticalPanel();
myPanel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT);
myPanel.setStyleName("seqWidget");
int size = repSequence.getGroupedComponents().size();
GWT.log("SequenceWidget Size = " + size);
for (int j = 0; j < size; j++) {
BasicComponent sComp = repSequence.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(buttonsWrapperPanel);
}
//if isNew and is not locked and is of type BODY then put fields to blank
if (isNew && (!sComp.isLocked()) &&
(sComp.getType() == ComponentType.BODY ||
sComp.getType() == ComponentType.BODY_NOT_FORMATTED ||
sComp.getType() == ComponentType.DYNA_IMAGE) ) {
sComp.setPossibleContent("");
sComp.setMetadata(new ArrayList<Metadata>());
}
add(new TemplateComponent(p.getModel(), sComp, p, false, null));
}
initWidget(myPanel);
if (isFirst) {
buttonsWrapperPanel.add(addAnotherB);
addAnotherB.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
addAnother();
}
});
}
else {
removeThisB.getElement().getStyle().setWidth(130, Unit.PX);
removeThisB.getElement().getStyle().setMargin(10, Unit.PX);
removeThisB.addStyleName("deleteEntryButton");
buttonsWrapperPanel.add(removeThisB);
removeThisB.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
removeMe();
}
});
buttonsWrapperPanel.add(addAnotherB);
addAnotherB.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
addAnother();
}
});
}
}
public void add(TemplateComponent toAdd) {
if (toAdd.getType() != ComponentType.REPEAT_SEQUENCE_INNER) {
owner.groupedComponents.add(toAdd);
seqGroupedComponents.add(toAdd);
GWT.log("ToAdd= getType " + toAdd.getType());
myPanel.add(toAdd.getContent());
}
}
public ArrayList<TemplateComponent> getSeqGroupedComponents() {
return seqGroupedComponents;
}
public void removeAddAnotherButton() {
buttonsWrapperPanel.remove(addAnotherB);
}
private void addAnother() {
owner.addNew(repSequence);
}
private void removeMe() {
owner.removeSeqWidget(this);
}
}