/** Populate tree. */
 protected void populateTree() {
   if (getTreeViewer() == null
       || getTreeViewer().getTree() == null
       || getViewInfo() == null
       || getDiagram() == null) {
     return;
   }
   Diagram diagram = getDiagram();
   Collection<Integer> filters = MDTUtil.getAllViewsToFilterFromDiagram(diagram);
   for (TreeItem item : getTreeViewer().getTree().getItems()) {
     Object data = item.getData();
     if (data instanceof ViewInfo) {
       ViewInfo info = (ViewInfo) data;
       if (filters.contains(info.getVisualID())) {
         item.setChecked(false);
       } else {
         item.setChecked(true);
       }
       if (((ViewInfo) data).isSelectable() == false) {
         item.setForeground(ColorConstants.gray);
       }
     }
     setChecked(item, filters);
   }
 }
 /**
  * Sets the checked.
  *
  * @param root the root
  * @param filters the filters
  */
 protected void setChecked(TreeItem root, Collection<Integer> filters) {
   for (TreeItem item : root.getItems()) {
     Object data = item.getData();
     if (data instanceof ViewInfo) {
       ViewInfo info = (ViewInfo) data;
       if (filters.contains(info.getVisualID())) {
         item.setChecked(false);
       } else {
         item.setChecked(true);
       }
     }
     setChecked(item, filters);
   }
 }
Ejemplo n.º 3
0
  /* (non-Javadoc)
   * @see org.eclipse.jface.viewers.CheckboxTreeViewer#setAllChecked(boolean)
   */
  public void setAllChecked(boolean state) {
    for (TreeItem item : super.getTree().getItems()) item.setChecked(state);
    if (state) {

      // Find all visible children, add only the visible leaf nodes to the check state cache
      Object[] visible = getFilteredChildren(getRoot());

      ITreeContentProvider contentProvider = null;
      if (getContentProvider() instanceof ITreeContentProvider) {
        contentProvider = (ITreeContentProvider) getContentProvider();
      }

      if (contentProvider == null) {
        for (int i = 0; i < visible.length; i++) {
          checkState.add(visible[i]);
        }
      } else {
        Set<Object> toCheck = new HashSet<Object>();
        for (int i = 0; i < visible.length; i++) {
          addFilteredChildren(visible[i], contentProvider, toCheck);
        }
        checkState.addAll(toCheck);
      }
    } else {
      // Remove any item in the check state that is visible (passes the filters)
      if (checkState != null) {
        Object[] visible = filter(checkState.toArray());
        for (int i = 0; i < visible.length; i++) {
          checkState.remove(visible[i]);
        }
      }
    }
  }
Ejemplo n.º 4
0
 /**
  * Update all the children TreeItems of the given parent to be the same check as the parent.
  *
  * @param parent the parent
  */
 protected void updateChildCheckboxes(TreeItem parent) {
   for (TreeItem child : parent.getItems()) {
     child.setChecked(parent.getChecked());
     child.setGrayed(false);
     updateChildCheckboxes(child);
   }
 }
