Search in sources :

Example 11 with RepositoryTreeNode

use of org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode in project egit by eclipse.

the class CheckoutCommand method execute.

@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
    final RepositoryTreeNode node = getSelectedNodes(event).get(0);
    if (!(node.getObject() instanceof Ref))
        return null;
    final Ref ref = (Ref) node.getObject();
    Repository repo = node.getRepository();
    BranchOperationUI op = BranchOperationUI.checkout(repo, ref.getName());
    op.start();
    return null;
}
Also used : Ref(org.eclipse.jgit.lib.Ref) Repository(org.eclipse.jgit.lib.Repository) BranchOperationUI(org.eclipse.egit.ui.internal.branch.BranchOperationUI) RepositoryTreeNode(org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode)

Example 12 with RepositoryTreeNode

use of org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode in project egit by eclipse.

the class CheckoutCommand method updateElement.

@Override
public void updateElement(UIElement element, Map parameters) {
    List<RepositoryTreeNode> nodes = getSelectedNodes();
    if (!nodes.isEmpty()) {
        RepositoryTreeNode node = nodes.get(0);
        if (node.getObject() instanceof Ref) {
            Ref ref = (Ref) node.getObject();
            if (BranchOperationUI.checkoutWillShowQuestionDialog(ref.getName())) {
                element.setText(UIText.CheckoutCommand_CheckoutLabelWithQuestion);
                return;
            }
        }
    }
    element.setText(UIText.CheckoutCommand_CheckoutLabel);
}
Also used : Ref(org.eclipse.jgit.lib.Ref) RepositoryTreeNode(org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode)

Example 13 with RepositoryTreeNode

use of org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode in project egit by eclipse.

the class GitSelectRepositoryPage method createControl.

@Override
public void createControl(Composite parent) {
    Composite main = new Composite(parent, SWT.NONE);
    GridLayoutFactory.fillDefaults().numColumns(2).margins(0, 0).applyTo(main);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(main);
    // use a filtered tree
    FilteredTree tree = new FilteredTree(main, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL, new PatternFilter(), true);
    tv = tree.getViewer();
    GridDataFactory.fillDefaults().grab(true, true).applyTo(tree);
    tv.setContentProvider(new RepositoriesViewContentProvider() {

        @Override
        public Object[] getElements(Object inputElement) {
            Object[] elements = super.getElements(inputElement);
            if (allowBare) {
                return elements;
            }
            List<Object> result = new ArrayList<>();
            for (Object element : elements) {
                if (element instanceof RepositoryTreeNode) {
                    RepositoryTreeNode node = (RepositoryTreeNode) element;
                    if (node.getRepository() != null && !node.getRepository().isBare()) {
                        result.add(element);
                    }
                }
            }
            bareMsg.setVisible(result.size() != elements.length);
            return result.toArray();
        }

        // we never show children, only the Repository nodes
        @Override
        public Object[] getChildren(Object parentElement) {
            return null;
        }

        @Override
        public boolean hasChildren(Object element) {
            return false;
        }
    });
    tv.setLabelProvider(new RepositoriesViewLabelProvider());
    Composite tb = new Composite(main, SWT.NONE);
    GridLayoutFactory.fillDefaults().numColumns(1).applyTo(tb);
    GridDataFactory.fillDefaults().grab(false, true).applyTo(tb);
    addRepo = new Button(tb, SWT.PUSH);
    GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.BEGINNING).applyTo(addRepo);
    addRepo.setText(UIText.GitSelectRepositoryPage_AddButton);
    addRepo.setToolTipText(UIText.GitSelectRepositoryPage_AddTooltip);
    addRepo.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            List<String> configuredDirs = util.getConfiguredRepositories();
            RepositorySearchWizard wizard = new RepositorySearchWizard(configuredDirs, allowBare);
            WizardDialog dlg = new WizardDialog(getShell(), wizard);
            if (dlg.open() == Window.OK && !wizard.getDirectories().isEmpty()) {
                Set<String> dirs = wizard.getDirectories();
                for (String dir : dirs) {
                    File gitDir = FileUtils.canonicalize(new File(dir));
                    GerritUtil.tryToAutoConfigureForGerrit(gitDir);
                    util.addConfiguredRepository(gitDir);
                }
                checkPage();
            }
        }
    });
    if (!allowBare) {
        bareMsg = new Composite(main, SWT.NONE);
        bareMsg.setLayout(new RowLayout());
        bareMsg.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
        Label imageLabel = new Label(bareMsg, SWT.NONE);
        imageLabel.setImage(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_INFO));
        Label textLabel = new Label(bareMsg, SWT.WRAP);
        textLabel.setText(UIText.GitSelectRepositoryPage_BareRepositoriesHidden);
        bareMsg.setVisible(false);
    }
    tv.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            checkPage();
        }
    });
    tv.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            checkPage();
            if (isPageComplete())
                getContainer().showPage(getNextPage());
        }
    });
    tv.setInput(util.getConfiguredRepositories());
    configChangeListener = new IPreferenceChangeListener() {

        @Override
        public void preferenceChange(PreferenceChangeEvent event) {
            if (RepositoryUtil.PREFS_DIRECTORIES_REL.equals(event.getKey())) {
                Display display = tv.getControl().getDisplay();
                display.asyncExec(() -> {
                    if (!tv.getControl().isDisposed()) {
                        refreshRepositoryList();
                        checkPage();
                    }
                });
            }
        }
    };
    util.getPreferences().addPreferenceChangeListener(configChangeListener);
    // we need to select at least a repository to become complete
    setPageComplete(false);
    Dialog.applyDialogFont(main);
    setControl(main);
}
Also used : PatternFilter(org.eclipse.ui.dialogs.PatternFilter) Set(java.util.Set) Label(org.eclipse.swt.widgets.Label) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) FilteredTree(org.eclipse.ui.dialogs.FilteredTree) RepositoriesViewLabelProvider(org.eclipse.egit.ui.internal.repository.RepositoriesViewLabelProvider) RepositoriesViewContentProvider(org.eclipse.egit.ui.internal.repository.RepositoriesViewContentProvider) RepositorySearchWizard(org.eclipse.egit.ui.internal.repository.RepositorySearchWizard) Button(org.eclipse.swt.widgets.Button) RowLayout(org.eclipse.swt.layout.RowLayout) IDoubleClickListener(org.eclipse.jface.viewers.IDoubleClickListener) SelectionEvent(org.eclipse.swt.events.SelectionEvent) ArrayList(java.util.ArrayList) List(java.util.List) PreferenceChangeEvent(org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent) IPreferenceChangeListener(org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) DoubleClickEvent(org.eclipse.jface.viewers.DoubleClickEvent) RepositoryTreeNode(org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode) WizardDialog(org.eclipse.jface.wizard.WizardDialog) File(java.io.File) Display(org.eclipse.swt.widgets.Display)

Example 14 with RepositoryTreeNode

use of org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode in project egit by eclipse.

the class GitSelectWizardPage method createControl.

@Override
public void createControl(Composite parent) {
    Composite main = new Composite(parent, SWT.NO_RADIO_GROUP);
    main.setLayout(new GridLayout(1, false));
    SelectionListener sl = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tv.getTree().setEnabled(!newProjectWizard.getSelection());
            if (importExisting.getSelection())
                wizardSelection = EXISTING_PROJECTS_WIZARD;
            else if (newProjectWizard.getSelection())
                wizardSelection = NEW_WIZARD;
            else if (generalWizard.getSelection())
                wizardSelection = GENERAL_WIZARD;
            else
                wizardSelection = EXISTING_PROJECTS_WIZARD;
            checkPage();
        }
    };
    Group wizardType = new Group(main, SWT.SHADOW_ETCHED_IN);
    GridDataFactory.fillDefaults().grab(true, false).applyTo(wizardType);
    wizardType.setText(UIText.GitSelectWizardPage_ProjectCreationHeader);
    wizardType.setLayout(new GridLayout(1, false));
    importExisting = new Button(wizardType, SWT.RADIO);
    importExisting.setText(UIText.GitSelectWizardPage_ImportExistingButton);
    importExisting.addSelectionListener(sl);
    decorateWithFilterCount(importExisting);
    newProjectWizard = new Button(wizardType, SWT.RADIO);
    newProjectWizard.setText(UIText.GitSelectWizardPage_UseNewProjectsWizardButton);
    newProjectWizard.addSelectionListener(sl);
    generalWizard = new Button(wizardType, SWT.RADIO);
    generalWizard.setText(UIText.GitSelectWizardPage_ImportAsGeneralButton);
    generalWizard.addSelectionListener(sl);
    IDialogSettings settings = Activator.getDefault().getDialogSettings();
    try {
        wizardSelection = settings.getInt(PREF_WIZ);
    } catch (NumberFormatException e) {
        wizardSelection = EXISTING_PROJECTS_WIZARD;
    }
    switch(wizardSelection) {
        default:
        case EXISTING_PROJECTS_WIZARD:
            importExisting.setSelection(true);
            break;
        case GENERAL_WIZARD:
            generalWizard.setSelection(true);
            break;
        case NEW_WIZARD:
            newProjectWizard.setSelection(true);
            break;
    }
    tv = new TreeViewer(main, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    RepositoriesViewContentProvider cp = new RepositoriesViewContentProvider();
    tv.setContentProvider(cp);
    GridDataFactory.fillDefaults().grab(true, true).hint(SWT.DEFAULT, 200).applyTo(tv.getTree());
    tv.setLabelProvider(new RepositoriesViewLabelProvider());
    tv.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            checkPage();
        }
    });
    if (initialRepository != null) {
        List<WorkingDirNode> input = new ArrayList<>();
        WorkingDirNode node = new WorkingDirNode(null, initialRepository);
        input.add(node);
        tv.setInput(input);
        // expand root node
        tv.expandToLevel(2);
        // select the working directory as default
        if (initialPath == null)
            tv.setSelection(new StructuredSelection(input.get(0)));
        else {
            RepositoryTreeNode parentNode = node;
            IPath fullPath = new Path(initialPath);
            IPath workdirPath = new Path(initialRepository.getWorkTree().getPath());
            if (workdirPath.isPrefixOf(fullPath)) {
                IPath relPath = fullPath.removeFirstSegments(workdirPath.segmentCount());
                for (String segment : relPath.segments()) {
                    for (Object child : cp.getChildren(parentNode)) {
                        if (child instanceof FolderNode) {
                            FolderNode childFolder = (FolderNode) child;
                            if (childFolder.getObject().getName().equals(segment)) {
                                parentNode = childFolder;
                                break;
                            }
                        }
                    }
                }
                tv.setSelection(new StructuredSelection(parentNode));
            }
        }
    }
    tv.getTree().setEnabled(!newProjectWizard.getSelection());
    Dialog.applyDialogFont(main);
    setControl(main);
}
Also used : Group(org.eclipse.swt.widgets.Group) FolderNode(org.eclipse.egit.ui.internal.repository.tree.FolderNode) TreeViewer(org.eclipse.jface.viewers.TreeViewer) ArrayList(java.util.ArrayList) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) RepositoriesViewLabelProvider(org.eclipse.egit.ui.internal.repository.RepositoriesViewLabelProvider) RepositoriesViewContentProvider(org.eclipse.egit.ui.internal.repository.RepositoriesViewContentProvider) GridLayout(org.eclipse.swt.layout.GridLayout) Button(org.eclipse.swt.widgets.Button) SelectionEvent(org.eclipse.swt.events.SelectionEvent) WorkingDirNode(org.eclipse.egit.ui.internal.repository.tree.WorkingDirNode) IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) Composite(org.eclipse.swt.widgets.Composite) IPath(org.eclipse.core.runtime.IPath) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) RepositoryTreeNode(org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode) IDialogSettings(org.eclipse.jface.dialogs.IDialogSettings) SelectionListener(org.eclipse.swt.events.SelectionListener)

