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

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

Introduction

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

Prototype

public TreeViewer(Tree tree) 

Source Link

Document

Creates a tree viewer on the given tree control.

Usage

From source file:com.arm.cmsis.pack.ui.widgets.RtePackSelectorWidget.java

License:Open Source License

@Override
public Composite createControl(Composite parent) {
    Tree tree = new Tree(parent, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    tree.setHeaderVisible(true);/*from  www  .j a  v  a 2s .  c o m*/
    viewer = new TreeViewer(tree);
    ColumnViewerToolTipSupport.enableFor(viewer);

    // Tree item name
    TreeViewerColumn column0 = new TreeViewerColumn(viewer, SWT.LEFT);
    tree.setLinesVisible(true);
    column0.getColumn().setAlignment(SWT.LEFT);
    column0.getColumn().setText(CpStrings.Pack);
    column0.getColumn().setWidth(180);
    fColumnAdvisor = new RtePackSelectorColumnAdvisor(viewer);
    column0.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, COLPACK));
    AdvisedCellLabelProvider col0LabelProvider = new AdvisedCellLabelProvider(fColumnAdvisor, COLPACK);
    // workaround jface bug: first owner-draw column is not correctly painted when column is resized
    col0LabelProvider.setOwnerDrawEnabled(false);
    column0.setLabelProvider(col0LabelProvider);

    // Check/menu box for selection
    TreeViewerColumn column1 = new TreeViewerColumn(viewer, SWT.LEFT);
    tree.setLinesVisible(true);
    column1.getColumn().setAlignment(SWT.LEFT);
    column1.getColumn().setText(CpStrings.Selection);
    column1.getColumn().setWidth(100);
    column1.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, COLSEL));
    column1.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, COLSEL));

    // Version
    TreeViewerColumn column2 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column2.getColumn().setAlignment(SWT.LEFT);
    column2.getColumn().setText(CpStringsUI.RteComponentTreeWidget_Version);
    column2.getColumn().setWidth(70);
    column2.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, COLVERSION));
    column2.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, COLVERSION));

    // Description/URL
    TreeViewerColumn column3 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column3.getColumn().setAlignment(SWT.LEFT);
    column3.getColumn().setText(CpStringsUI.RteComponentTreeWidget_Description);
    column3.getColumn().setWidth(400);
    column3.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, COLDESCR));
    column3.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, COLDESCR));

    viewer.setContentProvider(new RtePackProvider());

    GridData gridData = new GridData();
    gridData.horizontalAlignment = SWT.FILL;
    gridData.verticalAlignment = SWT.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.horizontalSpan = 2;
    tree.setLayoutData(gridData);

    //      hookContextMenu();
    return tree;
}

From source file:com.arm.cmsis.pack.ui.widgets.RteValidateWidget.java

License:Open Source License

@Override
public Composite createControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    tree.setHeaderVisible(true);/*ww  w .ja  v a  2s .  com*/
    fViewer = new TreeViewer(tree);
    ColumnViewerToolTipSupport.enableFor(fViewer);
    fColumnAdvisor = new RteValidateColumnAdvisor(fViewer);

    TreeViewerColumn column0 = new TreeViewerColumn(fViewer, SWT.LEFT);
    tree.setLinesVisible(true);
    column0.getColumn().setAlignment(SWT.LEFT);
    column0.getColumn().setText(CpStringsUI.RteValidateWidget_ValidationOutput);
    column0.getColumn().setWidth(400);
    column0.setEditingSupport(new AdvisedEditingSupport(fViewer, fColumnAdvisor, 0));

    fViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            handleTreeSelectionChanged(event);
        }
    });

    AdvisedCellLabelProvider col0LabelProvider = new AdvisedCellLabelProvider(fColumnAdvisor, 0);
    // workaround jface bug: first owner-draw column is not correctly painted when column is resized
    col0LabelProvider.setOwnerDrawEnabled(false);
    column0.setLabelProvider(col0LabelProvider);

    TreeViewerColumn column1 = new TreeViewerColumn(fViewer, SWT.RIGHT);
    column1.getColumn().setAlignment(SWT.LEFT);
    column1.getColumn().setText(CpStringsUI.RteValidateWidget_Description);
    column1.getColumn().setWidth(500);
    column1.setEditingSupport(new AdvisedEditingSupport(fViewer, fColumnAdvisor, 1));
    column1.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, 1));

    RteValidateContentProvider validateProvider = new RteValidateContentProvider();
    fViewer.setContentProvider(validateProvider);

    GridData gridData = new GridData();
    gridData.horizontalAlignment = SWT.FILL;
    gridData.verticalAlignment = SWT.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    tree.setLayoutData(gridData);

    if (getModelController() != null) {
        fViewer.setInput(getModelController());
    }
    return tree;
}