Ejemplo n.º 5
0
  /** Create contents of the dialog. */
  private void createContents() {
    this.shell = new Shell(this.getParent(), SWT.SHELL_TRIM | SWT.PRIMARY_MODAL);
    this.shell.setSize(300, 275);
    this.shell.setText("Columns");
    this.shell.setLayout(new FillLayout(SWT.HORIZONTAL));

    // ヘッダー
    String[] header = this.dialog.getTableHeader();
    // カラム設定を取得
    boolean[] visibles =
        AppConfig.get().getVisibleColumnMap().get(this.dialog.getClass().getName());
    if ((visibles == null) || (visibles.length != header.length)) {
      visibles = new boolean[header.length];
      Arrays.fill(visibles, true);
      AppConfig.get().getVisibleColumnMap().put(this.dialog.getClass().getName(), visibles);
    }

    Tree tree = new Tree(this.shell, SWT.BORDER | SWT.CHECK);

    for (int i = 1; i < header.length; i++) {
      TreeItem column = new TreeItem(tree, SWT.CHECK);
      column.setText(header[i]);
      column.setChecked(visibles[i]);
      column.setExpanded(true);
    }
    this.shell.addShellListener(new TreeShellAdapter(tree, visibles, this.dialog));
  }
  private void updateTreeCheckboxesForItem(TreeItem item) {
    ICheckboxTreeContentProvider contentProvider = contentProvider();

    while (item != null) {
      item.setChecked(contentProvider.isChecked(item.getData()));
      item = ((TreeViewerAccess) treeViewer).getNextItem(item, true);
    }
  }
  /** @param e */
  private void checkSelection(final SelectionEvent e) {
    TreeItem selItem = null;
    TreeItem[] items = null;

    selItem = (TreeItem) e.item;
    if (selItem.getChecked()) {
      items = this.interfaceTree.getItems();
      for (TreeItem element : items) {
        element.setChecked(false);
      }

      selItem.setChecked(true);
    }

    this.isComplete = true;
    this.updateStatus(null);
  }
Ejemplo n.º 8
0
 /**
  * Sets the up tree item.
  *
  * @param cp the cp
  * @param checked the checked
  */
 private void setUpTreeItem(ICPEType cp, TreeItem checked) {
   checked.setText(cp.toString());
   checked.setChecked(cp.isEnabled());
   checked.setData(cp);
   if (cp.getIcon() != null) {
     checked.setImage(cp.getIcon());
   }
 }
 /* (non-Javadoc)
  * Method declared on ICheckable.
  */
 public boolean setChecked(Object element, boolean state) {
   Assert.isNotNull(element);
   Widget widget = internalExpand(element, false);
   if (widget instanceof TreeItem) {
     ((TreeItem) widget).setChecked(state);
     return true;
   }
   return false;
 }
 /**
  * Sets the checked state for the given element and its visible children in this viewer. Assumes
  * that the element has been expanded before. To enforce that the item is expanded, call <code>
  * expandToLevel</code> for the element. Does not fire events to check state listeners.
  *
  * @param element the element
  * @param state <code>true</code> if the item should be checked, and <code>false</code> if it
  *     should be unchecked
  * @return <code>true</code> if the checked state could be set, and <code>false</code> otherwise
  */
 public boolean setSubtreeChecked(Object element, boolean state) {
   Widget widget = internalExpand(element, false);
   if (widget instanceof TreeItem) {
     TreeItem item = (TreeItem) widget;
     item.setChecked(state);
     setCheckedChildren(item, state);
     return true;
   }
   return false;
 }
 protected void refreshItem(TreeItem item, SelectableFeature feature) {
   item.setBackground(null);
   item.setFont(treeItemStandardFont);
   switch (feature.getAutomatic()) {
     case SELECTED:
       item.setGrayed(true);
       item.setForeground(null);
       item.setChecked(true);
       break;
     case UNSELECTED:
       item.setGrayed(true);
       item.setForeground(gray);
       item.setChecked(false);
       break;
     case UNDEFINED:
       item.setGrayed(false);
       item.setForeground(null);
       item.setChecked(feature.getManual() == Selection.SELECTED);
       break;
   }
 }
