Tuesday, November 1, 2016

Re: Strange error with streams

package org.jresearch.commons.gwt.client.widget;

import javax.annotation.Nonnull;

import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;

public class MessageTestBox extends DialogBox {

@Nonnull
private Label content;
private Button cancel;
@Nonnull
private HTMLPanel panel;

public MessageTestBox() {
final FlowPanel main = new FlowPanel();
setModal(true);
main.add(content = new Label());
main.add(panel = new HTMLPanel(""));
setWidget(main);
setGlassEnabled(true);
}

protected void createButtons(@Nonnull final HTMLPanel p, @Nonnull final Action... actions) {
p.clear();
for (final Action action : actions) {
p.add(createButton(action));
}
// Stream.of(actions).map(this::createButton).forEach(p::add);
if (cancel == null) {
cancel = createButton(new Action(SafeHtmlUtils.fromTrustedString("Cancel"), this::close));
}
p.add(cancel);
}

protected Button createButton(final Action action) {
return new Button(action.getActionName(), e -> close(action.getHandler()));
}

private void close(final Command toDo) {
hide(false);
toDo.execute();
}

public void show(@Nonnull final SafeHtml title, @Nonnull final SafeHtml text, @Nonnull final Action... actions) {
createButtons(panel, actions);
setHTML(title);
content.setText(text.asString());
center();
}

private void close() {
hide(true);
}

}
package org.jresearch.commons.gwt.client.widget;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import com.google.common.base.MoreObjects;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.user.client.Command;

public class Action {

@Nonnull
private final SafeHtml actionName;
@Nullable
private final Command handler;

/**
* @param actionName
* @param handler
*/
public Action(@Nonnull final SafeHtml actionName, @Nullable final Command handler) {
this.actionName = actionName;
this.handler = handler;
}

/**
* @param actionName
* @param handler
*/
public Action(@Nonnull final SafeHtml actionName) {
this(actionName, null);
}

/**
* @return the actionName
*/
@Nonnull
public SafeHtml getActionName() {
return actionName;
}

/**
* @return the handler
*/
@Nullable
public Command getHandler() {
return handler;
}

@SuppressWarnings("nls")
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.omitNullValues()
.add("actionName", actionName)
.add("handler", handler)
.toString();
}

}
Simplified widget is in attachment. Mehod createButtons contains the the problem code.

Let me know if you need something else.

Stas

On Tuesday, November 1, 2016 at 11:13:41 AM UTC+1, Jens wrote:
Use -style PRETTY as SDM parameter so that the JS code is more readable. 

Looks like a GWT bug either in the compiler because of method references or inside the Stream emulation. If you can provide a minimal, reproducible example then open a bug report.

-- J.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment