Example usage for com.vaadin.ui HorizontalLayout addComponent

List of usage examples for com.vaadin.ui HorizontalLayout addComponent

Introduction

In this page you can find the example usage for com.vaadin.ui HorizontalLayout addComponent.

Prototype

@Override
public void addComponent(Component c) 

Source Link

Document

Add a component into this container.

Usage

From source file:ac.uk.icl.dell.vaadin.glycanbuilder.VaadinGlycanCanvas.java

License:Open Source License

public void forceLinkagePopRepaint() {
    registerLinkageListeners();//from  ww w.j a  v  a2s  .  c  o m

    WeeLayout toolBar = new WeeLayout(Direction.HORIZONTAL);
    toolBar.setWidth("100%");

    HorizontalLayout popupLayout = new HorizontalLayout();
    linkage_one_panel = new PopupView("1st Linkage", popupLayout);
    if (field_linkage_position.isEnabled() || field_anomeric_carbon.isEnabled()
            || field_anomeric_state.isEnabled() || field_chirality.isEnabled() || field_ring_size.isEnabled()) {
        linkage_one_panel.setEnabled(true);
    } else {
        linkage_one_panel.setEnabled(false);
    }

    popupLayout.addStyleName("1st_linkage_panel");

    popupLayout.addComponent(field_anomeric_state);
    popupLayout.addComponent(field_anomeric_carbon);
    popupLayout.addComponent(field_linkage_position);
    popupLayout.addComponent(field_chirality);
    popupLayout.addComponent(field_ring_size);

    //      boolean enabled=linkage_two_panel.isEnabled();
    //      linkage_two_panel = new PopupButton("2nd Linkage");
    //      linkage_two_panel.setEnabled(enabled);
    //      linkage_two_panel.setComponent(popupLayout2);

    //      linkage_one_panel.addStyleName(BaseTheme.BUTTON_LINK);
    //      linkage_two_panel.addStyleName("link");

    linkage_two_panel.addStyleName("igg-glycan-builder-linkage-toolbar-panel-item");
    linkage_one_panel.addStyleName("igg-glycan-builder-linkage-toolbar-panel-item");
    field_second_bond.addStyleName("igg-glycan-builder-linkage-toolbar-panel-item");

    toolBar.addComponent(linkage_one_panel);

    popupLayout2.addComponent(field_second_child_position);
    popupLayout2.addComponent(field_second_parent_position);

    toolBar.addComponent(field_second_bond);

    toolBar.addComponent(linkage_two_panel);

    linkagePanel.removeAllComponents();
    linkagePanel.setContent(toolBar);

    linkagePanel.requestRepaintAll();
}

From source file:ac.uk.icl.dell.vaadin.glycanbuilder.VaadinGlycanCanvas.java

License:Open Source License

public void appendGeneralToolBar(Panel theToolBarPanel) {
    HorizontalLayout toolBar = new HorizontalLayout();
    toolBar.setWidth("100%");

    toolBar.setStyleName("toolbar");

    NativeButton deleteButton = new NativeButton("Delete");
    deleteButton.setIcon(new ThemeResource("icons/deleteNew.png"));
    deleteButton.addListener(new ClickListener() {
        private static final long serialVersionUID = 1289257412952359727L;

        @Override/*from   www .jav a  2 s .  com*/
        public void buttonClick(ClickEvent event) {
            theCanvas.delete();
        }
    });
    deleteButton.setEnabled(false);

    NativeButton copyButton = new NativeButton("Copy");
    final NativeButton pasteButton = new NativeButton("Paste");
    copyButton.setIcon(new ThemeResource("icons/editcopy.png"));
    copyButton.addListener(new ClickListener() {
        private static final long serialVersionUID = -1740735587078805580L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.copy();
            pasteButton.setEnabled(true);
        }
    });
    copyButton.setEnabled(false);

    pasteButton.setIcon(new ThemeResource("icons/editpaste.png"));
    pasteButton.addListener(new ClickListener() {
        private static final long serialVersionUID = -8732259244009686729L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.paste();
            pasteButton.setEnabled(false);
        }
    });
    pasteButton.setEnabled(false);

    final NativeButton bracketButton = new NativeButton("Bracket");
    bracketButton.setIcon(new ThemeResource("icons/bracket.png"));
    bracketButton.addListener(new ClickListener() {
        private static final long serialVersionUID = 5201094306113759901L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.addBracket();
        }
    });
    bracketButton.setEnabled(false);

    final NativeButton repeatButton = new NativeButton("Repeat");
    repeatButton.setIcon(new ThemeResource("icons/repeat.png"));
    repeatButton.addListener(new ClickListener() {
        private static final long serialVersionUID = -23302591439643695L;

        @Override
        public void buttonClick(ClickEvent event) {
            try {
                theCanvas.addRepeat();
            } catch (Exception ex) {
                showMessage(ex.getMessage(), "400px", "100px", "Error creating repeat");
            }
        }
    });
    repeatButton.setEnabled(false);

    componentsWithResidueSelectionDependency.add(repeatButton);
    componentsWithResidueSelectionDependency.add(bracketButton);
    componentsWithResidueSelectionDependency.add(deleteButton);
    componentsWithResidueSelectionDependency.add(copyButton);

    final NativeButton orientationButton = new NativeButton("Orientation");

    orientationButton.setIcon(new ThemeResource("icons/" + theCanvas.getOrientationIcon()));
    orientationButton.addListener(new ClickListener() {
        private static final long serialVersionUID = 6621021858668446143L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.changeOrientation();
            orientationButton.setIcon(new ThemeResource("icons/" + theCanvas.getOrientationIcon()));
        }
    });

    final NativeButton selectAllButton = new NativeButton("Select all");

    selectAllButton.setIcon(new ThemeResource("icons/selectall.png"));
    selectAllButton.addListener(new ClickListener() {
        private static final long serialVersionUID = -5848923636575805154L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.selectAll();
            theCanvas.documentUpdated();
        }
    });

    final NativeButton deSelectAllButton = new NativeButton("Select none");

    deSelectAllButton.setIcon(new ThemeResource("icons/deselect.png"));
    deSelectAllButton.addListener(new ClickListener() {
        private static final long serialVersionUID = 8339468775345706027L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.resetSelection();
            theCanvas.documentUpdated();
        }
    });

    final NativeButton moveCWButton = new NativeButton("Move CW");

    moveCWButton.setIcon(new ThemeResource("icons/rotatecw.png"));
    moveCWButton.addListener(new ClickListener() {
        private static final long serialVersionUID = -6061975045440741204L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.onMoveCW();
        }
    });

    componentsWithResidueSelectionDependency.add(moveCWButton);

    final NativeButton moveCCWButton = new NativeButton("Move CCW");

    moveCCWButton.setIcon(new ThemeResource("icons/rotateccw.png"));
    moveCCWButton.addListener(new ClickListener() {
        private static final long serialVersionUID = 3555726070782377309L;

        @Override
        public void buttonClick(ClickEvent event) {
            theCanvas.onMoveCCW();
        }
    });

    componentsWithResidueSelectionDependency.add(moveCCWButton);

    toolBar.addComponent(deleteButton);
    toolBar.addComponent(copyButton);
    toolBar.addComponent(pasteButton);
    toolBar.addComponent(orientationButton);
    toolBar.addComponent(selectAllButton);
    toolBar.addComponent(deSelectAllButton);
    toolBar.addComponent(bracketButton);
    toolBar.addComponent(repeatButton);
    toolBar.addComponent(moveCWButton);
    toolBar.addComponent(moveCCWButton);

    HorizontalLayout layout = new HorizontalLayout();
    layout.setSizeFull();

    toolBar.addComponent(layout);
    toolBar.setExpandRatio(layout, 1);

    theToolBarPanel.setContent(toolBar);
}

From source file:ac.uk.icl.dell.vaadin.navigator7.IGGAppLevelWindow.java

License:Open Source License

@Override
protected Component createFooter() {
    HorizontalLayout layout = new HorizontalLayout();
    layout.setWidth("100%");

    layout.addStyleName("white-background");

    layout.addComponent(new Label("GlycanBuilder"));

    return layout;
}

From source file:adminviews.MCCView.java

License:Open Source License