From source file:com.arm.cmsis.pack.widgets.RteComponentTreeWidget.java

License:Apache License

/**
 * Create a widget containing the RTE component
 * @param parent a parent composite containing this RTE component tree widget
 *///from  ww  w .  jav a  2  s.  c  o  m
public void createControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    tree.setHeaderVisible(true);
    viewer = new TreeViewer(tree);
    ColumnViewerToolTipSupport.enableFor(viewer);

    // Tree item name
    TreeViewerColumn column0 = new TreeViewerColumn(viewer, SWT.LEFT);
    tree.setLinesVisible(true);
    column0.getColumn().setAlignment(SWT.LEFT);
    column0.getColumn().setText(SOFTWARECOMPONENT);
    column0.getColumn().setWidth(180);
    IColumnAdvisor columnAdvisor = new ColumnAdvisor();
    column0.setEditingSupport(new AdvisedEditingSupport(viewer, columnAdvisor, 0));
    AdvisedCellLabelProvider col0LabelProvider = new AdvisedCellLabelProvider(columnAdvisor, 0);
    // workaround jface bug: first owner-draw column is not correctly painted when column is resized
    col0LabelProvider.setOwnerDrawEnabled(false);
    column0.setLabelProvider(col0LabelProvider);

    // Check box for selection
    TreeViewerColumn column1 = new TreeViewerColumn(viewer, SWT.CENTER);
    tree.setLinesVisible(true);
    column1.getColumn().setAlignment(SWT.CENTER);
    column1.getColumn().setText("Sel.");
    column1.getColumn().setWidth(35);
    column1.setEditingSupport(new AdvisedEditingSupport(viewer, columnAdvisor, 1));
    column1.setLabelProvider(new AdvisedCellLabelProvider(columnAdvisor, 1));

    // Variant
    TreeViewerColumn column2 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column2.getColumn().setAlignment(SWT.LEFT);
    column2.getColumn().setText("Variant");
    column2.getColumn().setWidth(110);
    column2.setEditingSupport(new AdvisedEditingSupport(viewer, columnAdvisor, 2));
    column2.setLabelProvider(new AdvisedCellLabelProvider(columnAdvisor, 2));

    // Vendor
    TreeViewerColumn column3 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column3.getColumn().setAlignment(SWT.LEFT);
    column3.getColumn().setText("Vendor");
    column3.getColumn().setWidth(110);
    column3.setEditingSupport(new AdvisedEditingSupport(viewer, columnAdvisor, 3));
    column3.setLabelProvider(new AdvisedCellLabelProvider(columnAdvisor, 3));

    // Version
    TreeViewerColumn column4 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column4.getColumn().setAlignment(SWT.LEFT);
    column4.getColumn().setText("Version");
    column4.getColumn().setWidth(70);
    column4.setEditingSupport(new AdvisedEditingSupport(viewer, columnAdvisor, 4));
    column4.setLabelProvider(new AdvisedCellLabelProvider(columnAdvisor, 4));

    // Description/URL
    TreeViewerColumn column5 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column5.getColumn().setAlignment(SWT.LEFT);
    column5.getColumn().setText("Description");
    column5.getColumn().setWidth(400);
    column5.setEditingSupport(new AdvisedEditingSupport(viewer, columnAdvisor, 5));
    column5.setLabelProvider(new AdvisedCellLabelProvider(columnAdvisor, 5));

    RteContentProvider rteContentProvider = new RteContentProvider();
    viewer.setContentProvider(rteContentProvider);

    GridData gridData = new GridData();
    gridData.horizontalAlignment = SWT.FILL;
    gridData.verticalAlignment = SWT.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.horizontalSpan = 2;
    tree.setLayoutData(gridData);

    if (getConfiguration() != null) {
        viewer.setInput(getConfiguration().getComponents());
    }
}

