diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java
index f46adb2..86aaa71 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java
@@ -42,6 +42,7 @@ import org.gcube.portlets.user.reportgenerator.client.targets.Coords;
import org.gcube.portlets.user.reportgenerator.client.targets.D4sRichTextarea;
import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable;
import org.gcube.portlets.user.reportgenerator.client.targets.GroupingDelimiterArea;
+import org.gcube.portlets.user.reportgenerator.client.targets.HeadingTextArea;
import org.gcube.portlets.user.reportgenerator.client.targets.ReportTextArea;
import org.gcube.portlets.user.reportgenerator.client.targets.TSArea;
import org.gcube.portlets.user.reportgenerator.client.targets.TextTableImage;
@@ -965,8 +966,20 @@ public class Presenter {
case HEADING_3:
case HEADING_4:
case HEADING_5:
- case BODY_NOT_FORMATTED:
case TITLE:
+ if (component.isLocked()) {
+ HTML text = (HTML) component.getContent();
+ wp.addComponentToLayout(text, component.isDoubleColLayout());
+ }
+ else {
+ HeadingTextArea textArea = (HeadingTextArea) component.getContent();
+ textArea.getMyInstance().setTop(uiY);
+ textArea.getMyInstance().setLeft(uiX);
+ wp.addComponentToLayout(textArea, component.isDoubleColLayout());
+ }
+
+ break;
+ case BODY_NOT_FORMATTED:
if (component.isLocked()) {
HTML text = (HTML) component.getContent();
wp.addComponentToLayout(text, component.isDoubleColLayout());
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java
index 99ab58e..2b0481f 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportGenerator.java
@@ -137,8 +137,8 @@ public class ReportGenerator implements EntryPoint {
divHidden.setStyleName("d4sFrame");
divHidden.setWidth("750px");
divHidden.setStyleName("d4sRichTextArea");
- divHidden.addStyleName("setVisibilityOff");
divHidden.addStyleName("hasRichTextToolbar");
+ divHidden.addStyleName("setVisibilityOff");
eastPanel.add(workSpacePanel);
eastPanel.add(divHidden);
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java
index 05bcbfe..c1e8075 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java
@@ -23,6 +23,7 @@ import org.gcube.portlets.user.reportgenerator.client.targets.DropTSListener;
import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable;
import org.gcube.portlets.user.reportgenerator.client.targets.GroupingDelimiterArea;
import org.gcube.portlets.user.reportgenerator.client.targets.GroupingInnerArea;
+import org.gcube.portlets.user.reportgenerator.client.targets.HeadingTextArea;
import org.gcube.portlets.user.reportgenerator.client.targets.ReportTextArea;
import org.gcube.portlets.user.reportgenerator.client.targets.TSArea;
import org.gcube.portlets.user.reportgenerator.client.targets.TextTableImage;
@@ -167,7 +168,7 @@ public class TemplateComponent {
switch (sc.getType()) {
case DYNA_IMAGE:
- ClientImage dp = new ClientImage(sc, presenter, sc.getWidth(), sc.getHeight());
+ ClientImage dp = new ClientImage(sc, presenter, sc.getWidth(), sc.getHeight(), showClose, owner);
this.content = dp;
break;
case HEADING_1:
@@ -175,8 +176,23 @@ public class TemplateComponent {
case HEADING_3:
case HEADING_4:
case HEADING_5:
- case BODY_NOT_FORMATTED:
case TITLE:
+ if (sc.isLocked()) {
+ HTML area = new HTML();
+ area.setStyleName("report-ui-component");
+ area.addStyleName(getStyle(sc.getType()));
+ area.getElement().getStyle().setMarginTop(5, Unit.PX);
+ area.setPixelSize(width, 18);
+ area.setText((String) sc.getPossibleContent());
+ this.content = area;
+ }
+ else {
+ HeadingTextArea bToAdd = new HeadingTextArea(sc.getType(), presenter, sc.getX(), sc.getY(), width, 25, getUserComments() != null, showClose);
+ bToAdd.setText((String) sc.getPossibleContent());
+ this.content = bToAdd;
+ }
+ break;
+ case BODY_NOT_FORMATTED:
if (sc.isLocked()) {
HTML area = new HTML();
area.setStyleName("report-ui-component");
@@ -370,11 +386,18 @@ public class TemplateComponent {
case HEADING_3:
case HEADING_4:
case HEADING_5:
- case BODY_NOT_FORMATTED:
case TITLE:
if (this.isLocked()) {
content = ((HTML) this.content).getText();
+ }
+ else
+ content = ((HeadingTextArea) this.content).getText();
+ break;
+ case BODY_NOT_FORMATTED:
+ if (this.isLocked()) {
+ content = ((HTML) this.content).getText();
+
}
else
content = ((BasicTextArea) this.content).getText();
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java
index 90f92ec..fe01a84 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java
@@ -24,10 +24,12 @@ import com.google.gwt.user.client.ui.Widget;
*/
public class BasicTextArea extends ReportTextArea {
private RichTextArea textArea = new RichTextArea();
+ //private TextArea textArea = new TextArea();
+
private VerticalPanel myPanel;
int currHeight = 0;
-
+
@@ -46,31 +48,10 @@ public class BasicTextArea extends ReportTextArea {
}
});
textArea.setStyleName("report-ui-component");
+
+
switch (type) {
- case TITLE:
- textArea.addStyleName("title");
- myPanel.setTitle("Title");
- break;
- case HEADING_1:
- textArea.addStyleName("heading1");
- myPanel.setTitle("Heading: Level 1");
- break;
- case HEADING_2:
- textArea.addStyleName("heading2");
- myPanel.setTitle("Heading Level 2");
- break;
- case HEADING_3:
- textArea.addStyleName("heading3");
- myPanel.setTitle("Heading: Level 3");
- break;
- case HEADING_4:
- textArea.addStyleName("heading4");
- myPanel.setTitle("Heading: Level 4");
- break;
- case HEADING_5:
- textArea.addStyleName("heading5");
- myPanel.setTitle("Heading: Level 5");
- break;
+
case BODY_NOT_FORMATTED:
textArea.addStyleName("simpleText");
myPanel.setTitle("Simple text");
@@ -93,26 +74,26 @@ public class BasicTextArea extends ReportTextArea {
textArea.addKeyUpHandler(new KeyUpHandler() {
public void onKeyUp(KeyUpEvent event) {
HTML div = ReportGenerator.get().getDivHidden();
- div.setHTML(textArea.getHTML());
+ div.setHTML(textArea.getHTML());
int newHeight = div.getOffsetHeight();
- if (newHeight > currHeight) {
- resizePanel(width, newHeight);
- presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
- currHeight = newHeight;
- }
+
+ resizePanel(width, newHeight);
+ presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
+ currHeight = newHeight;
+
}
});
textArea.addMouseDownHandler(new MouseDownHandler() {
public void onMouseDown(MouseDownEvent event) {
HTML div = ReportGenerator.get().getDivHidden();
- div.setHTML(textArea.getHTML());
+ div.setHTML(textArea.getHTML());
int newHeight = div.getOffsetHeight();
- if (newHeight > currHeight) {
- resizePanel(width, newHeight);
- presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
- currHeight = newHeight;
- }
+
+ resizePanel(width, newHeight);
+ presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
+ currHeight = newHeight;
+
}
});
@@ -120,8 +101,14 @@ public class BasicTextArea extends ReportTextArea {
public String getText() {
return textArea.getText();
}
+
public void setText(String text) {
textArea.setText(text);
+
+ }
+
+ public RichTextArea getRichTextArea() {
+ return null;
}
/**
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java
index 2d5e918..05b5c2f 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java
@@ -19,6 +19,7 @@ import org.gcube.portlets.user.workspace.lighttree.client.load.WorkspaceLightTre
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.RunAsyncCallback;
+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.event.dom.client.MouseOutEvent;
@@ -63,17 +64,17 @@ public class ClientImage extends Composite {
private String currentUser;
private String currentScope;
- private final int DEFAULT_HEIGHT = 100;
- private final int DEFAULT_WIDTH = 700;
+ public static final int DEFAULT_HEIGHT = 100;
+ public static final int DEFAULT_WIDTH = 700;
private TextBox titleTB = new TextBox();
private TextBox descTB = new TextBox();
private TextBox sourceTB = new TextBox();
- private Button resetB = new Button("Reset Image");
+ private Button resetB = new Button("Clear");
private Button addImageB = new Button("Select Image");
private Button uploadImageB = new Button("Upload Image");
-
+ private Button removeB = new Button("Remove Image");
private BasicComponent basicComponent;
/**
*
@@ -81,12 +82,12 @@ public class ClientImage extends Composite {
* @param width
* @param tag
*/
- public ClientImage(BasicComponent co, Presenter presenter, int width, int height) {
+ public ClientImage(BasicComponent co, Presenter presenter, int width, int height, boolean isRemovable, TextTableImage owner) {
imageHeight = height;
imageWidth = width;
this.presenter = presenter;
this.basicComponent = co;
- HorizontalPanel controlPanel = getControlPanel();
+ HorizontalPanel controlPanel = getControlPanel(isRemovable, owner);
VerticalPanel attributesPanel = getAttributesPanel(co);
mainPanel.add(controlPanel);
mainPanel.add(imagePanel);
@@ -119,7 +120,12 @@ public class ClientImage extends Composite {
b.addStyleName("tableButton");
}
}
-
+ if (isRemovable) {
+ removeB.removeStyleName("tableButton");
+ removeB.addStyleName("deleteEntryButton");
+ removeB.getElement().getStyle().setMarginRight(10, Unit.PX);
+ }
+
focusPanel.add(mainPanel);
initWidget(focusPanel);
@@ -131,9 +137,18 @@ public class ClientImage extends Composite {
});
}
- private HorizontalPanel getControlPanel() {
+ private HorizontalPanel getControlPanel(boolean isRemovable, final TextTableImage owner) {
final HorizontalPanel toReturn = new HorizontalPanel();
+ removeB.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ if (owner != null) {
+ remove(owner);
+ }
+ }
+ });
+
resetB.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
@@ -160,7 +175,8 @@ public class ClientImage extends Composite {
});
toReturn.setSpacing(3);
-
+ if (isRemovable)
+ toReturn.add(removeB);
toReturn.add(resetB);
toReturn.add(uploadImageB);
toReturn.add(addImageB);
@@ -399,5 +415,12 @@ public class ClientImage extends Composite {
}
});
}
-
+ /**
+ * helper method that removes a image from the textTableImage widget
+ * @param owner
+ */
+ private void remove(TextTableImage owner) {
+ owner.removeFromParent(this);
+ removeFromParent();
+ }
}
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/HeadingTextArea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/HeadingTextArea.java
new file mode 100644
index 0000000..bbfd02b
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/HeadingTextArea.java
@@ -0,0 +1,89 @@
+package org.gcube.portlets.user.reportgenerator.client.targets;
+
+import org.gcube.portlets.d4sreporting.common.shared.ComponentType;
+import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
+
+import com.google.gwt.event.dom.client.MouseOutEvent;
+import com.google.gwt.event.dom.client.MouseOutHandler;
+import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.TextArea;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+/**
+ * HeadingTextArea
+ *
+ * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it
+ * @version July 2011 (3.0)
+ */
+public class HeadingTextArea extends ReportTextArea {
+ private TextArea textArea = new TextArea();
+ private VerticalPanel myPanel;
+ private Presenter presenter;
+
+ int currHeight = 0;
+
+
+ public HeadingTextArea(ComponentType type, final Presenter presenter, int left, int top, int width, final int height, boolean hasComments, boolean showClose) {
+ super(type, presenter, left, top, width, height, hasComments, showClose);
+ this.presenter = presenter;
+ myPanel = getResizablePanel();
+
+ textArea.setPixelSize(width, height);
+
+ textArea.addMouseOutHandler(new MouseOutHandler() {
+
+ public void onMouseOut(MouseOutEvent event) {
+ presenter.storeChangeInSession((Widget) event.getSource());
+ }
+ });
+ textArea.setStyleName("report-ui-component");
+ switch (type) {
+ case TITLE:
+ textArea.addStyleName("title");
+ myPanel.setTitle("Title");
+ resizePanel(width, 30);
+ break;
+ case HEADING_1:
+ textArea.addStyleName("heading1");
+ myPanel.setTitle("Heading: Level 1");
+ break;
+ case HEADING_2:
+ textArea.addStyleName("heading2");
+ myPanel.setTitle("Heading Level 2");
+ break;
+ case HEADING_3:
+ textArea.addStyleName("heading3");
+ myPanel.setTitle("Heading: Level 3");
+ break;
+ case HEADING_4:
+ textArea.addStyleName("heading4");
+ myPanel.setTitle("Heading: Level 4");
+ break;
+ case HEADING_5:
+ textArea.addStyleName("heading5");
+ myPanel.setTitle("Heading: Level 5");
+ break;
+ default:
+ break;
+ }
+ myPanel.add(textArea);
+ myPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_BOTTOM);
+ myPanel.setPixelSize(width, height);
+
+ textArea.addMouseOutHandler(new MouseOutHandler() {
+
+ public void onMouseOut(MouseOutEvent event) {
+ presenter.storeChangeInSession((Widget) event.getSource());
+
+ }
+ });
+ }
+ public String getText() {
+ return textArea.getText();
+ }
+ public void setText(String text) {
+ textArea.setText(text);
+ }
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java
index d5b9b3c..61e13d7 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java
@@ -23,8 +23,8 @@ public class SequenceWidget extends Composite {
private VerticalPanel myPanel;
- private Button addAnotherB = new Button("Add another entry");
- private Button removeThisB = new Button("Remove this entry");
+ 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();
@@ -37,8 +37,7 @@ public class SequenceWidget extends Composite {
this.owner = owner;
this.repSequence = repSequence;
addAnotherB.getElement().getStyle().setMargin(10, Unit.PX);
- addAnotherB.getElement().getStyle().setHeight(30, Unit.PX);
- addAnotherB.getElement().getStyle().setWidth(180, Unit.PX);
+ addAnotherB.getElement().getStyle().setWidth(130, Unit.PX);
addAnotherB.addStyleName("addEntryButton");
myPanel = new VerticalPanel();
myPanel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT);
@@ -76,9 +75,9 @@ public class SequenceWidget extends Composite {
});
}
else {
+
+ removeThisB.getElement().getStyle().setWidth(130, Unit.PX);
removeThisB.getElement().getStyle().setMargin(10, Unit.PX);
- removeThisB.getElement().getStyle().setHeight(30, Unit.PX);
- removeThisB.getElement().getStyle().setWidth(180, Unit.PX);
removeThisB.addStyleName("deleteEntryButton");
buttonsWrapperPanel.add(removeThisB);
@@ -88,6 +87,14 @@ public class SequenceWidget extends Composite {
removeMe();
}
});
+
+ buttonsWrapperPanel.add(addAnotherB);
+ addAnotherB.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ addAnother();
+ }
+ });
}
}
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java
index e598582..4263664 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java
@@ -1,9 +1,11 @@
package org.gcube.portlets.user.reportgenerator.client.targets;
import java.util.ArrayList;
+import java.util.List;
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.d4sreporting.common.shared.Table;
import org.gcube.portlets.d4sreporting.common.shared.TableCell;
@@ -104,6 +106,16 @@ public class TextTableImage extends Composite {
add(toAdd);
}
+ private void addNewImage() {
+ List emptyMetadata = new ArrayList();
+ BasicComponent serImage = new BasicComponent(0, 0, ClientImage.DEFAULT_WIDTH, ClientImage.DEFAULT_HEIGHT,
+ presenter.getModel().getCurrentPage(), ComponentType.DYNA_IMAGE, "", "", false, false, emptyMetadata);
+ ClientImage dp = new ClientImage(serImage, presenter, ClientImage.DEFAULT_WIDTH, ClientImage.DEFAULT_HEIGHT, true, this);
+ TemplateComponent toAdd = new TemplateComponent(presenter.getModel(), 0, 0, DEFAULT_WIDTH, GenericTable.DEFAULT_HEIGHT,
+ presenter.getModel().getCurrentPage(), ComponentType.DYNA_IMAGE, "", dp);
+ add(toAdd);
+ }
+
/**
*
* @return
@@ -142,7 +154,7 @@ public class TextTableImage extends Composite {
addImageB.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
-
+ addNewImage();
}
});
diff --git a/src/main/webapp/ReportGenerator.css b/src/main/webapp/ReportGenerator.css
index 552f4cc..c0b3057 100644
--- a/src/main/webapp/ReportGenerator.css
+++ b/src/main/webapp/ReportGenerator.css
@@ -65,6 +65,10 @@
margin-top: 5px;
}
+.imageTableTextDelimiter {
+ border-bottom: 1px inset #336699;
+ width: 700px;
+}
.imageWrapperPanel {
background-color: transparent;
@@ -374,7 +378,7 @@ tableBorder td {
.heading2 {
background-image: url(images/heading_2.png);
- font-size: 13pt;
+ font-size: 12pt;
}
.heading2-label {
@@ -386,17 +390,17 @@ tableBorder td {
.heading3 {
background-image: url(images/heading_3.png);
font-size: 10pt;
- font-weight: bold;
}
.heading3-label{
font-size: 10pt;
padding-left: 2px;
+ font-weight: bold;
}
.heading4 {
background-image: url(images/heading_4.png);
- font-size: 9pt;
+ font-size: 10pt;
}
.heading4-label{
@@ -406,7 +410,7 @@ tableBorder td {
.heading5 {
background-image: url(images/heading_5.png);
- font-size: 8pt;
+ font-size: 10pt;
}
.heading5-label{
diff --git a/src/main/webapp/images/heading_1.png b/src/main/webapp/images/heading_1.png
index b5ca1a6..365d91a 100644
Binary files a/src/main/webapp/images/heading_1.png and b/src/main/webapp/images/heading_1.png differ
diff --git a/src/main/webapp/images/heading_2.png b/src/main/webapp/images/heading_2.png
index 08b083d..7bac8c1 100644
Binary files a/src/main/webapp/images/heading_2.png and b/src/main/webapp/images/heading_2.png differ
diff --git a/src/main/webapp/images/heading_3.png b/src/main/webapp/images/heading_3.png
index 3cfa791..59f8f51 100644
Binary files a/src/main/webapp/images/heading_3.png and b/src/main/webapp/images/heading_3.png differ
diff --git a/src/main/webapp/images/heading_4.png b/src/main/webapp/images/heading_4.png
index 7040253..cc7c93e 100644
Binary files a/src/main/webapp/images/heading_4.png and b/src/main/webapp/images/heading_4.png differ
diff --git a/src/main/webapp/images/heading_5.png b/src/main/webapp/images/heading_5.png
index ea482f8..1d6430d 100644
Binary files a/src/main/webapp/images/heading_5.png and b/src/main/webapp/images/heading_5.png differ
diff --git a/src/main/webapp/images/title.png b/src/main/webapp/images/title.png
index 5434e2b..707090a 100644
Binary files a/src/main/webapp/images/title.png and b/src/main/webapp/images/title.png differ