Search in sources :

Example 1 with InterfaceListComparator

use of org.netxms.ui.eclipse.objectview.objecttabs.helpers.InterfaceListComparator in project netxms by netxms.

the class InterfacesTab method createTabContent.

/* (non-Javadoc)
	 * @see org.netxms.ui.eclipse.objectview.objecttabs.ObjectTab#createTabContent(org.eclipse.swt.widgets.Composite)
	 */
@Override
protected void createTabContent(Composite parent) {
    final IDialogSettings settings = Activator.getDefault().getDialogSettings();
    // $NON-NLS-1$ //$NON-NLS-2$
    showFilter = safeCast(settings.get("InterfacesTab.showFilter"), settings.getBoolean("InterfacesTab.showFilter"), showFilter);
    // $NON-NLS-1$ //$NON-NLS-2$
    hideSubInterfaces = safeCast(settings.get("InterfacesTab.hideSubInterfaces"), settings.getBoolean("InterfacesTab.hideSubInterfaces"), hideSubInterfaces);
    // Create interface area
    interfacesArea = new Composite(parent, SWT.BORDER);
    FormLayout formLayout = new FormLayout();
    interfacesArea.setLayout(formLayout);
    // Create filter
    filterText = new FilterText(interfacesArea, SWT.NONE);
    filterText.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            onFilterModify();
        }
    });
    filterText.addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            // $NON-NLS-1$
            settings.put("InterfacesTab.showFilter", showFilter);
            // $NON-NLS-1$
            settings.put("InterfacesTab.hideSubInterfaces", hideSubInterfaces);
        }
    });
    Action action = new Action() {

        @Override
        public void run() {
            enableFilter(false);
            ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
            // $NON-NLS-1$
            Command command = service.getCommand("org.netxms.ui.eclipse.objectview.commands.show_filter");
            // $NON-NLS-1$
            State state = command.getState("org.netxms.ui.eclipse.objectview.commands.show_filter.state");
            state.setValue(false);
            service.refreshElements(command.getId(), null);
        }
    };
    setFilterCloseAction(action);
    // Check/uncheck menu items
    ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
    // $NON-NLS-1$
    Command command = service.getCommand("org.netxms.ui.eclipse.objectview.commands.show_filter");
    // $NON-NLS-1$
    State state = command.getState("org.netxms.ui.eclipse.objectview.commands.show_filter.state");
    state.setValue(showFilter);
    service.refreshElements(command.getId(), null);
    // $NON-NLS-1$
    command = service.getCommand("org.netxms.ui.eclipse.objectview.commands.hideSubInterfaces");
    // $NON-NLS-1$
    state = command.getState("org.netxms.ui.eclipse.objectview.commands.hideSubInterfaces.state");
    state.setValue(hideSubInterfaces);
    service.refreshElements(command.getId(), null);
    // Setup layout
    FormData fd = new FormData();
    fd.left = new FormAttachment(0, 0);
    fd.top = new FormAttachment(0, 0);
    fd.right = new FormAttachment(100, 0);
    filterText.setLayoutData(fd);
    final String[] names = { Messages.get().InterfacesTab_ColId, Messages.get().InterfacesTab_ColName, Messages.get().InterfacesTab_Alias, Messages.get().InterfacesTab_ColIfType, Messages.get().InterfacesTab_ColIfIndex, Messages.get().InterfacesTab_ColSlot, Messages.get().InterfacesTab_ColPort, Messages.get().InterfacesTab_MTU, Messages.get().InterfacesTab_Speed, Messages.get().InterfacesTab_ColDescription, Messages.get().InterfacesTab_ColMacAddr, Messages.get().InterfacesTab_ColIpAddr, Messages.get().InterfacesTab_ColPeerNode, Messages.get().InterfacesTab_ColPeerMAC, Messages.get().InterfacesTab_ColPeerIP, Messages.get().InterfacesTab_PeerDiscoveryProtocol, Messages.get().InterfacesTab_ColAdminState, Messages.get().InterfacesTab_ColOperState, Messages.get().InterfacesTab_ColExpState, Messages.get().InterfacesTab_ColStatus, Messages.get().InterfacesTab_Col8021xPAE, Messages.get().InterfacesTab_Col8021xBackend };
    final int[] widths = { 60, 150, 150, 150, 70, 70, 70, 70, 90, 150, 100, 90, 150, 100, 90, 80, 80, 80, 80, 80, 80, 80 };
    viewer = new SortableTableViewer(interfacesArea, names, widths, COLUMN_NAME, SWT.UP, SWT.FULL_SELECTION | SWT.MULTI);
    labelProvider = new InterfaceListLabelProvider();
    viewer.setLabelProvider(labelProvider);
    viewer.setContentProvider(new ArrayContentProvider());
    viewer.setComparator(new InterfaceListComparator());
    viewer.getTable().setHeaderVisible(true);
    viewer.getTable().setLinesVisible(true);
    filter = new InterfacesTabFilter();
    filter.setHideSubInterfaces(hideSubInterfaces);
    viewer.addFilter(filter);
    // $NON-NLS-1$
    WidgetHelper.restoreTableViewerSettings(viewer, Activator.getDefault().getDialogSettings(), "InterfaceTable.V4");
    viewer.getTable().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            // $NON-NLS-1$
            WidgetHelper.saveColumnSettings(viewer.getTable(), Activator.getDefault().getDialogSettings(), "InterfaceTable.V4");
        }
    });
    // Setup layout
    fd = new FormData();
    fd.left = new FormAttachment(0, 0);
    fd.top = new FormAttachment(filterText, 0, SWT.BOTTOM);
    fd.bottom = new FormAttachment(100, 0);
    fd.right = new FormAttachment(100, 0);
    viewer.getControl().setLayoutData(fd);
    createActions();
    createPopupMenu();
    // Set initial focus to filter input line
    if (showFilter)
        filterText.setFocus();
    else
        // Will hide filter area correctly
        enableFilter(false);
    sessionListener = new SessionListener() {

        @Override
        public void notificationHandler(SessionNotification n) {
            if (n.getCode() == SessionNotification.OBJECT_CHANGED) {
                AbstractObject object = (AbstractObject) n.getObject();
                if ((object != null) && (object instanceof Interface) && (getObject() != null) && object.isDirectChildOf(getObject().getObjectId())) {
                    viewer.getControl().getDisplay().asyncExec(new Runnable() {

                        @Override
                        public void run() {
                            refresh();
                        }
                    });
                }
            }
        }
    };
    ConsoleSharedData.getSession().addListener(sessionListener);
}
Also used : InterfaceListLabelProvider(org.netxms.ui.eclipse.objectview.objecttabs.helpers.InterfaceListLabelProvider) DisposeListener(org.eclipse.swt.events.DisposeListener) ExportToCsvAction(org.netxms.ui.eclipse.actions.ExportToCsvAction) Action(org.eclipse.jface.action.Action) ModifyListener(org.eclipse.swt.events.ModifyListener) SortableTableViewer(org.netxms.ui.eclipse.widgets.SortableTableViewer) DisposeEvent(org.eclipse.swt.events.DisposeEvent) ICommandService(org.eclipse.ui.commands.ICommandService) ModifyEvent(org.eclipse.swt.events.ModifyEvent) InterfacesTabFilter(org.netxms.ui.eclipse.objectview.objecttabs.helpers.InterfacesTabFilter) FilterText(org.netxms.ui.eclipse.widgets.FilterText) InterfaceListComparator(org.netxms.ui.eclipse.objectview.objecttabs.helpers.InterfaceListComparator) SessionNotification(org.netxms.client.SessionNotification) FormAttachment(org.eclipse.swt.layout.FormAttachment) FormLayout(org.eclipse.swt.layout.FormLayout) FormData(org.eclipse.swt.layout.FormData) Composite(org.eclipse.swt.widgets.Composite) IDialogSettings(org.eclipse.jface.dialogs.IDialogSettings) Command(org.eclipse.core.commands.Command) State(org.eclipse.core.commands.State) AbstractObject(org.netxms.client.objects.AbstractObject) ArrayContentProvider(org.eclipse.jface.viewers.ArrayContentProvider) SessionListener(org.netxms.client.SessionListener) Interface(org.netxms.client.objects.Interface)

