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

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

Introduction

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

Prototype

public ViewerComparator() 

Source Link

Document

Creates a new ViewerComparator , which uses the default comparator to sort strings.

Usage

From source file:io.mapzone.ide.newproject.LoginWizardPage.java

License:Open Source License

public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NULL);
    form = new InputForm(container);

    // username / password
    userText = form.createText("Account name", "");
    userText.setToolTipText("mapzone.io account name");

    pwdText = form.createText("Password", "", SWT.PASSWORD);

    Button loginBtn = new Button(container, SWT.PUSH);
    loginBtn.setText("Login");
    loginBtn.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent ev) {
            doLogin();/*  w  w  w  . j  ava2 s  .  co  m*/
        }
    });

    // label
    Label label = new Label(container, SWT.NULL);
    label.setText("Your mapzone.io projects");

    // projectsList
    projectsList = new ListViewer(container, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
    projectsList.setContentProvider(ArrayContentProvider.getInstance());
    projectsList.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object elm) {
            return ((MapzoneProject) elm).name();
        }
    });
    projectsList.setComparator(new ViewerComparator());
    projectsList.addSelectionChangedListener(ev -> {
        wizardData.mapzoneProject = (MapzoneProject) projectsList.getStructuredSelection().getFirstElement();
        updateStatus();
    });

    // layout
    //        container.setLayout( FormLayoutFactory.defaults().spacing( 8 ).create() );
    //        FormDataFactory.on( userText ).fill().noBottom();
    //        FormDataFactory.on( pwdText ).fill().top( userText ).noBottom();
    FormDataFactory.on(loginBtn).fill().top(pwdText, 5).noBottom();
    FormDataFactory.on(label).fill().left(0, 3).top(loginBtn, 5).noBottom();
    FormDataFactory.on(projectsList.getControl()).fill().top(label);

    setControl(container);
}

From source file:io.sarl.eclipse.preferences.SREsPreferencePage.java

License:Apache License

/**
 * Sorts by SRE name./*  w  w w  . jav  a2  s .  c  om*/
 */
private void sortByName() {
    this.sresList.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            if ((e1 instanceof ISREInstall) && (e2 instanceof ISREInstall)) {
                final ISREInstall left = (ISREInstall) e1;
                final ISREInstall right = (ISREInstall) e2;
                return left.getName().compareToIgnoreCase(right.getName());
            }
            return super.compare(viewer, e1, e2);
        }

        @Override
        public boolean isSorterProperty(Object element, String property) {
            return true;
        }
    });
    this.sortColumn = Column.NAME;
}

From source file:io.sarl.eclipse.preferences.SREsPreferencePage.java

License:Apache License

/**
 * Sorts by VM location.//from  w ww  .  java 2  s  .co  m
 */
private void sortByLocation() {
    this.sresList.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            if ((e1 instanceof ISREInstall) && (e2 instanceof ISREInstall)) {
                final ISREInstall left = (ISREInstall) e1;
                final ISREInstall right = (ISREInstall) e2;
                return left.getLocation().compareToIgnoreCase(right.getLocation());
            }
            return super.compare(viewer, e1, e2);
        }

        @Override
        public boolean isSorterProperty(Object element, String property) {
            return true;
        }
    });
    this.sortColumn = Column.LOCATION;
}

From source file:lslforge.wizards.ContainerSelectionGroup.java

License:Open Source License

/**
 * Returns a new drill down viewer for this dialog.
 * /*from  w ww  . j  a v  a  2  s . c o m*/
 * @param heightHint
 *            height hint for the drill down composite
 */
protected void createTreeViewer(int heightHint) {
    // Create drill down.
    DrillDownComposite drillDown = new DrillDownComposite(this, SWT.BORDER);
    GridData spec = new GridData(SWT.FILL, SWT.FILL, true, true);
    spec.widthHint = SIZING_SELECTION_PANE_WIDTH;
    spec.heightHint = heightHint;
    drillDown.setLayoutData(spec);

    // Create tree viewer inside drill down.
    treeViewer = new TreeViewer(drillDown, SWT.NONE);
    drillDown.setChildTree(treeViewer);
    ContainerContentProvider cp = new ContainerContentProvider();
    cp.showClosedProjects(showClosedProjects);
    treeViewer.setContentProvider(cp);
    treeViewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
    treeViewer.setComparator(new ViewerComparator());
    treeViewer.setUseHashlookup(true);
    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            containerSelectionChanged((IContainer) selection.getFirstElement()); // allow null
        }
    });
    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            ISelection selection = event.getSelection();
            if (selection instanceof IStructuredSelection) {
                Object item = ((IStructuredSelection) selection).getFirstElement();
                if (item == null) {
                    return;
                }
                if (treeViewer.getExpandedState(item)) {
                    treeViewer.collapseToLevel(item, 1);
                } else {
                    treeViewer.expandToLevel(item, 1);
                }
            }
        }
    });

    // This has to be done after the viewer has been laid out
    treeViewer.setInput(ResourcesPlugin.getWorkspace());
}