Ejemplo n.º 12
0
 /**
  * Make check marks consistent with children.
  *
  * @param item the item
  * @return null if checkbox should be gray, true if checked, false if unchecked
  */
 private Boolean makeChecksConsistentWithChildren(TreeItem item) {
   Boolean ret = item.getChecked();
   for (TreeItem child : item.getItems()) {
     Boolean current = makeChecksConsistentWithChildren(child);
     if (current != ret) {
       ret = null;
     }
   }
   item.setChecked(!Boolean.FALSE.equals(ret));
   item.setGrayed(ret == null);
   return ret;
 }
 /**
  * Sets the checked state for the children of the given item.
  *
  * @param item the item
  * @param state <code>true</code> if the item should be checked, and <code>false</code> if it
  *     should be unchecked
  */
 private void setCheckedChildren(Item item, boolean state) {
   createChildren(item);
   Item[] items = getChildren(item);
   if (items != null) {
     for (int i = 0; i < items.length; i++) {
       Item it = items[i];
       if (it.getData() != null && (it instanceof TreeItem)) {
         TreeItem treeItem = (TreeItem) it;
         treeItem.setChecked(state);
         setCheckedChildren(treeItem, state);
       }
     }
   }
 }
 private void displayError(Tree tree, String message) {
   tree.removeAll();
   TreeItem item = new TreeItem(tree, 1);
   item.setText(message);
   item.setImage(
       0,
       FMUIPlugin.getDefault()
           .getWorkbench()
           .getSharedImages()
           .getImage(ISharedImages.IMG_OBJS_ERROR_TSK));
   item.setChecked(true);
   item.setGrayed(true);
   dirty = false;
 }
 /**
  * Sets the checked state of all items to correspond to the given set of checked elements.
  *
  * @param checkedElements the set (element type: <code>Object</code>) of elements which are
  *     checked
  * @param widget the widget
  */
 private void internalSetChecked(CustomHashtable checkedElements, Widget widget) {
   Item[] items = getChildren(widget);
   for (int i = 0; i < items.length; i++) {
     TreeItem item = (TreeItem) items[i];
     Object data = item.getData();
     if (data != null) {
       boolean checked = checkedElements.containsKey(data);
       if (checked != item.getChecked()) {
         item.setChecked(checked);
       }
     }
     internalSetChecked(checkedElements, item);
   }
 }
 /**
  * Applies the checked and grayed states of the given widget and its descendents.
  *
  * @param checked a set of elements (element type: <code>Object</code>)
  * @param grayed a set of elements (element type: <code>Object</code>)
  * @param widget the widget
  */
 private void applyState(CustomHashtable checked, CustomHashtable grayed, Widget widget) {
   Item[] items = getChildren(widget);
   for (int i = 0; i < items.length; i++) {
     Item item = items[i];
     if (item instanceof TreeItem) {
       Object data = item.getData();
       if (data != null) {
         TreeItem ti = (TreeItem) item;
         ti.setChecked(checked.containsKey(data));
         ti.setGrayed(grayed.containsKey(data));
       }
     }
     applyState(checked, grayed, item);
   }
 }
 /**
  * When one element from the tree is selected, all elements with the same VisualID are put into
  * the same state (checked or unchecked).
  *
  * @param items
  * @param visualID
  * @param check
  */
 protected void setAllVisualIDsChecked(TreeItem[] items, int visualID, boolean check) {
   ViewInfo viewInfo = null;
   for (TreeItem item : items) {
     if (item != null) {
       viewInfo =
           (ViewInfo) Platform.getAdapterManager().getAdapter(item.getData(), ViewInfo.class);
       if (viewInfo != null && visualID == viewInfo.getVisualID()) {
         item.setChecked(check);
       }
       if (item.getItems() != null) {
         setAllVisualIDsChecked(item.getItems(), visualID, check);
       }
     }
   }
 }
