Search in sources :

Example 1 with SelectionNotifier

use of org.opennms.features.topology.api.SelectionNotifier in project opennms by OpenNMS.

the class TopologyUI method getTabSheet.

/**
     * Gets a {@link TabSheet} view for all widgets in this manager.
     *
     * @return TabSheet
     */
private Component getTabSheet(WidgetManager manager, WidgetContext widgetContext) {
    // Use an absolute layout for the bottom panel
    AbsoluteLayout bottomLayout = new AbsoluteLayout();
    bottomLayout.setSizeFull();
    tabSheet = new TabSheet();
    tabSheet.setSizeFull();
    for (IViewContribution viewContrib : manager.getWidgets()) {
        // Create a new view instance
        final Component view = viewContrib.getView(m_applicationContext, widgetContext);
        try {
            m_graphContainer.getSelectionManager().addSelectionListener((SelectionListener) view);
        } catch (ClassCastException e) {
        }
        try {
            ((SelectionNotifier) view).addSelectionListener(m_graphContainer.getSelectionManager());
        } catch (ClassCastException e) {
        }
        try {
            m_graphContainer.addChangeListener((GraphContainer.ChangeListener) view);
        } catch (ClassCastException e) {
        }
        // Icon can be null
        tabSheet.addTab(view, viewContrib.getTitle(), viewContrib.getIcon());
        // components to the tab bar
        try {
            Component[] extras = ((HasExtraComponents) view).getExtraComponents();
            if (extras != null && extras.length > 0) {
                // For any extra controls, add a horizontal layout that will float
                // on top of the right side of the tab panel
                final HorizontalLayout extraControls = new HorizontalLayout();
                extraControls.setHeight(32, Unit.PIXELS);
                extraControls.setSpacing(true);
                // Add the extra controls to the layout
                for (Component component : extras) {
                    extraControls.addComponent(component);
                    extraControls.setComponentAlignment(component, Alignment.MIDDLE_RIGHT);
                }
                // Add a TabSheet.SelectedTabChangeListener to show or hide the extra controls
                tabSheet.addSelectedTabChangeListener(new SelectedTabChangeListener() {

                    private static final long serialVersionUID = 6370347645872323830L;

                    @Override
                    public void selectedTabChange(SelectedTabChangeEvent event) {
                        final TabSheet source = (TabSheet) event.getSource();
                        if (source == tabSheet) {
                            // If the first tab was selected...
                            if (source.getSelectedTab() == view) {
                                extraControls.setVisible(true);
                            } else {
                                extraControls.setVisible(false);
                            }
                        }
                    }
                });
                // Place the extra controls on the absolute layout
                bottomLayout.addComponent(extraControls, "top:0px;right:5px;z-index:100");
            }
        } catch (ClassCastException e) {
        }
        view.setSizeFull();
    }
    // Add the tabsheet to the layout
    bottomLayout.addComponent(tabSheet, "top: 0; left: 0; bottom: 0; right: 0;");
    return bottomLayout;
}
Also used : HasExtraComponents(org.opennms.features.topology.api.HasExtraComponents) AbsoluteLayout(com.vaadin.ui.AbsoluteLayout) HorizontalLayout(com.vaadin.ui.HorizontalLayout) GraphContainer(org.opennms.features.topology.api.GraphContainer) SelectionNotifier(org.opennms.features.topology.api.SelectionNotifier) SelectedTabChangeEvent(com.vaadin.ui.TabSheet.SelectedTabChangeEvent) TabSheet(com.vaadin.ui.TabSheet) IViewContribution(org.opennms.features.topology.api.IViewContribution) SelectedTabChangeListener(com.vaadin.ui.TabSheet.SelectedTabChangeListener) LayoutHintComponent(org.opennms.features.topology.app.internal.ui.LayoutHintComponent) BreadcrumbComponent(org.opennms.features.topology.app.internal.ui.breadcrumbs.BreadcrumbComponent) Component(com.vaadin.ui.Component)

Aggregations

AbsoluteLayout (com.vaadin.ui.AbsoluteLayout)1 Component (com.vaadin.ui.Component)1 HorizontalLayout (com.vaadin.ui.HorizontalLayout)1 TabSheet (com.vaadin.ui.TabSheet)1 SelectedTabChangeEvent (com.vaadin.ui.TabSheet.SelectedTabChangeEvent)1 SelectedTabChangeListener (com.vaadin.ui.TabSheet.SelectedTabChangeListener)1 GraphContainer (org.opennms.features.topology.api.GraphContainer)1 HasExtraComponents (org.opennms.features.topology.api.HasExtraComponents)1 IViewContribution (org.opennms.features.topology.api.IViewContribution)1 SelectionNotifier (org.opennms.features.topology.api.SelectionNotifier)1 LayoutHintComponent (org.opennms.features.topology.app.internal.ui.LayoutHintComponent)1 BreadcrumbComponent (org.opennms.features.topology.app.internal.ui.breadcrumbs.BreadcrumbComponent)1