Package org.eclipse.egit.ui.internal.dialogs

Source Code of org.eclipse.egit.ui.internal.dialogs.NonDeletedFilesTree

/*******************************************************************************
* Copyright (c) 2010 SAP AG.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Mathias Kinzler (SAP AG) - initial implementation
*******************************************************************************/
package org.eclipse.egit.ui.internal.dialogs;

import java.util.List;

import org.eclipse.egit.ui.UIUtils;
import org.eclipse.egit.ui.internal.UIIcons;
import org.eclipse.egit.ui.internal.UIText;
import org.eclipse.egit.ui.internal.dialogs.FileTreeContentProvider.Mode;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;

/**
* UI to show a tree with files within a Repository
*/
public class NonDeletedFilesTree extends TreeViewer {

  private final List<String> filePaths;

  /**
   * @param parent
   * @param repository
   * @param pathList
   */
  public NonDeletedFilesTree(Composite parent, Repository repository,
      List<String> pathList) {
    super(createComposite(parent), SWT.BORDER);
    this.filePaths = pathList;

    Composite main = getTree().getParent();

    GridDataFactory.fillDefaults().grab(true, true).applyTo(getTree());

    final FileTreeContentProvider cp = new FileTreeContentProvider(
        repository);

    setContentProvider(cp);
    setLabelProvider(new FileTreeLabelProvider());
    setInput(this.filePaths);
    expandAll();

    final ToolBar dropDownBar = new ToolBar(main, SWT.FLAT | SWT.RIGHT);
    GridDataFactory.swtDefaults().align(SWT.BEGINNING, SWT.BEGINNING)
        .grab(false, false).applyTo(dropDownBar);
    final ToolItem dropDownItem = new ToolItem(dropDownBar, SWT.DROP_DOWN);
    Image dropDownImage = UIIcons.HIERARCHY.createImage();
    UIUtils.hookDisposal(dropDownItem, dropDownImage);
    dropDownItem.setImage(dropDownImage);
    final Menu menu = new Menu(dropDownBar);
    dropDownItem.addDisposeListener(new DisposeListener() {

      public void widgetDisposed(DisposeEvent e) {
        menu.dispose();
      }
    });
    dropDownItem.addSelectionListener(new SelectionAdapter() {

      public void widgetSelected(SelectionEvent e) {
        Rectangle b = dropDownItem.getBounds();
        Point p = dropDownItem.getParent().toDisplay(
            new Point(b.x, b.y + b.height));
        menu.setLocation(p.x, p.y);
        menu.setVisible(true);
      }

    });

    final MenuItem showRepoRelative = new MenuItem(menu, SWT.RADIO);
    showRepoRelative
        .setText(UIText.NonDeletedFilesTree_RepoRelativePathsButton);
    showRepoRelative.setSelection(true);
    showRepoRelative.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        if (showRepoRelative.getSelection()) {
          cp.setMode(Mode.REPO_RELATIVE_PATHS);
          setInput(getInput());
          expandAll();
        }
      }
    });

    final MenuItem showFull = new MenuItem(menu, SWT.RADIO);
    showFull.setText(UIText.NonDeletedFilesTree_FileSystemPathsButton);
    showFull.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        if (showFull.getSelection()) {
          cp.setMode(Mode.FULL_PATHS);
          setInput(getInput());
          expandAll();
        }
      }
    });

    final MenuItem showResource = new MenuItem(menu, SWT.RADIO);
    showResource.setText(UIText.NonDeletedFilesTree_ResourcePathsButton);
    showResource.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        if (showResource.getSelection()) {
          cp.setMode(Mode.RESOURCE_PATHS);
          setInput(getInput());
          expandAll();
        }
      }
    });
  }

  private static Composite createComposite(Composite parent) {
    Composite main = new Composite(parent, SWT.NONE);
    GridDataFactory.fillDefaults().indent(0, 0).grab(true, true)
        .applyTo(main);
    GridLayoutFactory.fillDefaults().spacing(0, 0).numColumns(2)
        .applyTo(main);
    return main;
  }
}
TOP

Related Classes of org.eclipse.egit.ui.internal.dialogs.NonDeletedFilesTree

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.