Example usage for org.eclipse.jface.viewers ILazyContentProvider ILazyContentProvider

List of usage examples for org.eclipse.jface.viewers ILazyContentProvider ILazyContentProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ILazyContentProvider ILazyContentProvider.

Prototype

ILazyContentProvider

Source Link

Usage

From source file:com.bdaum.zoom.ui.internal.dialogs.AbstractSelectExhibitDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    GridLayout layout = (GridLayout) area.getLayout();
    layout.marginWidth = 1;/*from  ww  w .ja  v a 2  s .c  om*/
    layout.marginHeight = 1;
    viewer = new TableViewer(area, SWT.V_SCROLL | SWT.SINGLE | SWT.BORDER | SWT.VIRTUAL);
    viewer.getControl().setLayoutData(new GridData(200, 350));
    viewer.setContentProvider(new ILazyContentProvider() {
        public void inputChanged(Viewer aViewer, Object oldInput, Object newInput) {
            // do nothing
        }

        public void dispose() {
            // do nothing
        }

        public void updateElement(int index) {
            viewer.replace(exhibits.get(index), index);
        }
    });
    viewer.setLabelProvider(new ColumnLabelProvider() {
        private Map<String, Image> thMap = new HashMap<String, Image>();

        @Override
        public String getText(Object element) {
            return AbstractSelectExhibitDialog.this.getText(element);
        }

        @Override
        public Font getFont(Object element) {
            return AbstractSelectExhibitDialog.this.getFont(element);
        }

        @Override
        public Image getImage(Object element) {
            String assetID = AbstractSelectExhibitDialog.this.getAssetId(element);
            if (assetID == null)
                return null;
            Image image = thMap.get(assetID);
            if (image == null) {
                ICore core = Core.getCore();
                AssetImpl asset = core.getDbManager().obtainAsset(assetID);
                if (asset != null) {
                    image = core.getImageCache().getImage(asset);
                    if (image != null) {
                        Rectangle bounds = image.getBounds();
                        double scale = ImageUtilities.computeScale(bounds.width, bounds.height, ICONWIDTH,
                                ICONWIDTH);
                        int newWidth = (int) (bounds.width * scale + 0.5d);
                        int newHeight = (int) (bounds.height * scale + 0.5d);
                        Image thumbnail = new Image(image.getDevice(), ICONWIDTH, ICONWIDTH);
                        GC gc = new GC(thumbnail);
                        try {
                            if (advanced) {
                                gc.setAntialias(SWT.ON);
                                gc.setInterpolation(SWT.HIGH);
                            }
                            gc.setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY));
                            gc.fillRectangle(0, 0, ICONWIDTH, ICONWIDTH);
                            gc.drawImage(image, 0, 0, bounds.width, bounds.height, (ICONWIDTH - newWidth) / 2,
                                    (ICONWIDTH - newHeight) / 2, newWidth, newHeight);
                            image = thumbnail;
                        } finally {
                            gc.dispose();
                        }
                        thMap.put(assetID, image);
                    }
                }
            }
            return image;
        }

        @Override
        public void dispose() {
            for (Image image : thMap.values())
                image.dispose();
            thMap.clear();
            super.dispose();
        }
    });
    viewer.setInput(exhibits);
    viewer.setItemCount(exhibits.size());
    viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            processSelection();
        }
    });
    viewer.getControl().addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent e) {
            if (e.character == '\r')
                processSelection();
        }
    });
    viewer.getControl().addFocusListener(new FocusListener() {
        @Override
        public void focusLost(FocusEvent e) {
            if (focusGained)
                cancelPressed();
        }

        @Override
        public void focusGained(FocusEvent e) {
            focusGained = true;
        }
    });
    viewer.getTable().pack();
    return area;
}

From source file:com.bdaum.zoom.ui.internal.views.TableView.java

License:Open Source License