From source file:masterviews.composite.abstracts.TableComposite.java

License:Open Source License

/**
 * Create the Table viewer for this composite
 *///from   w  w  w . j  av a2s  .  co m
public void createTableViewer(Composite parent) {
    viewer = initializeTableViewer(parent);
    viewer.setContentProvider(initContentProvider());
    viewer.setLabelProvider(initLabelProvider());
    initInput();
    viewer.getTable().setLayoutData(GridDataFactory.fillDefaults().span(2, 1).grab(true, true).create());
    //set default toString() comparator, override this if needed
    viewer.setComparator(new ViewerComparator());
}

From source file:masterviews.composite.abstracts.TreeComposite.java

License:Open Source License

/**
 * Create the tree viewer for this composite
 *//*from  w w  w. j  a  v  a2s. c  o m*/
public void createTreeViewer(Composite parent, int style) {
    if (style == SWT.SINGLE) {
        viewer = initializeSingleFilteredTreeViewer(parent);
    } else {
        viewer = initializeFilteredTreeViewer(parent);
    }
    viewer.setContentProvider(initContentProvider());
    viewer.setLabelProvider(initLabelProvider());
    viewer.setAutoExpandLevel(Integer.MAX_VALUE);
    //set default toString() comparator, override this if needed
    viewer.setComparator(new ViewerComparator());

    final Tree tree = viewer.getTree();
    tree.setLayoutData(GridDataFactory.fillDefaults().span(2, 1).grab(true, true).create());
}

From source file:masterviews.composite.abstracts.TreeTableComposite.java

License:Open Source License

/**
 * Create the tree viewer for this composite
 *//*from w w  w .  j a v  a  2 s . com*/
protected void createTreeViewer(Composite parent, int style) {
    if (style == SWT.SINGLE) {
        viewer = initializeSingleFilteredTreeViewer(parent);
    } else {
        viewer = initializeFilteredTreeViewer(parent);
    }
    viewer.setContentProvider(initContentProvider());
    viewer.setLabelProvider(initLabelProvider());
    viewer.setAutoExpandLevel(Integer.MAX_VALUE);
    //set default toString() comparator, override this if needed
    viewer.setComparator(new ViewerComparator());

    final Tree tree = viewer.getTree();
    tree.setLayoutData(GridDataFactory.fillDefaults().span(2, 1).grab(true, true).create());

    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    initColumn(tree);
    addColumn(tree);

}