Example 15 with RepositoryTreeNode

use of org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode in project egit by eclipse.

the class RepositoriesViewContentProvider method getElements.

@Override
@SuppressWarnings("unchecked")
public Object[] getElements(Object inputElement) {
    List<RepositoryTreeNode> nodes = new ArrayList<>();
    List<String> directories = new ArrayList<>();
    RepositoryUtil repositoryUtil = Activator.getDefault().getRepositoryUtil();
    if (inputElement instanceof Collection) {
        for (Iterator it = ((Collection) inputElement).iterator(); it.hasNext(); ) {
            Object next = it.next();
            if (next instanceof RepositoryTreeNode)
                nodes.add((RepositoryTreeNode) next);
            else if (next instanceof String)
                directories.add((String) next);
        }
    } else if (inputElement instanceof IWorkspaceRoot) {
        directories.addAll(repositoryUtil.getConfiguredRepositories());
    }
    for (String directory : directories) {
        try {
            File gitDir = new File(directory);
            if (gitDir.exists()) {
                RepositoryNode rNode = new RepositoryNode(null, repositoryCache.lookupRepository(gitDir));
                nodes.add(rNode);
            } else
                repositoryUtil.removeDir(gitDir);
        } catch (IOException e) {
        // ignore for now
        }
    }
    Collections.sort(nodes);
    return nodes.toArray();
}
Also used : ArrayList(java.util.ArrayList) IOException(java.io.IOException) RepositoryNode(org.eclipse.egit.ui.internal.repository.tree.RepositoryNode) RepositoryUtil(org.eclipse.egit.core.RepositoryUtil) RepositoryTreeNode(org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) Iterator(java.util.Iterator) Collection(java.util.Collection) RevObject(org.eclipse.jgit.revwalk.RevObject) File(java.io.File)

Aggregations

RepositoryTreeNode (org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode)46 Repository (org.eclipse.jgit.lib.Repository)17 Ref (org.eclipse.jgit.lib.Ref)13 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)11 ArrayList (java.util.ArrayList)10 TagNode (org.eclipse.egit.ui.internal.repository.tree.TagNode)10 IOException (java.io.IOException)9 File (java.io.File)8 IResource (org.eclipse.core.resources.IResource)7 RefNode (org.eclipse.egit.ui.internal.repository.tree.RefNode)6 IPath (org.eclipse.core.runtime.IPath)5 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)4 RevCommit (org.eclipse.jgit.revwalk.RevCommit)4 RevObject (org.eclipse.jgit.revwalk.RevObject)4 WorkspaceJob (org.eclipse.core.resources.WorkspaceJob)3 Path (org.eclipse.core.runtime.Path)3 Job (org.eclipse.core.runtime.jobs.Job)3 FileNode (org.eclipse.egit.ui.internal.repository.tree.FileNode)3 RemoteNode (org.eclipse.egit.ui.internal.repository.tree.RemoteNode)3 StashedCommitNode (org.eclipse.egit.ui.internal.repository.tree.StashedCommitNode)3