private void createGallery(Composite parent, boolean recreate) {
    gallery = new TableViewer(parent,
            SWT.VIRTUAL | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(gallery.getControl(), HelpContextIds.TABLE_VIEW);
    themeChanged();//from  ww w  .j  ava  2 s.c  o m
    gallery.setContentProvider(new ILazyContentProvider() {
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // do nothing
        }

        public void dispose() {
            // do nothing
        }

        public void updateElement(int index) {
            IAssetProvider assetProvider = getAssetProvider();
            if (assetProvider != null) {
                Asset asset = assetProvider.getAsset(index);
                if (asset != null) {
                    synchronized (gallery) {
                        gallery.replace(asset, index);
                    }
                }
            }
        }
    });
    final Table table = gallery.getTable();
    if (!recreate)
        setAppStarting(table);
    table.setLinesVisible(true);
    table.setHeaderVisible(true);
    // Construct columns
    List<String> props = new ArrayList<String>();
    imageColumn = new TableViewerColumn(gallery, SWT.NONE);
    TableColumn icolumn = imageColumn.getColumn();
    icolumn.setWidth(thumbsize);
    icolumn.setResizable(false);
    icolumn.setText(Messages.getString("TableView.configure")); //$NON-NLS-1$
    imageColumn.setLabelProvider(new ThumbnailLabelProvider());
    icolumn.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            ConfigureColumnsDialog dialog = new ConfigureColumnsDialog(getSite().getShell());
            dialog.create();
            dialog.getShell().setLocation(gallery.getControl().toDisplay(e.x, e.y));
            dialog.open();
        }
    });
    props.add("$"); //$NON-NLS-1$
    QueryField scoreField = QueryField.SCORE;
    scoreColumn = createColumn(table, scoreField, Messages.getString("TableView.score"), 50, //$NON-NLS-1$
            new MetaDataLabelProvider(scoreField));
    props.add(scoreField.getKey());
    StringTokenizer st = new StringTokenizer(
            UiActivator.getDefault().getPreferenceStore().getString(PreferenceConstants.TABLECOLUMNS), "\n"); //$NON-NLS-1$
    displayedFields.clear();
    while (st.hasMoreTokens()) {
        String id = st.nextToken();
        QueryField qfield = QueryField.findQueryField(id);
        if (qfield != null) {
            displayedFields.add(qfield);
            createColumn(table, qfield, qfield.getLabel(), 120, new MetaDataLabelProvider(qfield));
            props.add(id);
        }
    }
    gallery.setColumnProperties(props.toArray(new String[props.size()]));
    gallery.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (refreshing <= 0) {
                stopAudio();
                selection = doGetAssetSelection();
                fireSelection();
            }
        }
    });
    ZColumnViewerToolTipSupport.enableFor(gallery);
    addKeyListener();
    addGestureListener(gallery.getTable());
    addExplanationListener(false);
    addDragDropSupport();
    hookContextMenu();
    hookDoubleClickAction();
}

From source file:gr.scharf.workingsets.internal.RegExWorkingSetPage.java

License:Open Source License