From source file:mpj_express_debugger.MPJExpressParameterTab.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    Composite comp = SWTFactory.createComposite(parent, 1, 1, GridData.FILL_HORIZONTAL);
    setControl(comp);/*from ww w. j  a  v a2s .com*/
    PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
            IJavaDebugHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_APPLET_PARAMETERS_TAB);

    @SuppressWarnings("restriction")
    Composite namecomp = SWTFactory.createComposite(comp, comp.getFont(), 5, 1, GridData.FILL_HORIZONTAL, 0, 0);

    SWTFactory.createLabel(namecomp, MPJLauncherMessages.mpjlauncher_argumenttab_nplabel_text, 1);

    npText = SWTFactory.createSingleText(namecomp, 1);
    npText.addModifyListener(fListener);

    SWTFactory.createLabel(namecomp, MPJLauncherMessages.mpjlauncher_argumenttab_homelabel_text, 1);

    mpjHomeText = SWTFactory.createSingleText(namecomp, 1);
    mpjHomeText.addModifyListener(fListener);
    fBrowseMPJHomeButton = SWTFactory.createPushButton(namecomp, "Browse", null);
    fBrowseMPJHomeButton.addSelectionListener(fListener);
    SWTFactory.createLabel(namecomp, MPJLauncherMessages.mpjlauncher_argumenttab_devlabel_text, 1);

    devText = SWTFactory.createSingleText(namecomp, 1);
    devText.addModifyListener(fListener);

    Label blank = new Label(namecomp, SWT.NONE);
    blank.setText(EMPTY_STRING);
    Label hint = SWTFactory.createLabel(namecomp, MPJLauncherMessages.MPJParametersTab__mandatory_mpj_home_path,
            1);
    GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
    hint.setLayoutData(gd);

    SWTFactory.createVerticalSpacer(comp, 1);

    Composite paramcomp = SWTFactory.createComposite(comp, comp.getFont(), 2, 1, GridData.FILL_BOTH, 0, 0);

    SWTFactory.createLabel(paramcomp, MPJLauncherMessages.appletlauncher_argumenttab_parameterslabel_text, 2);

    Table ptable = new Table(paramcomp, SWT.FULL_SELECTION | SWT.BORDER);
    fViewer = new TableViewer(ptable);
    gd = new GridData(GridData.FILL_BOTH);
    ptable.setLayoutData(gd);
    TableColumn column1 = new TableColumn(ptable, SWT.NONE);
    column1.setText(MPJLauncherMessages.appletlauncher_argumenttab_parameterscolumn_name_text);
    TableColumn column2 = new TableColumn(ptable, SWT.NONE);
    column2.setText(MPJLauncherMessages.appletlauncher_argumenttab_parameterscolumn_value_text);
    TableLayout tableLayout = new TableLayout();
    ptable.setLayout(tableLayout);
    tableLayout.addColumnData(new ColumnWeightData(100));
    tableLayout.addColumnData(new ColumnWeightData(100));
    ptable.setHeaderVisible(true);
    ptable.setLinesVisible(true);
    ptable.addSelectionListener(fListener);
    ptable.addMouseListener(new MouseAdapter() {
        public void mouseDoubleClick(MouseEvent e) {
            setParametersButtonsEnableState();
            if (fParametersEditButton.isEnabled()) {
                handleParametersEditButtonSelected();
            }
        }
    });

    fViewer.setContentProvider(new IStructuredContentProvider() {
        public Object[] getElements(Object inputElement) {
            Map params = (Map) inputElement;
            return params.keySet().toArray();
        }

        public void dispose() {
        }

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

    fViewer.setLabelProvider(new ITableLabelProvider() {
        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            if (columnIndex == 0) {
                return element.toString();
            }

            String key = (String) element;
            Map params = (Map) fViewer.getInput();
            Object object = params.get(key);
            if (object != null)
                return object.toString();
            return null;
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

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

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

    fViewer.setComparator(new ViewerComparator());

    Composite envcomp = SWTFactory.createComposite(paramcomp, paramcomp.getFont(), 1, 1,
            GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_FILL, 0, 0);

    fParametersAddButton = createPushButton(envcomp,
            MPJLauncherMessages.appletlauncher_argumenttab_parameters_button_add_text, null);
    fParametersAddButton.addSelectionListener(fListener);

    fParametersEditButton = createPushButton(envcomp,
            MPJLauncherMessages.appletlauncher_argumenttab_parameters_button_edit_text, null);
    fParametersEditButton.addSelectionListener(fListener);

    fParametersRemoveButton = createPushButton(envcomp,
            MPJLauncherMessages.appletlauncher_argumenttab_parameters_button_remove_text, null);
    fParametersRemoveButton.addSelectionListener(fListener);

    setParametersButtonsEnableState();
    Dialog.applyDialogFont(parent);
}

From source file:net.certiv.fluentmark.preferences.pages.AppearanceConfigurationBlock.java

License:Open Source License

private Control createSyntaxPage(final Composite parent) {

    Composite colorComposite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;// www.ja  v  a 2s  . co  m
    layout.marginWidth = 0;
    colorComposite.setLayout(layout);

    Link link = new Link(colorComposite, SWT.NONE);
    link.setText(LINK_MSG);
    link.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            if ("org.eclipse.ui.preferencePages.GeneralTextEditor".equals(e.text)) //$NON-NLS-1$
                PreferencesUtil.createPreferenceDialogOn(parent.getShell(), e.text, null, null);
            else if ("org.eclipse.ui.preferencePages.ColorsAndFonts".equals(e.text)) //$NON-NLS-1$
                PreferencesUtil.createPreferenceDialogOn(parent.getShell(), e.text, null,
                        "selectFont:org.eclipse.jdt.ui.editors.textfont"); //$NON-NLS-1$
        }
    });

    GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
    gridData.widthHint = 150; // only expand further if anyone else requires it
    gridData.horizontalSpan = 2;
    link.setLayoutData(gridData);

    addFiller(colorComposite, 1);

    Label label;
    label = new Label(colorComposite, SWT.LEFT);
    label.setText("Element");
    label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Composite editorComposite = new Composite(colorComposite, SWT.NONE);
    layout = new GridLayout();
    layout.numColumns = 2;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    editorComposite.setLayout(layout);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.heightHint = convertHeightInCharsToPixels(7);
    editorComposite.setLayoutData(gd);

    fTreeViewer = new TreeViewer(editorComposite, SWT.SINGLE | SWT.BORDER);
    fTreeViewer.setLabelProvider(new ColorListLabelProvider());
    fTreeViewer.setContentProvider(new ColorListContentProvider());
    fTreeViewer.setComparator(new ViewerComparator() {

        @Override
        public int category(Object element) {
            // don't sort the top level categories
            if (fMarkupCategory.equals(element))
                return 0;
            if (fCodeCategory.equals(element))
                return 1;
            if (fCommentsCategory.equals(element))
                return 2;
            // to sort semantic settings after partition based ones:
            // if (element instanceof SemanticHighlightingColorListItem)
            // return 1;
            return 0;
        }
    });
    gd = new GridData(SWT.BEGINNING, SWT.FILL, false, true);
    gd.heightHint = convertHeightInCharsToPixels(7);
    int maxWidth = 0;
    for (Iterator<HighlightingColorListItem> it = fListModel.iterator(); it.hasNext();) {
        HighlightingColorListItem item = it.next();
        maxWidth = Math.max(maxWidth, convertWidthInCharsToPixels(item.getDisplayName().length()));
    }
    ScrollBar vBar = ((Scrollable) fTreeViewer.getControl()).getVerticalBar();
    if (vBar != null)
        maxWidth += vBar.getSize().x * 3; // scrollbars and tree indentation guess
    gd.widthHint = maxWidth;

    fTreeViewer.getControl().setLayoutData(gd);
    installDoubleClickListener();

    Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    layout.numColumns = 2;
    stylesComposite.setLayout(layout);
    stylesComposite.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false));

    fEnableCheckbox = new Button(stylesComposite, SWT.CHECK);
    fEnableCheckbox.setText("Enable");
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalAlignment = GridData.BEGINNING;
    gd.horizontalSpan = 2;
    fEnableCheckbox.setLayoutData(gd);

    fColorEditorLabel = new Label(stylesComposite, SWT.LEFT);
    fColorEditorLabel.setText("Color");
    gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    gd.horizontalIndent = SwtUtil.getIndent();
    fColorEditorLabel.setLayoutData(gd);

    fSyntaxForegroundColorEditor = new ColorSelector(stylesComposite);
    Button foregroundColorButton = fSyntaxForegroundColorEditor.getButton();
    gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    foregroundColorButton.setLayoutData(gd);

    fBoldCheckBox = new Button(stylesComposite, SWT.CHECK);
    fBoldCheckBox.setText("Bold");
    gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    gd.horizontalIndent = SwtUtil.getIndent();
    gd.horizontalSpan = 2;
    fBoldCheckBox.setLayoutData(gd);

    fItalicCheckBox = new Button(stylesComposite, SWT.CHECK);
    fItalicCheckBox.setText("Italic");
    gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    gd.horizontalIndent = SwtUtil.getIndent();
    gd.horizontalSpan = 2;
    fItalicCheckBox.setLayoutData(gd);

    fStrikethroughCheckBox = new Button(stylesComposite, SWT.CHECK);
    fStrikethroughCheckBox.setText("Strikethrough");
    gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    gd.horizontalIndent = SwtUtil.getIndent();
    gd.horizontalSpan = 2;
    fStrikethroughCheckBox.setLayoutData(gd);

    fUnderlineCheckBox = new Button(stylesComposite, SWT.CHECK);
    fUnderlineCheckBox.setText("Underline");
    gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    gd.horizontalIndent = SwtUtil.getIndent();
    gd.horizontalSpan = 2;
    fUnderlineCheckBox.setLayoutData(gd);

    label = new Label(colorComposite, SWT.LEFT);
    label.setText("Preview");
    label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Control previewer = createPreviewer(colorComposite);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.widthHint = convertWidthInCharsToPixels(20);
    gd.heightHint = convertWidthInCharsToPixels(40);
    previewer.setLayoutData(gd);

    fTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            handleSyntaxColorListSelection();
        }
    });

    foregroundColorButton.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            HighlightingColorListItem item = getHighlightingColorListItem();
            PreferenceConverter.setValue(getPreferenceStore(), item.getColorKey(),
                    fSyntaxForegroundColorEditor.getColorValue());
        }
    });

    fBoldCheckBox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            HighlightingColorListItem item = getHighlightingColorListItem();
            getPreferenceStore().setValue(item.getBoldKey(), fBoldCheckBox.getSelection());
        }
    });

    fItalicCheckBox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            HighlightingColorListItem item = getHighlightingColorListItem();
            getPreferenceStore().setValue(item.getItalicKey(), fItalicCheckBox.getSelection());
        }
    });
    fStrikethroughCheckBox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            HighlightingColorListItem item = getHighlightingColorListItem();
            getPreferenceStore().setValue(item.getStrikethroughKey(), fStrikethroughCheckBox.getSelection());
        }
    });

    fUnderlineCheckBox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            HighlightingColorListItem item = getHighlightingColorListItem();
            getPreferenceStore().setValue(item.getUnderlineKey(), fUnderlineCheckBox.getSelection());
        }
    });

    fEnableCheckbox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

        @Override
        public void widgetSelected(SelectionEvent e) {
            HighlightingColorListItem item = getHighlightingColorListItem();
            if (item instanceof SemanticHighlightingColorListItem) {
                boolean enable = fEnableCheckbox.getSelection();
                getPreferenceStore().setValue(((SemanticHighlightingColorListItem) item).getEnableKey(),
                        enable);
                fEnableCheckbox.setSelection(enable);
                fSyntaxForegroundColorEditor.getButton().setEnabled(enable);
                fColorEditorLabel.setEnabled(enable);
                fBoldCheckBox.setEnabled(enable);
                fItalicCheckBox.setEnabled(enable);
                fStrikethroughCheckBox.setEnabled(enable);
                fUnderlineCheckBox.setEnabled(enable);
            }
        }
    });

    colorComposite.layout();

    return colorComposite;
}