Aggregations

Command (org.eclipse.core.commands.Command)1 State (org.eclipse.core.commands.State)1 Action (org.eclipse.jface.action.Action)1 IDialogSettings (org.eclipse.jface.dialogs.IDialogSettings)1 ArrayContentProvider (org.eclipse.jface.viewers.ArrayContentProvider)1 DisposeEvent (org.eclipse.swt.events.DisposeEvent)1 DisposeListener (org.eclipse.swt.events.DisposeListener)1 ModifyEvent (org.eclipse.swt.events.ModifyEvent)1 ModifyListener (org.eclipse.swt.events.ModifyListener)1 FormAttachment (org.eclipse.swt.layout.FormAttachment)1 FormData (org.eclipse.swt.layout.FormData)1 FormLayout (org.eclipse.swt.layout.FormLayout)1 Composite (org.eclipse.swt.widgets.Composite)1 ICommandService (org.eclipse.ui.commands.ICommandService)1 SessionListener (org.netxms.client.SessionListener)1 SessionNotification (org.netxms.client.SessionNotification)1 AbstractObject (org.netxms.client.objects.AbstractObject)1 Interface (org.netxms.client.objects.Interface)1 ExportToCsvAction (org.netxms.ui.eclipse.actions.ExportToCsvAction)1 InterfaceListComparator (org.netxms.ui.eclipse.objectview.objecttabs.helpers.InterfaceListComparator)1