public void createTableViewer(Composite parent) {
    Table table = new Table(parent,
            SWT.VIRTUAL | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.SINGLE | SWT.BORDER);
    TableLayout layout = new TableLayout();
    table.setLayout(layout);//from  w w w  .j  av  a2 s .  c  o m
    table.setHeaderVisible(true);
    this.fPreviewTableViewer = new TableViewer(table);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.minimumHeight = 300;

    this.fPreviewTableViewer.getTable().setLayoutData(data);
    fComparator = new ResourceComparator();
    createTableViewerColumn("Name", 200, 0);
    createTableViewerColumn("Path", 400, 1);
    this.fPreviewTableViewer.setLabelProvider(new ITableLabelProvider() {
        public Image getColumnImage(Object element, int columnIndex) {
            if (columnIndex == 1)
                return null;
            IWorkbenchAdapter adapter = (IWorkbenchAdapter) ((IAdaptable) element)
                    .getAdapter(IWorkbenchAdapter.class);
            if (adapter == null) {
                return null;
            }
            ImageDescriptor descriptor = adapter.getImageDescriptor(element);
            if (descriptor == null) {
                return null;
            }
            Image image = (Image) descriptor.createResource(Display.getCurrent());
            return image;
        }

        public String getColumnText(Object element, int columnIndex) {
            IResource resource = (IResource) element;
            if (columnIndex == 1)
                return resource.getFullPath().toPortableString();
            return resource.getName();
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });

    this.fPreviewTableViewer.setContentProvider(new ILazyContentProvider() {

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public void dispose() {
        }

        @Override
        public void updateElement(int index) {
            fPreviewTableViewer.replace(fResources[index], index);
        }
    });

    this.fPreviewTableViewer.setInput(this.fResources);
}

From source file:org.eclipse.eavp.viz.service.geometry.properties.ShapeSection.java

License:Open Source License

@Override
public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

    // Set the parent to a FormLayout so that it will resize with the view
    parent.getParent().setLayout(new FormLayout());
    FormData parentData = new FormData();
    parentData.top = new FormAttachment(0);
    parentData.left = new FormAttachment(0);
    parentData.right = new FormAttachment(100);
    parentData.bottom = new FormAttachment(100);
    parent.setLayoutData(parentData);/*from ww w . j  a va  2s .  c  o  m*/
    parent.setLayout(new FormLayout());

    // Get the system's white color
    Color white = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);

    // Create a group for the IRenderElement's INode's data, taking up the
    // left half of the screen.
    Group dataGroup = createGroup(parent, "Data", 0, 0, 50, 100);

    // A composite to hold the nameLabel and nameText, located in the upper
    // left corner
    Composite nameComp = new Composite(dataGroup, SWT.NONE);
    FormData nameData = new FormData();
    nameData.top = new FormAttachment(0, 5);
    nameData.left = new FormAttachment(0, 5);
    nameData.right = new FormAttachment(25);
    nameComp.setLayoutData(nameData);
    nameComp.setLayout(new GridLayout(2, false));
    nameComp.setBackground(white);

    // A label reading "Name:"
    Label nameLabel = new Label(nameComp, SWT.CENTER);
    nameLabel.setText("Name:");
    nameLabel.setBackground(white);

    // A text box in which the INode's name will be displayed and can be
    // edited.
    nameText = new Text(nameComp, SWT.BORDER);
    nameText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    nameText.addListener(SWT.DefaultSelection, new Listener() {

        @Override
        public void handleEvent(Event event) {

            // Set the INode's name to the textbox's value
            source.getBase().setName(nameText.getText());
            nameText.selectAll();
        }
    });

    nameText.addFocusListener(new FocusListener() {

        @Override
        public void focusGained(FocusEvent event) {

            // Select all the text in the Text widget
            nameText.selectAll();
        }

        @Override
        public void focusLost(FocusEvent event) {

            // Set the INode's name to the textbox's value
            source.getBase().setName(nameText.getText());
        }
    });

    // A composite to hold the idLabel and idText, located to the right of
    // nameComp
    Composite idComp = new Composite(dataGroup, SWT.NONE);
    FormData idData = new FormData();
    idData.top = new FormAttachment(0, 5);
    idData.left = new FormAttachment(nameComp, 5, 0);
    idData.right = new FormAttachment(35);
    idComp.setLayoutData(idData);
    idComp.setLayout(new GridLayout(2, false));
    idComp.setBackground(white);

    // A label containing the text "ID:"
    Label idLabel = new Label(idComp, SWT.NONE);
    idLabel.setText("ID:");
    idLabel.setBackground(white);

    // A text box in which the INode's ID will be displayed and can be
    // edited.
    idText = new Text(idComp, SWT.BORDER);
    idText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    idText.addListener(SWT.DefaultSelection, new Listener() {

        @Override
        public void handleEvent(Event event) {

            // Set the INode's ID to the textbox's value
            source.getBase().setId(Long.valueOf(idText.getText()));
            idText.selectAll();
        }
    });

    idText.addFocusListener(new FocusListener() {

        @Override
        public void focusGained(FocusEvent event) {

            // Select all the text in the Text widget
            idText.selectAll();
        }

        @Override
        public void focusLost(FocusEvent event) {

            // Set the INode's ID to the textbox's value
            source.getBase().setId(Long.valueOf(idText.getText()));
        }
    });

    // A group containing the three coordinates of the shape's center, along
    // with labels for them
    Group centerGroup = createGroup(dataGroup, "Center", null, null, idComp, 0, null, 70, null, null);
    centerGroup.setLayout(new GridLayout(3, true));

    // Coordinate labels
    Label labelX = new Label(centerGroup, SWT.NONE);
    labelX.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    labelX.setBackground(white);
    labelX.setText("X");

    Label labelY = new Label(centerGroup, SWT.NONE);
    labelY.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    labelY.setText("Y");
    labelY.setBackground(white);

    Label labelZ = new Label(centerGroup, SWT.NONE);
    labelZ.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    labelZ.setText("Z");
    labelZ.setBackground(white);

    // The three spinners that will control translation for the center point
    for (int i = 0; i < 3; i++) {
        translateSpinners[i] = new RealSpinner(centerGroup);
        translateSpinners[i].getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        translateSpinners[i].getControl().setBackground(white);
        translateSpinners[i].setBounds(-1.0e6, 1.0e6);
    }

    // A group to display the INode's properties, located below the
    // centerGroup
    Group meshPropertiesGroup = createGroup(dataGroup, "Mesh Properties", centerGroup, 0, null, 0, null, 100,
            null, null);
    meshPropertiesGroup.setLayout(new RowLayout());

    // Create property widgets to display any properties the shape has.
    propertyWidgets = new ArrayList<TransformationPropertyWidget>();
    for (int i = 0; i < NUM_PROPERTIES; i++) {

        // Create a child composite to hold the widget
        Composite widgetComp = new Composite(meshPropertiesGroup, SWT.NONE);
        widgetComp.setLayout(new GridLayout(2, false));
        widgetComp.setBackground(white);

        // Create the widget and add it to the list
        propertyWidgets.add(new TransformationPropertyWidget(widgetComp));
    }

    // Empty the old list of property spinners
    propertySpinners.clear();

    // A group that will contain the table of triangle data, located below
    // the meshPropertiesGroup
    Group meshDataGroup = createGroup(dataGroup, "Triangle Mesh Data", meshPropertiesGroup, 0, null, 0, null,
            100, null, 100);
    meshDataGroup.setLayout(new GridLayout(2, false));

    // A table which will display the nine coordinates that define each
    // triangle, in the order XYZ for each of the three vertices in turn.
    // This table should fit inside the screen, displaying the full table
    // only with a scrollbar and only load those values currently visible
    triangleTable = new TableViewer(meshDataGroup, SWT.FULL_SELECTION | SWT.VIRTUAL | SWT.BORDER);
    GridData tableData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
    tableData.heightHint = 90;
    triangleTable.getTable().setLayoutData(tableData);
    triangleTable.getTable().setHeaderVisible(true);

    // Create the formatter that will set the coordinates'
    // strings
    DecimalFormat formatter = new DecimalFormat("#.########");
    formatter.setRoundingMode(RoundingMode.DOWN);

    //Create the X column for the first vertex
    TableViewerColumn col1X = new TableViewerColumn(triangleTable, SWT.NONE);
    col1X.getColumn().setText("X1");
    col1X.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(0).getX());
        }
    });
    col1X.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(0).getX());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(0).setX(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col1Y = new TableViewerColumn(triangleTable, SWT.NONE);
    col1Y.getColumn().setText("Y1");
    col1Y.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(0).getY());
        }
    });
    col1Y.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(0).getY());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(0).setY(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col1Z = new TableViewerColumn(triangleTable, SWT.NONE);
    col1Z.getColumn().setText("Z1");
    col1Z.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(0).getZ());
        }
    });
    col1Z.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(0).getZ());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(0).setZ(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col2X = new TableViewerColumn(triangleTable, SWT.NONE);
    col2X.getColumn().setText("X2");
    col2X.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(1).getX());
        }
    });
    col2X.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(1).getX());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(1).setX(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col2Y = new TableViewerColumn(triangleTable, SWT.NONE);
    col2Y.getColumn().setText("Y2");
    col2Y.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(1).getY());
        }
    });
    col2Y.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(1).getY());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(1).setY(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col2Z = new TableViewerColumn(triangleTable, SWT.NONE);
    col2Z.getColumn().setText("Z2");
    col2Z.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(1).getZ());
        }
    });
    col2Z.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(1).getZ());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(1).setZ(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col3X = new TableViewerColumn(triangleTable, SWT.NONE);
    col3X.getColumn().setText("X3");
    col3X.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(2).getX());
        }
    });
    col3X.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(2).getX());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(2).setX(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col3Y = new TableViewerColumn(triangleTable, SWT.NONE);
    col3Y.getColumn().setText("Y3");
    col3Y.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(2).getY());
        }
    });
    col3Y.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(2).getY());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(2).setY(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    TableViewerColumn col3Z = new TableViewerColumn(triangleTable, SWT.NONE);
    col3Z.getColumn().setText("Z3");
    col3Z.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object triangle) {

            //Each cell will display the value of the corresponding vertex's coordinate
            return formatter.format(((Triangle) triangle).getVertices().get(2).getZ());
        }
    });
    col3Z.setEditingSupport(new TriangleTableEditingSupport(triangleTable) {

        @Override
        protected Object getValue(Object element) {

            //Display the full value of the cell for editing purposes
            return String.valueOf(((Triangle) element).getVertices().get(2).getZ());
        }

        @Override
        protected void setValue(Object element, Object value) {

            //Set the value to the coordinate.
            ((Triangle) element).getVertices().get(2).setZ(Double.valueOf((String) value));
            triangleTable.update(element, null);
        }

    });

    //Set the table to lazily load the list of triangles
    triangleTable.setContentProvider(new ILazyContentProvider() {

        //All the triangles belonging to the source shape
        private List<Triangle> triangles;

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            triangles = (List<Triangle>) newInput;
        }

        @Override
        public void updateElement(int index) {
            triangleTable.replace(triangles.get(index), index);
        }

    });

    //Save the columns to the list
    triangleTableColumns = new ArrayList<TableViewerColumn>();
    triangleTableColumns.add(col1X);
    triangleTableColumns.add(col1Y);
    triangleTableColumns.add(col1Z);
    triangleTableColumns.add(col2X);
    triangleTableColumns.add(col2Y);
    triangleTableColumns.add(col2Z);
    triangleTableColumns.add(col3X);
    triangleTableColumns.add(col3Y);
    triangleTableColumns.add(col3Z);

    //Set up the triangle table to load dynamically
    triangleTable.setUseHashlookup(true);

    //Set the table to be empty initially
    triangleTable.setInput(new ArrayList<Triangle>());
    triangleTable.setItemCount(0);

    // A display group taking up the right half of the view. This group will
    // display the properties of the IRenderElement, which control how the
    // data is displayed.
    displayGroup = createGroup(parent, "Display", 0, 50, 100, 100);

    // Set the initial shape
    createListeners();
    refresh();
}