public MCCView(IOpenBisClient openbis, OpenbisCreationController creationController, String user) {
    this.openbis = openbis;
    this.creator = creationController;
    this.user = user;

    this.cases = new HashSet<String>();
    this.patients = new ArrayList<String>();

    mccProjects = new ComboBox("Source Project");
    List<String> projects = new ArrayList<String>();
    for (Project p : openbis.getProjectsOfSpace(mccSpace))
        projects.add(p.getCode());//from  ww w .  java  2  s  . co  m
    mccProjects.addStyleName(Styles.boxTheme);
    mccProjects.addItems(projects);
    mccProjects.setImmediate(true);

    newProject = new StandardTextField("New Project");
    newProject.setImmediate(true);
    newProject.setWidth("80px");

    HorizontalLayout projectTab = new HorizontalLayout();
    projectTab.setSpacing(true);
    projectTab.addComponent(mccProjects);
    projectTab.addComponent(newProject);

    treatment = new StandardTextField("Treatment");
    timepoint = new StandardTextField("Timepoint");
    timepoint.setWidth("40px");
    patient = new StandardTextField("Patient #");
    patient.setWidth("50px");

    HorizontalLayout paramTab = new HorizontalLayout();
    paramTab.setSpacing(true);
    paramTab.addComponent(treatment);
    paramTab.addComponent(patient);
    paramTab.addComponent(timepoint);

    existingPatients = new Table("Existing Patients");
    existingPatients.setStyleName(Styles.tableTheme);
    existingPatients.setPageLength(1);

    editView = new TabSheet();
    editView.addStyleName(ValoTheme.TABSHEET_FRAMED);

    samples = new Table("Samples");
    samples.setStyleName(Styles.tableTheme);
    samples.setPageLength(1);

    metaData = new Table();
    metaData.setEditable(true);
    metaData.setStyleName(Styles.tableTheme);

    editView.addTab(samples, "Overview");
    editView.addTab(metaData, "Change Metadata");
    editView.setVisible(false);

    registerInfo = new Label();
    bar = new ProgressBar();
    addSamples = new Button("Add Samples");
    addSamples.setEnabled(false);
    initMCCListeners();
    addComponent(Styles.questionize(projectTab,
            "Samples can only be added if Timepoint, Treatment, Project and Patient Number "
                    + "are filled in and they don't already exist in the current project. E.g. you can add a new timepoint for the same patient and "
                    + "treatment but not the same timepoint.",
            "Adding new Samples"));
    addComponent(paramTab);
    addComponent(existingPatients);
    addComponent(editView);
    addComponent(registerInfo);
    addComponent(bar);
    addComponent(addSamples);
}

From source file:annis.gui.AboutWindow.java

License:Apache License

public AboutWindow() {
    setSizeFull();// w w w . j  a  va  2s.c o m

    layout = new VerticalLayout();
    setContent(layout);
    layout.setSizeFull();
    layout.setMargin(true);

    HorizontalLayout hLayout = new HorizontalLayout();

    Embedded logoAnnis = new Embedded();
    logoAnnis.setSource(new ThemeResource("images/annis-logo-128.png"));
    logoAnnis.setType(Embedded.TYPE_IMAGE);
    hLayout.addComponent(logoAnnis);

    Embedded logoSfb = new Embedded();
    logoSfb.setSource(new ThemeResource("images/sfb-logo.jpg"));
    logoSfb.setType(Embedded.TYPE_IMAGE);
    hLayout.addComponent(logoSfb);

    Link lnkFork = new Link();
    lnkFork.setResource(new ExternalResource("https://github.com/korpling/ANNIS"));
    lnkFork.setIcon(
            new ExternalResource("https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"));
    lnkFork.setTargetName("_blank");
    hLayout.addComponent(lnkFork);

    hLayout.setComponentAlignment(logoAnnis, Alignment.MIDDLE_LEFT);
    hLayout.setComponentAlignment(logoSfb, Alignment.MIDDLE_RIGHT);
    hLayout.setComponentAlignment(lnkFork, Alignment.TOP_RIGHT);

    layout.addComponent(hLayout);

    layout.addComponent(new Label(
            "ANNIS is a project of the " + "<a href=\"http://www.sfb632.uni-potsdam.de/\">SFB632</a>.",
            Label.CONTENT_XHTML));
    layout.addComponent(new Label("Homepage: " + "<a href=\"http://corpus-tools.org/annis/\">"
            + "http://corpus-tools.org/annis/</a>.", Label.CONTENT_XHTML));
    layout.addComponent(new Label("Version: " + VersionInfo.getVersion()));
    layout.addComponent(new Label("Vaadin-Version: " + Version.getFullVersion()));

    TextArea txtThirdParty = new TextArea();
    txtThirdParty.setSizeFull();

    StringBuilder sb = new StringBuilder();

    sb.append("The ANNIS team wants to thank these third party software that "
            + "made the ANNIS GUI possible:\n");

    File thirdPartyFolder = new File(VaadinService.getCurrent().getBaseDirectory(), "THIRD-PARTY");
    if (thirdPartyFolder.isDirectory()) {
        for (File c : thirdPartyFolder.listFiles((FileFilter) new WildcardFileFilter("*.txt"))) {
            if (c.isFile()) {
                try {
                    sb.append(FileUtils.readFileToString(c)).append("\n");
                } catch (IOException ex) {
                    log.error("Could not read file", ex);
                }
            }
        }
    }

    txtThirdParty.setValue(sb.toString());
    txtThirdParty.setReadOnly(true);
    txtThirdParty.addStyleName("shared-text");
    txtThirdParty.setWordwrap(false);

    layout.addComponent(txtThirdParty);

    btClose = new Button("Close");
    final AboutWindow finalThis = this;
    btClose.addClickListener(new OkClickListener(finalThis));
    layout.addComponent(btClose);

    layout.setComponentAlignment(hLayout, Alignment.MIDDLE_CENTER);
    layout.setComponentAlignment(btClose, Alignment.MIDDLE_CENTER);
    layout.setExpandRatio(txtThirdParty, 1.0f);

}

