Hi,
This example leads to error in vaadin:
import com.vaadin.event.ItemClickEvent;
import com.vaadin.server.ThemeResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Component;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.PasswordField;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import com.vaadin.ui.themes.Reindeer;
public class Main extends UI {
private AbsoluteLayout mainLayout;
private VerticalLayout topBar = new VerticalLayout();
private GridLayout menu;
private TextField editEmail = new TextField();
private PasswordField editPassword = new PasswordField();
@Override
protected void init(VaadinRequest request) {
mainLayout = new AbsoluteLayout();
mainLayout.setImmediate(true);
mainLayout.setWidth("100%");
mainLayout.setHeight("100%");
topBar.setHeight("50px");
topBar.setWidth("100%");
HorizontalLayout layoutLogin = new HorizontalLayout();
layoutLogin.setSpacing(true);
layoutLogin.setHeight("100%");
Label label_eMail = new Label("e-Mail:");
layoutLogin.addComponent(label_eMail);
editEmail.setWidth("200px");
editEmail.setTabIndex(1);
layoutLogin.addComponent(editEmail);
layoutLogin.addComponent(new Label(" "));
layoutLogin.addComponent(new Label(" "));
Label label_password = new Label("password:");
layoutLogin.addComponent(label_password);
editPassword.setWidth("100px");
editPassword.setTabIndex(2);
layoutLogin.addComponent(editPassword);
layoutLogin.addComponent(new Label(" "));
// btnLogin
Button btnLogin = new Button();
btnLogin.setCaption("Login");
btnLogin.setImmediate(false);
btnLogin.setWidth("-1px");
btnLogin.setHeight("-1px");
btnLogin.addClickListener(new Button.ClickListener() {
public void buttonClick(Button.ClickEvent event) {
login();
}
});
layoutLogin.addComponent(btnLogin);
for (int index = 0; index < layoutLogin.getComponentCount(); index++) {
layoutLogin.setComponentAlignment(layoutLogin.getComponent(index), Alignment.MIDDLE_CENTER);
}
// =====> THIS CODE generates error
// WITHOUT THIS CODE works fine
Embedded e = new Embedded("", new ThemeResource("images/background.jpg"));
e.setMimeType("image/jpg");
e.setWidth("100%");
e.setHeight("100%");
mainLayout.addComponent(e);
// =======
topBar.addComponent(layoutLogin);
mainLayout.addComponent(topBar, "left:0px;top:0px;");
menu = buildMenu();
menu.setVisible(false);
mainLayout.addComponent(menu, "left:20px;top:70px;");
setContent(mainLayout);
}
private GridLayout buildMenu() {
GridLayout gridButtons = new GridLayout(2, 3);
Button btn1 = new Button("Button one");
btn1.setImmediate(true);
btn1.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
}
});
gridButtons.addComponent(btn1, 0, 0);
Button btn2 = new Button("Button two");
btn2.setImmediate(true);
btn2.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
}
});
gridButtons.addComponent(btn2, 0, 1);
Button btn3 = new Button("Button three");
btn3.setImmediate(true);
btn3.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
}
});
gridButtons.addComponent(btn3, 1, 0);
return gridButtons;
}
private void login() {
menu.setVisible(true);
topBar.setVisible(false);
}
}
the error occurs in the method login ()
If not use the setVisible works fine.
removing
Embedded e = new Embedded("", new ThemeResource("images/background.jpg"));
e.setMimeType("image/jpg");
e.setWidth("100%");
e.setHeight("100%");
mainLayout.addComponent(e);
works fine.
Any ideas?