From source file:com.arm.cmsis.pack.widgets.RteValidateWidget.java

License:Apache License

public void createControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    tree.setHeaderVisible(true);/*from ww w .  ja v a  2s.co  m*/
    fViewer = new TreeViewer(tree);
    ColumnViewerToolTipSupport.enableFor(fViewer);

    TreeViewerColumn column0 = new TreeViewerColumn(fViewer, SWT.LEFT);
    tree.setLinesVisible(true);
    column0.getColumn().setAlignment(SWT.LEFT);
    column0.getColumn().setText("Validation Output");
    column0.getColumn().setWidth(500);
    IColumnAdvisor columnAdvisor = new ColumnAdvisor();
    column0.setEditingSupport(new AdvisedEditingSupport(fViewer, columnAdvisor, 0));

    fViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            handleTreeSelectionChanged(event);
        }
    });

    AdvisedCellLabelProvider col0LabelProvider = new AdvisedCellLabelProvider(columnAdvisor, 0);
    // workaround jface bug: first owner-draw column is not correctly painted when column is resized
    col0LabelProvider.setOwnerDrawEnabled(false);
    column0.setLabelProvider(col0LabelProvider);

    TreeViewerColumn column1 = new TreeViewerColumn(fViewer, SWT.RIGHT);
    column1.getColumn().setAlignment(SWT.LEFT);
    column1.getColumn().setText("Description");
    column1.getColumn().setWidth(500);
    column1.setEditingSupport(new AdvisedEditingSupport(fViewer, columnAdvisor, 1));
    column1.setLabelProvider(new AdvisedCellLabelProvider(columnAdvisor, 1));

    ValidateProvider validateProvider = new ValidateProvider();
    fViewer.setContentProvider(validateProvider);

    GridData gridData = new GridData();
    gridData.horizontalAlignment = SWT.FILL;
    gridData.verticalAlignment = SWT.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    tree.setLayoutData(gridData);

    if (getConfiguration() != null) {
        fViewer.setInput(getConfiguration());
    }

}

From source file:com.astra.ses.spell.gui.views.controls.callstack.CallStackPage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    m_viewer = new TreeViewer(parent);
    m_viewer.setContentProvider(new CallstackContentProvider());
    m_viewer.setLabelProvider(new CallstackLabelProvider());
    // Set the input
    IProcedureManager mgr = (IProcedureManager) ServiceManager.get(IProcedureManager.class);
    m_viewer.setInput(mgr.getProcedure(m_procId));
}

From source file:com.astra.ses.spell.gui.views.controls.outline.OutlinePage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    m_viewer = new TreeViewer(parent);
    m_viewer.setContentProvider(new OutlineContentProvider());
    m_viewer.setLabelProvider(new OutlineDecoratingLabelProvider());
    // Actions//from   ww w. ja  va2  s .c  om
    createActions();
    hookDoubleClickAction();
    // Set the input
    IProcedureManager mgr = (IProcedureManager) ServiceManager.get(IProcedureManager.class);
    m_viewer.setInput(mgr.getProcedure(m_procId));
    m_viewer.expandToLevel(TreeViewer.ALL_LEVELS);
}

From source file:com.astra.ses.spell.gui.views.HistoryTreePage.java

License:Open Source License