From source file:org.eclipse.jface.tests.viewers.interactive.LazyDeferredVirtualTableView.java

License:Open Source License

@Override
protected IContentProvider getContentProvider() {
    return new ILazyContentProvider() {

        int rangeStart = -1;

        int rangeEnd = -1;

        UIJob updateJob = new UIJob("Update") {
            @Override// w w  w  .ja v  a2s . c om
            public IStatus runInUIThread(IProgressMonitor monitor) {
                if (viewer.getControl().isDisposed()) {
                    return Status.CANCEL_STATUS;
                }
                int rangeLength = rangeEnd - rangeStart;
                for (int i = 0; i <= rangeLength; i++) {
                    int index = i + rangeStart;
                    viewer.replace("Element " + index, index);
                }

                return Status.OK_STATUS;
            }
        };

        @Override
        public void updateElement(int index) {

            int begin = Math.max(0, index - 50);
            int end = Math.min(begin + 50, 9999);

            // Initial case
            if (rangeStart == -1 || rangeEnd == -1) {
                rangeStart = begin;
                rangeEnd = end;
                updateJob.schedule(1000);
                return;
            }

            // Are we in the range already being worked on?
            if (index >= rangeStart && index <= rangeEnd) {
                return;
            }

            // Are we outside of the old range?
            if (begin > rangeEnd || end < rangeStart) {
                viewer.getTable().clear(rangeStart, rangeEnd);
                rangeStart = begin;
                rangeEnd = end;
                updateJob.schedule(1000);
                return;
            }

            // Shift if it is before
            if (begin < rangeStart) {
                rangeStart = begin;
                int oldEnd = rangeEnd;
                rangeEnd = end;
                viewer.getTable().clear(end + 1, oldEnd);

                updateJob.schedule(1000);
                return;
            }

            // Shift if it is after
            if (end > rangeEnd) {
                rangeEnd = end;
                int oldStart = rangeStart;
                rangeStart = begin;
                viewer.getTable().clear(oldStart, rangeStart - 1);
                updateJob.schedule(1000);
                return;
            }
        }

        @Override
        public void dispose() {
            // Do Nothing
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // Do nothing.
        }
    };
}

From source file:org.eclipse.jface.tests.viewers.interactive.LazyVirtualTableView.java

License:Open Source License

@Override
protected IContentProvider getContentProvider() {
    return new ILazyContentProvider() {

        @Override//from   www  .  j av a2 s .com
        public void updateElement(int index) {
            viewer.replace(elements.get(index), index);
        }

        @Override
        public void dispose() {
            // Do Nothing
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // Do nothing.
        }
    };
}

From source file:org.eclipse.pde.nls.internal.ui.editor.LocalizationEditor.java

License:Open Source License

private void createTableViewer() {
    table = new Table(tableComposite, SWT.VIRTUAL | SWT.FULL_SELECTION | SWT.MULTI);
    tableViewer = new TableViewer(table);
    table.setHeaderVisible(true);/*from ww  w . j  a v  a  2 s  .c om*/
    toolkit.adapt(table);
    toolkit.paintBordersFor(table);
    toolkit.adapt(table, true, true);

    tableViewer.setContentProvider(new ILazyContentProvider() {
        public void updateElement(int index) {
            tableViewer.replace(entryList.getKey(index), index);
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });
    tableViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            new EditEntryAction().run();
        }
    });
}