From source file:net.enilink.komma.edit.ui.wizards.RefactorPreviewPage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout());

    final Tree tree = new Tree(composite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    tree.setHeaderVisible(true);/*from  w w w  . ja  va 2  s . c  o m*/
    tree.setLinesVisible(true);

    GridData treeGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    tree.setLayoutData(treeGridData);

    treeViewer = new TreeViewer(tree);
    treeViewer.setContentProvider(new ITreeContentProvider() {
        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @SuppressWarnings("unchecked")
        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection) {
                return ((Collection<Change>) inputElement).toArray();
            }
            return getChildren(inputElement);
        }

        @Override
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof Change) {
                return ((Change) parentElement).getStatementChanges().toArray();
            }
            return null;
        }

        @Override
        public Object getParent(Object element) {
            return null;
        }

        @Override
        public boolean hasChildren(Object element) {
            if (element instanceof Change) {
                return true;
            }
            return false;
        }

        @Override
        public void dispose() {
        }
    });
    treeViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeCollapsed(final TreeExpansionEvent event) {
            getShell().getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    treeViewer.update(event.getElement(), null);
                }
            });
        }

        @Override
        public void treeExpanded(final TreeExpansionEvent event) {
            getShell().getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    treeViewer.update(event.getElement(), null);
                }
            });
        }
    });

    treeViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object o1, Object o2) {
            if (o1 instanceof Change && o2 instanceof Change) {
                return ((Change) o1).getModel().toString().compareTo(((Change) o2).getModel().toString());
            }
            if (o1 instanceof StatementChange && o2 instanceof StatementChange) {
                return compare(((StatementChange) o1).getStatement().getSubject(),
                        ((StatementChange) o2).getStatement().getSubject());
            }
            return o1.hashCode() - o2.hashCode();
        }

        private int compare(IReference s1, IReference s2) {
            // blank nodes at bottom
            if (s1.getURI() == null) {
                return (s2.getURI() == null ? s1.toString().compareTo(s2.toString()) : 1);
            }
            if (s2.getURI() == null) {
                return -1;
            }
            // compare the URIs
            return s1.toString().compareTo(s2.toString());
        }
    });

    TreeViewerColumn column = new TreeViewerColumn(treeViewer, SWT.LEFT);
    column.getColumn().setText("Resource");
    column.getColumn().setWidth(350);
    column.setLabelProvider(new TreeLabelProvider(TreeLabelProvider.ColumnType.RESOURCE));

    column = new TreeViewerColumn(treeViewer, SWT.LEFT);
    column.getColumn().setText("Property");
    column.getColumn().setWidth(350);
    column.setLabelProvider(new TreeLabelProvider(TreeLabelProvider.ColumnType.PROPERTY));

    column = new TreeViewerColumn(treeViewer, SWT.LEFT);
    column.getColumn().setAlignment(SWT.LEFT);
    column.getColumn().setText("Value");
    column.getColumn().setWidth(350);
    column.setLabelProvider(new TreeLabelProvider(TreeLabelProvider.ColumnType.VALUE));

    setDescription("Preview and confirm the pending changes.");
    setControl(composite);
    setPageComplete(false);
}