public HistoryTreePage(String procId, Composite parent, HistoryTreeView view) {
    super(parent, SWT.NONE);
    setLayout(new GridLayout(1, true));

    m_model = s_pmgr.getProcedure(procId);

    TreeViewer viewer = new TreeViewer(this);
    viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
    viewer.setContentProvider(new HistoryTreeContentProvider());
    viewer.setLabelProvider(new HistoryTreeLabelProvider());
    viewer.setInput(m_model);//from w  w w.ja  v  a 2 s. c  om
    viewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection sel = (IStructuredSelection) event.getSelection();
            Object obj = sel.getFirstElement();
            String instanceId = null;
            if (obj instanceof HistoryTreeRootNode) {
                HistoryTreeRootNode node = (HistoryTreeRootNode) obj;
                instanceId = node.getInstanceId();
            } else if (obj instanceof HistoryTreeChildProcedureNode) {
                HistoryTreeChildProcedureNode node = (HistoryTreeChildProcedureNode) obj;
                instanceId = node.getInstanceId();
            }
            if (instanceId != null) {
                if (s_vmgr.containsProcedureView(instanceId)) {
                    s_vmgr.showProcedureView(instanceId);
                } else {
                    HistoryTreeChildProcedureNode node = (HistoryTreeChildProcedureNode) obj;
                    HashMap<String, String> args = new HashMap<String, String>();
                    args.put(OpenProcedureReplay.ARG_ASRUN, node.getAsRunPath());
                    CommandHelper.execute(OpenProcedureReplay.ID, args);
                }
            }
        }
    });
    ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.NO_RECREATE);
    viewer.expandAll();

    MenuManager menuMgr = new MenuManager("#PopupMenu");
    menuMgr.setRemoveAllWhenShown(true);
    menuMgr.addMenuListener(new IMenuListener() {
        public void menuAboutToShow(IMenuManager manager) {
            Action exportAsRunTree = new Action() {
                public void run() {
                    HistoryTreePage.this.exportAsRunTree();
                }
            };
            exportAsRunTree.setText("Export ASRUN...");
            manager.add(exportAsRunTree);
        }
    });
    Menu menu = menuMgr.createContextMenu(viewer.getControl());
    viewer.getControl().setMenu(menu);
    view.getSite().registerContextMenu(menuMgr, viewer);
}

From source file:com.atlassian.connector.eclipse.internal.crucible.ui.wizards.SelectChangesetsFromCruciblePage.java

License:Open Source License

private void createChangesViewer(Composite parent) {
    Tree tree = new Tree(parent, SWT.MULTI | SWT.BORDER);
    availableTreeViewer = new TreeViewer(tree);

    GridDataFactory.fillDefaults().grab(true, true).hint(300, 220).applyTo(tree);
    availableTreeViewer.setLabelProvider(new ChangesetLabelProvider());
    availableTreeViewer.setContentProvider(new ChangesetContentProvider());
    availableTreeViewer.setComparator(new ResourceComparator(ResourceComparator.NAME));
    availableTreeViewer.setComparator(new ViewerComparator() {
        @Override/*from   w  w  w  .j  a va  2s  .c  o  m*/
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof Change && e2 instanceof Change) {
                return ((Change) e2).getDate().compareTo(((Change) e1).getDate());
            }
            return super.compare(viewer, e1, e2);
        }
    });

    tree.setMenu(createChangesContextMenu());

    tree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateButtonEnablement();
        }
    });
    availableTreeViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
            // ignore
        }

        public void treeExpanded(TreeExpansionEvent event) {
            // first time of expanding: retrieve first 10 changesets
            final Object object = event.getElement();
            if (object instanceof Repository) {
                refreshRepository((Repository) object);
            }

        }
    });
    availableTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            Object object = selection.getFirstElement();
            if (availableTreeViewer.isExpandable(object)) {
                if (!availableTreeViewer.getExpandedState(object) && object instanceof Repository) {
                    refreshRepository((Repository) object);
                    return;
                }
                availableTreeViewer.setExpandedState(object, !availableTreeViewer.getExpandedState(object));
            }
        }
    });
}

From source file:com.atlassian.connector.eclipse.internal.crucible.ui.wizards.SelectChangesetsFromCruciblePage.java

License:Open Source License

private void createSelectedChangesViewer(Composite composite) {
    Tree tree = new Tree(composite, SWT.MULTI | SWT.BORDER);
    selectedTreeViewer = new TreeViewer(tree);

    GridDataFactory.fillDefaults().grab(true, true).hint(300, 220).applyTo(tree);
    selectedTreeViewer.setLabelProvider(new ChangesetLabelProvider());
    selectedTreeViewer.setContentProvider(new ITreeContentProvider() {
        private Map<String, Set<String>> currentMap;

        public Object[] getChildren(Object parentElement) {
            return currentMap.get(parentElement).toArray();
        }//from  w w  w  . java  2  s. c  o  m

        public Object[] getElements(Object inputElement) {
            return currentMap.keySet().toArray();
        }

        public boolean hasChildren(Object element) {
            return currentMap.containsKey(element);
        }

        @SuppressWarnings("unchecked")
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            this.currentMap = (Map<String, Set<String>>) newInput;
        }

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

        public void dispose() {
        }
    });
    selectedTreeViewer.setComparator(new ResourceComparator(ResourceComparator.NAME));

    tree.setMenu(createSelectedChangesMenu());
    tree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateButtonEnablement();
        }
    });
}