Ejemplo n.º 18
0
 private void fillTreeItemWithGitDirectory(
     RepositoryMapping m, TreeItem treeItem, boolean isAlternative) {
   if (m.getGitDir() == null)
     treeItem.setText(2, UIText.ExistingOrNewPage_SymbolicValueEmptyMapping);
   else {
     IPath relativePath = new Path(m.getGitDir());
     if (isAlternative) {
       IPath withoutLastSegment = relativePath.removeLastSegments(1);
       IPath path;
       if (withoutLastSegment.isEmpty()) path = Path.fromPortableString("."); // $NON-NLS-1$
       else path = withoutLastSegment;
       treeItem.setText(0, path.toString());
     }
     treeItem.setText(2, relativePath.toOSString());
     try {
       IProject project = m.getContainer().getProject();
       Repository repo =
           new RepositoryBuilder().setGitDir(m.getGitDirAbsolutePath().toFile()).build();
       File workTree = repo.getWorkTree();
       IPath workTreePath = Path.fromOSString(workTree.getAbsolutePath());
       if (workTreePath.isPrefixOf(project.getLocation())) {
         IPath makeRelativeTo = project.getLocation().makeRelativeTo(workTreePath);
         String repoRelativePath =
             makeRelativeTo.append("/.project").toPortableString(); // $NON-NLS-1$
         ObjectId headCommitId = repo.resolve(Constants.HEAD);
         if (headCommitId != null) {
           // Not an empty repo
           RevWalk revWalk = new RevWalk(repo);
           RevCommit headCommit = revWalk.parseCommit(headCommitId);
           RevTree headTree = headCommit.getTree();
           TreeWalk projectInRepo = TreeWalk.forPath(repo, repoRelativePath, headTree);
           if (projectInRepo != null) {
             // the .project file is tracked by this repo
             treeItem.setChecked(true);
           }
           revWalk.dispose();
         }
       }
       repo.close();
     } catch (IOException e1) {
       Activator.logError(UIText.ExistingOrNewPage_FailedToDetectRepositoryMessage, e1);
     }
   }
 }
 protected void treeItemSelected(SelectionEvent e) {
   if (e.detail == SWT.CHECK && isChecking == false) {
     isChecking = true;
     try {
       Object data = e.item.getData();
       ViewInfo viewInfo =
           (ViewInfo) Platform.getAdapterManager().getAdapter(data, ViewInfo.class);
       TreeItem item = (TreeItem) Platform.getAdapterManager().getAdapter(e.item, TreeItem.class);
       if (viewInfo != null && item != null && getTreeViewer().getTree().getItems() != null) {
         if (viewInfo.isSelectable()) {
           setAllVisualIDsChecked(
               getTreeViewer().getTree().getItems(), viewInfo.getVisualID(), item.getChecked());
         } else {
           item.setChecked(!item.getChecked());
         }
       }
     } finally {
       isChecking = false;
     }
   }
 }
 protected void lockItem(TreeItem item) {
   item.setGrayed(true);
   item.setChecked(true);
   item.setForeground(gray);
   item.setFont(treeItemStandardFont);
 }