From source file:annis.gui.admin.ImportPanel.java

License:Apache License

public ImportPanel() {

    setSizeFull();/*from   ww  w.  j a v a  2  s.c om*/

    layout = new VerticalLayout();
    layout.setWidth("100%");
    layout.setHeight("100%");
    layout.setMargin(true);

    setContent(layout);

    FormLayout form = new FormLayout();
    layout.addComponent(form);

    cbOverwrite = new CheckBox("Overwrite existing corpus");
    form.addComponent(cbOverwrite);

    txtMail = new TextField("e-mail address for status updates");
    txtMail.addValidator(new EmailValidator("Must be a valid e-mail address"));
    form.addComponent(txtMail);

    txtAlias = new TextField("alias name");
    form.addComponent(txtAlias);

    HorizontalLayout actionBar = new HorizontalLayout();
    actionBar.setSpacing(true);
    actionBar.setWidth("100%");

    upload = new Upload("", this);
    upload.setButtonCaption("Upload ZIP file with relANNIS corpus and start import");
    upload.setImmediate(true);
    upload.addStartedListener(this);
    upload.addFinishedListener(this);
    upload.setEnabled(true);

    actionBar.addComponent(upload);

    progress = new ProgressBar();
    progress.setIndeterminate(true);
    progress.setVisible(false);

    actionBar.addComponent(progress);

    lblProgress = new Label();
    lblProgress.setWidth("100%");

    actionBar.addComponent(lblProgress);

    actionBar.setExpandRatio(lblProgress, 1.0f);
    actionBar.setComponentAlignment(lblProgress, Alignment.MIDDLE_LEFT);
    actionBar.setComponentAlignment(upload, Alignment.MIDDLE_LEFT);
    actionBar.setComponentAlignment(progress, Alignment.MIDDLE_LEFT);

    layout.addComponent(actionBar);

    btDetailedLog = new Button();
    btDetailedLog.setStyleName(BaseTheme.BUTTON_LINK);
    btDetailedLog.addClickListener(new Button.ClickListener() {

        @Override
        public void buttonClick(Button.ClickEvent event) {
            setLogVisible(!isLogVisible());
        }
    });
    layout.addComponent(btDetailedLog);

    txtMessages = new TextArea();
    txtMessages.setSizeFull();
    txtMessages.setValue("");
    txtMessages.setReadOnly(true);
    layout.addComponent(txtMessages);

    layout.setExpandRatio(txtMessages, 1.0f);

    setLogVisible(false);
    appendMessage("Ready.");

}

From source file:annis.gui.AutoGeneratedQueries.java

License:Apache License