From source file:com.atlassian.connector.eclipse.internal.crucible.ui.wizards.SelectScmChangesetsPage.java

License:Open Source License

private void createLeftViewer(Composite parent) {
    Tree tree = new Tree(parent, SWT.MULTI | SWT.BORDER);
    availableTreeViewer = new TreeViewer(tree);

    GridDataFactory.fillDefaults().grab(true, true).hint(300, 220).applyTo(tree);
    availableTreeViewer.setLabelProvider(new ChangesetLabelProvider());
    availableTreeViewer.setContentProvider(new ChangesetContentProvider());
    availableTreeViewer.setComparator(new ResourceComparator(ResourceComparator.NAME));
    availableTreeViewer.setComparator(new ViewerComparator() {
        @Override//from  ww  w .  j  a va2  s .c  o  m
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof ICustomChangesetLogEntry && e2 instanceof ICustomChangesetLogEntry) {
                return ((ICustomChangesetLogEntry) e2).getDate()
                        .compareTo(((ICustomChangesetLogEntry) e1).getDate());
            }
            return super.compare(viewer, e1, e2);
        }
    });
    availableTreeViewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
    final Menu contextMenuSource = new Menu(getShell(), SWT.POP_UP);
    tree.setMenu(contextMenuSource);
    addChangesetMenuItem = new MenuItem(contextMenuSource, SWT.PUSH);
    addChangesetMenuItem.setText("Add to Review");

    new MenuItem(contextMenuSource, SWT.SEPARATOR);

    addChangesetMenuItem.setEnabled(false);
    getNextRevisionsMenuItem = new MenuItem(contextMenuSource, SWT.PUSH);
    getNextRevisionsMenuItem.setText(String.format("Get %d More Revisions", LIMIT));
    getNextRevisionsMenuItem.setEnabled(false);
    getNextRevisionsMenuItem.addSelectionListener(new SelectionAdapter() {
        @SuppressWarnings("unchecked")
        @Override
        public void widgetSelected(SelectionEvent e) {
            TreeSelection selection = getTreeSelection(availableTreeViewer);
            if (selection != null) {
                Iterator<Object> iterator = (selection).iterator();
                Set<ScmRepository> alreadyDone = new TreeSet<ScmRepository>();
                while (iterator.hasNext()) {
                    Object element = iterator.next();
                    ScmRepository repository = null;
                    if (element instanceof ICustomChangesetLogEntry) {
                        repository = ((ICustomChangesetLogEntry) element).getRepository();
                    } else if (element instanceof ScmRepository) {
                        repository = (ScmRepository) element;
                    }
                    if (repository != null && !alreadyDone.contains(repository)) {
                        SortedSet<ICustomChangesetLogEntry> logEntries = availableLogEntries.get(repository);
                        int currentNumberOfEntries = logEntries == null ? 0 : logEntries.size();
                        updateChangesets(repository, currentNumberOfEntries + LIMIT);
                        alreadyDone.add(repository);
                    }
                }
            } else {
                //update all
                for (ScmRepository repository : availableLogEntries.keySet()) {
                    SortedSet<ICustomChangesetLogEntry> logEntries = availableLogEntries.get(repository);
                    int currentNumberOfEntries = logEntries == null ? 0 : logEntries.size();
                    updateChangesets(repository, currentNumberOfEntries + LIMIT);
                }
            }
        }
    });
    addChangesetMenuItem.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            addChangesets();
            updateButtonEnablement();
        }
    });
    tree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateButtonEnablement();
        }
    });
    availableTreeViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
            // ignore
        }

        public void treeExpanded(TreeExpansionEvent event) {
            // first time of expanding: retrieve first 10 changesets
            final Object object = event.getElement();
            if (object instanceof ScmRepository) {
                refreshRepository((ScmRepository) object);
            }

        }
    });
    availableTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            Object object = selection.getFirstElement();
            if (availableTreeViewer.isExpandable(object)) {
                if (!availableTreeViewer.getExpandedState(object) && object instanceof ScmRepository) {
                    refreshRepository((ScmRepository) object);
                    return;
                }
                availableTreeViewer.setExpandedState(object, !availableTreeViewer.getExpandedState(object));
            }
        }
    });
}