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

130 lines
3.3 KiB
Java

package org.gcube.portlets.user.reportgenerator.client.targets;
import java.util.ArrayList;
import org.gcube.portlets.d4sreporting.common.shared.Tuple;
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 org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
/**
*
* @author massi
*
*/
public class ClientReportReference extends Composite implements ClientSequence {
protected ArrayList<TemplateComponent> groupedComponents = new ArrayList<TemplateComponent>();
private VerticalPanel myPanel = new VerticalPanel();
private String refType;
private ArrayList<Tuple> tupleList;
private SequenceWidget first;
private Presenter p;
/**
* s
* @param p
* @param ms
*/
public ClientReportReference(Presenter p, String refType, ArrayList<Tuple> tupleList) {
this.p = p;
this.refType = refType;
this.tupleList = tupleList;
for (Tuple seq : tupleList) {
if (myPanel.getWidgetCount()==0) { // if is the first one
first = getMasterSequence(seq);
myPanel.add(first);
} else {
SequenceWidget seqW = new SequenceWidget(p, this, seq, false, false);
myPanel.add(seqW);
}
}
initWidget(myPanel);
}
/**
* the first seq has to behave differently
*/
private SequenceWidget getMasterSequence(RepeatableSequence seq) {
SequenceWidget toReturn = new SequenceWidget(p, this, seq, true, false);
if (tupleList.size() == 1) {
toReturn.enableClear();
toReturn.removeAddAnotherButton();
}
return toReturn;
}
public ArrayList<Tuple> getTupleList() {
return tupleList;
}
public void setTupleList(ArrayList<Tuple> tupleList) {
this.tupleList = tupleList;
}
@Override
public ArrayList<TemplateComponent> getGroupedComponents() {
return groupedComponents;
}
@Override
public boolean add(String id, RepeatableSequence sequence) {
if (first.isSelectNewEnabled()) {
first = getMasterSequence(sequence);
myPanel.clear();
myPanel.add(first);
tupleList.clear();
} else {
SequenceWidget seqW = new SequenceWidget(p, this, sequence, false, true);
myPanel.add(seqW);
first.hideClearAssociationButton();
}
//needed for the model
Tuple toAdd = new Tuple(id, sequence.getGroupedComponents());
tupleList.add(toAdd);
return true;
}
@Override
public SequenceWidget remove(SequenceWidget toRemove) {
myPanel.remove(toRemove);
for (TemplateComponent tc : toRemove.getSeqGroupedComponents()) {
groupedComponents.remove(tc);
}
tupleList.remove(toRemove.getSequence());
if (tupleList.size() == 1)
first.enableClear();
GWT.log("List Tuple Size = "+tupleList.size());
return toRemove;
}
@Override
public void AddButtonClicked(RepeatableSequence sequence) {
VMETypeIdentifier type2Pass = null;
try {
type2Pass = p.getTypeIdFromString(refType);
} catch (Exception e) {
e.printStackTrace();
}
p.showVMERefAssociateDialog(type2Pass);
p.setClientSequenceSelected(this); //important!
}
public String getRefType() {
return refType;
}
}