private Panel getOpenCorpusPanel(final String corpusName) {
    Panel p = new Panel();
    p.addStyleName(ChameleonTheme.PANEL_BORDERLESS);

    final Button btn = new Button(corpusName);
    final HorizontalLayout l = new HorizontalLayout();

    p.setContent(l);//www  . j  a v a2s  .  c  o  m
    btn.setStyleName(BaseTheme.BUTTON_LINK);
    btn.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            CorpusListPanel corpusList = ui.getControlPanel().getCorpusList();
            corpusList.initCorpusBrowser(corpusName);
        }
    });

    l.addComponent(btn);

    return p;
}

From source file:annis.gui.flatquerybuilder.SearchBox.java

License:Apache License

public SearchBox(final String ebene, final FlatQueryBuilder sq, final VerticalNode vn, boolean isRegex,
        boolean negativeSearch) {
    this.vn = vn;
    this.ebene = ebene;
    this.sq = sq;
    this.vfs = new ArrayList<>();
    vnframe = new VerticalLayout();
    vnframe.setSpacing(true);//from   ww w .ja  va  2  s . c  o m
    vnframe.setImmediate(true);
    this.sb = new VerticalLayout(); //maybe other name? sb is "reserved" by SearchBox
    sb.setImmediate(true);
    sb.setSpacing(false); //used to be true
    lbl = new Label(ebene);
    HorizontalLayout sbtoolbar = new HorizontalLayout();
    sbtoolbar.setSpacing(false);
    // searchbox tickbox for regex
    reBox = new CheckBox(CAPTION_REBOX);
    reBox.setImmediate(true);
    sbtoolbar.addComponent(reBox);
    reBox.addValueChangeListener(new ValueChangeListener() {
        // TODO make this into a nice subroutine
        @Override
        public void valueChange(ValueChangeEvent event) {
            if (reBox.getValue()) {
                for (ValueField vf : vfs) {
                    String value = vf.getValue();
                    vf.setValueMode(ValueField.ValueMode.REGEX);
                    if (value != null) {
                        vf.setValue(sq.escapeRegexCharacters(value));
                    }
                }
            } else {
                for (ValueField vf : vfs) {
                    String value = vf.getValue();
                    vf.setValueMode(ValueField.ValueMode.NORMAL);
                    if (value != null) {
                        vf.setValue(sq.unescape(value));
                    }
                }
            }
        }
    });
    reBox.setValue(isRegex);
    reBox.setEnabled(true);
    reBoxSingleValue = isRegex;
    // searchbox tickbox for negative search
    negSearchBox = new CheckBox(NEGATIVE_SEARCH_LABEL);
    negSearchBox.setImmediate(true);
    negSearchBox.setValue(negativeSearch);

    sbtoolbar.addComponent(negSearchBox);
    // close the searchbox
    btClose = new Button(BUTTON_CLOSE_LABEL, (Button.ClickListener) this);
    btClose.setStyleName(ValoTheme.BUTTON_SMALL);

    HorizontalLayout titleBar = new HorizontalLayout();
    titleBar.setWidth(vnframe.getWidth(), vnframe.getWidthUnits());
    titleBar.addComponent(lbl);
    titleBar.setComponentAlignment(lbl, Alignment.BOTTOM_LEFT);
    titleBar.addComponent(btClose);
    titleBar.setComponentAlignment(btClose, Alignment.TOP_RIGHT);

    btAdd = new Button(LABEL_BUTTON_ADD);
    btAdd.addClickListener((Button.ClickListener) this);
    btAdd.setStyleName(ValoTheme.BUTTON_SMALL);

    vnframe.addComponent(titleBar);
    vnframe.addComponent(sb);
    vnframe.addComponent(btAdd);
    vnframe.setComponentAlignment(btAdd, Alignment.BOTTOM_RIGHT);
    vnframe.addComponent(sbtoolbar);

    ValueField vf = new ValueField(sq, this, ebene);
    vf.setProtected(true);
    vfs.add(vf);
    sb.addComponent(vf);

    setContent(vnframe);
}

From source file:annis.gui.flatquerybuilder.SpanBox.java

License:Apache License

