Search in sources :

Example 1 with ObjectFilter

use of org.netxms.ui.eclipse.objectbrowser.widgets.internal.ObjectFilter in project netxms by netxms.

the class ChildObjectListDialog method createDialogArea.

/* (non-Javadoc)
	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
	 */
@Override
protected Control createDialogArea(Composite parent) {
    Composite dialogArea = (Composite) super.createDialogArea(parent);
    AbstractObject object = ((NXCSession) ConsoleSharedData.getSession()).findObjectById(parentObject);
    AbstractObject[] sourceObjects = (object != null) ? object.getChildsAsArray() : new AbstractObject[0];
    GridLayout layout = new GridLayout();
    layout.marginHeight = WidgetHelper.DIALOG_HEIGHT_MARGIN;
    layout.marginWidth = WidgetHelper.DIALOG_WIDTH_MARGIN;
    layout.verticalSpacing = WidgetHelper.OUTER_SPACING;
    dialogArea.setLayout(layout);
    // Create filter area
    Composite filterArea = new Composite(dialogArea, SWT.NONE);
    layout = new GridLayout();
    layout.numColumns = 2;
    layout.horizontalSpacing = WidgetHelper.INNER_SPACING;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    filterArea.setLayout(layout);
    filterArea.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    Label filterLabel = new Label(filterArea, SWT.NONE);
    filterLabel.setText(Messages.get().ChildObjectListDialog_Filter);
    filterText = new Text(filterArea, SWT.BORDER);
    filterText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    filterText.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            filter.setFilterString(filterText.getText());
            objectList.refresh(false);
            AbstractObject obj = filter.getLastMatch();
            if (obj != null) {
                objectList.setSelection(new StructuredSelection(obj), true);
                objectList.reveal(obj);
            }
        }
    });
    // Create object list
    objectList = new TableViewer(dialogArea, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
    TableColumn tc = new TableColumn(objectList.getTable(), SWT.LEFT);
    tc.setText(Messages.get().ChildObjectListDialog_Name);
    tc.setWidth(280);
    objectList.getTable().setHeaderVisible(false);
    objectList.setContentProvider(new ArrayContentProvider());
    objectList.setLabelProvider(new WorkbenchLabelProvider());
    objectList.setComparator(new ViewerComparator());
    filter = new ObjectFilter(null, sourceObjects, classFilter);
    objectList.addFilter(filter);
    GridData gd = new GridData();
    gd.horizontalAlignment = SWT.FILL;
    gd.grabExcessHorizontalSpace = true;
    gd.verticalAlignment = SWT.FILL;
    gd.grabExcessVerticalSpace = true;
    objectList.getControl().setLayoutData(gd);
    objectList.getTable().addControlListener(new ControlListener() {

        @Override
        public void controlMoved(ControlEvent e) {
        }

        @Override
        public void controlResized(ControlEvent e) {
            Table table = objectList.getTable();
            int w = table.getSize().x - table.getBorderWidth() * 2;
            ScrollBar sc = table.getVerticalBar();
            if ((sc != null) && sc.isVisible())
                w -= sc.getSize().x;
            table.getColumn(0).setWidth(w);
        }
    });
    if (object != null)
        objectList.setInput(sourceObjects);
    filterText.setFocus();
    return dialogArea;
}
Also used : WorkbenchLabelProvider(org.eclipse.ui.model.WorkbenchLabelProvider) NXCSession(org.netxms.client.NXCSession) Table(org.eclipse.swt.widgets.Table) Composite(org.eclipse.swt.widgets.Composite) ModifyListener(org.eclipse.swt.events.ModifyListener) ViewerComparator(org.eclipse.jface.viewers.ViewerComparator) Label(org.eclipse.swt.widgets.Label) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) Text(org.eclipse.swt.widgets.Text) ObjectFilter(org.netxms.ui.eclipse.objectbrowser.widgets.internal.ObjectFilter) TableColumn(org.eclipse.swt.widgets.TableColumn) GridLayout(org.eclipse.swt.layout.GridLayout) ModifyEvent(org.eclipse.swt.events.ModifyEvent) AbstractObject(org.netxms.client.objects.AbstractObject) GridData(org.eclipse.swt.layout.GridData) ArrayContentProvider(org.eclipse.jface.viewers.ArrayContentProvider) ControlListener(org.eclipse.swt.events.ControlListener) ControlEvent(org.eclipse.swt.events.ControlEvent) TableViewer(org.eclipse.jface.viewers.TableViewer) ScrollBar(org.eclipse.swt.widgets.ScrollBar)

Aggregations

ArrayContentProvider (org.eclipse.jface.viewers.ArrayContentProvider)1 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)1 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)1 TableViewer (org.eclipse.jface.viewers.TableViewer)1 ViewerComparator (org.eclipse.jface.viewers.ViewerComparator)1 ControlEvent (org.eclipse.swt.events.ControlEvent)1 ControlListener (org.eclipse.swt.events.ControlListener)1 ModifyEvent (org.eclipse.swt.events.ModifyEvent)1 ModifyListener (org.eclipse.swt.events.ModifyListener)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 Composite (org.eclipse.swt.widgets.Composite)1 Label (org.eclipse.swt.widgets.Label)1 ScrollBar (org.eclipse.swt.widgets.ScrollBar)1 Table (org.eclipse.swt.widgets.Table)1 TableColumn (org.eclipse.swt.widgets.TableColumn)1 Text (org.eclipse.swt.widgets.Text)1 WorkbenchLabelProvider (org.eclipse.ui.model.WorkbenchLabelProvider)1 NXCSession (org.netxms.client.NXCSession)1 AbstractObject (org.netxms.client.objects.AbstractObject)1