Ejemplo n.º 21
0
  public void createControl(Composite parent) {
    final RepositoryUtil util = Activator.getDefault().getRepositoryUtil();
    Composite main = new Composite(parent, SWT.NONE);
    // use zero spacing to save some real estate here
    GridLayoutFactory.fillDefaults().spacing(0, 0).applyTo(main);

    final Button internalModeButton = new Button(main, SWT.CHECK);
    internalModeButton.setText(UIText.ExistingOrNewPage_InternalModeCheckbox);
    internalModeButton.setToolTipText(UIText.ExistingOrNewPage_CreationInWorkspaceWarningTooltip);
    internalModeButton.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            internalMode = internalModeButton.getSelection();
            updateControls();
          }
        });

    externalComposite = new Composite(main, SWT.NONE);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(externalComposite);
    externalComposite.setLayout(new GridLayout(3, false));

    new Label(externalComposite, SWT.NONE)
        .setText(UIText.ExistingOrNewPage_ExistingRepositoryLabel);
    final Combo existingRepoCombo = new Combo(externalComposite, SWT.READ_ONLY);
    GridDataFactory.fillDefaults().grab(true, false).applyTo(existingRepoCombo);
    final ComboViewer v = new ComboViewer(existingRepoCombo);
    v.setContentProvider(new RepoComboContentProvider());
    v.setLabelProvider(new RepoComboLabelProvider());
    v.setInput(new Object());
    // the default ViewerSorter seems to do the right thing
    // i.e. sort as String
    v.setSorter(new ViewerSorter());

    existingRepoCombo.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            selectedRepository = null;
            IStructuredSelection sel = (IStructuredSelection) v.getSelection();
            setRepository((Repository) sel.getFirstElement());
            updateControls();
          }
        });

    Button createRepoWizard = new Button(externalComposite, SWT.PUSH);
    createRepoWizard.setText(UIText.ExistingOrNewPage_CreateRepositoryButton);
    createRepoWizard.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            NewRepositoryWizard wiz = new NewRepositoryWizard(true);
            if (new WizardDialog(getShell(), wiz).open() == Window.OK) {
              v.refresh();
              selectedRepository = wiz.getCreatedRepository();
              v.setSelection(new StructuredSelection(selectedRepository));
              updateControls();
            }
          }
        });

    new Label(externalComposite, SWT.NONE).setText(UIText.ExistingOrNewPage_WorkingDirectoryLabel);
    workDir = new Text(externalComposite, SWT.BORDER | SWT.READ_ONLY);
    GridDataFactory.fillDefaults().grab(true, false).applyTo(workDir);
    GridDataFactory.fillDefaults().applyTo(workDir);
    // leave the space between the "Create" and "Browse" buttons empty (i.e.
    // do not fill to the right border
    new Label(externalComposite, SWT.NONE);

    new Label(externalComposite, SWT.NONE).setText(UIText.ExistingOrNewPage_RelativePathLabel);
    relPath = new Text(externalComposite, SWT.BORDER);
    relPath.addModifyListener(
        new ModifyListener() {
          public void modifyText(ModifyEvent e) {
            updateControls();
          }
        });

    GridDataFactory.fillDefaults().grab(true, false).applyTo(relPath);
    browseRepository = new Button(externalComposite, SWT.PUSH);
    browseRepository.setEnabled(false);
    browseRepository.setText(UIText.ExistingOrNewPage_BrowseRepositoryButton);
    browseRepository.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            DirectoryDialog dlg = new DirectoryDialog(getShell());
            dlg.setFilterPath(selectedRepository.getWorkTree().getPath());
            String directory = dlg.open();
            if (directory != null) {
              setRelativePath(directory);
              updateControls();
            }
          }
        });

    Table projectMoveTable =
        new Table(externalComposite, SWT.MULTI | SWT.FULL_SELECTION | SWT.CHECK | SWT.BORDER);
    projectMoveViewer = new CheckboxTableViewer(projectMoveTable);
    GridDataFactory.fillDefaults().span(3, 1).grab(true, true).applyTo(projectMoveTable);

    TableColumn tc;
    tc = new TableColumn(projectMoveTable, SWT.NONE);
    tc.setText(UIText.ExistingOrNewPage_ProjectNameColumnHeader);
    tc.setWidth(100);

    tc = new TableColumn(projectMoveTable, SWT.NONE);
    tc.setText(UIText.ExistingOrNewPage_CurrentLocationColumnHeader);
    tc.setWidth(250);

    tc = new TableColumn(projectMoveTable, SWT.NONE);
    tc.setText(UIText.ExistingOrNewPage_NewLocationTargetHeader);
    tc.setWidth(350);

    projectMoveTable.setHeaderVisible(true);
    projectMoveViewer.setContentProvider(ArrayContentProvider.getInstance());
    projectMoveViewer.setLabelProvider(moveProjectsLabelProvider);
    projectMoveViewer.setInput(myWizard.projects);
    projectMoveViewer.addCheckStateListener(
        new ICheckStateListener() {
          public void checkStateChanged(CheckStateChangedEvent event) {
            updateControls();
          }
        });
    TableItem[] children = projectMoveViewer.getTable().getItems();
    for (int i = 0; i < children.length; i++) {
      TableItem item = children[i];
      IProject data = (IProject) item.getData();
      RepositoryFinder repositoryFinder = new RepositoryFinder(data);
      repositoryFinder.setFindInChildren(false);
      try {
        Collection<RepositoryMapping> find = repositoryFinder.find(new NullProgressMonitor());
        if (find.size() != 1) item.setChecked(true);
      } catch (CoreException e1) {
        item.setText(2, e1.getMessage());
      }
    }

    parentRepoComposite = new Composite(main, SWT.NONE);
    parentRepoComposite.setLayout(new GridLayout(3, false));
    GridDataFactory.fillDefaults().grab(true, true).applyTo(parentRepoComposite);

    tree = new Tree(parentRepoComposite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.CHECK);
    viewer = new CheckboxTreeViewer(tree);
    tree.setHeaderVisible(true);
    tree.setLayout(new GridLayout());
    tree.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).span(3, 1).create());
    viewer.addCheckStateListener(
        new ICheckStateListener() {

          public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getChecked()) {
              ProjectAndRepo checkable = (ProjectAndRepo) event.getElement();
              for (TreeItem ti : tree.getItems()) {
                if (ti.getItemCount() > 0
                    || ((ProjectAndRepo) ti.getData()).getRepo().equals("")) // $NON-NLS-1$
                ti.setChecked(false);
                for (TreeItem subTi : ti.getItems()) {
                  IProject project = ((ProjectAndRepo) subTi.getData()).getProject();
                  if (checkable.getProject() != null
                      && !subTi.getData().equals(checkable)
                      && checkable.getProject().equals(project)) subTi.setChecked(false);
                }
              }
            }
          }
        });
    TreeColumn c1 = new TreeColumn(tree, SWT.NONE);
    c1.setText(UIText.ExistingOrNewPage_HeaderProject);
    c1.setWidth(100);
    TreeColumn c2 = new TreeColumn(tree, SWT.NONE);
    c2.setText(UIText.ExistingOrNewPage_HeaderLocation);
    c2.setWidth(400);
    TreeColumn c3 = new TreeColumn(tree, SWT.NONE);
    c3.setText(UIText.ExistingOrNewPage_HeaderRepository);
    c3.setWidth(200);
    boolean allProjectsInExistingRepos = true;
    for (IProject project : myWizard.projects) {
      RepositoryFinder repositoryFinder = new RepositoryFinder(project);
      repositoryFinder.setFindInChildren(false);
      try {
        Collection<RepositoryMapping> mappings;
        mappings = repositoryFinder.find(new NullProgressMonitor());
        Iterator<RepositoryMapping> mi = mappings.iterator();
        RepositoryMapping m = mi.hasNext() ? mi.next() : null;
        if (m == null) {
          // no mapping found, enable repository creation
          TreeItem treeItem = new TreeItem(tree, SWT.NONE);
          updateProjectTreeItem(treeItem, project);
          treeItem.setText(1, project.getLocation().toOSString());
          treeItem.setText(2, ""); // $NON-NLS-1$
          treeItem.setData(new ProjectAndRepo(project, "")); // $NON-NLS-1$
          allProjectsInExistingRepos = false;
        } else if (!mi.hasNext()) {
          // exactly one mapping found
          TreeItem treeItem = new TreeItem(tree, SWT.NONE);
          updateProjectTreeItem(treeItem, project);
          treeItem.setText(1, project.getLocation().toOSString());
          fillTreeItemWithGitDirectory(m, treeItem, false);
          treeItem.setData(new ProjectAndRepo(project, m.getGitDirAbsolutePath().toOSString()));
          treeItem.setChecked(true);
        } else {
          TreeItem treeItem = new TreeItem(tree, SWT.NONE);
          updateProjectTreeItem(treeItem, project);
          treeItem.setText(1, project.getLocation().toOSString());
          treeItem.setData(new ProjectAndRepo(project, "")); // $NON-NLS-1$

          TreeItem treeItem2 = new TreeItem(treeItem, SWT.NONE);
          updateProjectTreeItem(treeItem2, project);
          fillTreeItemWithGitDirectory(m, treeItem2, true);
          treeItem2.setData(new ProjectAndRepo(project, m.getGitDirAbsolutePath().toOSString()));
          while (mi.hasNext()) { // fill in additional mappings
            m = mi.next();
            treeItem2 = new TreeItem(treeItem, SWT.NONE);
            updateProjectTreeItem(treeItem2, project);
            fillTreeItemWithGitDirectory(m, treeItem2, true);
            treeItem2.setData(
                new ProjectAndRepo(
                    m.getContainer().getProject(), m.getGitDirAbsolutePath().toOSString()));
          }
          treeItem.setExpanded(true);
          allProjectsInExistingRepos = false;
        }
      } catch (CoreException e) {
        TreeItem treeItem2 = new TreeItem(tree, SWT.BOLD | SWT.ITALIC);
        treeItem2.setText(e.getMessage());
      }
    }

    createRepo = new Button(parentRepoComposite, SWT.PUSH);
    createRepo.setLayoutData(GridDataFactory.fillDefaults().create());
    createRepo.setText(UIText.ExistingOrNewPage_CreateButton);
    createRepo.addSelectionListener(
        new SelectionAdapter() {
          public void widgetSelected(SelectionEvent e) {
            File gitDir = new File(repositoryToCreate.getText(), Constants.DOT_GIT);
            try {
              Repository repository = FileRepositoryBuilder.create(gitDir);
              repository.create();
              for (IProject project : getProjects(false).keySet()) {
                // If we don't refresh the project directories right
                // now we won't later know that a .git directory
                // exists within it and we won't mark the .git
                // directory as a team-private member. Failure
                // to do so might allow someone to delete
                // the .git directory without us stopping them.
                // (Half lie, we should optimize so we do not
                // refresh when the .git is not within the project)
                //
                if (!gitDir.toString().contains("..")) // $NON-NLS-1$
                project.refreshLocal(IResource.DEPTH_ONE, new NullProgressMonitor());
              }
              util.addConfiguredRepository(gitDir);
            } catch (IOException e1) {
              String msg =
                  NLS.bind(
                      UIText.ExistingOrNewPage_ErrorFailedToCreateRepository, gitDir.toString());
              org.eclipse.egit.ui.Activator.handleError(msg, e1, true);
            } catch (CoreException e2) {
              String msg =
                  NLS.bind(UIText.ExistingOrNewPage_ErrorFailedToRefreshRepository, gitDir);
              org.eclipse.egit.ui.Activator.handleError(msg, e2, true);
            }
            for (TreeItem ti : tree.getSelection()) {
              IPath projectPath = new Path(ti.getText(1));
              IPath gitPath = new Path(gitDir.toString());
              IPath relative = gitPath.makeRelativeTo(projectPath);
              ti.setText(2, relative.toOSString());
              ((ProjectAndRepo) ti.getData()).repo = gitDir.toString();
              ti.setChecked(true);
            }
            updateControls();
          }
        });
    repositoryToCreate = new Text(parentRepoComposite, SWT.SINGLE | SWT.BORDER);
    repositoryToCreate.setLayoutData(
        GridDataFactory.fillDefaults().grab(true, false).span(1, 1).create());
    repositoryToCreate.addListener(
        SWT.Modify,
        new Listener() {
          public void handleEvent(Event e) {
            if (repositoryToCreate.getText().equals("")) { // $NON-NLS-1$
              createRepo.setEnabled(false);
              return;
            }
            IPath fromOSString = Path.fromOSString(repositoryToCreate.getText());
            createRepo.setEnabled(
                minumumPath.matchingFirstSegments(fromOSString) == fromOSString.segmentCount());
          }
        });
    dotGitSegment = new Label(parentRepoComposite, SWT.NONE);
    dotGitSegment.setEnabled(false);
    dotGitSegment.setText(File.separatorChar + Constants.DOT_GIT);
    dotGitSegment.setLayoutData(
        GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).create());

    tree.addSelectionListener(
        new SelectionAdapter() {
          public void widgetSelected(SelectionEvent e) {
            tree.select((TreeItem) e.item);
            updateControls();
          }
        });

    Dialog.applyDialogFont(main);
    setControl(main);

    if (allProjectsInExistingRepos) {
      internalMode = true;
      internalModeButton.setSelection(true);
      updateControls();
    }
  }