public SpanBox(final String ebene, final FlatQueryBuilder sq, boolean isRegex) {
    this.ebene = ebene;
    this.sq = sq;
    sb = new HorizontalLayout();
    sb.setImmediate(true);// w  w  w.ja v  a2s .  co m
    sb.setSpacing(true);
    sb.setMargin(true);
    ConcurrentSkipListSet<String> annos = new ConcurrentSkipListSet<>();
    for (String a : sq.getAvailableAnnotationLevels(ebene)) {
        annos.add(a);
    }
    this.annonames = annos;
    Label tf = new Label(ebene);
    sb.addComponent(tf);
    this.cb = new SensitiveComboBox();
    cb.setWidth(SB_CB_WIDTH);
    cb.addStyleName(Helper.CORPUS_FONT_FORCE);
    // configure & load content
    cb.setImmediate(true);
    cb.setNewItemsAllowed(true);
    cb.setTextInputAllowed(true);
    for (String annoname : this.annonames) {
        cb.addItem(annoname);
    }
    cb.setFilteringMode(AbstractSelect.Filtering.FILTERINGMODE_OFF);
    cb.addListener((FieldEvents.TextChangeListener) this);
    sb.addComponent(cb);
    HorizontalLayout sbtoolbar = new HorizontalLayout();
    sbtoolbar.setSpacing(true);
    // searchbox tickbox for regex
    CheckBox tb = new CheckBox("Regex");
    tb.setImmediate(true);
    tb.setValue(isRegex);
    sbtoolbar.addComponent(tb);
    tb.addValueChangeListener(new ValueChangeListener() {
        // TODO make this into a nice subroutine
        @Override
        public void valueChange(ValueChangeEvent event) {
            boolean r = reBox.getValue();
            if (!r) {
                SpanBox.buildBoxValues(cb, ebene, sq);
            } else if (cb.getValue() != null) {
                String escapedItem = sq.escapeRegexCharacters(cb.getValue().toString());
                cb.addItem(escapedItem);
                cb.setValue(escapedItem);
            }
        }
    });
    reBox = tb;
    // close the searchbox
    btClose = new Button(BUTTON_CLOSE_LABEL, (Button.ClickListener) this);
    btClose.setStyleName(ChameleonTheme.BUTTON_SMALL);
    sbtoolbar.addComponent(btClose);
    // make visable
    sb.addComponent(sbtoolbar);
    setContent(sb);
}

From source file:annis.gui.frequency.FrequencyQueryPanel.java

License:Apache License

