Package pl.net.bluesoft.rnd.processtool.ui.basewidgets

Source Code of pl.net.bluesoft.rnd.processtool.ui.basewidgets.TabSheetWidget

package pl.net.bluesoft.rnd.processtool.ui.basewidgets;

import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.*;
import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolVaadinRenderable;
import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolVaadinWidget;
import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolWidget;
import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AliasName;
import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AperteDoc;
import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.ChildrenAllowed;
import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.WidgetGroup;
import pl.net.bluesoft.rnd.processtool.ui.widgets.impl.BaseProcessToolVaadinWidget;

import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;

import static com.vaadin.ui.Label.CONTENT_XHTML;

/**
* @author tlipski@bluesoft.net.pl
*/
@AliasName(name = "TabSheet")
@AperteDoc(humanNameKey="widget.tab_sheet.name", descriptionKey="widget.tab_sheet.description")
@ChildrenAllowed(true)
@WidgetGroup("base-widgets")
public class TabSheetWidget extends BaseProcessToolVaadinWidget implements ProcessToolVaadinRenderable {

  private static final Logger logger = Logger.getLogger(TabSheetWidget.class.getName());
  private TabSheet ts = new TabSheet();


  @Override
  public Component render() {
    ts.setWidth(100, Sizeable.UNITS_PERCENTAGE);
    return ts;
  }

  @Override
  public void addChild(ProcessToolWidget child) {
    if (!(child instanceof ProcessToolVaadinWidget)) {
      throw new IllegalArgumentException("child is not instance of " + ProcessToolVaadinWidget.class.getName());
    }

    Component component;
    ProcessToolVaadinWidget vChild = (ProcessToolVaadinWidget) child;
    try {
      component = vChild.render();
    } catch (Throwable e) {
      logger.log(Level.SEVERE, e.getMessage(), e);
            Panel p = new Panel();
            VerticalLayout vl = new VerticalLayout();
            vl.addComponent(new Label(getMessage("process.data.widget.exception-occurred")));
            vl.addComponent(new Label(e.getMessage()));
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            e.printStackTrace(new PrintWriter(baos));
            vl.addComponent(new Label("<pre>" + baos.toString() + "</pre>", CONTENT_XHTML));
            vl.addStyleName("error");
            p.addComponent(vl);
            p.setHeight("150px");
            component = p;
    }
    ts.addTab(component, getMessage(child.getAttributeValue("caption")), null);
    if (ts.getSelectedTab() == null)
      ts.setSelectedTab(component);

  }

}
TOP

Related Classes of pl.net.bluesoft.rnd.processtool.ui.basewidgets.TabSheetWidget

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.