public FrequencyQueryPanel(final QueryController controller, QueryUIState state) {
    this.controller = controller;
    this.state = state;

    setWidth("99%");
    setHeight("99%");
    setMargin(true);/*from   w  w  w  .  j a  va 2s .  c om*/

    queryLayout = new VerticalLayout();
    queryLayout.setWidth("100%");
    queryLayout.setHeight("100%");

    HorizontalLayout queryDescriptionLayout = new HorizontalLayout();
    queryDescriptionLayout.setSpacing(true);
    queryDescriptionLayout.setWidth("100%");
    queryDescriptionLayout.setHeight("-1px");
    queryLayout.addComponent(queryDescriptionLayout);

    lblCorpusList = new Label("");
    lblCorpusList.setCaption("selected corpora:");
    lblCorpusList.setWidth("100%");

    lblAQL = new Label("");
    lblAQL.setCaption("query to analyze:");
    lblAQL.setWidth("100%");
    lblAQL.addStyleName(Helper.CORPUS_FONT_FORCE);

    queryDescriptionLayout.addComponent(lblCorpusList);
    queryDescriptionLayout.addComponent(lblAQL);

    queryDescriptionLayout.setComponentAlignment(lblCorpusList, Alignment.MIDDLE_LEFT);
    queryDescriptionLayout.setComponentAlignment(lblAQL, Alignment.MIDDLE_RIGHT);

    tblFrequencyDefinition = new Table();
    tblFrequencyDefinition.setImmediate(true);
    tblFrequencyDefinition.setSortEnabled(false);
    tblFrequencyDefinition.setSelectable(true);
    tblFrequencyDefinition.setMultiSelect(true);
    tblFrequencyDefinition.setTableFieldFactory(new FieldFactory());
    tblFrequencyDefinition.setEditable(true);
    tblFrequencyDefinition.addValueChangeListener(new Property.ValueChangeListener() {
        @Override
        public void valueChange(ValueChangeEvent event) {
            if (tblFrequencyDefinition.getValue() == null
                    || ((Set<Object>) tblFrequencyDefinition.getValue()).isEmpty()) {
                btDeleteRow.setEnabled(false);
            } else {
                btDeleteRow.setEnabled(true);
            }
        }
    });

    lblErrorOrMsg = new Label("No node with explicit name in OR expression found! "
            + "When using OR expression you need to explicitly name the nodes "
            + "you want to include in the frequency analysis with \"#\", " + "like e.g. in <br />" + "<pre>"
            + "(n1#tok=\"fun\" | n1#tok=\"severity\")" + "</pre>");
    lblErrorOrMsg.setContentMode(ContentMode.HTML);
    lblErrorOrMsg.addStyleName("embedded-warning");
    lblErrorOrMsg.setWidth("100%");
    lblErrorOrMsg.setVisible(false);
    queryLayout.addComponent(lblErrorOrMsg);

    tblFrequencyDefinition.setWidth("100%");
    tblFrequencyDefinition.setHeight("100%");

    tblFrequencyDefinition.setContainerDataSource(state.getFrequencyTableDefinition());

    tblFrequencyDefinition.setColumnHeader("nr", "Node number/name");
    tblFrequencyDefinition.setColumnHeader("annotation", "Selected annotation of node");
    tblFrequencyDefinition.setColumnHeader("comment", "Comment");

    tblFrequencyDefinition.addStyleName(Helper.CORPUS_FONT_FORCE);

    tblFrequencyDefinition.setRowHeaderMode(Table.RowHeaderMode.INDEX);

    tblFrequencyDefinition.setColumnExpandRatio("nr", 0.15f);
    tblFrequencyDefinition.setColumnExpandRatio("annotation", 0.35f);
    tblFrequencyDefinition.setColumnExpandRatio("comment", 0.5f);
    tblFrequencyDefinition.setVisibleColumns("nr", "annotation", "comment");

    queryLayout.addComponent(tblFrequencyDefinition);

    metaNamesContainer = new IndexedContainer();
    PopupTwinColumnSelect metaSelect = new PopupTwinColumnSelect();
    metaSelect.setSelectableContainer(metaNamesContainer);
    metaSelect.setPropertyDataSource(state.getFrequencyMetaData());
    metaSelect.setCaption("Metadata");

    queryLayout.addComponent(metaSelect);

    if (controller != null) {
        createAutomaticEntriesForQuery(state.getAql().getValue());
        updateQueryInfo(state.getAql().getValue());
    }

    HorizontalLayout layoutButtons = new HorizontalLayout();

    btAdd = new Button("Add");
    btAdd.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(ClickEvent event) {
            cbAutomaticMode.setValue(Boolean.FALSE);

            int nr = 1;
            // get the highest number of values from the existing defitions
            for (Object id : tblFrequencyDefinition.getItemIds()) {
                String textNr = (String) tblFrequencyDefinition.getItem(id).getItemProperty("nr").getValue();
                try {
                    nr = Math.max(nr, Integer.parseInt(textNr));
                } catch (NumberFormatException ex) {
                    // was not a number but a named node
                }
            }
            if (controller != null) {
                List<QueryNode> nodes = parseQuery(FrequencyQueryPanel.this.state.getAql().getValue());
                nr = Math.min(nr, nodes.size() - 1);
                int id = counter++;
                UserGeneratedFrequencyEntry entry = new UserGeneratedFrequencyEntry();
                entry.setAnnotation("tok");
                entry.setComment("");
                entry.setNr("" + (nr + 1));
                FrequencyQueryPanel.this.state.getFrequencyTableDefinition().addItem(id, entry);
            }
        }
    });
    layoutButtons.addComponent(btAdd);

    btDeleteRow = new Button("Delete selected row(s)");
    btDeleteRow.setEnabled(false);
    btDeleteRow.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(ClickEvent event) {
            Set<Object> selected = new HashSet((Set<Object>) tblFrequencyDefinition.getValue());
            for (Object o : selected) {
                cbAutomaticMode.setValue(Boolean.FALSE);
                tblFrequencyDefinition.removeItem(o);

            }
        }
    });
    layoutButtons.addComponent(btDeleteRow);

    cbAutomaticMode = new CheckBox("Automatic mode", true);
    cbAutomaticMode.setImmediate(true);
    cbAutomaticMode.addValueChangeListener(new Property.ValueChangeListener() {
        @Override
        public void valueChange(ValueChangeEvent event) {
            btShowFrequencies.setEnabled(true);
            if (cbAutomaticMode.getValue()) {
                tblFrequencyDefinition.removeAllItems();
                if (controller != null) {
                    createAutomaticEntriesForQuery(FrequencyQueryPanel.this.state.getAql().getValue());
                }
            }
        }
    });
    layoutButtons.addComponent(cbAutomaticMode);

    btReset = new Button("Reset to default");
    btReset.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(ClickEvent event) {
            cbAutomaticMode.setValue(Boolean.TRUE);
            btShowFrequencies.setEnabled(true);
            tblFrequencyDefinition.removeAllItems();
            if (controller != null) {
                createAutomaticEntriesForQuery(FrequencyQueryPanel.this.state.getAql().getValue());
            }
        }
    });
    //layoutButtons.addComponent(btReset);

    layoutButtons.setComponentAlignment(btAdd, Alignment.MIDDLE_LEFT);
    layoutButtons.setComponentAlignment(btDeleteRow, Alignment.MIDDLE_LEFT);
    layoutButtons.setComponentAlignment(cbAutomaticMode, Alignment.MIDDLE_RIGHT);
    layoutButtons.setExpandRatio(btAdd, 0.0f);
    layoutButtons.setExpandRatio(btDeleteRow, 0.0f);
    layoutButtons.setExpandRatio(cbAutomaticMode, 1.0f);

    layoutButtons.setMargin(true);
    layoutButtons.setSpacing(true);
    layoutButtons.setHeight("-1px");
    layoutButtons.setWidth("100%");

    queryLayout.addComponent(layoutButtons);

    btShowFrequencies = new Button("Perform frequency analysis");
    btShowFrequencies.setDisableOnClick(true);
    btShowFrequencies.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(ClickEvent event) {

            if (controller != null) {
                try {
                    if (resultPanel != null) {
                        removeComponent(resultPanel);
                    }
                    queryLayout.setVisible(false);

                    pbQuery.setCaption("Please wait, the frequencies analysis can take some time");
                    pbQuery.setIndeterminate(true);
                    pbQuery.setEnabled(true);
                    pbQuery.setVisible(true);

                    controller.executeFrequency(FrequencyQueryPanel.this);
                } catch (Exception ex) {
                    btShowFrequencies.setEnabled(true);
                }
            }

        }
    });
    queryLayout.addComponent(btShowFrequencies);

    queryLayout.setComponentAlignment(tblFrequencyDefinition, Alignment.TOP_CENTER);
    queryLayout.setComponentAlignment(layoutButtons, Alignment.TOP_CENTER);
    queryLayout.setComponentAlignment(btShowFrequencies, Alignment.TOP_CENTER);

    queryLayout.setExpandRatio(tblFrequencyDefinition, 1.0f);
    queryLayout.setExpandRatio(layoutButtons, 0.0f);
    queryLayout.setExpandRatio(btShowFrequencies, 0.0f);

    queryLayout.addLayoutClickListener(new LayoutEvents.LayoutClickListener() {
        @Override
        public void layoutClick(LayoutEvents.LayoutClickEvent event) {
            Component c = event.getClickedComponent();
            if (c instanceof Field) {
                Object itemID = getField2ItemID().get((Field) c);
                if (itemID != null) {
                    if (!event.isCtrlKey() && !event.isShiftKey()) {
                        // deselect everything else if no modifier key was clicked
                        tblFrequencyDefinition.setValue(null);
                    }
                    // select the item
                    tblFrequencyDefinition.select(itemID);
                }
            }
        }
    });

    btShowQuery = new Button("New Analysis", new Button.ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            showQueryDefinitionPanel();
        }
    });
    btShowQuery.setVisible(false);

    pbQuery.setVisible(false);
    addComponent(pbQuery);

    addComponent(queryLayout);
    addComponent(btShowQuery);

    setComponentAlignment(btShowQuery, Alignment.TOP_CENTER);
    setComponentAlignment(pbQuery, Alignment.TOP_CENTER);

    if (controller != null) {
        state.getSelectedCorpora().addValueChangeListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                if (cbAutomaticMode.getValue()) {
                    createAutomaticEntriesForQuery(FrequencyQueryPanel.this.state.getAql().getValue());
                }
                updateQueryInfo(FrequencyQueryPanel.this.state.getAql().getValue());
            }
        });
    }
}